【问题标题】:Three.js wrong Normals and Faces after using MeshPhongMaterial displacementMap三.js使用MeshPhongMaterialdisplacementMap后报错Normals和Faces
【发布时间】:2017-11-28 12:14:45
【问题描述】:

我正在使用 MeshPhongMaterial 中的置换贴图属性和加载的灰度纹理。挤压/位移工作正常,但受影响的网格的法线和面。几何图形没有得到更新。

我用过

geometry.computeFaceNormals() 

geometry.computeVertexNormals(). 

我想通过向下投射光线并接收相交面/顶点的高度 (y) 值来在地形上制作一个可行走的角色,以进行角色偏移操作。

用 VertexNormalsHelper(红线)和 FaceNormalsHelper(绿线)附上当前置换几何体的 img。

有人知道如何正确更新它们吗?

【问题讨论】:

    标签: three.js terrain vertices heightmap


    【解决方案1】:

    置换贴图只会在顶点着色器中应用,这意味着基本几何体实际上并没有改变,而基本几何体就是助手显示的内容。

    您必须迭代并更改几何缓冲区本身中的实际顶点才能更改它们。

    当然,这同样适用于将使用基本顶点/面的 raycaster 相交测试。

    我想通过向下投射光线并接收高度 (y) 来在地形上制作一个可行走的角色

    一种可能的解决方法避免改变几何形状是首先获取角色在平面上的 UV 位置,然后将其映射到置换贴图上的 2D 位置。最后选择该点的值,缩放并将其用作相对于网格的高度。

    这甚至可能比使用光线投射更有效,但您可能必须对不在顶点上的位置进行插值。

    【讨论】:

      猜你喜欢
      • 2018-11-06
      • 2017-03-15
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多