Collada和Skeletal动画

时间:2010-08-22 18:51:51

标签: animation directx matrix-multiplication collada

我正在尝试在游戏引擎中实现骨架动画设置,我目前正在为学校的实习编写代码。引擎使用右手系统以c ++和directx 10编码。

目前我正在使用collada导入和加载网格(我知道它不是最好的解决方案)。我正在使用的设置使用四元数进行旋转,在将数据传递给gpu进行gpu skinning之前,我将其转换为矩阵。我正在使用softimage构建测试网格来测试动画代码的各个方面。

我遇到的问题是旋转值。我正在使用D3DXQuaternionRotationYawPitchRoll将旋转值从欧拉角转换为四元数。问题是目前动画在错误的轴上。围绕y轴的旋转应该围绕x轴旋转。为了正确动画,我必须交换x和y值并否定y值。这只是一个带分支的简单挤压盒。对于每个动画骨骼,我正在计算它的局部变换矩阵(旋转矩阵乘以平移矩阵),然后我将父矩阵乘以当前局部矩阵,得到相对于它的父亲的最终变换矩阵。

有正确处理collada旋转的秘密吗?我检查的所有内容都显示在将每个骨骼乘以父项之前值是正确的。交换矩阵乘法的顺序没有任何明显的改进。非常感谢任何帮助,同时我会在引擎的其他部分工作,因为我花了太多时间在圈子里跑。

1 个答案:

答案 0 :(得分:0)

欧拉角度不足以描述你想要做的事情。您应该使用四元数作为动画关键帧的来源;四元数中的信息比欧拉角的三元组更多。

相关问题