title: Avatar Dynamics:智能姿态与手势 description: 跟踪模式适配、自定义坐姿动画与手势触发的底层逻辑
Avatar Dynamics:智能姿态与手势
一个优秀的 VRChat 模型不仅要“好看”,还要“聪明”。它应该能根据用户的设备(桌面/Quest/全身追踪)自动调整动画,并在你坐下或做手势时做出自然反应。
这一切的核心配置都在 VRCAvatarDescriptor 的 Dynamics 区域。
1. 追踪模式适配 (Tracking Types)
VRCAvatarDescriptor 中的 Tracking Type 决定了 VRChat 的 IK 解算器如何接管你的骨骼。
| 模式 | 适用设备 | IK 覆盖范围 | 开发者注意事项 |
|---|---|---|---|
| None | 桌面端 | 仅头部 + 手部 | 肩膀和手肘靠猜(算法推算),容易出现“缩肩”。 |
| Hip | Quest 独立模式 | + 髋部 (Hip) | 骨盆锁定,走路/旋转更准。下半身动画更稳定。 |
| Full Body (FBT) | 全身追踪 (6 点) | + 双脚 | T-Pose 警告:IK 容易把胳膊强行拉成 T 字。 |
🛠️ 解决 FBT 的 T-Pose 问题
在全身追踪下,IK 解算器有时会覆盖掉你的基础动画,导致模型像僵尸一样平举双手。 * 解法:使用 Avatar Mask (遮罩)。 * 创建一个 Mask,只勾选 Upper Body (Head, Spine, Arms)。 * 将这个 Mask 应用到你的基础层或叠加层。 * 效果:告诉 IK 解算器“手的位置听你的,但肩膀和手肘的旋转听我的”。这样既保证了手的位置精准,又消除了僵硬的 T 字手。
2. 自定义坐姿动画 (Custom Seated Poses)
VRChat 默认的坐姿只是简单地把髋部折叠,这会导致模型直接“沉”进地板里,或者膝盖直挺挺地翘着。
工业级解法
- 制作动画:在 Unity 中录制一个坐姿 Clip。
- 膝盖弯曲 ~90 度。
- 骨盆微微前倾(模拟自然的身体前倾)。
- 关键点:把脚稍微抬离地面,悬浮在地板上方。
- 配置 Mask:创建一个 Lower Body Mask(只影响腿和髋部),确保坐下时手和头还能自由活动。
- 填入 AvatarDescriptor:将做好的 Clip 拖入 Custom Seated Animation 槽位。
当用户在菜单开启“Seated”时,VRChat 会平滑过渡到这个动画,完美贴合椅子。
3. 手势触发 (Gesture Overrides)
你可以让模型识别特定的手势(如✌️剪刀手、👍大拇指、🤘摇滚手势)来触发自定义功能。
核心参数
GestureLeft/Right(Int): 当前手势的 ID (如 Peace, ThumbUp)。GestureLeft/RightWeight(Float 0.0-1.0): 手势的“准确度”。 /Right` (Int): 当前手势的 ID (如 Peace, ThumbUp)。GestureLeft/RightWeight(Float 0.0-1.0): 手势的“准确度”。### 动态物理覆盖 (PhysBone Overrides) 这是最高级的玩法:用改变手势来改变头发/裙子的物理参数。- 操作:在 Animator 窗口中,为你的手势状态添加一个 Property Override。
- 目标:
VRCPhysBone组件。 - 属性:
Stiffness(硬度) 或Gravity(重力)。
- 目标:
- 效果:当你比出“摇滚”手势时,头发的
Stiffness从 0.5 飙升到 0.8,头发瞬间“炸毛”竖起来!当你松开手,参数平滑回落,头发恢复自然下垂。
💡 提示:在 FX Layer 设置过渡时,务必利用
GestureWeight > 0.9作为触发条件,并使用Exit Time配合Weight < 0.8作为退出条件,这样手势切换会非常丝滑,不会抽搐。