DirectX中的分层动画和处理同一网格上的单独动画?

时间:2010-02-05 00:59:49

标签: animation directx msdn hierarchical

我在DirectX中有一个分层动画模型,它根据以下DirectX示例加载和动画:http://msdn.microsoft.com/en-us/library/ee418677%28VS.85%29.aspx

与样本一样好,它并没有真正涉及我想要的动画细节。例如,如果我有一个具有正在运行的动画的网格物体和作为单独动画设置的投掷动画,那么如何让臀部以上的骨骼和臀部下方的骨骼发生步行动画的投掷动画?

另外,如果我想要让人向左或向右倾斜,我只需要找到臀部的骨骼,并通过矩阵多重播放旋转矩阵?在这种情况下,我认为矩阵是m_amxBoneOffsets?

2 个答案:

答案 0 :(得分:1)

嗯,运行动画应该稍微影响投掷动画。您需要了解的是动画混合

我确信Valve写了很多关于他们多年前如何在反恐精英中实施它的论文。它不在阀门现场,所以我不确定从哪里得到这个记忆......

答案 1 :(得分:1)

将多个动画组合成一个动画通常是动画系统的工作,这远远超出了D3D样本的范围。

让我们看看你的两个例子:

跑步和投掷

嗯,在这种情况下,可以从正在运行的动画中应用动画的下半部分动画,并从投掷动画中动画身体上半部分的动画。你会得到一个非常糟糕的结果。

如何知道哪些骨骼在骨骼调色板中的位置(取决于它们的存储方式,以及按什么顺序存在,但没有任何固有的硬性。明确的参考应该是工具生成的文档动画数据)

在实践中,你最好混合2动画。总的来说,这很难,并且存在为您执行此操作的软件包。 Gamebryo,例如

或者,一个正在投掷的跑步者的动画与一个站立的家伙不同,后者会抛出你最好有2个动画。

斜靠

如果将旋转矩阵应用于根骨骼,则只需旋转整个角色即可。 现在,如果您旋转层次结构中的下一个骨骼(从脊柱),您将获得依赖它的所有骨骼同样旋转。它可能会做你想要的,但有一个肯定的方法可以找到答案。试试吧!