0

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

与示例一样好,它并没有真正涉及我想要的一些动画细节。例如,如果我有一个网格,它有一个跑步动画和一个投掷动画作为单独的动画集,我怎样才能让臀部以上的骨骼发生投掷动画,而臀部以下的骨骼发生行走动画?

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

4

2 回答 2

1

问题是跑步动画应该稍微影响投掷动画。您需要研究的是动画混合

我确信 Valve 写了一篇很好的论文,介绍了他们多年前在 Counter-strike 中是如何实现它的。虽然它不在阀门网站上,所以我不确定我从哪里得到这个记忆......

于 2010-02-05T08:42:24.763 回答
1

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

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

奔跑和投掷

好吧,在这种情况下,您可以从跑步动画中应用身体下部的动画,并从投掷动画中应用身体上部的动画。你会得到一个非常糟糕的结果。

如何只是知道哪些骨骼在骨骼调色板中的位置(这取决于它们的存储方式和顺序,但本质上并不难。明确的参考应该是生成动画数据的工具的文档)

在实践中,最好混合 2 个动画。通常,这很难,并且存在为您执行此操作的软件包。游戏机,例如

或者,一个跑步的人投掷的动画与一个站立的投掷的人的动画有很大的不同,所以你最好有 2 个动画。

倾斜

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

于 2010-02-05T08:46:35.450 回答