跳转至

title: Avatar Dynamics:智能姿态与手势 description: 跟踪模式适配、自定义坐姿动画与手势触发的底层逻辑


Avatar Dynamics:智能姿态与手势

一个优秀的 VRChat 模型不仅要“好看”,还要“聪明”。它应该能根据用户的设备(桌面/Quest/全身追踪)自动调整动画,并在你坐下或做手势时做出自然反应。

这一切的核心配置都在 VRCAvatarDescriptorDynamics 区域。

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 默认的坐姿只是简单地把髋部折叠,这会导致模型直接“沉”进地板里,或者膝盖直挺挺地翘着。

工业级解法

  1. 制作动画:在 Unity 中录制一个坐姿 Clip。
    • 膝盖弯曲 ~90 度。
    • 骨盆微微前倾(模拟自然的身体前倾)。
    • 关键点:把脚稍微抬离地面,悬浮在地板上方。
  2. 配置 Mask:创建一个 Lower Body Mask(只影响腿和髋部),确保坐下时手和头还能自由活动。
  3. 填入 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 作为退出条件,这样手势切换会非常丝滑,不会抽搐。