如果还记得来自于何方,看看一个月前如何引入TerrainCuller的。
如何判断是否该cull呢?在这里先打个断点
用的包围球
可见,通过VIEW_FRUSTUM_CULLING,SMALL_FEATURE_CULLING,SHADOW_OCCLUSION_CULLING三种方式剔除
可见,目前用的是视锥体剔除
现在进入正文,开始剔除
先看水平方向
可见,判断是否可见是与切面相关联的。该切面切椭球体。如果目标在视线上面,则可视;如果视点在切面以下,且目标比视点还靠下,则目标 被遮挡;
如果视线在切面上面,且目标在切面前面,则目标可视。
下一步就考虑,这些切面如何来的?很明显,是_points[]数组。这些points[]数组来于哪里呢?原来来自于包围盒的顶部四个顶点。
这个包围盒又从哪里来呢?设个断点在这里,
重新开始
上一层
那么,这个_drawable是从哪里来的呢
可见,又回溯到surfaceDrawable,
这个geom是什么呢
可见,是以前调试过的geometrytool中的图元.
总上所述,水平方向遮挡是Horizon->HorizonTileCuller(_points)->box->SurfaceNode->(_drawable)->TileDrawable->GeometryPool->EngineContext->TileNode
就这样吧