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 可以更容易地看到。
我不确定这是否是一个错误,但是一旦您在 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 可以更容易地看到。