在看Cg教程中,看到关键桢插值来表示一个动画的物体,例如一个动物拥有站着,奔跑,下跪等动画序列,美工将这些特定的姿态称为一个关键桢。为什么要用关键桢这种来表示了,这个比较容易理解,我们知道我们看的一些卡通动画,都不是每桢来画的,都是准备一些关键的过渡动画,然后,美工人员在根据每二幅之间来补充一些中间的动画,以增加精细的效果。
MD2模型文件就是存储一些关键桢的动画模型,格式还是很简单的,对比OBJ模型来说,更容易读取,分为几个主要部分,一部分是头文件,里面对相应的数据描述在那,如多个面,多少桢,从那读顶点,读桢都有说明,头文件后就是数据存放位置了。
我们先来看下头文件的定义,有用的部分我做了注释。
1 type Md2Header = 2 struct 3 val magic: int //MD2文件标示 4 val version: int //MD2版本 5 val skinWidth: int //纹理宽度 6 val skinHeight: int //纹理长度 7 val frameSize: int //桢的大小 8 val numSkins: int // 9 val numVertices: int //多少个顶点(每桢数量相同,数据不同) 10 val numTexCoords: int //多少个纹理顶点(所有桢共用) 11 val numTriangles: int //每桢由多少个三角形组成,所有桢是一样的 12 val numGlCommands: int //用VBO直接放弃 13 val numFrames: int //多少桢 14 val offsetSkins: int // 15 val offsetTexCoords: int //从那开始读纹理数据 16 val offsetTriangles: int //从那开始读三角形 17 val offsetFrames: int //从那开始读桢数据 18 val offsetGlCommands:int //无用 19 val offsetEnd: int //可以用来检查 20 end