Unity关于动画混合树(Blend Tree)的使用

发布时间:2024年01月02日

在动画与动画的切换过程中,常因为两个动画之间的差距过大,而显得动画的切换很不自然。
这时候就需要动画混合树Blend Tree这个功能。使用混合树可以将多个动画混合在一起,例如在处理角色的移动中,走动画与跑动画切换的时候,在走动画与跑动画中生成多个过渡用的插值动画以达到平滑得切换的功能。

现在混合树有5种类型,可以在右侧展开Blend Type看到。分别为:

1D:1D混合只有一个参数,比如如果使用混合树去制作人物从站立到走到跑的混合,就比较适合使用1D混合。右键点击混合树根节点,点击Add Motion添加结点,或者直接在右侧菜单点击加号来添加动画。
2D Simple Directional:最好在运动表示不同方向(例如“向前走”、“向后退”、“向左走”和“向右走”或者“向上瞄准”、“向下瞄准”、“向左瞄准”和“向右瞄准”)时使用。根据需要可以包括位置 (0, 0) 处的单个运动,例如“空闲”或“瞄准”。在 Simple Directional 类型中,在同一方向上_不_应该有多个运动,例如“向前走”和“向前跑”。
2D Freeform Directional:运动表示不同方向时,也使用此混合类型,但是您可以在同一方向上有多个运动,例如“向前走”和“向前跑”。在 Freeform Directional 类型中,运动集应始终包括位置 (0, 0) 处的单个运动,例如“空闲”.
2D Freeform Cartesian:最好在运动不表示不同方向时使用。凭借 Freeform Cartesian,X 参数和 Y 参数可以表示不同概念,例如角速度和线速度。一个示例是诸如“向前走不转弯”、“向前跑不转弯”、“向前走右转”、“向前跑右转”之类的运动。
Direct:精确控制所混合的各种动画而不是只使用一个或两个参数来间接混合,比如人物从某一个表情到某一个表情的过渡动画,就由direct模式制作。

使用1D来控制人物从默认的Idle到跑起来的动画。

使用2D Freeform Cartesian类型来控制动画。(可以用Compute Positions选项来设置数据)

关于Avatar Mask(骨骼遮罩):在人=物动画有多个Layers需要同时作用,比如BaseLayer只作用于脚,HoldLog Layer只作用于手时就需要用到骨骼遮罩,用于限制当前Layers作用于那一部分骨骼动画。

关于设置IK动画,目前IK只有两个手和两个脚有IK,可以通过Animator.SetIKPosition的方法进行设置IK的位置,用于匹配两个手和脚的IK点。

文章来源:https://blog.csdn.net/qq_38139885/article/details/135309902
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。