参考:

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

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

只有开启了Root Motion,动画的位移旋转才会影响到角色根结点(挂接Animator的结点)的位移旋转。此选项 决定是否应用Root Transform,
只有开启了Root Motion,且Avatar等设置正确,下边儿的面板红色部分才起作用。

这两个设置的地方会相互影响。

“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,所以变换将不被应用,所以模型将一直在本地不动,自然,新的动画开始时候,模型处于行走动画开始时的位置

上海游旺网络科技诚聘手游C++服务器人才,资深3D美术,特效美术。

上海游旺网络科技有限公司成立于2015年5月,是一家极具潜力的新创移动游戏公司。公司初创团队均来自腾讯,盛大,畅游,墨麟,蜗牛等知名互联网公司,公司创始人团队参与制作过《鬼吹灯》《QQ炫舞》《天龙八部》等月流水优异的产品。游旺网络在初立之时便得到了资本市场的认可,快速获得了天使投资开启了创业之路。游旺网络立志于做一家有理想且坚持正确价值观的公司,跟团队分享知识和财富。游旺网络希望用游戏带给人们兴奋,刺激,欢乐,惊喜。

邮箱:hr@you-wants.com

转载于:https://www.cnblogs.com/hellohuan/p/5073520.html

Unity3D规则之Unity Root Motion / Bake into Pose 的问题相关推荐

  1. Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系

    Unity3D 的 Mecanim 动画系统可以直接复用 3DS MAX 中制作的动画文件中的位移,这个就是通过 applyRootMotion 来达成的,我们只需要在使用 Animator 控制动画 ...

  2. Unity动画系统详解6:如何做好角色的移动动画?(Root Motion详解)

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

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

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

  4. Unity游戏开发之游戏动画(Root Motion以及动画文件)

    Root Motion 即自带根位移的动画,有效避免了角色动画和实际位移不同步的现象. 实现Root Motion功能 在Animator组件中勾选Apply Root Motion 找到角色使用的动 ...

  5. [Unity] 播放 Generic Animation 导致无法移动的解决办法:在 Animator 中勾选 Apply Root Motion

    我在使用 Animation Type 为 Humanoid 的 Animation 的时候是一切正常的 但是,自从因为 Humanoid 会导致手腕错误旋转问题,把 Animation Type 改 ...

  6. Unity3D研究院之Unity中连接本地或局域网MySQL数据库

    用户名 Email 游戏蛮牛 手机端 开启辅助访问 腾讯QQ 立即注册 登录 用户名 自动登录  找回密码 密码 登录  注册帐号 [Unity5.X版本开始预售啦!] 扫一扫,访问微社区 </ ...

  7. Root Motion的脚本处理

    一.Apply RootMotion的作用 Apply RootMotion:控制角色在场景中动画的运动.角色动画驱动角色运动,类似于在游戏中直接使用动画,提高了动画的使用效率. Root Motio ...

  8. 虚幻引擎图文笔记:蒙太奇(Montage)+ 根运动(Root Motion),给我滚(Roll)!

    UE4.26 效果 按下自定义控制滚动的按键,角色滚动,并且可以穿过低矮的空间 文章目录 效果 前言 步骤 0. 准备Root Motion的角色滚动动画素材 1. 把这个动画序列转换为蒙太奇 2. ...

  9. Unity3D脚本:Unity制作连连看脚本

    Unity3D教程:Unity制作连连看教程 GameManager.cs  游戏的核心代码,产生图片,判断是否可以销毁等. [color=#008ef1][font=宋体]using UnityEn ...

最新文章

  1. 2020 年入门数据分析选择 Python 还是 SQL?七个常用操作对比!
  2. Android Wear开发 - 数据通讯 - 第二节 : 数据的发送与接收
  3. python subprocess使用记录
  4. c语言顺序查找算法,c语言实现排序和查找所有算法
  5. java----IO和NIO的区别
  6. ltp︱基于ltp的无监督信息抽取模块
  7. 让你的php命令行程序处理管道数据
  8. Sendmail服务器的配置
  9. Q119:PBRT-V3,“复合重要性采样”(13.10章节)
  10. spring security退出方法
  11. php复制按钮,【typecho】typecho优化之代码框添加复制按钮
  12. svm出现浮点数与字符串不能计算的错误(label必须为 整形或浮点型)
  13. 姿态估计4-02:voxelpose(多视角3D人体姿态估算)-官方数据训练测试,环境搭建等
  14. Labview之RS485通信
  15. 如何对 List集合进行排序
  16. 2022高压电工考试试题及在线模拟考试
  17. echarts markline X轴 Y轴 添加标识线
  18. 第1章 走进Java
  19. FinalShell使用教程:SSH链接Linux服务器
  20. ubuntu如何降级到之前的版本

热门文章

  1. [Bartender]C#调用BartenderSDK使用场景-客户标签案列
  2. ISO 16750.5-2010道路车辆电子电气部件的环境试验 第五部分
  3. ajax分页类 php,thinkphp之ajax分页类
  4. 原创 | 连面拼多多、美团、头条、快手后给大家划下重点
  5. Redis+SSO初步
  6. python写入文本文件的数据类型必须是_用Python读写固定格式(MODFLOW)文本文件...
  7. 【雕刻机】grbl control软件设置
  8. svn客户端,重新输入用户名密码
  9. SNS游戏中社区Server和游戏Server一种数据交互的策略
  10. Windows系统下使用Kafka命令