【问题标题】:Workaround of disabling depth testing for transparent objects?禁用透明对象深度测试的解决方法?
【发布时间】:2017-01-17 18:00:27
【问题描述】:

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

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

我的具体问题的说明:

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

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

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

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

【问题讨论】:

    标签: three.js transparency depth-testing


    【解决方案1】:

    在three.js中,可以通过设置关闭深度测试

    material.depthTest = false;
    

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

    您可能还想阅读this answer

    three.js r.80

    【讨论】:

    • 哦,是的,我在旋转相机时也有一些伪影,但仅限于 chrome 和场景中的任何照明。
    猜你喜欢
    • 2011-10-26
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    相关资源
    最近更新 更多