Catmull Clarke不保留平面法线

时间:2018-12-14 21:42:32

标签: matlab geometry normals quadrilaterals

在我展示的玩具示例中,表面法线之一显然是错误地指向内部。我可以创建一个新的立方体,其法线朝外,如预期的那样,但是用Catmull Clarke处理后,不能保证所有法线都将保持现存的朝向。

由于我必须使用四边形,因此我知道我可以通过调换顶点顺序来固定人脸,即[a b c d]-> [d c b a]从而固定法线。但是如何确定给定脸部的法线指向错误的方向呢?

(没有足够的代表要嵌入)https://gyazo.com/e20576e700196a43a2378eb055a71b38

1 个答案:

答案 0 :(得分:0)

您可以检查面部法线向量与从立方体质心到面部任意点的向量之间的点积符号。

比方说,[a,b,c,d]人脸的法线向量为n。接下来,通过平均立方体的8个顶点坐标来计算其质心,我们将其称为p

然后,计算dir = dot(n,(a-p))。如果为dir > 0,则正常的n从立方体指向外部。如果dir为负,则必须翻转法线。

此方法适用于任何凸多面体的面。如果要处理非凸多面体,则必须使用类似上述here的方法。