???? 简介
Animation Rigging
是Unity
官方发布的可以对Avatar
人物骨骼进行约束的工具,已经有稳定的经过验证的Vertified
包体,可以将其理解为一个IK
工具,使用它可以让我们的人物动作表现更具灵活性。
???? 基本组件
-
Rig Builder
依赖Animator
组件,所以将其与Avatar
的Animator
组件挂载于同一个物体上,支持同时控制多个Rigs
,帮助我们实现动画融合
。
-
Bone Renderer
骨骼可视化
组件,方便我们进行编辑、绑定,只需要将所有的骨骼节点添加到Transform
集合中。
添加完成后,在Scene
窗口看到Avatar
的骨骼可以被渲染出来:
-
Rig
约束控制组件,与骨骼根节点位于同一层级,将其添加到Rig Builder
组件的Rig Layers
列表:
???? 应用
本文以两处用例来表现Animation Rigging
的作用,使用的环境如下:
- Unity 2022.3.33
- Animation Rigging 1.0.3
Aim Constraint
例如你想使你场景中的NPC
一直“关注”你,可以使用Aim Constraint
瞄准约束:
-
Constrained Object
:被约束的物体,这里的Head是NPC的头部骨骼节点。 -
Source Objects
:目标物体,这里的Head是Player的头部骨骼节点,表示NPC的头部一直看向Player的头部。 - Constrained Axes:被约束的轴,这里只使用Y轴,表示只控制NPC头部的Y轴旋转。
-
Min/Max Limit
:最小最大值限制,用于限制NPC的头部旋转角度在指定范围内。
Two Bone IK Constraint
例如你想使美术提供的动作与你场景的物体更加“契合”,可以使用Two Bone IK Constraint
约束,这里以一个Sit Down
坐下的动作为例,如下图所示,我们可以发现Avatar坐下后胳膊与我们场景中的椅子并不是很"契合":
接下来我们为其添加Two Bone IK Constraint
来改善Sit Down
动作的表现:
Root
、Mid
、Tip
是我们想要进行约束的骨骼节点,Source Objects
中的Target
是新建的一个空节点,用于控制Avatar的胳膊到指定的位置,我们将其拖到椅子的把手位置:
左胳膊进行约束后的效果:
我们可以通过插值方式来控制Weight
权重数值,让约束效果逐渐起作用,使其融合进我们的Sit Down
动作过程中。
Animation Rigging
中有多种约束类型,合理使用可以让我们的Avatar人物更加活灵活现。
using UnityEngine;
using UnityEngine.Animations.Rigging;
public class Example : MonoBehaviour
{
[SerializeField] private Animator animator;
[SerializeField] private TwoBoneIKConstraint constraint;
private void Update()
{
var casi = animator.GetCurrentAnimatorStateInfo(0);
if (casi.IsName("sitdown"))
{
constraint.weight = casi.normalizedTime;
}
}
}