4.关键帧块
关键帧块:
ID 描述
B00A unknown
7001 看该块的第一个描述而定(译者:完全不知道什么用,从来没在.3ds文件中见过这个块)
B008 帧数量
B009 unknown
B002 开始对象描述
其中,B008帧数量块:由8字节组成(unsigned long X 2),开始4个字节描述了开始帧,最后4个字节描述了结束帧。
B002物体信息块:
ID 描述
B010 名称与层次结构
B011* 哑元物体命名(译者:也就是不在场景中显示的对象,一般用来对对象分组)
B013 unknown
B014* unknown
B015 unknown
B020 物体转轴(中心点)
B021 unknown
B022 unknown
B010名称与层次结构块:
该块由一个以0结尾的字符串开始,中间4个字节(unsigned short X 2)未知,最后2个字节(unsigned short)表示了物体层次结构。物体的层次结构并不复杂,场景中的没一个物体被给予一个数字以表示其在场景树中的顺序。3ds文件中也使用了这种方法来表示在场景中出现的对象在场景树中的位置。作为根的物体被给予数字-1(FFFF)作为其数字标识。当读取文件的时候,就会得到一系列的物体数字标识。如果当前数字标识比前一个大,那么当前物体是前一个物体的子物体;如果当前数字标识比前一个小,那么又回到了上层结构。例如:
物体名称 层次结构
A -1
B 0 这个例子来自
C 1 50pman.3ds
D 2
E 1
F 4
G 5
H 1
I 7
J 8
K 0
L 10
M 11
N 0
O 13
P 14
即:
A
+-----------------+----------------+
B K N
+----+----+ | |
C E H L O
| | | | |
D F I M P
| |
G J
然而该块并没有结束!
如果一个物体被叫做:$$$DUMMY的话,他就是一个哑元物体!因此你就需要一些额外的数据块了。
B011:哑元物体名称,一个以0结尾的字符串。
B020:物体转轴,仍然不知道前5个浮点数是做什么用的。
开始 结束 大小 类型 描述
0 3 4 float unknown
4 7 4 float unknown
8 11 4 float unknown
12 16 4 float unknown
16 19 4 float unknown
20 23 4 float unknown
24 27 4 float 转轴Y
28 32 4 float 转轴X
代码占时不贴出来,等我写好demo测试了再贴吧,感觉这个3ds文件挺麻烦的,数据太多了。。。。。呜呜,头大厄!