gpt4 book ai didi

c++ - XMMATRIX Decompose 不提供正确的比例、旋转和平移

转载 作者:太空宇宙 更新时间:2023-11-04 14:04:43 31 4
gpt4 key购买 nike

我正在制作我的蒙皮引擎并使其适用于 1 个矩阵/框架/骨骼。然而,这是大量的数据,所以我想更进一步,做 1 个矩阵/关键帧/骨骼,这样我就可以插入骨骼的旋转和平移(每个轴上的缩放比例始终为 1,所以我忽略了这一点) .为此,我想为(缩放 vector )、旋转四元数和平移 vector 分解一个矩阵(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),然后在最终矩阵中重新组合,但我没有得到原始矩阵。 (使用临时矩阵给出正确的结果,但使用最终矩阵不正确)

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

最佳答案

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

关于c++ - XMMATRIX Decompose 不提供正确的比例、旋转和平移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17579905/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com