问题描述
使用Three.js v0.113.2,我在一个带有两个聚光灯(一个在后面,一个在前面)和一个环境光的飞机上渲染杯子的场景。前部聚光灯投射阴影,杯子设置为投射阴影(但 not 不能接收阴影),飞机设置为可以接受阴影。我使用的阴影半径为20(iirc)。阴影mapSize为1024x1024。
在Android上,并且仅在Android(可在iPhone,Windows和Mac桌面上正确呈现)上,我从对象的照明中看到了这些奇怪的带状伪像。它在杯子上最明显,但也存在于窗格中。该工件具有明显可分辨的线条,与杯子对象的几何形状不匹配。
我尝试将camera.near
和camera.far
平面设置为紧密封装场景,并最终将这些值设置为50/200。没有效果。
我尝试将shadow.bias
的值设置为非常接近零的-.001。也没有效果。
不幸的是,这就是我可以从Three.js存储库和其他StackOverflow问题中找到的建议的范围。如果任何人都对这种工件看起来很熟悉,我很想找出解决方法。
编辑:我已将Spotlight上的castShadow
设置为false
,删除了环境光,删除了castShadow
和receiveShadow
所有网格,并且工件仍然显示在Android上(仅)。
解决方法
万一将来有人发现:
目前,仅影响Android的不幸伪像是由于将任何聚光灯的angle
值设置得太低引起的。在上面的场景中,有一个聚光灯,角度为0.091。将其提高到0.171时,奇怪的条纹消失了。