我正在使用three.js 开发体素游戏。为此,我需要根据需要生成尽可能多的块来填充屏幕。目前,我正在围绕播放器加载一个半径为 20 的圆圈。
计算填充相机截锥体所需的块的确切范围并避免计算不可见块的最简单方法是什么?
每个块的大小完全相同(假设我们有一个size
具有正确值的向量),并且 Y=0(X 和 Z 变化)。
我正在使用three.js 开发体素游戏。为此,我需要根据需要生成尽可能多的块来填充屏幕。目前,我正在围绕播放器加载一个半径为 20 的圆圈。
计算填充相机截锥体所需的块的确切范围并避免计算不可见块的最简单方法是什么?
每个块的大小完全相同(假设我们有一个size
具有正确值的向量),并且 Y=0(X 和 Z 变化)。
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] );
}
只有在相机视锥体内的物体才会被渲染
记录在这里
希望这对你有帮助?