设置 Unity3D 动画剪辑属性而不重置动画器



我正在尝试根据来自Leap运动控制器的实时数据驱动Unity3D Mecanim装备的动画。我有 2 层遮盖了 Mecamim Human 装备中除手以外的所有内容,在驱动钻机其余部分的基础层之上。两个"手部图层"都引用相同的动画剪辑。

当我使用以下命令在剪辑中设置属性的曲线时:

leftClip.SetCurve ("", typeof(Animator), "LeftHand.Index.1 Stretched", new AnimationCurve (new Keyframe (0, CurrentPosition), new Keyframe (0.5f, CurrentPosition)));

动画器中所有当前播放的状态都会重置其播放,从而产生相当无益的抖动效果。

我通过动画师的 runtimeAnimatorController 属性获取对剪辑的引用,因此我引用了剪辑的运行时实例,而不是资产。

我想避免在LateUpdate()中覆盖Mecanim的路线,因为其他LateUpdate代码可能会有竞争条件,并希望在我们管道的其余部分利用Mecanim的动画工具。

有没有一种方法可以在运行时设置动画剪辑中的属性,而无需重置状态播放?具体来说,我需要设置Mecanim人形头像肌肉值。

我一直与 Unity 的支持人员保持联系,实际上在当前的 API (5.0.x) 中,如果不重置动画师,则无法在剪辑运行期间设置剪辑中属性的曲线。

我目前正在探索一些解决此限制的方法。当我弄清楚我们将如何处理它时,将更新此答案。

最新更新