Three.js 上的 VertexNormals 计算

VertexNormals calculation on Three.js

我不确定这是否是一个错误,但是一旦您在 THREE.BoxGeometry 中调用 geometry.computeVertexNormals() 并计算顶点法线,我认为生成的向量是错误的。

this为例:

geometry = new THREE.BoxGeometry(50, 50, 50);
geometry.computeVertexNormals();
material = new THREE.MeshNormalMaterial();

如您所见,一切看起来都正常,但是如果您旋转 X 轴,您会看到矢量指向 different 方向。

mesh.rotation.x = 90 * Math.PI / 180;

在几何合并之前,我们不应该期望矢量正好指向 3 个现有矢量的中心吗?是这样的:

如果不是,请解释为什么会发生这种情况?

提前致谢。

computeVertexNormals 计算连接到每个顶点的面的面法线的平均值。对于盒子网格,并非所有顶点都连接到相同数量的面,因此您有不同的法线平均值。绘制 wireframe 可以更容易地看到。