为什么阴影位置不正确?(Three.js)

8
我有一架绿色的飞机,上面有一个红色的立方体。光源是定向光。

shadow

为什么阴影位置不对? 代码: http://jsfiddle.net/pD8dn/


编辑:

如果我改变light.shadowBias,那么平面上的阴影就正确了,但立方体上的阴影则不正确:

shadow

http://jsfiddle.net/pD8dn/4/

提前感谢您的帮助!


@EmilVikström 这是链接:http://jsfiddle.net/pD8dn/ - eqiproo
1个回答

6
这是阴影贴图中最常见的伪影之一,被称为“Peter Panning”。
解决方法是为深度测试添加一些小偏差:
light.shadowBias = 0.001;

每个场景都需要调整偏差的确切值(不幸的是有时你无法摆脱所有的伪影,调整阴影图更多的是艺术而不是科学)。

这是适用于您示例的内容:

http://jsfiddle.net/pD8dn/2/


3
是的,这就是我的意思。使用阴影贴图时,你需要调整不同的参数(如分辨率、光锥体大小和位置、偏移量),并在不同的视觉效果之间寻找平衡。请注意,偏移量对微小变化非常敏感,需要进行实验以查看其效果。 - alteredq
1
如果我的场景中有更大和更小的对象,那么我就无法找到一个好的解决方案。这是 Three.js 中的一个错误吗?因为在其他 3D 库的演示中,我没有发现这样的错误。 - eqiproo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接