Skip to main content

选读:VRChat Avatar Parameter 网络同步机制简述

该选读部分由 AI 于受监督的环境下协助完成

如欲了解更多,可参考 Animator Parameters | VRChat Creation

参数同步


参数同步是指将 Avatar 的特定参数传递给其他远端玩家,使得远端玩家一侧的 Avatar 能够接收到这些参数更新,从而执行相应的逻辑和动画。这一机制是确保功能正常运行的基础。

参数同步的实现

要实现参数同步,首先需要将参数添加到 Avatar 的 Playable Layer 动画控制器中。接着,在 Expression Parameters List 中添加一个同名的参数,选择正确的类型并勾选 Sync。如果某个参数仅存在于 Playable Layer 的动画控制器中,那么该参数不会通过网络同步到远端,但其变化可能通过流程间接地同步。

参数同步的限制

每个 Avatar 最多只能使用 256 bit 的参数。具体来说,每个同步的 bool(布尔值 True/False)需占用 1 bit,而一个 int(整数)或 float(浮点数/小数)将占用 7 bit。

同步的类型


在 VRChat 中,参数同步分为三种类型:Speech、Playable 和 IK。每种类型的用途、同步方式、延迟等信息如下:

  • Speech
    • 用途:主要用于 Viseme(语音表情),由 Oculus Lipsync 输出参数驱动。
    • 同步方式:Viseme 跟随玩家发出的语音变化在本地计算,并间接进行同步。
    • 延迟:不可用/无显著延迟,不涉及直接的网络同步。
  • Playable
    • 用途:用于对时间和延迟不敏感的参数同步。
    • 同步方式:根据参数变化,每 0.1 到 1 秒更新一次(每秒 1 到 10 次更新)。
    • 延迟:通常延迟约为 0.2 秒,尽管文档中标注的同步时间为 0.1 到 1 秒。
  • IK
    • 用途:用于同步频繁变化的值,仅由 VRChat 指定的 Parameter 使用以及当一个 Float 由 Radial Puppet 或 Axis Puppet 控制时使用。
    • 同步方式:每 0.1 秒连续更新(每秒 10 次更新),并在本地为远程用户插值 float 值。
    • 延迟:较低。