在我展示的玩具示例中,其中一个曲面法线明显错误地指向内部。我可以按预期创建一个法线向外的新立方体,但在使用Catmull Clarke处理后,无法保证所有法线都保持现有的面向。
由于我必须使用四边形,我知道我可以通过转换垂直顺序来固定面,即[a b c d]->[d c b a],从而固定法线。但是,我如何确定给定人脸的法线指向错误的方向呢?
(没有足够的rep嵌入(https://gyazo.com/e20576e700196a43a2378eb055a71b38
您可以检查面法线向量和从立方体质心到面上任何点的向量之间的点积符号。
假设面[a,b,c,d]
的法向量为n
。接下来,通过对立方体的8个顶点坐标求平均值来计算其质心,我们称之为p
。
然后,计算dir = dot(n,(a-p))
。如果dir > 0
,则法线n
从立方体向外指向。如果dir
为负,则必须翻转法线。
这种方法适用于任何凸多面体的面。如果你在处理非凸多面体,你必须使用像这里提到的方法。