1

我正在制作我的蒙皮引擎,并让它适用于 1 个矩阵/框架/骨骼。然而,这是大量的数据,所以我想更进一步,做 1 个矩阵/关键帧/骨骼,所以我可以插入骨骼的旋转和平移(每个轴上的缩放始终为 1,所以我忽略了) . 为此,我想为(缩放向量)、旋转四元数和平移向量分解一个矩阵(XMMATRIX 结构),对它们进行插值并从中重新组合一个矩阵。我的代码大致是:

XMMATRIX temp; 
{..} //Fill it from a file
temp = XMMatrixTranspose( temp ); //Transposing temp because it was in a shader-readable format
XMVECTOR scal; //for scaling
XMVECTOR quat; //for rotation
XMVECTOR tran; //for translation
XMMatrixDecompose(&scal,&quat,&tran,temp); 

XMMATRIX final=XMMatrixIdentity()*XMMatrixScalingFromVector(scal)*XMMatrixRotationQuaternion(quat)*XMMatrixTranslationFromVector(tran);
final = XMMatrixTranspose( final ); //Transposing to get back the shader format

在这个简短的代码中,我尝试分解正确的矩阵(temp),然后在最终矩阵中重新组合,但我没有得到原始矩阵。(使用临时矩阵给出正确的结果,但使用最终矩阵没有)

看来我在这里遗漏了一些非常琐碎的东西,有人可以指出吗?

4

1 回答 1

0

似乎发布了正确的代码,但在我的程序中它是错误的,因为我错过了一个转置。

于 2013-07-10T20:11:54.670 回答