DOOM3中的MD5文件格式[笔记]

原创 2006年06月06日 23:01:00

忙了一天,找了半天MD5的相关资料,今天终于有点收获了。呵呵(偷笑中……)

MD5文件格式分为MESH(.md5mesh)和ANIMIATION(.md5anim),分别储存顶点和动画。

MESH部分

首先先看一下文件大概的内容

MD5Version 10
commandline "mesh models/monsters/imp/animation/cycles/imp.mb -dest models/md5/monsters/imp/imp.md5mesh -game Doom -prefix IMP1_ -keep Lknee Rknee Lelbow Relbow camera Body -keep Rmissile Lmissile -parent Rmissile Rhand -parent Lmissile Lhand -parent Rwing Chest -parent Lwing Chest -parent Hips Body -parent Waist Body -parent camera Head -prefix IMP2_ -prefix IMP_ -align ALL"

numJoints 71
numMeshes 1

joints {
   "origin"   -1 ( 0 0 0 ) ( -0.5 -0.5 -0.5 )      //
   "Body"   0 ( -0.0000002384 0 56.5783920288 ) ( -0.5 -0.5 -0.5 )      // origin
   "Hips"   1 ( 3.3494229317 -0.0225959271 62.0168151855 ) ( -0.5 -0.5 -0.5 )      // Body
   ...
}

mesh {
   // meshes: polySurface1
   shader "models/monsters/imp/imp"

   numverts 891
   vert 0 ( 0.8658549786 0.3910109997 ) 1377 2
   ...

   numtris 1346
   tri 0 2 1 0
   ...

   numweights 1401
   weight 0 47 1 ( 1.5918749571 -0.9465401769 4.3310847282 )
   ...
}

关节(JOINTS):

 "origin"   -1 ( 0 0 0 ) ( -0.5 -0.5 -0.5 )

首先是关节的名字,然后是关节的父接点(-1代表没有),接着是关节的位置(X,Y,Z),最后是一个四元数。

当然了四元数不能只有三个元了,但因为是单位四元数,所以我们可以把最后的W计算出来。

计算式:

1.0 = x^2 + y^2 + z^2 + w^2

PS:这里的位置都是绝对位置了,并不是相对于关节的位置。

网格(MESH):

numverts 891
   vert 0 ( 0.8658549786 0.3910109997 ) 1377 2

分别对应 顶点序号(U、V坐标) 权值开始序号 权值数

PS:解释下权值数,就是在皮肤骨骼动画中,每个顶点并不是只被一个骨骼所控制,是被许多骨骼所共同控制的,所以要有不用的权值了。这里,顶点的权值是从权值开始序号开始的N个权值。

numtris 1346
   tri 0 2 1 0

这个就是三角形索引了,一看就明白,三角形序号和三角形所对应的三个顶点

numweights 1401
   weight 0 47 1 ( 1.5918749571 -0.9465401769 4.3310847282 )

这个是权值,依次是:权值序号、关节序号、权值和XYZ位置

对了,还有一点要补充了。顶点的最终位置是这样了

v = w(1).v * w(1).weigth + w(2).v * w(2).weight + ... + w(n).v * w(n).weight

OK,MD5先到一段落,下次再补充动画部分。 

 

骨骼蒙皮动画(Skinned Mesh)的原理解析(二)

http://blog.csdn.net/jimoshuicao/article/details/9283071 2)蒙皮信息和蒙皮过程 2-1)Skin info的定义 上文曾...
  • OnafioO
  • OnafioO
  • 2016年02月21日 17:09
  • 2139

64位程序调用32位DLL

最近再把原来写的股票分析程序转换成64位版本,程序中调用了银江的通视数据接口dll,因为银江提供的dll是32位的,但windows下面64位程序并不能直接调用32位的dll,所以只能百度了. ...

版本差异对比(五)-- 以JSON格式持久化文件MD5值至磁盘

持久化需要用GSON将Map转换为Json数据,以便读取时直接可以转换回Map。/** * java读写文件 读取d:/1.txt文件内容,写入f:/text.txt文件中. * ...
  • JacXuan
  • JacXuan
  • 2017年11月01日 14:50
  • 13223

目录监控,计算文件MD5值(part3)

  • 2011年03月09日 19:15
  • 359KB
  • 下载

iOS开发笔记(3)---- 3DES/MD5加解密

准备工作:导入系统头文件 #import “CommonCryptor.h” #import “CommonDigest.h” 加密代码如下 //将秘钥字符串转换...

NetworkX学习笔记-3-Python中输出Gephi文件格式的方法

Gephi(http://gephi.org/)是一个常用的复杂网络分析和可视化工具,可以生成些比较漂亮的网络图。这里总结一下Python中生成符合Gephi输入文件格式的方法。Gexf(http:/...
  • qysh123
  • qysh123
  • 2013年06月12日 16:49
  • 4238

MD5加密解密 zip格式压缩解压

MD5加密解密 zip格式压缩解压

MD5模型的格式、导入与顶点蒙皮式骨骼动画I

MD5模型的格式、导入与顶点蒙皮式骨骼动画I 2011-10-6 21:14:49  | 发布:zwqxin MD5模型是ID公司第一款真正意义上的骨骼格式模型,在04年随着Doom3一起面世...

【asp.net小札记】序列化实体类为xml格式和hmac_md5加密

1、序列化 /// /// 序列化为xml,返回规范化数据 /// /// /// /// public static stri...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DOOM3中的MD5文件格式[笔记]
举报原因:
原因补充:

(最多只允许输入30个字)