禁用透明对象深度测试的解决方法?

时间:2016-09-09 14:34:49

标签: three.js transparency depth-testing

在场景中我只有透明物体,因此启用深度测试会导致物体彼此隐藏。我知道深度测试不考虑任何透明度,它只是写入深度缓冲区,查看z的值。那么如何正确渲染两个透明对象?

我这样做renderer.context.disable(renderer.context.DEPTH_TEST);但没有改变

我的具体问题的说明: enter image description here

多维数据集为MeshLambertMaterial({color: ..., transparent: true, opacity: 0.6})

,飞机为MeshLambertMaterial({color: ..., transparent: true, opacity: 0.4})

立方体在平面之后渲染,但如果立方体是不透明的,那么整个立方体将被正确渲染而不会丢弃(也可以看到它们也是不透明的点因此是可见的)。

那么如何让它考虑透明度而不关心渲染的顺序呢?所以两个透明对象不会相互隐藏?

1 个答案:

答案 0 :(得分:3)

在three.js中,您可以通过设置

关闭深度测试
material.depthTest = false;

如果在更改相机位置时出现瑕疵,请不要感到惊讶。

您可能还想阅读this answer

three.js r.80