Я пытаюсь, чтобы на мой скайбокс не влиял параметр 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);