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

来源:互联网 发布:vb.net 十秒后跳转 编辑:程序博客网 时间:2024/05/18 02:44
最近学习Unity3D文档的过程中,看到了几种关于摄像机的技巧。其中Dolly Zoom和ObliqueFrustum属于摄像机的特效,而Occlusion Culling属于摄像机的优化。这里稍微总结一下。
1)DollyZoom,即滑动变焦,是一种常用的摄影技巧。这种技巧可以突出场景中的目标对象,目标对象来摄像机移动的过程中基本保持不变,而目标对象周围的景物则产生一种剧烈变化的扭曲效果。具体可以参考这里。
在unity中,Dolly Zoom效果也非常容易实现,可以参考unity的官方文档这里。主要分为两个步骤:
第一步:初始化过程中,通过当前摄像机的FOV角度和摄像机到目标对象的距离Distance,计算并保存目标对象的视锥体截面高度FrustumHeight。
第二部:在移动摄像机的过程中,通过当前摄像机到目标对象的距离newDistance和保存的FrustumHeight动态调整FOV角度。
Unity3D中摄像机常用技巧Dolly <wbr>Zoom、Oblique <wbr>Frustum和Occlusion <wbr>CullingUnity3D中摄像机常用技巧Dolly <wbr>Zoom、Oblique <wbr>Frustum和Occlusion <wbr>Culling

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

Unity3D中摄像机常用技巧Dolly <wbr>Zoom、Oblique <wbr>Frustum和Occlusion <wbr>Culling

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

第一步:设置相关参数。其中Smalloccluer影响遮挡准确度和记录文件的大小。越小,则越准确,同时记录文件越大。
Unity3D中摄像机常用技巧Dolly <wbr>Zoom、Oblique <wbr>Frustum和Occlusion <wbr>Culling

第二步:设置OcclusionArea。OA的作用有2个,第一是如果超过OA的范围,则OC失效。第二是OA限制了动态物体的活动区域,超过OA范围的动态物体不参与OC。在没有设置OA的情况下,OA默认为整个场景。
Unity3D中摄像机常用技巧Dolly <wbr>Zoom、Oblique <wbr>Frustum和Occlusion <wbr>Culling

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




0 0
原创粉丝点击