gpt4 book ai didi

javascript - THREE.js:远处光源转换的阴影

转载 作者:行者123 更新时间:2023-12-03 07:47:32 26 4
gpt4 key购买 nike

我正在尝试创建一个包含太阳系规模物体的场景。

我想要的一些例子是:

-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 以使用适当的偏差,球现在接收并转换阴影。请注意阴影暗度的增加如何使自阴影变得更糟。降低阴影暗度不是一个选择,因为这样转换到平面上的阴影就会消失。

这也是我正在研究的内容(缩放太阳系)

enter image description here

最佳答案

您在 jsfiddle 中看到的就是所谓的阴影痤疮。这可以通过使用非零、小的正阴影偏差值来解决。设置 light.shadowBias = 0.01; 似乎可以解决 fiddle 中的问题: http://jsfiddle.net/mtcq070x/4/ 。另请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/ee416324(v=vs.85).aspx

关于javascript - THREE.js:远处光源转换的阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35139612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com