MD5MESH文件结构

 

参考: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分量。

 

 

 

欢迎关注微信公众号——计算机视觉:

 

你可能感兴趣的:(MD5)