尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Unity 视锥体:摄像机可见空间的 6 面切割

Unity 视锥体:摄像机可见空间的 6 面切割 开场小王负责的开放世界项目跑起来后,帧率直接掉到 30 以下。Profiler 一查,GPU 几乎被 DrawCall 淹没——场景里 800 多个 NPC,即便被山体完全挡住,每个角色的 SkinnedMeshRenderer 依然在提交渲染指令。他第一反应是:"Unity 是不是没做视锥体剔除?"这个第一反应其实是错的。Unity 默认就开启了视锥体剔除——背对摄像机的 NPC 根本没进渲染管线。真正的问题是:那 800 个 NPC 大部分在视锥体之内,只是被山体挡住了。视锥体剔除管"在不在视野里",管不了"在视野里但被挡住了"——后者是遮挡剔除(Occlusion Culling)的地盘。想搞清楚这条边界,就得先弄明白视锥体到底是什么、Unity 是怎么用它做剔除的。这正是本文的内容。一、视锥体的基本概念1.1 形状与组成视锥体(Frustum)是一个被切掉顶端的金字塔形区域,对应摄像机在 3D 空间里能看到的全部范围,由6 个平面围合而成:Near Clip Plane:近裁剪面,比这更近的东西不可见Far Clip Plane:远裁剪面,比这更远的东西不可见Left / Right Plane:左右两侧的斜面Top / Bottom Plane:上下两侧的斜面/
返回列表