Skip to main content

表情菜单和控制

tip

你需要对 Unity Animator 有基本的了解,才能在虚拟形象的动画器中使用表情参数。

你可以通过表情菜单(Expressions Menu)在 VRChat 中控制虚拟形象的动画器。这允许你使用 VRChat 的放射状菜单播放动画或更改虚拟形象的外观。

要在 VRChat 中使用表情菜单,你需要创建(至少)两个资源:

  • 一个(或多个)表情菜单资源
  • 一个表情参数资源

创建并配置这些资源后,请确保将它们添加到虚拟形象描述符(Avatar Descriptor)的 "Expressions" 部分。

创建表情菜单​

  1. 通过选择 Assets > Create > VRChat > Avatars > Expressions Menu 创建一个表情菜单资源。

虚拟形象表情菜单的默认视图。

  1. 通过选择你的表情菜单资源并点击 "Create" 按钮创建一个表情参数资源。这允许你为表情菜单创建自定义参数。
    • 点击 "Create" 时,表情参数资源会自动分配给表情菜单资源。
    • 你也可以通过选择 Assets > Create > VRChat > Avatars > Expression Parameters 来创建表情参数资源。
    • 表情参数有一个选项,可以从 Animator 复制参数以快速创建你的参数。

表情参数的默认状态。

  1. 选择表情参数资源进行自定义。
    • 该资源默认包含三个参数:VRCEmote、VRCFaceBlendH 和 VRCFaceBlendV。除非你在虚拟形象中使用它们,或者不想创建自己的表情菜单,否则可以安全删除它们。
    • 你的动画器始终可以访问 VRChat 的内置参数。例如,你不应将 "AFK" 或 "GestureLeft" 参数添加到表情参数资源中。
  2. 输入自定义参数的名称。
    • 这些名称应与动画器中的参数名称匹配。
    • 你可以使用 / 对参数进行分类。例如,Clothing/Hoodie 和 Clothing/Hat。
    • VRChat 有一些内置参数。你可以随时在动画器中使用它们——不要将它们添加到自己的表情参数中。
  3. 为每个参数选择类型。类型应与动画器的参数类型匹配。
    • Int 可以是 0 到 255 之间的任意整数。
    • Float 可以是 -1.0 到 1.0 之间的任意数字。
    • Bool 可以是 true 或 false。
  4. 选择 Default 值来设置每个参数的默认值。
    • 当虚拟形象被重置时,参数将恢复为此值。
  5. 对于在加载虚拟形象时不应自动重置的参数,启用 Saved。如果你的虚拟形象有自定义选项或设置,Saved 将防止它们在切换到不同世界或虚拟形象后被重置。
  6. 如果该参数的状态应通过网络发送给所有其他玩家,请启用 Synced。

接下来,你应该将这两个资源添加到虚拟形象描述符中。

表情参数的默认状态。

  1. 选择你的虚拟形象描述符,向下滚动到 "Expressions" 部分。
  2. 将 "Menu" 属性更改为你的表情菜单。
  3. 将 "Parameters" 属性更改为你的表情参数。

将这两个资源添加到虚拟形象描述符后,你的所有表情参数现在都可以在表情菜单中使用,你可以自由定制它。

表情参数的默认状态。

  1. 在检视面板中,点击 "Add Control"。单个菜单最多可以添加 8 个控件。
  2. 选择名称和类型。
  3. 你也可以在此处添加图标、子菜单或更改控件的顺序。
  • 你可以在 VRCSDK/Assets3/Expression Menu Icons/ 中找到一些默认图标。

控件类型​

表情菜单支持不同类型的控件。选择最适合你使用场景的类型。

类型描述
Button点击时设置一个参数,然后在同步/重置发送后重置——通常大约在一秒后。不能长按。
Toggle切换开关打开时设置参数,关闭时重置参数。
Sub-Menu打开另一个表情菜单;你还可以在子菜单中嵌套子菜单!此外,子菜单在进入时可以设置一个参数;如果设置了,退出该菜单时该参数会重置为零。更改参数的值将关闭所有设置为使用不同值的子菜单,这可用于关闭较长的子菜单链。
Two-Axis Puppet打开一个轴控制菜单,根据摇杆位置控制两个 float 参数。参数映射到垂直和水平方向。float 值范围为 -1.0 到 1.0。
Four-Axis Puppet打开一个轴控制菜单,根据摇杆位置控制四个 float 参数。参数按顺序映射:上、右、下、左。float 值范围为 0.0 到 1.0。
Radial Puppet打开一个径向控制菜单,控制单个 float 参数,类似于可填充的进度条!float 值范围为 0.0 到 1.0。

"Puppet" 类型的控件有两个特殊功能:

  • "Parameter" 属性对于傀儡控件是可选的。如果使用它,它会在傀儡控件打开时被设置。这允许你的动画器检测傀儡控件当前是否打开。
  • 当你在 VRChat 中退出傀儡控件时,它会保持 "Parameter Horizontal/Vertical/Radial" 的值(直到你重新打开控件或在其他地方更改该值)。这允许你在导航放射状菜单时"冻结"傀儡控件的任何状态。

傀儡菜单同步​

Puppet 控件在打开时使用 IK Sync。如果你希望同步尽可能接近你的输入以实现快速移动,你应该使用傀儡菜单。

Button/Toggle 使用 Playable Sync,它按需更新(而不是持续更新),适用于你"打开/关闭"但不需要高精度同步的内容。

傀儡菜单同步始终以最大可用速率更新,并会为远程用户平滑数值——在需要精确时间复制时表现更好。