在Thee.js中渲染BufferGeometry的顺序

时间:2016-04-17 02:35:30

标签: javascript three.js buffer-geometry

previous question之后,我正在处理在BufferGeometry中构建模型,并意识到transparent标志会影响渲染顺序:具有透明材质的对象将在非透明材质之后呈现。< / p>

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

所以我的问题是:是否可以在BufferGeometry中手动设置面的渲染顺序? 就我而言,我可能需要动态更改构建元素的透明度。 (我已阅读thread说我们可以设置Object3D的renderOrder。)

谢谢。

1 个答案:

答案 0 :(得分: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强制对象之间的特定渲染顺序。

three.js r.75