2013-07-10 55 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

看來是正確的代碼發佈了,但在我的程序中它是錯誤的,因爲我錯過了其中一個轉置。

相關問題