ThreeJs-渲染顺序是否取决于对象创建顺序?

问题描述 投票:0回答:1

我在场景中的渲染顺序有问题。所有对象都具有透明度。场景中的每个对象都有多个子对象。

下面的每种情况都使用相同的数据。

下面的选项1按预期工作。但是我需要选项2才能工作,因为应用程序的用户不必手动向应用程序中添加数据。

  1. 如果我以特定顺序手动添加一组对象,它们将正确呈现。
  2. 如果我一次加载所有对象,然后以特定顺序将它们添加到场景中,则渲染顺序是错误的。我以为文档说它们是根据添加到场景中的顺序渲染的。我认为这将产生与选项1相同的结果。
  3. 如果加载所有对象并使用硬代码renderOrder,则顺序是错误的,因为子对象在场景中的深度不同。

我不知道为什么选项1和选项2给出不同的结果。我宁愿不使用选项3。

除了添加到场景中的对象顺序(确定渲染顺序)之外,还有其他东西吗?

这里有两个视频。

Correct Render Order

Incorrect Render Order

javascript three.js webgl
1个回答
0
投票

如果不知道将它们添加到场景中的顺序,则可以使用Object.renderOrder属性来强制渲染顺序。您可能需要先渲染背景对象,但是当相机朝相反的方向时,这可能会给您带来问题。

如果像您说的那样,所有对象都具有透明度,那么您可能要禁用Object.renderOrder,因此在渲染时所有内容都将忽略depthMap。

© www.soinside.com 2019 - 2024. All rights reserved.