我正在尝试在opengl中加载md2文件,但我注意到大多数示例程序仅使用

预编译的法线列表。像这样的东西.....

//table of precalculated normals
{ -0.525731f,  0.000000f,  0.850651f },
{ -0.442863f,  0.238856f,  0.864188f },
{ -0.295242f,  0.000000f,  0.955423f },
{ -0.309017f,  0.500000f,  0.809017f },
...
...

好的,听起来有些愚蠢,但是我认为每个模型都是由不同的三角形组成的,那么怎么可能使用一组预编译的法线来渲染所有模型呢?
似乎有些奇怪,任何想法都将不胜感激。

最佳答案

您可以使用预编译的法线表,并使用查找表为特定情况选择一个“足够好”的表。每个三角形都在一个不同的平面上,并且该平面具有法线,而不是三角形本身。

例如,假设我们有一个观点。出于讨论的目的,将这一点扩展到一个领域,这使得在概念上更容易掌握。如果您在y轴上围绕该球体绘制一个完美的圆,然后每次在x轴上旋转该圆1度,最终将得到360个圆。如果沿每个圆以1度的间隔进行法线测量,最终将得到360 ** 2点。从那里开始,法线是从球体中心到球体上该点的 vector ,并且是切线构造的平面指向球体上的法线。如果为该球体上的每个点计算这两个,最终将得到一个预先计算的法线表,几乎可以肯定,对于大多数情况而言,这已经足够了。现在,您只需要为该数据设计一个查找方案(平面->法线)。

09-06 12:25