如何基于共享顶点的多个三角形计算法向量?

The*_*Saw 5 opengl math 3d mesh

如果我有一个三角形网格,那么如何计算每个给定顶点的法线?

我理解如何找到单个三角形的法线.如果我有三角形共享顶点,我可以通过找到每个三角形的相应法线,将其标准化,将其添加到总数,然后对最终结果进行标准化来部分找到答案.然而,这显然没有考虑到每个法线的适当加权(例如,当与大三角形链接时,许多小三角形可以摒弃答案).

650*_*502 5

我认为一个好的方法应该是使用加权平均值,但使用角度而不是面积作为权重。在我看来,这是一个更好的答案,因为您计算的正常情况是“本地”特征,因此您并不真正关心贡献的三角形有多大……您需要一种“本地”度量贡献和指定顶点上三角形两条边之间的角度就是这样的局部度量。

使用这种方法很多小(薄)三角形不会给你一个不平衡的答案。

如果通过使用三角形与以顶点为中心的小球体的交集来定位计算,则使用角度与使用面积加权平均值相同。


Nic*_*vre 2

这篇博文概述了三种不同的方法,并给出了一个直观的示例,说明为什么标准和简单方法(在顶点连接的所有面的法线的面积加权平均值)有时可能会产生较差的结果。