# Blend Trees

Transitions and Blend Trees的不同：

• Transitions是从一个state过渡到另一个state.

• Blend Trees 通过混合参数来混和多个动画. Blend Trees 是动画状态机的一个特殊的state。 Animation State Machine

## Using Blend Trees

To start working with a new Blend Tree, you need to:

1. 右键 Create State > From New Blend Tree
2. 双击 Blend Tree 进入 Blend Tree 视图，在.Blend Tree 视图双击空白处，回到base视图
3. 通过选中Blend Tree 在属性面板上点击+号添加动画片段或者右键Blend Tree 添加动画片段

# 1D Blending

Inspector中的第一个选项就是 Blend Type. 按照需要的blend 参数来分，分为1D和2D，1D就是需要一个混合参数

## Thresholds

The Compute Thresholds 选择从root motions，也就是从动画片段里面得参数里面获取混合参数的值
它包括, velocity x, y, or z, and angular speed in degrees or radians. 如果你的参数需要和这些相关连，就使用下面的值

Property:Function:
Speed 根据动画片段的速度来定义threshold值(the magnitude of the velocity).
Velocity XSets the threshold of each motion according to its velocity.x.
Velocity YSets the threshold of each motion according to its velocity.y.
Velocity ZSets the threshold of each motion according to its velocity.z.
Angular Speed (Rad)Sets the threshold of each motion according to its angular speed in radians per second.
Angular Speed (Deg)Sets the threshold of each motion according to its angular speed in degrees per second.

# 2D Blending

Blend Type 为2D的选项，表示需要两个参数

2D Simple Directional: 在同一个方向上只能有一个动画比如“walk forward”, “walk backward”, “walk left”, and “walk right”,或者 “aim up”, “aim down”, “aim left”, and “aim right”. Optionally a single motion at position (0, 0) can be included, such as “idle” or “aim straight”. In the Simple Directional t不能在同一方向上有多个动画，比如, such as “walk forward” and “run forward”.

2D Freeform Directional: 在同一方向上可以有多个动画, for example “walk forward” and “run forward”. In the Freeform Directional type the set of motions should always include a single motion at position (0, 0), such as “idle”.

2D Freeform Cartesian: 不管动画的方向，都是可以的. With Freeform CartesianX参数和Y参数可以代表不同的概念, 比如角速度和线速度. An example would be motions such as “walk forward no turn”, “run forward no turn”, “walk forward turn right”, “run forward turn right” etc.

Direct:这种类型的混合树允许用户直接控制每个节点的权重。适用于面部形状或随机空闲混合。

对应的，第一个参数控制posx,第二个参数控制posy,

每个motion 都用一个棱形表示，拖动红点，表示当前参数的值，棱形的外围有个圆圈，表示红点在该位置是，该动画的权重或者说是影响范围

# Direct Blending

Direct Blend Tree可以直接通过参数来控制动画播放的权重，在面部表情丰富的时候，可以使用这个，因为同时有可能做多个动作，比如皱眉，撅嘴.

The options below are common to both 1D and 2D blending.

## Time Scale

Note  Adjust Time Scale 只有当是 Animation Clips而不是child Blend Trees.才可以使用

# Animator Override Controllers

Animator Override Controller 就是复制一份Animator Controller，这样就可以用同一种结构，比如你的游戏可能有各种各样的NPC类型，但每种类型(地精、食人魔、精灵等)都有自己独特的动画，用于行走、闲荡、坐着等。它们动画的结构都是一样的，比如先行走，在坐下，但是动画片段不一样，这样就可以为每个怪物创建一个Animator Override Controller，使用相同的动画结构，但是动画片段不一样

它和普通的Animator Controller 一样使用

# Retargeting of Humanoid animations

humanoid animations最重要的特点就是动画重定向，就是你可以把一样的动画设置应用到不同的角色身上
，重定向只对类人型的模型有用 humanoid models,并且配置了 Avatar

## Recommended Hierarchy structure

下面是它的步骤：

1.创建一个空物体添加上character collider组件

2.在该物体下放置一个角色模型，挂上animator组件，并由自己的avatar，和animator controller

3.上面的角色是用的是本身的动画结构，然后再给空物体放置一个类人型的角色，比如泰迪熊，关闭上一个角色模型，给泰迪熊的animator controller挂上上一个角色模型的animator controller，这样他俩就用的是一套动画结构和动画

# Performance and optimization：动画优化性能

## Animation system Controllers

Animator 如果没有 Controller 挂在到它上面，不会消耗性能

scale curves 缩放动画比移动和旋转动画要耗性能 translation and rotation curves.

Note: 但是如果缩放动画，就是一个常量值，即动画曲线是一条水平线，他不会消耗性能

### Humanoid vs. Generic animation types

• 在导入通用动画时Generic, using root motion比较耗性能

### Scene-level optimization

• 使用hash表来访问animator的参数变量
• Implement a small AI Layer to control the Animator. You can make it provide simple callbacks for OnStateChange, OnTransitionBegin, and other events.
• Use State Tags to easily match your AI state machine to the Unity state machine.
• Use additional curves to simulate events.
• Use additional curves to mark up your animations; for example, in conjunction with target matching

# Animator component

## Properties

Property:Function:
ControllerThe animator controller attached to this character.
AvatarThe Avatar for this character. (If the Animator is being used to animate a humanoid character)
Apply Root MotionSelect whether to control the character’s position and rotation from the animation itself or from script.
Update Mode这允许您选择动画器何时更新，以及应该使用哪个时间刻度。
NormalThe Animator 和Update 一起更新，动画的速度和当前的timescale匹配，如果timescale 变小，动画也会播放的慢
Animate PhysicsThe animator和 FixedUpdate 同步，也就是物理系统，如果动画需要和物理系统交互，使用这个模式. ,比如角色可以推动 rigidbody物体
Unscaled TimeThe animator is updated in-sync with the Update call, but the animator’s speed ignores the current timescale and animates at 100% speed regardless. This is useful for animating a GUI system at normal speed while using modified timescales for special effects or to pause gameplay.
Culling ModeCulling mode you can choose for animations.
Always Animate始终播放动画，即使角色不在屏幕内
Cull Update Transforms当这些物体的（重定向Retarget, IK and write of Transforms ）render关闭时，不更新
Cull Completely当渲染器不可见时，动画将完全禁用

# Animation transitions

Animation transitions 就是各个动画片段之间的连线. 就是从一个状态转向另一个状态. 你可以为它设置条件

也可以给转换命名：

### Transition properties

PropertyFunction
Has Exit TimeExit Time 是一个不依赖于condition的特殊的参数. 它代表了动画的标准化时间，就是表示的是百分比 Exit Time.
SettingsFold-out menu containing detailed transition settings as below.
Exit Time如果勾选上Has Exit Time ，这个值表示，动画播放到什么多少的时候开始转换到下一个动画. 比如0.75就表示该动画播放到75%的时候，就开始转换.

Fixed Duration如果打开 Fixed Duration , 转换时间以秒为单位进行解释. 如果关闭 Fixed Duration 转换时间以动画的绝对时间计算
Transition Duration转换的时间,取决于当前动画的时间. 在过渡图中，可以将其可视化为两个蓝色标记之间的部分。
Transition Offset在转换为目标状态时开始播放的时间偏移量。例如，0.5的值表示目标状态在其自身时间轴的50%处开始播放
Interruption Source利用这一点来控制这种转换可能被中断的情况
Ordered Interruption当前转换能否被其他转换打断，不根据顺序
Conditions一个转换可以有一个条件，多个条件，甚至没有条件，当没有条件的时候， Exit Time就会起作用，也就是说没有条件的时候，当动画播放到exit time的时候，才会转换到下一个动画, 如果有条件，转换必须在条件达到时才会触发

如果勾选上Has Exit Time且有条件,  Unity Editor 会优先考虑exit time ，即当动画播放到exit time的时候，才会考虑条件是不是满足，从而决定转换到下一个动画

### Transition graph

To manually adjust the settings listed above, you can either enter numbers directly into the fields or use the transition graph. The transition graph modifies the values above when the visual elements are manipulated.

这是转换图的解释很清楚了有没有，恩？baby

• 点赞
• 评论
• 分享
x

海报分享

扫一扫，分享海报

• 收藏 1
• 手机看

分享到微信朋友圈

x

扫一扫，手机阅读

• 打赏

打赏

路人张德帅

你的鼓励将是我创作的最大动力

C币 余额
2C币 4C币 6C币 10C币 20C币 50C币
• 一键三连

点赞Mark关注该博主, 随时了解TA的最新博文
04-03 4095
12-12 1万+

03-27 3400
09-30 1431
11-10 1万+
11-28 8689
01-16 6038
05-21 58