three.js长方体几何体不透明度

three.js长方体几何体不透明度,three.js,Three.js,朋友们,我使用three.js基本材质创建了2个盒子,我不想看到大盒子里面的小盒子,但我现在可以看到所有的盒子。你能帮我吗 var cube1 = new THREE.Mesh( new THREE.BoxGeometry(200, 200, 200), new THREE.MeshBasicMaterial({ color: 0xffffff, transparent: false, opacity: 1, overdraw: 0.5 })); scen

朋友们,我使用three.js基本材质创建了2个盒子,我不想看到大盒子里面的小盒子,但我现在可以看到所有的盒子。你能帮我吗

   var cube1 = new THREE.Mesh(
new THREE.BoxGeometry(200, 200, 200),
new THREE.MeshBasicMaterial({
    color: 0xffffff,
    transparent: false,
    opacity: 1,
    overdraw: 0.5
}));

scene.add(cube1);

var cube2 = new THREE.Mesh(
new THREE.BoxGeometry(100, 100, 100),
new THREE.MeshBasicMaterial({
    color: 0x000000,
    transparent: false,
    opacity: 1,
    overdraw: 0.5
}));

scene.add(cube2);

理想情况下,这不应该发生,也许您可能错过了一些东西,我这里是您试图实现的代码片段中的完整代码

var摄像机、场景、渲染器;
var网格;
init();
制作动画();
函数init(){
renderer=new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth、window.innerHeight);
renderer.setClearColor(0xAAAAAA);
renderer.sortObjects=true;
document.body.appendChild(renderer.doElement);
//
摄像头=新的三个透视摄像头(70,window.innerWidth/window.innerHeight,11000);
摄像机位置z=400;
场景=新的三个。场景();
cube1=新的三个网格(
新的三盒几何结构(200200200),
新的三网格基本材料({
颜色:0xffffff,
透明:假,
不透明度:1,
透支:0.5
}));
场景。添加(立方体1);
//
cube2=新的三个网格(
新的三盒几何结构(100100100),
新的三网格基本材料({
颜色:0x000000,
透明:假,
不透明度:1,
透支:0.5
}));
场景。添加(立方体2);
addEventListener('resize',onWindowResize,false);
}
函数onWindowResize(){
camera.aspect=window.innerWidth/window.innerHeight;
camera.updateProjectMatrix();
renderer.setSize(window.innerWidth、window.innerHeight);
}
函数animate(){
请求动画帧(动画);
立方1.旋转.x+=0.005;
立方1.旋转.y+=0.01;
立方2.旋转.x+=0.010;
立方2.旋转.y+=0.01;
渲染器。渲染(场景、摄影机);
}
html,正文{
填充:0px;
边际:0px;
}
帆布{
宽度:100%;
身高:100%
}
查找原因:

如果我把立方体放在.z<0的位置,我会“看穿”

但如果你想看穿,这是一个棘手的问题

[http://jsfiddle.net/agpcn1ej/1/][1]
似乎找到了答案


这是因为房屋模型位置的一部分.z<0,相机接近<0,可能是3.js z-buffer clear negative=0,z-buffer确定了防护林关系。

如果使用的是
canvasrender
,请切换到
WebGLRenderer
。否。我正在使用webglrender