我使用MeshPhongMaterial中的displacementMap属性和一个加载的灰度纹理。挤出/位移工作正常,但受影响的mesh.geometry的法线和面不会更新。
我用过
geometry.computeFaceNormals()
和
geometry.computeVertexNormals().
我希望通过向下光线投射并接收交叉面偏移操作的相交面/顶点的高度(y)值,在地形上制作一个可行走的角色。
使用VertexNormalsHelper(红线)和FaceNormalsHelper(绿线)封装当前移位几何体的img。
有人知道如何正确更新它们吗?
答案 0 :(得分:2)
置换贴图仅应用于顶点着色器,这意味着基本几何体实际上没有被改变,基本几何体是助手所显示的。
您必须迭代并更改几何缓冲区本身的实际顶点才能更改它们。
同样适用于使用基本顶点/面的raycaster交叉测试。
我想通过光线投射和接收高度(y)在地形上制作一个可步行的角色
避免更改几何图形的可能解决方法是首先获取角色在平面上的UV位置,然后将其映射到置换贴图上的2D位置。最后选择该点的值,缩放并将其用于相对于网格的高度。
这甚至可能比使用光线投射更有效,但您可能必须对不在顶点上的位置进行插值。