我试图在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 },
...
...
Run Code Online (Sandbox Code Playgroud)
好吧这可能听起来很愚蠢,但我认为每个模型都是由不同的三角形组成,那么你怎么可能使用一组预编译法线来渲染所有模型呢?这看起来很奇怪,任何想法都会受到赞赏.
您可以使用预编译的法线表,并使用查找表来选择对于特定情况"足够好"的表.每个三角形都在一个不同的平面上,而那个平面有一个法线,而不是三角形本身.
例如,让我们想象一下我们有一个观点.为了讨论的目的,将该点扩展为一个球体,使其在概念上更容易掌握.如果您在y
轴上围绕该球体绘制一个完美的圆,那么x
每次将该圆旋转轴1度,最终会得到360个圆.如果沿着每个圆圈以1度的间隔取正常值,你最终360 ** 2
得分.从那里,你正常的是从球体对球体点中心的载体,它是一个正常的构造相切的球面点的平面.你到底是什么了,如果你计算这两个对这一领域的每一点是法线预先计算表,几乎可以肯定是在大多数情况下足够了.现在您只需要为该数据设计查找方案(平面 - >正常).