|
|
小弟弟我对骨骼动画有几项死结未能解开,倘若以下问题都能得到解决,那么我就对所有回帖的大大们 OTL, OTZ, OLZ, OP_,O...... 怎么着都行!(注:我的目标是——没有错别字!)
问题1——骨骼动画的权重信息到底保存在哪里?是与每个骨骼保存在一起还是作为顶点的属性与顶点保存在一起?也就是说到底类似与以下两种保存方式的哪一种?:
1、pSkininfo->Bone[n]->Name = "L_Arm"; //此骨骼影响哪些顶点
pSkininfo->Bone[n]->IndexArrayOfVertex->SkinWeight = 0.888888;
2、VertexArray[m]->BoneID[x]->Name = "L_Arm"; //此顶点受什么骨骼影响
VertexArray[m]->BoneID[x]->SkinWeight = 0.888888;
问题2——Microsoft的tiny.x解析出的VertexFVF到底是什么样的呢?如果我现在要把x文件转换成自己的动画文件的话,我需要知道顶点格式是什么样的,这就需要知道顶点结构体中的属性是按什么顺序定义的,比如说是按以下顺序:
struct CUNSTOMVERTEX
{
float x,y,z;
float ux,uy;
float nx,ny,nz;
DWORD r,g,b,a;
DWORD Bone[4]; //这个属性跟第一个问题是有关系的。
};
如果顺序屡不好,保存进文件的数值读出来就不知道给一个什么样的结构体,Microsoft很让人生气,问题很严重!
问题3——当我获得所有有关骨骼动画的顶点信息以后,如何让这些顶点信息变成Mesh?因为DX9中的有几种Mesh对象的方法可以对Mesh进行裁剪、LOD和细化,而且各项操作也比较方便,本人又是那种对自己写算法没有自信的人,万一要有个撕裂什么的多惨呀!故!请求大人们解决这个迷茫~~
问题4——万一有一天我突然想自己亲手对每个顶点进行矩阵变换,那么难不成我必须得让每个顶点都与混合矩阵相乘吗?有没有某个API函数可以用与顶点、权重、矩阵 3个东西相乘的呢?最好传递的是索引一类的,用一个循环就可以搞定的那种方法,以前好象看过两种方法,因为不知道其中一种方法中的BoneId还有一些东西里面装的是什么信息,并且对另一种方法中的UpDateSkinMesh()那个函数的封装程度感到迷茫,固产生了问题1!盼望大人们救命中~
[em7] [em7] [em7] [em7] |
|