您的位置:首页 > 移动开发 > Unity3D

Unity3D中摄像机常用技巧Dolly&nbs…

2015-06-29 12:13 274 查看
最近学习Unity3D文档的过程中,看到了几种关于摄像机的技巧。其中Dolly Zoom和Oblique
Frustum属于摄像机的特效,而Occlusion Culling属于摄像机的优化。这里稍微总结一下。
1)Dolly
Zoom,即滑动变焦,是一种常用的摄影技巧。这种技巧可以突出场景中的目标对象,目标对象来摄像机移动的过程中基本保持不变,而目标对象周围的景物则产生一种剧烈变化的扭曲效果。具体可以参考这里
在unity中,Dolly Zoom效果也非常容易实现,可以参考unity的官方文档这里。主要分为两个步骤:

第一步:初始化过程中,通过当前摄像机的FOV角度和摄像机到目标对象的距离Distance,计算并保存目标对象的视锥体截面高度FrustumHeight。

第二部:在移动摄像机的过程中,通过当前摄像机到目标对象的距离newDistance和保存的FrustumHeight动态调整FOV角度。





2)Oblique
Frustum,偏移的视锥面。一般来说,摄像机的中心射线穿过视锥面的中心,视锥面围绕交点中心对称。然而通过调整视锥面对于该交点的偏移,包括水平偏移和垂直偏移,可以在视图上制造一种偏移效果。详细介绍看这里
应该注意的是,Oblique
Frustum的效果以及直接调整摄像机的旋转角度的效果的细微差别。前者的视锥体的中心射线是保持不变的,而后者是变化的。通过观察下图中两个立方体的细微差别可以清楚发现。








3)Occlusion Culling,遮挡裁剪。unity自带了Frustum
culling,在视锥体外的对象是不参与渲染过程的,这可以避免每一次渲染都要渲染整个场景,大大减少了渲染的时间。然而,很多情况下,视锥体内的对象会发生相互遮挡的现象。例如,角色处于室内,墙壁则遮挡了室外的所有对象。考虑到这种现象,unity
pro提供了Occlusion
Culling功能。但是这种功能不是默认使用的,需要人为调用。详细参考这里。主要分为3个步骤:




第一步:设置相关参数。其中Small
occluer影响遮挡准确度和记录文件的大小。越小,则越准确,同时记录文件越大。




第二步:设置Occlusion
Area。OA的作用有2个,第一是如果超过OA的范围,则OC失效。第二是OA限制了动态物体的活动区域,超过OA范围的动态物体不参与OC。在没有设置OA的情况下,OA默认为整个场景。








第三步:进行预计算和调试。可以发现,使用了Occlusion
culling之后,场景中的部分对象已经不参与渲染了。
总结:
1)对于Occlusion culling,场景中的大部分静态物体应该标记为occluder static和occludee
static。前者表面该物体可以遮挡其他物体,后者表面该物体可以被其他物体遮挡。但是也有特例,例如玻璃门应该是不可以遮挡其他物体但是可以被其他物体遮挡。
2)应该检查Occlusion area,确保需要参与OC的动态物体都在OA范围之内。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: