我正在尝试创建一个算法来计算模型/网格的法线。人们告诉我可以使用两个向量之间的叉积来实现,这起初似乎是个好主意,但后来我发现它可能并不总是有效。例如,想象一个正方体,其前面置于原点,背面朝下沿着Z轴。如下图所示:
https://istack.dev59.com/lInpC.webp 我很抱歉我的手写不太好,但这没有任何意义。如您所见,我将v和u进行叉积运算以获得指向正Z轴的法线。然而,如果我使用相同的计算方法来计算后面的法线,那么显然法线将指向形状内部。结果是我需要计算光的亮度时有不准确的法线。我希望法线始终指向远离模型的方向。
我知道肯定有更好的方法来计算法线,但我不知道它是什么。有人能向我建议另一种算法来解决这个问题吗?如果不行,那么肯定有一种检查法线是否朝向对象/模型内部的方法。如果可以的话,在答案中提供一下并告诉我在哪里可以找到相关解释,因为我很想了解这些方法的原理。
https://istack.dev59.com/lInpC.webp 我很抱歉我的手写不太好,但这没有任何意义。如您所见,我将v和u进行叉积运算以获得指向正Z轴的法线。然而,如果我使用相同的计算方法来计算后面的法线,那么显然法线将指向形状内部。结果是我需要计算光的亮度时有不准确的法线。我希望法线始终指向远离模型的方向。
我知道肯定有更好的方法来计算法线,但我不知道它是什么。有人能向我建议另一种算法来解决这个问题吗?如果不行,那么肯定有一种检查法线是否朝向对象/模型内部的方法。如果可以的话,在答案中提供一下并告诉我在哪里可以找到相关解释,因为我很想了解这些方法的原理。
u x v
给出了一个指向意外方向的向量,那么v x u
将给出相同大小但方向相反的向量。 - SandPiper