【发布时间】:2013-04-30 02:21:05
【问题描述】:
我正在使用three.js 开发体素游戏。为此,我需要根据需要生成尽可能多的块来填充屏幕。目前,我在播放器周围加载一个半径为 20 的圆。
计算填充相机视锥体所需的块的确切范围并避免计算不可见块的最简单方法是什么?
每个块都具有完全相同的大小(假设我们有一个具有正确值的向量 size),并且位于 Y=0(X 和 Z 不同)。
【问题讨论】:
标签: three.js
我正在使用three.js 开发体素游戏。为此,我需要根据需要生成尽可能多的块来填充屏幕。目前,我在播放器周围加载一个半径为 20 的圆。
计算填充相机视锥体所需的块的确切范围并避免计算不可见块的最简单方法是什么?
每个块都具有完全相同的大小(假设我们有一个具有正确值的向量 size),并且位于 Y=0(X 和 Z 不同)。
【问题讨论】:
标签: three.js
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
希望这对您有所帮助?
【讨论】: