android - Three.JS:聚光灯下奇怪的阴影伪影,但仅限于 Android

标签 android three.js shadow

使用 Three.js v0.113.2,我正在使用两个聚光灯(一个在后面,一个在前面)和环境光来渲染平面上的杯子场景。前面的聚光灯转换阴影,杯子设置为转换阴影(但接收阴影),并且平面设置为接收阴影。我使用的阴影半径为 20 (iirc)。阴影贴图大小为 1024x1024。

在 Android 上,并且仅在 Android 上(这可以在 iPhone、Windows 和 Mac 桌面上正确渲染),我从对象的光照中看到这些奇怪的 strip 伪像。它在杯子上最为明显,但它也存在于玻璃上。该 Artifact 具有清晰可辨的线条,但与杯子对象的几何形状不匹配。

enter image description here

我尝试设置 camera.nearcamera.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/

相关文章:

iphone - 图层阴影的不透明度

java - java 文件中的扩展 ascii

javascript - threejs 性能 - 合并和选择

shadow - .png Logo 周围的框阴影,不是矩形

javascript - 带摄像头的旋转光源 + OrbitControls.js

Angular-CLI 和 ThreeJS

android - 如何从 Android Studio 中的 DrawerLayout 中删除高程(投影)?

android - 我的应用程序的键盘永久可见

Android 检查网络连接选项卡加载程序

java - 当 10Mb 空闲时,Android 分配 4Mb 时出现 OutOfMemoryError