摘要:Root Transform是body transform在Y平面上的投影,并且是运行时计算的。每一帧Root Transform的变化实时计算。然后Transform的变化会被应用到GameObject上从而让物体移动。

洪流学堂,让你快人几步。你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统。

“智哥,自从用了混合树来做人物移动,腰不酸腿不疼,思路更清晰了,一口气能写12小时代码!”

“哟,疗效这么好,我看你应该再码12个小时”

“那也没问题,你来看看我做的这个人物的混合树是不是棒极了”

小新信心满满地打开混合树,给大智看。

“嗯,这个混合树确实做的不错,不过你这个角色还不能用啊!”

“怎么不能用了,你看这个走起来不是走的好好的么?”

“你走到那个坡上去试试”

小新操作人物往坡上走,只见直接穿了进去。

“哎?我好像忘了给人物加碰撞了,等我给他加上”

小新给角色加上Collider和Rigidbody组件,再次操作人物往坡上怼过去。

“智哥,你看现在OK了吧?”

“别急,你再下坡看看”

“哎,这怎么不受重力啊,怎么不会掉下去!明明加了刚体组件啊”

“这个是因为动画在控制人物的Y轴,所以才没有掉下去”

“但是我不都设置Apply Root Motion了么,咋还这样呢?”

“那你知道Root Motion到底是什么?”

“那不就是……人物的动画会带动人物移动嘛”

“这只是他的一个表现,这时候你该去好好理解下Root Motion到底是什么了,这个Unity的文档中有,你去好好看一下吧!”

“好嘞”

下面是小新的学习笔记。

Root Motion

首先要分清Body Transform和Root Transform。

Body Transform(身体变换)

Body Transform是角色的质心(重心)。用于Mecanim系统的重定向引擎中来提供稳定的模型移动。身体朝向是角色模型在T姿势下上身和下身朝向的平均值。

Body Transform和朝向存储在Animation Clip中,这两个是Animation Clip中存储的唯二世界空间的曲线,其他的动画曲线都是以相对body transform的形式存储的。

T-Pose T姿势
角色模型的胳膊向外伸直,整个身体呈T字型,一般的角色模型应该为这个姿态。

Root Transform(根变换)

Root Transform是body transform在Y平面上的投影,并且是运行时计算的。每一帧Root Transform的变化实时计算。然后Transform的变化会被应用到GameObject上从而让物体移动。

调整Root Transform

通过对Animation Clip的设置来控制Body Transform投影到Root Transform的结果。

可以调整的有Root Transform Rotation, Root Transform Position (Y) 和 Root Transform Position (XZ) 。基于设置,Body Transform的部分数值可以转移到Root Transform中。例如你可以选择动画中的Y曲线是Root Motion的一部分,还是Body Transform(pose)的一部分。

Root Transform Rotation

用于设置Root Transform的朝向(旋转)。

Bake into Pose:选中后,角色的朝向会基于body transform(Pose)。Root Orientation会是一个常量,意味着Animation Clip不会旋转这个物体。

只有AnimationClip的开始和结束位置旋转相似的时候,才应该使用这个选项。可以通过右边的绿灯判断。通常用于向前直行的走或跑的动画。

Base Upon:可以设置动画的朝向基于的地方。

  • Body Orientation:动画会朝向身体正前方。这个设置适用于大多数身体朝前的动画,比如走跑跳。但是如果动画是向左或向右平移的话,会有问题。这时候可以使用下面的Offset来调节角色的朝向。
  • Original:有的动画师会给动画手动加上旋转,确保动画的朝向正确,这时候可以使用这个选项,一般就不用再手动调整Offset了。

Offset:基于Base Upon的设置,调整偏移量。

Root Transform Position (Y)

用于设置Root Transform位置的Y轴位置。

Bake into Pose:选中后,动画的Y轴的运动会保留在Body Transform(Pose)上。Root Transform的Y轴会是一个常数(不会受动画影响变化),也就是意味着动画不会改变物体位置的Y值。右边有一个绿灯指示动画起始位置和结束位置的高度是否一致,可以看出动画是否适合使用此选项。

大多数的动画应该选中此选项,除了那些会改变物体高度的动画比如跳起、跳下这些动画。

注意:Animator.gravityWeight是由Bake Into Pose position Y控制的。选中时gravityWeight = 1,不选中时gravityWeight = 0。gravityWeight用来在state转换时进行混合。

Base Upon:和Root Transform Rotation设置类似,除了Original 或 Mass Center (Body)选项外,还有一个Feet选项。Feet选项非常适合改变物体高度的动画(不勾选Bake Into Pose)。使用Feet时,Root Transform Position Y会匹配骨骼中脚部的Y位置(更低的那个)。Feet选项可以避免混合或转换时浮空的现象。

Offset:可以设置高度的偏移量。

Root Transform Position (XZ)

用于设置Root Transform位置的XZ轴位置。

Bake Into Pose:通常用于原地不动的动画(动画在XZ轴上的位置为0)。可以用来去除动画循环累计的误差,造成位置的移动。也可以通过设置Based Upon Original来强制使用动画师设置的位置,否则会使用角色的重心作为Root。

Loop Pose

Loop Pose(比如混合树或Transition中的混合)会基于Root Transform。Root Transform在每帧被计算出来后,动画的位置会相对Root Transform。开始帧和结束帧的差别会被计算出来,然后分布到动画的0-100%。完全没看明白,得问大智了

Generic Root Motion

Generic和Humanoid基本是类似的,但是Generic的动画的Root Transform是手动设置的Root Node属性。


“大智,我看完Root Motion的文档了,不过还是有点云里来雾里去的,你能不能用简单的几句话说说设置Root Transform的作用是什么?”

“简单来说,**如果不设置Root Transform中的Bake Into Pose,动画中的曲线会影响物体的Root Transform,而勾选了Bake Into Pose以后,动画的曲线就不会影响物体的Root Transform。再直白点说,比如勾选了Root Transform Position (Y)的Bake Into Pose,那动画就不会影响物体的Y轴位置了。**对于你遇到的刚体不会掉落的问题,也能解决了。”

“emmm,大概能明白,我还是得去试一试看看不同的效果。第二个问题:什么是重定向?”

“重定向就是把A角色做的动画用到B角色上。如果A和B两个角色的骨骼结构完全一样,那动画可以直接重用。但是如果A和B的骨骼结构不一样,但是是Humanoid类型的,可以使用Unity中的Retargeting系统,这个文档里也有,建议你先去看看。”

“哦,我现在貌似还用不到,等我用到的时候去查一下。最后一个问题哈,Loop Pose的作用是什么?我看了半天也没看明白是什么意思”

“看不明白很正常,文档中那个解释确实有些不太直观。这个作用是,如果一个循环动画的首尾帧有差别,选中这个选项Unity会给你插值,让首尾帧看起来是连贯的,循环起来没有缝隙,但是可能会看起来有些奇怪。不过我们使用的动画,一般动画师都会做成无缝循环的动画,所以这个选项也不经常使用。

“这么一说我就能明白很多了,看来文档也有不靠谱的时候啊”

总结

“文档有时确实有描述不太准确或者晦涩的时候,这时候就需要你多动手。你看这个知道的‘知’字,左边是矢,也就是箭矢,右边是口,靶子也就是目标。这个字是说:不断地练习,命中目标才是知。所以要多实践。”

“哇,智哥你当个程序员亏了,应该去研究哲学去。”

今日思考题

“我也有此意,哈哈。给你布置个思考题,试下动画加上不同的Root Motion设置以后会有什么不同的效果。”

“收到!我去也!”

“收获别忘了分享出来!也别忘了分享给你学Unity的朋友,也许能够帮到他。”

扩展阅读

  • Unity动画系统详解1:在Unity中如何制作动画?
  • Unity动画系统详解2:如何导入使用外部的动画?
  • Unity动画系统详解3:如何播放、切换动画?
  • Unity动画系统详解4:如何用代码控制动画?
  • Unity动画系统详解5:BlendTree混合树是什么?
  • 【建议收藏】找不到免费的角色动画?来试试mixamo

【扩展学习】在洪流学堂公众号回复动画可以阅读本系列所有文章,更有视频教程等着你!


呼~ 今天小新絮絮叨叨的真是够够的了。没讲清楚的地方欢迎评论,咱们一起探索。

我是大智(微信:zhz11235),你的技术探路者,下次见!

别走!点赞收藏哦!

好,你可以走了。

Unity动画系统详解6:如何做好角色的移动动画?(Root Motion详解)相关推荐

  1. T4M插件放入unity后怎么找不到_Unity动画系统详解6:如何做好角色的移动动画?(Root Motion详解)

    摘要:Root Transform是body transform在Y平面上的投影,并且是运行时计算的.每一帧Root Transform的变化实时计算.然后Transform的变化会被应用到GameO ...

  2. [玩转UE4/UE5动画系统>应用篇>功能模块] 之 ALS V4 主状态机详解

    本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的 ...

  3. Unity动画系统学习笔记(二)根运动、动画事件与状态机行为

    一.根运动 在学习根运动前需要了解两个名词: 身体变换:身体变换是角色的质心.它用于 Mecanim 的重定向引擎,并提供最稳定的移位模型.身体方向是相对于 Avatar T 形姿势的下身和上身方向的 ...

  4. Unity-BattleStar丨6. 动画系统-让BattleStar游戏中的角色动起来

    文件下载:地址 项目目标:实现NPC防御和踢腿动作 一.导入模型 1.新建一个空项目,导入Cha07.unitypackage,打开Scenes里的BattleStar_GuideScene并进入,点 ...

  5. Unity动画系统详解10:子状态机是什么?

    摘要:除了使用Layer还有没有更好的组织状态的方式呢?感觉一个Layer里面状态多的时候,还是很显得很乱. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这是复(yu)习( ...

  6. Unity动画系统详解9:Target Matching是什么?

    摘要:在游戏中,经常有这种情况:角色的手或者脚需要在特定时间放在特定的位置.比如角色需要用手撑着跳过一个石头或一堵墙,或者跳起抓住房梁.Target Match就是让动画的特定片段去匹配特定的位置. ...

  7. Unity动画系统详解8:IK是什么?

    摘要:IK是Inverse Kinematic的缩写,也就是反向动力学.是根据骨骼的终节点来推算其他父节点的位置的一种方法.比如通过手的位置推算手腕.胳膊肘的骨骼的位置. 洪流学堂,让你快人几步.你好 ...

  8. Unity动画系统详解7:Layer是什么?

    摘要:使用Layer可以用来管理角色的不同身体部位.比如下半身用于行走或跑步,上半身用于射击或投掷物体. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu) ...

  9. Unity动画系统详解3:如何播放、切换动画?

    摘要:[长文预警,建议先收藏]有了模型和多个动画以后,在Unity中如何控制它们的播放和切换呢?本文带你一站式解析Unity的Animator模块. 洪流学堂,让你快人几步.你好,我是跟着大智学Uni ...

最新文章

  1. 四级重点高频词汇表_四级为什么自己估分和真实成绩不一样……?
  2. 波士顿大学计算机科学的就业,波士顿大学计算机科学(计算机网络)专业介绍_计算机科学(计算机网络)专业排名及就业方向和前景-小站留学...
  3. C语言求最大公约数3种方法
  4. 歌一定要带监听耳机吗_在演唱会上,歌手耳朵里戴的不是“耳机”,而是这个东西...
  5. HTML 表格中的行合并与列合并
  6. WIN7(VISTA)系统无法上网问题排查方法
  7. 情感计算在淘宝UGC的应用
  8. 经典卷积神经网络---VGG16详解
  9. ZMQ专题学习之六:libzmq的订阅代理模式通信方式
  10. 对比度调整的各种方法(一)
  11. 能不能打开编辑器直接跳转到拼图功能
  12. linux忘记密码,使用星号密码查看器,查看SSH工具记录的密码
  13. Google谷歌新手SEO优化教程篇【1】
  14. 一键加速,华为云CDN加速满足多行业需要
  15. vue ajax传输数组,ajax请求回数组数据,Vue页面数组没同步问题
  16. 前端开发通过图片编码实现拍照身份证正反面上传功能
  17. USB开发-USB从启动到运行
  18. cmd脚本编程基础命令
  19. 信号与系统1-关于卷积的那些事
  20. Selenium UI自动化验证码:识别+输入

热门文章

  1. C语言销售人员信息管理系统
  2. 解决小新Air指纹识别失效问题
  3. 利用awstats分析nginx日志
  4. FreePBX 安装配置初学记录
  5. 电脑android模拟器下载地址,点击上帝电脑版怎么下载 安卓模拟器电脑版下载地址...
  6. zb计算机术语,容量1zb等于多少kb
  7. SkeyeVSS智慧国土高点视频监控解决方案
  8. PC微信3.5.0.46几个函数位置
  9. 计算机科学概论 环形网络
  10. 在线OJ系统测试报告