这张图片主要解释了我的问题:
frustum.boundsInFrustum 方法将地板检测到它的内部,但是无论是盒子还是其他具有砖块纹理的盒子都没有被检测到,并且平截头体 3d 表示不接触也不包含它们中的任何一个。我已经在我的地图中尝试过其他位置和对象,而在远截头体平面后面的大型模型经常会干扰并触发这个问题。
FrustumCulling 测试工作正常,即使我将方法 sphereInFrustum 替换为 boundsInFrustum 并且如果我缩短了测试中的截锥体长度(以便在截锥体远平面后面获得一些对象)。我也会尝试通过修改对象的大小来复制那里的问题。 (已经试过了,测试完美无缺,然后在我的代码中......)
注意:FrustumCullingTest 默认使用项目符号来测试一个对象是否在另一个对象内部,因此它不适用于这种情况。
编辑:图像场景中的 boundsInFrustum 告诉我,地板的至少一个角确实位于任何平截头体平面的内表面,因此该方法始终返回 true。我认为这里发生的情况是,如果平截头体小于物体并且如果它指向它的中间,那么每个平面的内表面都有一个点。