1 简介

2D动画人体模型及动画人物跟随鼠标位置中介绍了 Aniamtion、Animator、人体模型、人体骨骼、人体动画等基础知识及人体动画的应用,本文将进一步介绍动画混合。

​ 实现动画混合有混合树(Blend Tree)和动画图层(Layers)两种方式:

  • 混合树:将多个动画片段以位置、速度、角速度为依据经行线性混合;
  • 动画图层:每一个动画图层只对动画主体的部分进行控制,其他部分通过遮罩屏蔽,如:边走边喊动画可以划分为 2 个图层,一个图层控制步行动画,一个图层控制喊叫动画。

​ 动画混合的作用主要有:

  • 可以生成新的动画;
  • 可以通过调整混合动画的参数,实现控制多个动画播放。

2 通过混合树实现动画混合

1)创建混合树

​ 在 Animator 窗口的空白处右键,依次选择【Create State→From New Blend Tree】创建混合树,选中 Blend Tree,在 Inspector 窗口可以重命名。

​ 补充:选中 Blend Tree 后右键,再依次选择【Create State→From New Blend Tree】,可以为 Blend Tree 再添加子混合树。

2)添加动画片段

​ 双击 Blend Tree,再选中 Blend Tree,进入 Blend Tree 配置页面,按以下步骤添加动画片段:

3)设置混合类型

​ 点击 Blend Type 下拉菜单,选择混合类型,如下:

  • 1D:1 维混合,混合参数只有一个;
  • 2D Simple Directional:2 维混合,所有被混合的动画方向不一致;
  • 2D Freeform Directional:2维混合,需要一个没有方向的动画(如:站立 idle 动画);
  • 2D Freeform Cartesian:2维混合,对方向不做要求;
  • Direct:用户直接控制每个节点的权重。

4)配置阈值计算参数

​ 动画阈值是指从一个动画切换到下一个动画的中间值,这个中间值怎么计算?有什么依据?Unity3D 提供了以下 6 种计算阈值的参数,如:当采用 Speed 作为计算阈值的参数,会根据动画 Speed 对动画进行划分,再使用模糊数学的理论进行线性混合。

5)2D混合

​ 按以下步骤创建 2D 混合。2D 混合需要通过 2 个参数混合。

3 通过动画图层实现动画混合

​ 本节将通过一个 “边走变喊” 的案例讲解通过动画图层实现动画混合。边走边喊动画可以划分为 2 个图层,一个图层控制步行动画,一个图层控制喊叫动画(抬左臂到嘴边呼喊)。

1)创建动画图层

2)创建骨骼遮罩

​ 在 Assets 窗口右键,依次选择【Create→Avatar Mask】创建骨骼遮罩,并重命名为 ShoutMask,单击 ShoutMask 文件,配置遮罩如下:

3)绑定骨骼遮罩

​ 按以下步骤将骨骼遮罩 ShoutMask 添加到 Shout Layer 中。

​ 声明:本文转自【Unity3D】动画混合

【Unity3D】动画混合的更多相关文章

  1. unity3d 动画卡帧 动画合成 动画层次

    2013-02-26 16:22 2059人阅读 评论(0) 收藏 举报 unity3d 中动画的添加   http://unity3d.com/support/documentation/Manua ...

  2. Unity3d动画脚本 Animation Scripting(深入了解游戏引擎中的动画处理原理)

    也许这一篇文章的内容有点枯燥,但我要说的是如果你想深入的了解游戏引擎是如何处理动画片断或者素材并 让玩家操控的角色动起来栩栩如生,那么这真是一篇好文章(当然我仅仅是翻译了一下)   动画脚本 Anim ...

  3. 关于Unity中Mecanim动画的重定向与动画混合

    应用 一个RPG游戏,里面有100种怪物,每种怪物其实都差不多的,行走,跳跃,攻击,难道动画师要调100次动画吗?其实不需要 Unity抽象出人形动画系统,用Unity简化版的骨骼来进行统一的管理,只 ...

  4. AndroidUI 视图动画-混合动画效果 (AnimationSet)/动画效果监听

    在前面介绍了几种动画效果:透明动画效果(AlphsAnimation).移动动画效果(TranslateAnimation).旋转动画效果(RotateAnimation).缩放动画效果(ScaleA ...

  5. BleedTree动画混合树[Unity]

    Unity在中土大陆的大肆推广能从广泛的中文翻译资料中看出.所以,手册才是王道. 游戏动画中的一个常见任务是在两个或更多相似运动之间混合.最佳的已知示例可能是根据角色速度混合行走和奔跑动画.另一个示例 ...

  6. BleedTree动画混合树

    通过Unity动画状态机,能帮我们轻松处理转换各个动画片断,达到想要的效果,但是如果仅仅是一个个动画的硬生生的切换,那么看起来就非常突然,而不真实了,在质量要求比较高的游戏中,特别是动作游戏,我们就不 ...

  7. Unity3d 动画转换中断

    翻译自https://blogs.unity3d.com/2016/07/13/wait-ive-changed-my-mind-state-machine-transition-interrupti ...

  8. Unity3D 动画回调方法

    最近发现很多coder.在用Unity开发游戏的时候都需要一个需求就是..动画播到某一帧就要干什么事情.而且希望能得到回调. 在unity里面的window菜单有个.Animation工具.打开它.然 ...

  9. Unity3D 动画状态简单控制核心代码

    状态机是这样的 包含静止.跑.攻击.死亡四个动画 下面是核心代码(PS:代码高亮插件出问题了,将就看一下吧..) AnimatorStateInfo stateInfo = m_ani.GetCurr ...

  10. Unity3D动画面板编辑器状态属性对照表

    不推荐用AnimationUtility.SetEditorCurve问题很多,推荐AnimationCurve.AddKey.通过AnimationUtility.GetAllCurves可以获得编 ...

随机推荐

  1. 【MicroPython】生成QSTR表 - py\makeqstrdata.py

    转义非字母数字的字符,转义结果为预定义字符串codepoint2name[] def qstr_escape(qst): def esc_char(m): c = ord(m.group(0)) tr ...

  2. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.26)

    一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...

  3. [转帖]Redis 内存淘汰策略 (史上最全)

    1.前言 Redis内存淘汰策略,是被很多小伙伴忽略的知识盲区,注意,是盲区. 注意,Redis如果内存淘汰策略配置不合理,可能会导致Redis无法服务. 所以,使用此文,对Redis内存淘汰策略专门 ...

  4. [转帖]重置 VCSA 6.7 root密码和SSO密码

    问题描述 1.用root用户登录 VMware vCenter Server Appliance虚拟机失败,无法登录 2.vCenter Server Appliance 6.7 U1的root帐户错 ...

  5. [转帖]Redis 使用指南:深度解析 info 命令

    https://www.cnblogs.com/hwpaas/p/9442410.html Redis 是一个使用  ANSI C 编写的开源.基于内存.可选持久性的键值对存储数据库,被广泛应用于大型 ...

  6. Linux无头模式使用mat分析dump的方法

    摘要 mat可以很好的进行jvm的内存dump的分析. 但是大部分服务器是没有GUI界面的. 而且就算是有GUI界面也很难直接使用. 但是随着jvm堆区越来越大. WindowsPC机器已经很难进行分 ...

  7. 不同信创服务器Redis7.0.5性能表现总结

    不同信创服务器Redis7.0.5性能表现总结 背景以及基础约定 随着美帝2022.10收紧EAR规定的硬件出口规定 信创事业迎来了一波新的高潮. 最近不仅仅要求国产化的硬件. 更要求国产化的OS,以 ...

  8. React数据通信父传子和子传父的使用

    组件中的props 在react中,props的特点是: 1.可以给组件传递任意类型的数据 2.props是只读的对象,只能够读取属性的值,无法修改对象 如过我们强行修改数据,会报错,告诉我们该属性是 ...

  9. vue中$once的使用

    $once 可以给组件实例绑定一个自定义事件,但该事件只能被触发一次,触发之后随即被移除 $once的简单使用 <template> <div> <button @cli ...

  10. vue中render函数使用attrs绑定id、class、style、事件(5)

    1.h函数的三个参数 第一个参数是必须的. 类型:{String | Object | Function} 一个 HTML 标签名.一个组件.一个异步组件.或一个函数式组件. 是要渲染的html标签. ...