Three.js:将面法线从局部空间转换为世界空间

标签 three.js vertex normals face

我有一个 THREE.PlaneGeometry , 与 ComputeFaceNormals() .我使用这个几何体创建了两个网格,并对它们应用了不同的旋转。我想计算相机和两个网格中心面法线之间的两个角度。它应该是 :

vLocalCamera = vCamera.position - mesh1.position;

mesh1.normal() . vLocalCamera = cos(angle);

问题是我不知道如何使用three.js API 在世界坐标(从几何和网格旋转)中获取网格法线

最佳答案

如果要转换面或顶点法线,normal ,从局部空间到世界空间,你这样做:

var normalMatrix = new THREE.Matrix3(); // create once and reuse
var worldNormal = new THREE.Vector3(); // create once and reuse

...

normalMatrix.getNormalMatrix( object.matrixWorld );

worldNormal.copy( normal ).applyMatrix3( normalMatrix ).normalize();

三.js r.107

关于Three.js:将面法线从局部空间转换为世界空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16268482/

相关文章:

javascript - 在 THREE.js 中一起渲染多个盒子

opengl-es - 顶点缓冲区对象的最大大小 (OpenGL ES 2.0)

c++ - 使用四元数进行切线空间法线映射 - 我遇到的问题

opengl-es - 计算顶点法线(OpenGL ES)时没什么问题

javascript - Three.js - 设置相机以便整个场景显示的算法?

javascript - Three.js - 如何确定网格和粒子系统之间的交集?

java - 更改(重命名)jung 中的顶点标签

c++ - 在 C++ 中计算我的立方体的 8 个顶点中的每一个的法线

javascript - Threejs 网格缩放到渲染器并且不保留纵横比

c - 在此 pnpoly 算法中包括边