我已经创建了两个透明的盒子,它们的面相互接触。除非盒子的脸部接触,否则效果很好。

// inner object
var mesh2 = new THREE.Mesh(geometry, material);

mesh2.position.x = 0;
mesh2.position.y = 0;
mesh2.position.z = 0;

mesh2.scale.x = 100;
mesh2.scale.y = 50;
mesh2.scale.z = 100;

scene.add( mesh2 );

// outer object
var mesh1 = new THREE.Mesh(geometry, material);

mesh1.position.x = 0;
mesh1.position.y = 0;
mesh1.position.z = 0;

mesh1.scale.x = 100;
mesh1.scale.y = 100;
mesh1.scale.z = 100;

scene.add( mesh1 );


这是代码:
    http://jsfiddle.net/unkya/14/

我如何摆脱这些伪影,但仍然可以抚摸脸部?

另外,有没有一种方法可以将框添加到场景而不必先插入最里面的框?

非常感谢!

最佳答案

这称为z-fighting

有两种解决方法。

第一种是简单地将值偏移少量。甚至0.01也可以做到。这里的重要部分是确保相机的near plane and far plane在合理的范围内。

第二种方法是使用THREE.js材料的polygonOffset属性。这将允许您强制对象在其他对象之上或之下渲染,类似于z-index排序。我认为还需要启用透明度,因此,如果可能,应将其放在半透明的多维数据集上。

关于javascript - Three.js抚摸脸,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28724451/

10-10 06:15