我正在使用来自维纳斯星球的高度地图数据在Three.js中进行驾驶模拟。
GitHub回复:https://github.com/hypothete/venus-walk
到目前为止模拟的工作原理如下:
在一个隐藏的场景中,一个名为globeCamera的摄像机在一个固定的高度上移动,该高度覆盖在用金星高度图纹理的球体上。您可以在我的图片的左下方视口中看到这种情况。 globeCamera将其视图呈现为WebGLRenderTarget,以用作本地高度贴图。结果是在左中间的第二个视口中。
在可见场景中,名为terrainMesh的平面网格的顶点与本地高度贴图中的值相对应地上下移动。这给人一种错觉,即当我们实际上只是从globeCamera的运动中更新飞机的顶点时,放置在飞机中心的车辆正在表面上移动。
由于我知道globeCamera的旋转,我可以将该值传递给我的片段着色器,以使用高度贴图旋转terrainMesh的岩石纹理。
如何抵消岩石纹理的位置,以便纹理单位与地形一起平移?我已经尝试将globeCamera的偏移量作为2D矢量跟踪并将其添加到片段着色器中的旋转UV,但我的结果不一致。谢谢你的帮助。