Three.js雾可以应用于区域而不是距离相机的距离吗?

时间:2014-09-03 11:13:29

标签: javascript three.js

想象一下你有一个非常大的THREE.PlaneGeometry来模拟地板的场景,你可以在一个随机位置添加一个摄像头。

如果我手动调整雾的近和远值,我可以以某种方式隐藏飞机的外部,从而产生无限的印象。 到目前为止,非常好。

问题是,如果我让我的相机在场景中飞到飞机内的随机位置怎么办?如果随机点足够接近飞机的外部,则雾不会掩盖飞机的末端,因为雾总是基于摄像机位置。

所以我的问题是,只有当你足够接近飞机的极限时,我们怎么能达到雾效?

1 个答案:

答案 0 :(得分:3)

我对雾系统的运作方式还没有足够深入的了解,所以,如果有人能够纠正我,那就太棒了。

我猜雾只会在相机上呈现,你不能将它应用于,比如说,一个物体或者你都不能创建一个雾物体(例如由雾制成的立方体),除非你使用可以制作的着色器对象看起来像"雾"但是如果你进入对象你就不能再看到雾(或者它不会按预期呈现)

然而,你可以做的是根据你的相机位置动态改变雾渲染,你离中心的距离越远,雾越接近相机。通过简单的减法(X - 距平面中心的距离)可以很容易地实现这一点,其中X等于相机可以达到的最大距离。

在XY平面上距离中心的距离也很简单,如果将平面中心定位在0,0,则自动知道相机所在的X和Y坐标。然后你可以计算相对于X轴和Y轴的斜边(见下面我的gif)。

Hypotenuse on XY