我正在尝试用太阳系规模的物体创建一个场景。
我想要的一些例子是:
-When a small (on the order of 10m in diameter) object, crosses behind
a large object (earth sized), which blocks the light source
(THREE.DirectionalLight), the smaller object is shadowed by the larger
object.
-When a moon crosses between the light source and a planet,
a shadow is cast on the planet.
-All objects must cast, and receive shadows (except stars, which only cast).
我知道我应该尽可能地拍摄“煎饼”我的影子相机,但由于我需要的缩放比例,这变得非常困难。
在这样的可变比例下创建阴影场景时,可以使用哪些技巧或技巧?
阴影是否存在某种对数深度缓冲区(就像渲染一样)?
或者我可以以某种方式利用相机/轨迹球控制事件动态调整阴影相机的平截头体? (当相机(场景)越来越远时,使用更粗糙的缓冲区/扩展阴影相机平截头)
查看此JSfiddle以获取相关但不同的问题示例。这是两个小物体,靠近在一起,有一个非常遥远的光源。
http://jsfiddle.net/mtcq070x/6/
注意阴影如何闪烁,并且球体前方有阴影(不应该是阴影)。
编辑:我改变了jsfiddle以使用正确的偏差,现在球接收并施放阴影。注意影子黑暗的增加会使自我阴影恶化。降低阴影暗度不是一种选择,因为投射到平面的阴影消失了。此外,我正在研究的是(缩放太阳系)
答案 0 :(得分:1)
你在jsfiddle看到的是什么叫做阴影痤疮。这可以通过使用非零的小正阴影偏置值来修复。设置light.shadowBias = 0.01;
似乎解决了你的小提琴中的问题:http://jsfiddle.net/mtcq070x/4/。另请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/ee416324(v=vs.85).aspx