雾隐藏天空盒(THREE.JS R76)

问题描述:

我有一个圆筒相机保持英寸我设置了雾,所以管的末端是不可见的 - 但是我希望天空盒通过阿尔法映射两侧可见圆柱体。雾阻挡了能见度,并且想知道需要做些什么来解决这个问题。雾隐藏天空盒(THREE.JS R76)

var POS_X = 0, 
    POS_Y = 0, 
    POS_Z = 0, 
    FOV = 60, 
    WIDTH = window.innerWidth, 
    HEIGHT = window.innerHeight, 
    NEAR = 1, 
    FAR = 120000, //Camera Far Distance 
    renderer = new THREE.WebGLRenderer({antialias:true}), 

............

function addFog(){ 
    scene.fog = new THREE.Fog(0x000000, 100, 40000); 
} 

............

function addSkybox(){ 
    var materialArray = [], 
     imgArray = ["skybox_right.jpg", "skybox_left.jpg", 
     "skybox_front.jpg", "skybox_back.jpg", 
     "skybox_top.jpg", "skybox_bottom.jpg"]; 

    for (var i = 0; i < 6; i++){ 
     materialArray.push(new THREE.MeshBasicMaterial({ 
      map: loader.load(imgArray[i]), 
      side: THREE.BackSide 
     })); 
    } 

    var skyMat = new THREE.MeshFaceMaterial(materialArray), 
     skyGeo = new THREE.BoxGeometry(100000, 100000, 100000, 1, 1, 1), 
     sky = new THREE.Mesh(skyGeo, skyMat); 

    sky.name="skybox"; 
    scene.add(sky); 
} 
+0

您是否曾试图将天空盒分成6个不同的物体,这样他们就不会受到雾的影响? '.far' _雾停止计算和应用的最大距离。超过“远”单位的物体远离活动摄像机不会受到雾的影响 –

+0

嗯,我想我对这个措辞感到困惑。我将Meshes添加到场景中,并且它们是对象,但不是Object3D。似乎如果我把天空盒作为一个对象3D它会工作呢?我将不得不尽快尝试。 –

+0

因此,我将天空盒作为一个单独的物体3D添加到了场景中。圆柱体也被添加为一个单独的物体3D。没有变化。 –

你可以只添加fog: false忽略雾效应。

for (var i = 0; i < 6; i++){ 
    materialArray.push(new THREE.MeshBasicMaterial({ 
     map: loader.load(imgArray[i]), 
     side: THREE.BackSide, 
     fog: false 
    })); 
} 
+0

谢谢你非常有见地。正是我在找什么! –