计算网格的顶点法线

15

我已经尽可能地做了所有研究,而所有的研究都只是简单地说要计算每个相邻面的表面法线。

计算表面法线很容易,但是如何找到每个顶点的相邻面呢?使用什么样的存储方式?我是否遗漏了什么?为什么对于其他人来说这么容易。

任何指导都将不胜感激。

1个回答

16
“但是你如何找到每个顶点的相邻面呢?” 试着换个思路:遍历所有面,将其法向量加到顶点的法向量上。当处理完所有面后,将顶点法向量归一化为单位长度。我在这里详细描述了它。 在三角形网格中计算法线 如果你真的想找到一个顶点的面,最朴素的方法是在线性列表中搜索该顶点。更好的方法是维护一个邻接表。

2
真是太有道理了,非常感谢。我试图制作一个邻接表,但是我甚至不知道从哪里开始,因为我无法想象如何存储哪些数据以及何时何地如何存储。你的第一个解决方案更加合理,谢谢。我还发现了一个更简单的解决方案,因为我正在尝试给一个球着色,我发现法线就是标准化的顶点减去球的中心...这将节省我数小时的时间。再次感谢。 - Jimmy Dean
1
@JimmyDean:如果你在StackOverflow上搜索“datenwolf sphere rendering”,你会找到我的答案,它也描述了球体表面点和法线之间的关系。 - datenwolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接