今天来谈谈3D开发中的两个重要知识点Culling(剔除)和Clipping(切分)。

左图表示一个完整的3D渲染流程,可以看到Culling和Clipping处理发生在投射计算和渲染计算之前。
Culling过程是用于剔除不需要参与渲染的物体和三角面,从而达到节约资源的目的。一般来说Culling分为以下4种:
- Frustum culling:视锥剔除,PV3D里最重要的剔除方式,下面详述。
- Back-face culling:当面背对相机时候剔除,由PV3D自动执行。
- Contribution culling:当物体在画面上过小情况下的剔除,PV3D里面没有这种机制,但是可以用远平面(camera.far)来剔除。
- Occlusion culling:包藏剔除,适用于一个物体完全被另一个物体遮挡的情况,PV3D不包含这种机制。
Frustum culling在PV3D中分两种:分别是基于camera(相机)和基于viewport(视口)的。
使用以下代码开启基于相机的剔除功能(DebugCamera是默认开启的):
camera.useCulling = true;
通过查看do3d.culled属性可以知道物体是否被剔除。要注意这种剔除机制是针对整个物体(do3d)计算的,只有当整个物体完全不在视锥内,才会被剔除。














