2013-07-10 24 views
1

我正在制作剥皮引擎,并使其为1个矩阵/框架/骨骼工作。然而,这是大量的数据,所以我想进一步做1矩阵/关键帧/骨骼,因此我可以对骨骼的旋转和平移进行插值(每个坐标轴上的缩放总是1,所以我忽略了这一点) 。为此,我想分解一个用于(缩放矢量),旋转四元数和平移矢量的矩阵(XMMATRIX结构),对它们进行插值并从中重新组合矩阵。我的代码大致是:XMMATRIX Decompose无法提供正确的缩放比例,旋转和平移

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 

在这短短的代码中,我试图分解正确的矩阵(临时),然后在最后的矩阵重组,但我没有得到原矩阵回来。 (使用临时矩阵给出正确的结果,但使用最终矩阵不)

看来我错过了一些非常微不足道的东西,请问有人可以指出它吗?

回答

0

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

相关问题