使用 Three.js v0.113.2,我正在使用两个聚光灯(一个在后面,一个在前面)和环境光来渲染平面上的杯子场景。前面的聚光灯转换阴影,杯子设置为转换阴影(但不接收阴影),并且平面设置为接收阴影。我使用的阴影半径为 20 (iirc)。阴影贴图大小为 1024x1024。
在 Android 上,并且仅在 Android 上(这可以在 iPhone、Windows 和 Mac 桌面上正确渲染),我从对象的光照中看到这些奇怪的 strip 伪像。它在杯子上最为明显,但它也存在于玻璃上。该 Artifact 具有清晰可辨的线条,但与杯子对象的几何形状不匹配。
我尝试设置 camera.near
和 camera.far
平面来紧密封装场景,最终这些值得到了 50/200。没有效果。
我尝试将 shadow.bias
值设置为非常接近零的值,-.001。也没有效果。
不幸的是,这就是我从 Three.js 存储库和其他 StackOverflow 问题中找到的建议的范围。如果这个伪影对任何人来说都很熟悉,我很想知道如何解决这个问题。
编辑:我已将聚光灯上的 castShadow
设置为 false
,移除了环境光,移除了 castShadow
code> 和来自所有网格的 receiveShadow
,并且伪影仍然显示在 Android 上(仅)。
最佳答案
如果将来有人发现这个:
不幸的是,目前仅影响 Android,这是由于任何聚光灯的 angle
值设置得太低造成的。在上面的场景中,有一个角度为 0.091 的聚光灯。当该值提高到 0.171 时,奇怪的 strip 消失了。
关于android - Three.JS:聚光灯下奇怪的阴影伪影,但仅限于 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63679178/