参考:http://lib.yoekey.com/?p=246
MD5模型是ID公司第一款真正意义上的骨骼格式模型,在04年随着Doom3一起面世,经过几个版本的变更,现在在骨骼模型格式中依然有其重要地位。本文只阐述MD5MESH的文件结构。
文件头:
MD5Version <integer>
commandline ”<string>”
MD5Version - 一个整数,定义了md5的版本号,这个地方始终写10。
commandline - 一个字符串,是要传递个exportmodels命令控制台的参数。
具体参数:
numJoints <integer>
numMeshes <integer>
numJoints - 一个整数,该模型的骨骼数量。
numMeshes - 一个整数,该模型的网格数。
列表:
<string> {
[element 1]
[element 2]
[element 3]
… ect …
}
格式:首先,声明列表类型(<string>)。然后在大括号中包含具体内容。
内容每一行为一系列元素,用\r\n进行分割。
MD5MESH中有两个组:Joints和Mesh。
Joints
“[boneName]“ [parentIndex] ( [xPos] [yPos] [zPos] ) ( [xOrient] [yOrient] [zOrient] )
boneName - 骨骼的名称。
parentIndex - 骨骼父节点的序号。
xPos - 骨骼平移元素的x分量。
yPos - 骨骼平移元素的y分量。
zPos - 骨骼平移元素的z分量。
xOrient - 骨骼旋转元素的x分量(四元数格式)。
yOrient - 骨骼旋转元素的y分量(四元数格式)。
zOrient - 骨骼旋转元素的z分量(四元数格式)。
Mesh
// meshes: [meshName]
shader ”[materialName]“
meshName - 网格的名称。
materialName - 这个网格的材质。
Vert
numverts <integer>
vert [vertIndex] ( [texU] [texV] ) [weightIndex] [weightElem]
numverts - 顶点的数量。
vertIndex - 这个顶点的索引。
texU - UV纹理坐标U分量。
texV - UV纹理坐标V分量。
weightIndex - 这个顶点在权重列表中的第一个权重的索引。
weightElem - 这个顶点在权重列表中受影响的权重数量。
Tri
numtris <integer>
tri [triIndex] [vertIndex1] [vertIndex2] [vertIndex3]
numtris - 三角形的数量。
triIndex - 这个三角形的索引。
vertIndex1 - 这个三角形的第一个顶点索引。
vertIndex2 - 这个三角形的第二个顶点索引。
vertIndex3 - 这个三角形的第三个顶点索引。
Weight
numweights <integer>
weight [weightIndex] [jointIndex] [weightValue] ( [xPos] [yPos] [zPos] )
numweights - 权重的数量。
weightIndex - 这个权重的索引。
weightValue - 权重关联的骨骼。
weightValue - 权重值。
xPos -权重平移元素的x分量。
yPos - 权重平移元素的y分量。
zPos - 权重平移元素的z分量。
欢迎关注微信公众号——计算机视觉: