【问题标题】:Three.JS: Weird shadow artifacts from a spotlight, but only in AndroidThree.JS:来自聚光灯的奇怪阴影工件,但仅限于 Android
【发布时间】:2020-12-20 01:36:56
【问题描述】:

使用 Three.js v0.113.2 我在飞机上渲染这个杯子场景,带有两个聚光灯(一个在后面,一个在前面)和一个环境光。前面的聚光灯投射阴影,杯子被设置为投射阴影(但接收它们),而飞机被设置为接收阴影。我使用的阴影半径为 20 (iirc)。阴影贴图大小为 1024x1024。

在 Android 上,并且仅在 Android 上(这可以在 iPhone、Windows 和 Mac 桌面上正确呈现)我从物体上的照明中看到这些奇怪的条带伪影。它在杯子上最明显,但它也出现在窗格上。工件有清晰可辨的线条,与杯子对象的几何形状不匹配。

我尝试设置 camera.nearcamera.far 平面以紧密封装场景,最终这些值的值为 50/200。没有效果。

我尝试将 shadow.bias 值设置为非常接近零的值 -.001。也没有效果。

不幸的是,这就是我可以从 Three.js 存储库和其他 StackOverflow 问题中找到的建议的范围。如果有人觉得这个工件很熟悉,我很想知道如何解决这个问题。

编辑:我已将 Spotlight 上的 castShadow 设置为 false,移除了环境光,从所有网格中移除了 castShadowreceiveShadow,工件仍然显示在 Android 上(仅限)。

【问题讨论】:

  • 我从未见过负阴影贴图偏差。你有没有尝试过一些积极的东西,比如 0.001?另外,请确保您设置了material.side = THREE.FrontSide,因为这决定了哪个面会投射阴影as outlined here 看起来您可能会让这些面在自己身上投射阴影。
  • @Marquizzo 我刚刚尝试了一个小的正偏差,将material.sidematerial.shadowSide 设置为THREE.FrontSide(适用于所有网格),但仍然会出现完全相同的阴影伪影杯子和飞机。同样,仅适用于 Android(所有浏览器),不适用于 iOS 或任何桌面浏览器。

标签: android three.js shadow


【解决方案1】:

万一以后有人发现:

目前仅影响 Android 的不幸伪像是由于将任何聚光灯的 angle 值设置得太低造成的。在上面的场景中,有一个角度为 0.091 的聚光灯。当它提高到 0.171 时,奇怪的条纹消失了。

【讨论】:

    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2011-12-17
    • 2017-07-15
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    相关资源
    最近更新 更多