THREE.js透明平面切割相邻物体纹理。

4

transcut http://glasier.hk/image/transcut.png

每个面都是用这个制作的:

geometry = new THREE.PlaneGeometry(w,h,1,1,1);
base = new THREE.MeshBasicMaterial( { color: pass.color, transparent: true, side: THREE.DoubleSide} )
material = new THREE.MeshLambertMaterial( { map: THREE.ImageUtils.loadTexture(pass.img), transparent: true, opacity:1, side: THREE.DoubleSide });
shape = new THREE.Mesh(geometry, material);

我做错了什么?

1个回答

6

看起来是深度缓冲问题。 请参考这个那个

你可以尝试调整材质的 depthTest 和 depthWrite 参数,或者按自定义顺序绘制对象。你可以通过设置 renderer.sortObjects = false 并将透明纹理添加到场景中的最后来实现。


4
太好了,谢谢。我像Doob先生在“这里”建议的那样使用了“alphaTest: 0.5”。愿上帝保佑他。 - Chris Glasier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接