昨天开始研究了一下Ogre的骨骼动画文件格式。
骨骼文件主要分四个部分:文件头、主要骨骼数据、所有动画数据、连接
文件头:HEADER_STREAM_ID 2 0x1000
mVersion 不定长 [Serializer_v1.10]
回车 1 14h
主要骨骼数据:
分作骨骼、父骨骼2个数据块,然后各自又分作结构相同的多块
骨骼数据块:
骨骼数据块依次排列,每个骨骼数据为:
数据块头 6
id 2 0x2000
size 4 数据块头之后的大小-1
名字 不定长
回车 1
骨骼句柄 2
骨骼位置 4*3 vector3
骨骼四元数 4*4 Quaternion
如果缩放不为(1,1,1)
骨骼缩放 4*3 vector3
父骨骼数据块依次排列,每个骨骼数据为:
数据块头 6
id 2 0x3000
size 4 带数据块头的大小=10
子骨骼 2
父骨骼 2
所有动画数据:
动画数据块依次排列,每个动画数据为:
动画数据块头 6
id 2 0x4000
size 4 连数据块头也包括在内
名字 不定长
回车 1
动画长度 4 float
动画轨道依次排列,每个动画轨道为:
动画轨道数据块头 6
id 2 0x4100
size 4 包括数据块头
对应的骨骼 2
关键帧依次排列,每个关键帧为:
关键帧头 6
id 2 0x0001,0x0002....
size 4 跟帧数有关
时间位置 4 float
旋转 4*4 Quaternion
移动 4*3 Vector3
如果关键帧的缩放不为(1,1,1),那么
缩放 4*3 Vector3
//以前没有
连接数据:
连接数据依次排列,各连接数据为:
动画数据块头 6
id 2 0x5000
size 4
名字 不定长
回车 1
连接缩放 4 float
注:所有Real格式都被转化成了float格式存入文件