我正在使用three.js进行体素游戏。为此,我需要根据需要生成尽可能多的块来填充屏幕。目前,我正在玩家周围加载一个半径为20的圆圈。
计算填充相机截头所需的块的确切范围并避免计算隐形块的最简单方法是什么?
每个块具有完全相同的大小(假设我们有一个具有正确值的向量size
),并且在Y = 0(X和Z变化)。
答案 0 :(得分:2)
var frustum = new THREE.Frustum();
frustum.setFromMatrix( new THREE.Matrix4().multiply( camera.projectionMatrix, camera.matrixWorldInverse ) );
for (var i=0; i<objects.length; i++) {
objects[i].visible = frustum.intersectsObject( objects[i] );
}
只有相机视锥内的物体才会被渲染
记录here
希望这对你有帮助吗?