19

我正在使用three.js

如何控制渲染顺序?假设我有三个平面几何图形,并且想要以特定顺序渲染它们,而不管它们的空间位置如何。

谢谢

4

4 回答 4

49

你可以设置

renderer.sortObjects = false;

并且对象将按照它们添加到场景中的顺序进行渲染。

或者,您可以保留默认值,并sortObjectstrue每个对象指定 的值object.renderOrder

有关更多详细信息,请参阅Threejs 中的透明对象

您可以做的另一件事是使用此处描述的方法:如何使用 Threejs 更改对象的 zOrder?

三.js r.71

于 2013-03-20T03:09:40.243 回答
2

对于 threejs r70 及更高版本,已删除 renderDepth。

于 2015-04-01T15:58:43.913 回答
0

在我的情况下,使用 object.renderDepth 有效。我有一个玻璃盒,里面有透明的气泡。气泡在某些角度消失了。

因此,将它们的 renderDepth 设置为较高的数字并使用场景中的其他元素深度解决了该问题。将 dat.gui 控件连接到 renderDepth 属性可以很容易地调整使场景工作所需的深度。

所以,在我的 fishScene 中,我有砾石、坦克和气泡。我用 dat.gui 控件连接了砾石网格,几秒钟后,我就获得了所需的深度。

this.gui.add(this.fishScene.gravel, "renderDepth", 0, 200);
于 2014-03-01T20:52:59.247 回答
0

我有一堆对象,它们是从随机位置 x 和 y 的 for 循环中克隆出来的……和 obj.z ++,所以它们会排成一行……包括 obj.renderOrder ++;在循环中解决了我的问题。

于 2015-06-10T06:33:16.927 回答