|
|
从3dsmax里面导出x模型文件,带动画的,用dx里面自带的例子可以正确读出,显示也正确。
现在我需要自己来读取x模型文件,为啥?你见过魔兽的文件是x的马?
其实x文件也不复杂,就是在显示的时候不正确。
先看x文件
就以tiny.x为例,把x文件内容省掉了
从x文件我们能够得到点面,以及动作的矩阵。单独显示读出来的点就能看到模型了,是个标准的小孩。现在的问题就是怎样把动作作用在模型上了
比如模型上第一个点
-34.720058;-12.484819;48.088928;
对应在Bip01_R_UpperArm骨头上,我们先不考虑权重
156; // 皮肤上156个点
0,
0.605239, // 点对应的权重
-0.941743,-0.646748,0.574719,0.000000,-0.283133,-0.461979,-0.983825,0.000000,0.923060,-1.114919,0.257891,0.000000,-65.499557,30.497688,12.852692,1.000000;
后面是矩阵,我们知道骨骼动画说白了就是旋转点,我们也知道旋转点必须在单位坐标系里面,所以第一个点必须先还原为单位坐标,但是从骨头的矩阵的41,42,43的数据好像不能拿来减。我试过了,拿来直接是不对的
从后面的关键帧数据好像矩阵的数据是单元矩阵,可以用下面的方法直接计算的,令第一个点为v,关键帧矩阵为mx.则:
xv[0] = v[0] * mx[0] + v[1] * mx[1] + v[2] * mx[2] + mx[12];
xv[1] = v[0] * mx[4] + v[1] * mx[5] + v[2] * mx[6] + mx[13];
xv[2] = v[0] * mx[8] + v[1] * mx[9] + v[2] * mx[10]+ mx[14];
不知道,有谁做个这个东西,到底怎么回事? |
|