我试图让我的天空盒不受camera.far
参数的影响。我想用这个来剔除所有其他场景对象,而不是天空盒。
当我设置skyBox.frustumCulled = false;
它没有区别。skyBox
当然是网格。
这是通过添加另一个渲染通道来完成的吗?如果是这样,我将需要 2 个不同的摄像机,其中一个具有非常高的远值,以允许查看天空盒,对吗?如何有效地做到这一点?
为清楚起见,这里是用于绘制天空盒的地形对象代码片段:
shader = THREE.ShaderLib["cube"];
shader.uniforms["tCube"].value = this.cubetexture;
mat = new THREE.ShaderMaterial({
uniforms: shader.uniforms,
fragmentShader: shader.fragmentShader,
vertexShader: shader.vertexShader,
depthWrite: false,
side: THREE.BackSide
});
geo = new THREE.BufferGeometry().fromGeometry(new THREE.BoxGeometry(1024, 1024, 1024));
mesh = new THREE.Mesh(geo, mat);
mesh.rotation.y += 90;
mesh.scale.x = mesh.scale.y = mesh.scale.z = 50;
mesh.frustumCulled = false;
mesh.matrixAutoUpdate = false;
mesh.rotationAutoUpdate = false;
mesh.updateMatrix();
this.skybox = mesh;
scene.add(this.skybox);