WebGL渲染透明对象。渲染顺序

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

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

有2个多维数据集-绿色是最上面的一个。如果取消选中“多维数据集2”(黄色内部多维数据集),则它不可见。并且,当您旋转摄像机然后旋转后,请返回“多维数据集2”,它变成外部的。并非所有旋转角度都可以复制。

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

这与Transparent textures behaviour in WebGL有关吗?

谢谢,振亚

three.js rendering webgl depth-buffer
1个回答
3
投票

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

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

当两个对象距相机的距离相同时,由于排序算法如何打破平局,渲染顺序可能会改变。

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

您在完全相同的位置具有两个大小和方向完全相同的多维数据集。不要那样做。它会导致各种渲染问题-其中最常见的是闪烁。

three.js r.58

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