【发布时间】:2016-02-01 20:23:28
【问题描述】:
我正在尝试创建一个包含太阳系尺度对象的场景。
我想要的一些例子是:
-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 以使用适当的偏差,球现在接收并投射阴影。请注意阴影暗度的增加如何使自阴影恶化。降低阴影暗度不是一种选择,因为投射到位面的阴影会消失。
这正是我正在研究的样子(缩放太阳系)
【问题讨论】:
标签: javascript 3d three.js webgl