Unity Mecanim动画的实现(三):Animation编辑之Root Motion
来源:互联网 发布:淘宝速刷 编辑:程序博客网 时间:2024/05/21 13:42
Unity Mecanim动画的实现(三):Animation编辑 之Root Motion
备注:本文重点参考了并原文摘录了“Root Motion深度解析[Unity]”,原文地址为:http://blog.csdn.net/cubesky/article/details/39478207
Animation编辑主要针对动画剪辑,使用Mecanim动画机制的Animation剪辑的命名一般采取模型名@动画名的方式。对Animation的编辑重点是对Animation Root Motion的设置。
在很多动画当中,模型的位置、角度往往会发生变化,我们需要决定是否将模型再动画中发生的这些变换应用到实际模型。Unity中有两个跟这个有关的设置。
(1)、模型动画设定中的 Apply Root Motion
(2)、Animation中的 Bake into Pose。
(1)“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的话,也就是说变换将不应用,场景中的模型位置或角度是不会有变化的(参数值自然也不变),就像一个行走动画,可能一直在原地行走)。
(2)”Apply Root Motion”.这里他会起到两个作用,首先最重要的是,决定是否应用Root Transform,如果应用的话,那么在动画的同时,模型的位置和角度会同时跟着变化。如果这里不勾选的话,那么就是说不应用Root Transform,这样我们所有的Root Transform都将不起任何作用。(也就相当于于所有没有Bake into Pose 的变换都没有用了)。Apply Root Motion的第二个作用是在动画结束后,将Body Transform中的变化应用到模型(注意,这里是结束的时候才应用,也就是说动画的时候,模型的position、rorate等参数是不变的,当动画结束之后,开始新的动画之前才会改变,注意这里跟前面提到的Root Transform的区别)
比如说我们有一个人物行走的动画,我们来考虑一下几种情况(这里以“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,所以变换将不被应用,所以模型将一直在本地不动,自然,新的动画开始时候,模型处于行走动画开始时的位置。
- Unity Mecanim动画的实现(三):Animation编辑之Root Motion
- Unity Mecanim动画的实现(四):Animation Controller设置
- Unity Mecanim动画的实现(八):Animation视图
- Unity Mecanim动画的实现(八):Animation视图
- Unity Mecanim动画的实现(四):Animation Controller设置
- unity之动画文件的设置与Apply Root Motion
- Unity Mecanim动画的实现(七):动画曲线
- Unity Mecanim动画的实现(七):动画曲线
- Unity Mecanim动画的实现(二):Avatar的配置
- Unity Mecanim动画的实现(一):基本程序
- Unity之Animation编辑器编辑动画
- Unity3D之Mecanim动画系统学习笔记(三):Animation View
- Unity Mecanim动画的实现(六):动画事件,实现动画过程中的事件处理
- Unity Mecanim动画的实现(六):动画事件,实现动画过程中的事件处理
- Unity Mecanim动画的实现(九):动画层、遮罩与Ik动画
- Unity Mecanim动画的实现(九):动画层、遮罩与Ik动画
- Unity Mecanim动画的实现(十):动画混合树、子状态机和状态行为
- Unity Mecanim动画的实现(十):动画混合树、子状态机和状态行为
- L2-011. 玩转二叉树-PAT团体程序设计天梯赛GPLT
- Windows下本机SSH的生成
- 在linux中如何用C语言实现读取“上下左右、ESC”键
- InvalidateRect function
- GDB详解
- Unity Mecanim动画的实现(三):Animation编辑之Root Motion
- 测试经理、自动化测试工程师工作指导书
- leetcode_c++:Add Binary(067)
- 2016多校训练#1 1002 组合博弈
- 曼哈顿距离最小生成树
- extern用法总结
- 关于windows中的Docker ToolBox 使用docker pull 镜像失败异常
- 51单片机的8x8点阵贪吃蛇
- 分享一个好用的前端框架