Root Motion深度解析[Unity]

在很多动画当中,模型的位置、角度往往会发生变化,我们需要决定是否将模型再动画中发生的这些变换应用到实际模型。Unity中有两个跟这个有关的设置。

1、

2、

这里如果看官方文档,理解起来会比较绕,特别是这两个设置的地方会相互影响。当然如果要是弄明白了里面的机制就好理解了。

我们首先来看这个“Bake into Pose".在untiy中将动画中的变换分成两种,Body Transform和Root Transform,我们可以设置动画中的关于模型的一些变换(平移、旋转等)是属于Body Transform(pose)还是Root Transform(trajectory)的一部分。这里的Bake into Pose 也就是将变换设置为Body Transform(pose)的一部分。我们可以这样去理解,如果是设置成Body Transform(pose)的话,就相当这些变换是属于动画本身的一部分,也就是说,不管设不设置Apply Root Motion,在场景中,我们都会看到模型位置或角度的变化。(因为Body Transform不影响模型实际的位置和角度,所以这里只是纯粹的动画效果,模型的位置和角度参数值不变),如果设置成Root Transform,Root Transform将影响模型的实际位置和角度(前提是要设置“Apply Root Motion”,如果不设置Apply Root Motion的话,也就是说变换将不应用,场景中的模型位置或角度是不会有变化的(参数值自然也不变),就像一个行走动画,可能一直在原地行走)。

然后我们来重点再看看这里的”Apply Root Motion".这里他会起到两个作用,首先最重要的是,决定是否应用Root Transform,如果应用的话,那么在动画的同时,模型的位置和角度会同时跟着变化。如果这里不勾选的话,那么就是说不应用Root Transform,这样我们所有的Root Transform都将不起任何作用。(也就相当于于所有没有Bake into Pose 的变换都没有用了)。

Apply Root Motion的第二个作用是在动画结束后,将Body Transform中的变化应用到模型(注意,这里是结束的时候才应用,也就是说动画的时候,模型的position、rorate等参数是不变的,当动画结束之后,开始新的动画之前才会改变,注意这里跟前面提到的Root Transform的区别)


上面就是关于Root Motion的理论,然后我们来个几个实际的场景。

比如说我们有一个人物行走的动画,我们来考虑一下几种情况(这里以“Root transform position(XZ)为例)

1、勾选”Bake into Pose",不勾选“Apply Root Motion",勾选”Bake into Pose"后,变换属于Body Transform,所以即使这里未勾选”Apply Root Motion“,但是动画依然会在场景中体现,人物会按照动画的路径行走(但是如果我们观察Inspector中模型的position参数,值一直不变)。但是因为没有勾选Apply Root Motion,所以动画结束后,变换不会应用到模型,所以如果这时候,如果开始一个新的动画的话,模型会瞬间回到起始位置(新的动画开始时候,模型处于行走动画开始时的位置)。

2、勾选”Bake into Pose",并勾选“Apply Root Motion",这里跟上面的情况唯一不同的就是,动画结束后,开始新的动画之前,变换会应用到模型。(模型的position在新的动画开始之前会发生变化,新的动画开始时候,模型处于动画结束时的位置)

3、不勾选”Bake into Pose",勾选“Apply Root Motion",这时候,变换是作为Root Transform,所以因为这里勾选了Apply Root Motion,变换会应用到模型(模型的position跟着动画不停的变化),自然,新的动画开始时候,模型处于动画结束时的位置。

4、不勾选”Bake into Pose",并且不勾选“Apply Root Motion",这里变化还是作为Root Transform,但是因为没有勾选Apply Root Motion,所以变换将不被应用,所以模型将一直在本地不动,自然,新的动画开始时候,模型处于行走动画开始时的位置


参考:

http://ru.unity3d-docs.com/Documentation/Manual/Animator.html

http://ru.unity3d-docs.com/Documentation/Manual/RootMotion.html

http://ru.unity3d-docs.com/Documentation/Manual/ScriptingRootMotion.html

  • 27
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: Motion Matching是一种用于游戏动画的技术,它可以在Unity中实现。它的基本思想是将动画片段分解成小的动作单元,然后根据玩家的输入和环境的变化来选择最合适的动作单元,从而实现更加流畅和自然的动画效果。在Unity中,可以使用Mecanim系统和动画控制器来实现Motion Matching。 ### 回答2: Motion Matching是一个基于动作捕捉和计算机图形学技术的新兴技术,在游戏开发中被广泛应用。而在Unity中,Motion Matching也是一种非常重要的技术,它可以帮助游戏开发者更加快速、高效地实现高品质的游戏动画效果。 具体来说,Motion Matching是一种通过将实时捕捉的动作与大量预先录制的动画片段进行匹配的技术。这样一来,游戏中的角色可以在不同情景下根据玩家的操作实时变换动作,使得角色的动作更加自然、流畅。同时,Motion Matching还可以通过实时计算、调整数据的方式,来实现更加精细的动画效果,例如在某个特定条件下播放某个特定动画。 在Unity中,Motion Matching不仅仅是一个技术,更是一个系统,包含了许多组件和工具。其中最重要的组件是Motion Matching Controller,它被设计为一种易于配置和调整的动画控制器,可以根据开发者的需求来调整动画精度、匹配度以及优先级等参数。此外,Unity中还提供了一些工具和插件,用于帮助开发者更好地实现Motion Matching,例如Unity Kinematica插件、Unity Timeline等。 总的来说,Motion Matching为Unity游戏开发者提供了一个高效、灵活、自然的动画实现方法,为游戏制作提供了更多可能性。然而,Motion Matching还是一个相对新的技术,需要开发者对其进行深入的理解和应用,方能发挥其最大的效用。 ### 回答3: Motion Matching for Unity是一种运动匹配技术,可以优化角色动画表现和反应性能。该技术通过使用大量的动作片段来替代传统的动画过渡技术,使得角色的动作更加自然流畅。 Motion Matching for Unity主要基于两个核心概念:候选集和匹配器。候选集是指在角色执行动作前可以选择的所有动作片段,而匹配器是根据角色当前的状态选择最佳的动作片段并实时应用于角色。 Motion Matching for Unity的优势在于其高度反应性能和可定制性。由于每个角色状态都有其独特的动作片段集合,因此在运用此技术时需要设计和构建一个丰富且复杂的动作切割器。这个切割器会将动作片段划分成更小的单位,以便根据角色状态实时匹配。 此外,Motion Matching for Unity还有其他一些优势。例如,它减少了手动动画制作的时间和精力成本,还能够实现更好的角色行进和移动。 尽管Motion Matching for Unity与传统的动画过渡技术相比具有更高的复杂性和技术门槛,但是对于需要更高动画反应性和更好的角色表现的游戏开发者来说,这种技术是非常有用的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值