编程语言
首页 > 编程语言> > javascript-Three.js可以将雾应用于区域而不是与照相机的距离吗?

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

作者:互联网

想象一下一个场景,其中您有一个非常大的THREE.PlaneGeometry模拟地板,并且有一个摄像机随机添加到场景中.

如果手动调整雾的近距离和远距离值,则可以以某种方式隐藏平面的外部,从而产生无限的印象.
到现在为止还挺好.

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

所以我的问题是,只有当您足够接近飞机的极限时,我们才能如何实现雾化效果?

解决方法:

我对雾系统的工作方式没有足够的深入了解,因此,如果有人可以纠正我,那就太好了.

我想雾只能在相机上渲染,而不能应用到某个对象,或者不能创建雾对象(例如,由雾制成的立方体),除非您使用可以使对象看起来像“雾”的着色器,但是如果您进入该对象,您将不再能看到雾(否则它将无法按预期方式渲染)

但是,您可以做的是根据相机的位置动态更改雾化渲染,距离中心越远,雾化渲染与相机的距离就越大.通过执行简单的减法(X-距平面中心的距离)即可轻松实现这一点,其中X等于相机可以达到的最大距离.

与XY平面上的中心的距离也很容易,如果将平面的中心定位为0,0,则会自动知道相机所在的X和Y坐标.然后,您可以只计算相对于X和Y轴的斜边(请参见下面的gif).

标签:three-js,javascript
来源: https://codeday.me/bug/20191121/2050812.html