计算四边形网格的法线

时间:2012-11-22 01:15:34

标签: c++ 3d mesh lighting

我有一个结构QUAD,存储4个指针到4个VECTOR3D(包含3个浮点数),这样我就可以绘制四边形网格。 根据我的理解,每当我画一个网格时,我也需要正常以适当地照亮/遮蔽网格,当它是一个平铺网格时,使用普通的每个面部时相对容易。

当我有2×2个四边形网格放置在XZ坐标上并尝试将其中心(0,0,0)提升一定点时,比如说(0,4,0)它会开始形成真正的3D形状,然后我需要再次计算法线。我很难理解计算法线的方法和内容。正如所料,3D形状的阴影就像它仍然是一个平面网格,因此它不代表真实的形状。其中一个解释说我需要计算每个顶点的法线而不是每个面。 这是否意味着我需要计算网格所有角落的法线?一旦我有正常,我该怎么办?我还在使用旧的glBegin glEnd方法,但现在我觉得我需要使用DrawArray方法。我很困惑,我很确定我的声音不大,但我非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果你需要看起来平坦的表面,那么你的法线将是四边形平面的法线。如果你需要“柔和的”表面,你需要混合(read this并观看this酷的简单视频)法线 - 这将增加一些渐变。