Expressions

From VRChat Wiki
VRLogo.png
V · EThis is an official VRChat information page!
It is reviewed and approved by the VRCWiki Team. Learn how to contribute to this page by reading the Contribution Guide.
An example of Expressions menu in the Action Menu.

Expressions are a feature of VRChat avatars, consisting of user-customized menus that let you enable actions or toggles on your avatar; designed for flexible, easy access to unique avatar features.

More information is available at Official VRChat source Avatar Creators Docs.

Expressions menu

The in-game Expressions menu is accessible through the Action Menu, or the Expressions wing on the Quick Menu and Main Menu. in any version of VRChat. Changes to an avatar's expressions are networked globally to other users on the same platform, and can be set-up for cross-platform synchronization.

Expressions in the SDK

Expressions are edited using various parameters in the VRChat SDK.

Base expressions

When no expressions are configured, a default expression menu with base animations is added to the avatar, containing the following animations:

  • Wave
  • Clap
  • Point
  • Cheer
  • Dance
  • Backflip
  • Die
  • Sadness

Custom expressions

To add custom expressions, create an Expression Menu file and an Expression Parameter file, then attach them to the VRChat Avatar Descriptor. The menu defines parameter entries shown on your avatar’s expression menus. The parameters are the variables the menu controls. You also specify details such as whether parameters must be synchronized for other users. You can set 256 bits to be synced, with in 8192 variables.

Controls

You can create up to 8 controls per page. When creating a control, choose its type:

  • Button
  • Toggle
  • Sub Menu
  • Two Axis Puppet
  • Four Axis Puppet
  • Radial Puppet
Puppet Menu Example
Example of the Action Menu and Face Mirror in use. (Animated GIF)

As you move your joystick, touchpad, or mouse in different directions, you change animation parameters to blend between moods (e.g., "happy" and "surprised"). Any parameter can be controlled from this menu.

You can open one menu on either hand (or both). By default, flick to select an option. In Action Menu settings, you can choose to use the Trigger. To back out of a selection in the Expressions menu, pull the trigger.

Expression Parameter

Expression Parameters are used to control avatar features via expression menu, contact receiver, OSC, parameter drivers or physbones. These parameters are then mapped to Animator Controller parameters in your avatar's FX, Gesture, or Action controllers.

Expression Parameter Mismatching

Expression Parameter Mismatching refers to the practice of using different parameter types between your Expression Parameters and your local Animator Controller parameters. While it is recommended to keep parameter types consistent, mismatching is supported and the system will convert values between types according to specific rules. Which can be useful in certain advanced setups.

Unity's Animator system uses floats on the backend for all parameter types, while VRChat internally uses SBytes for parameter storage. The user interface in Unity and the VRCSDK allows you to select parameter types for convenience, but under the hood, conversions are possible. This means that parameters are not being cast, but rather mismatched. This behavior is also supported by popular tools such as Av3Emulator and Gesture Manager.

Expression Parameter Bool

Animator Controller Parameter
Type Expression Bool = False Expression Bool = True
Bool → Bool Bool = False Bool = True
Bool → Int Int = 0 Int = 1
Bool → Float Float = 0.0 Float = 1.0

Expression Parameter Int

Animator Controller Parameter
Type Behaviour
Int → Bool Any Int value that isn’t 0 sets bool to True
Int → Int Expected Behaviour
Int → Float Straight Conversion: e.g. Int = 2 → Float = 2.0

Expression Parameter Float

Animator Controller Parameter
Type Behaviour
Float → Bool Any Float value that isn’t 0 sets bool to True
Float → Int Rounded Conversion: ≥0.5 → 1 ; <0.5 → 0
Float → Float Expected Behaviour

Resources

See also

References