2

继上一个问题之后,我正在处理在 BufferGeometry 中构建模型,并意识到transparent标志会影响渲染顺序:具有透明材质的对象将在非透明材质之后渲染。

另外,我从这个线程中读到,在JSFiddle上做了一个实验,发现 BufferGeometry 中面部的渲染顺序与缓冲区中指定的顺序相同,但与相机的距离不同。(在上面的实验中,我首先在缓冲区中指定了一个更近的三角形,它会遮挡它后面的其他三角形。)

所以我的问题是:是否可以在 BufferGeometry 中手动设置人脸的渲染顺序?就我而言,我可能需要动态更改建筑元素的透明度。(我读过线程说我们可以设置renderOrderObject3D。)

谢谢你。

4

1 回答 1

1

面按照它们在BufferGeometry.

如果您必须动态改变场景元素的透明度,我建议您保持单独的几何图形,每个几何图形都与自己的材质配对。

渲染器将​​渲染transparent = false首先具有的对象。然后它将渲染具有transparent = true.

如果您对透明材质使用以下设置,您可能会发现工件较少:

material.transparent = true;
material.opacity = 0.5; // or as desired
material.depthTest = true; // the default
material.depthWrite = false; // use for transparent materials only

此外,自我透明特别棘手。一个例子是半透明的立方体(或建筑物)。在这种情况下减少伪影的一种方法是渲染对象两次:第一次使用material.side = THREE.BackSide,然后再次使用material.side = THREE.FrontSide。您可以使用object.renderOrder强制对象之间的特定渲染顺序。

三.js r.75

于 2016-04-17T03:32:41.577 回答