【问题标题】:VertexNormals calculation on Three.jsThree.js 上的 VertexNormals 计算
【发布时间】:2023-03-29 00:30:02
【问题描述】:

我不确定这是否是错误,但是一旦您在 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 个现有向量的中心吗?像这样的东西:

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

提前致谢。

【问题讨论】:

  • 打电话给mergeVertices对我来说似乎没有任何区别
  • 你是对的。 three.js 在创建THREE.BoxGeometry 时显然已经删除了重复的顶点。我习惯于只使用 WebGL 创建一个立方体,你最终会得到 24 个顶点。很好发现。

标签: javascript three.js normals vertices


【解决方案1】:

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

【讨论】:

  • 啊,我明白了。我天真地认为每个顶点只接触 3 个面。但相反,它涉及 4 个面,有时是 5 个。是的,线框清楚地表明了这一点!干杯。
猜你喜欢
  • 2017-07-02
  • 2017-01-13
  • 2015-05-25
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
相关资源
最近更新 更多