Expressions

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 Avatar Creators Docs.
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
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
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
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
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
Avatar 3.0 Hub world on VRChat
- Expression Menu and Controls on Creator Docs
- Action Menu - Expression Menu on Creator Docs
- Animator Parameters on Creator Docs
- Playable Layers on Creator Docs