0

这是我的测试应用程序 inthree.js- http://zheden.elitno.net/

有 2 个立方体 - 绿色是上面的那个。如果您取消选中“Cube 2”(黄色内部立方体),它将变得不可见。当您旋转相机并旋转后检查“Cube 2”时,它变成了外部。它不是以所有旋转角度再现的。

添加“renderer.sortObjects = false”解决了这个问题。但是你能解释一下这种行为的原因吗?渲染器根据对象的位置对对象进行排序。当某些对象是透明的时,为什么会更改渲染顺序?它的位置没有改变。

这与WebGL 中的透明纹理行为有关吗?

谢谢,振亚

4

1 回答 1

3

您的演示中没有透明对象,只有不透明对象。您正在更改可见性。

WebGLRenderer根据对象与相机的距离对对象进行排序,并按排序顺序渲染对象。它从前到后渲染不透明的对象。

当两个对象与相机的距离相同时,由于排序算法如何打破关系,渲染顺序可能会发生变化。

但是,当您关闭然后再次打开可见性时,渲染顺序不一定会改变。移动相机时由于四舍五入,可以改变的是与最低有效数字深度缓冲区的距离。因此,有时第二个对象渲染,有时不渲染。

您在完全相同的位置有两个大小和方向完全相同的立方体。不要那样做。它可能会导致您出现各种渲染问题——其中最常见的是闪烁。

三.js r.58

于 2013-07-08T15:31:39.220 回答