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

Workaround of disabling depth testing for transparent objects?

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

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

我的具体问题的说明:

立方体是MeshLambertMaterial({color: ..., transparent: true, opacity: 0.6})

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

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

那么如何让它既考虑透明度又不关心渲染顺序,使两个透明对象不相互隐藏?

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

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

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

您可能还想阅读 this answer

three.js r.80