Извлечение данных скина из файла FBX

Мне нужно преобразовать данные анимации из формата файлов Autodesk FBX в формат, совместимый с DirectX; в частности, мне нужно рассчитать матрицы смещения для моей очищенной сетки. Я написал конвертер (который в этом случае конвертирует .fbx в мой собственный формат ‘сцены’), в котором я хотел бы вычислить матрицу смещения для моей сетки. Вот код:

//
//  Skin
//
if(bHasDeformer)
{
// iterate deformers( TODO: ACCOUNT FOR MULTIPLE DEFORMERS )
for(int i = 0; i < ncDeformers && i < 1; ++i)
{
// skin
FbxSkin *pSkin = (FbxSkin*)pMesh->GetDeformer(i, FbxDeformer::eSkin);
if(pSkin == NULL)
continue;

// bone count
int ncBones = pSkin->GetClusterCount();

// iterate bones
for (int boneIndex = 0; boneIndex < ncBones; ++boneIndex)
{
// cluster
FbxCluster* cluster = pSkin->GetCluster(boneIndex);

// bone ref
FbxNode* pBone = cluster->GetLink();

// Get the bind pose
FbxAMatrix bindPoseMatrix, transformMatrix;
cluster->GetTransformMatrix(transformMatrix);
cluster->GetTransformLinkMatrix(bindPoseMatrix);

// decomposed transform components
vS = bindPoseMatrix.GetS();
vR = bindPoseMatrix.GetR();
vT = bindPoseMatrix.GetT();

int *pVertexIndices = cluster->GetControlPointIndices();
double *pVertexWeights = cluster->GetControlPointWeights();

// Iterate through all the vertices, which are affected by the bone
int ncVertexIndices = cluster->GetControlPointIndicesCount();

for (int iBoneVertexIndex = 0; iBoneVertexIndex < ncVertexIndices; iBoneVertexIndex++)
{
// vertex
int niVertex = pVertexIndices[iBoneVertexIndex];

// weight
float fWeight = (float)pVertexWeights[iBoneVertexIndex];
}
}
}

Как мне преобразовать преобразования fbx в матрицу смещения кости?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]