Expressions: Difference between revisions
Prepare translations |
Marked this version for translation |
||
| Line 1: | Line 1: | ||
<languages/> | <languages/> | ||
{{Noticebox/Official}} | {{Noticebox/Official}} | ||
[[File:Action_Menu_Expressions.png|thumb|<translate>An example of Expressions menu in the Action Menu.</translate>]] | [[File:Action_Menu_Expressions.png|thumb|<translate><!--T:1--> An example of Expressions menu in the Action Menu.</translate>]] | ||
<translate> | <translate> | ||
<!--T:2--> | |||
'''Expressions''' are a feature of VRChat [[Special:MyLanguage/avatars|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. | '''Expressions''' are a feature of VRChat [[Special:MyLanguage/avatars|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. | ||
<!--T:3--> | |||
More information is available at {{VRC link|https://creators.vrchat.com/avatars/expression-menu-and-controls|Avatar Creators Docs}}. | More information is available at {{VRC link|https://creators.vrchat.com/avatars/expression-menu-and-controls|Avatar Creators Docs}}. | ||
==Expressions menu== | ==Expressions menu== <!--T:4--> | ||
<!--T:5--> | |||
The in-game Expressions menu is accessible through the [[Special:MyLanguage/Action Menu|Action Menu]], or the Expressions wing on the [[Special:MyLanguage/Quick Menu|Quick Menu]] and [[Special:MyLanguage/Main Menu|Main Menu]]. in any version of VRChat. Changes to an avatar's expressions are networked globally to other users on the same [[Special:MyLanguage/Platforms|platform]], and can be set-up for cross-platform [[Special:MyLanguage/Guides:Synchronization|synchronization]]. | The in-game Expressions menu is accessible through the [[Special:MyLanguage/Action Menu|Action Menu]], or the Expressions wing on the [[Special:MyLanguage/Quick Menu|Quick Menu]] and [[Special:MyLanguage/Main Menu|Main Menu]]. in any version of VRChat. Changes to an avatar's expressions are networked globally to other users on the same [[Special:MyLanguage/Platforms|platform]], and can be set-up for cross-platform [[Special:MyLanguage/Guides:Synchronization|synchronization]]. | ||
==Expressions in the SDK== | ==Expressions in the SDK== <!--T:6--> | ||
<!--T:7--> | |||
Expressions are edited using various parameters in the [[Special:MyLanguage/VRChat SDK|VRChat SDK]]. | Expressions are edited using various parameters in the [[Special:MyLanguage/VRChat SDK|VRChat SDK]]. | ||
===Base expressions=== | ===Base expressions=== <!--T:8--> | ||
<!--T:9--> | |||
When no expressions are configured, a default expression menu with base animations is added to the avatar, containing the following animations: | When no expressions are configured, a default expression menu with base animations is added to the avatar, containing the following animations: | ||
* Wave | * Wave | ||
| Line 27: | Line 32: | ||
* Sadness | * Sadness | ||
===Custom expressions=== | ===Custom expressions=== <!--T:10--> | ||
<!--T:11--> | |||
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. | 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==== | ====Controls==== <!--T:12--> | ||
<!--T:13--> | |||
You can create up to 8 controls per page. When creating a control, choose its type: | You can create up to 8 controls per page. When creating a control, choose its type: | ||
* Button | * Button | ||
| Line 41: | Line 48: | ||
* Radial Puppet | * Radial Puppet | ||
=====Puppet Menu Example===== | =====Puppet Menu Example===== <!--T:14--> | ||
</translate> | </translate> | ||
[[File:PuppetMenu.gif|thumb|<translate>Example of the Action Menu and Face Mirror in use. ''(Animated GIF)''</translate>]] | [[File:PuppetMenu.gif|thumb|<translate><!--T:15--> Example of the Action Menu and Face Mirror in use. ''(Animated GIF)''</translate>]] | ||
<translate> | <translate> | ||
<!--T:16--> | |||
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. | 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. | ||
<!--T:17--> | |||
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. | 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 Parameter == <!--T:18--> | ||
<!--T:19--> | |||
Expression Parameters are used to control avatar features via expression menu, [[Special:MyLanguage/Contacts|contact receiver]], [[Special:MyLanguage/Open Sound Control|OSC]], [[Special:MyLanguage/parameter drivers|parameter drivers]] or [[Special:MyLanguage/physbones|physbones]]. These parameters are then mapped to Animator Controller parameters in your avatar's FX, Gesture, or Action controllers. | Expression Parameters are used to control avatar features via expression menu, [[Special:MyLanguage/Contacts|contact receiver]], [[Special:MyLanguage/Open Sound Control|OSC]], [[Special:MyLanguage/parameter drivers|parameter drivers]] or [[Special:MyLanguage/physbones|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== <!--T:20--> | ||
<!--T:21--> | |||
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 <u>advanced</u> setups. | 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 <u>advanced</u> setups. | ||
<!--T:22--> | |||
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. | 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=== | ===Expression Parameter Bool=== <!--T:23--> | ||
</translate> | </translate> | ||
{| class="wikitable" | {| class="wikitable" | ||
|+<translate>Animator Controller Parameter</translate> | |+<translate><!--T:24--> Animator Controller Parameter</translate> | ||
!<translate>Type</translate> | !<translate><!--T:25--> Type</translate> | ||
!<translate>Expression Bool = False</translate> | !<translate><!--T:26--> Expression Bool = False</translate> | ||
!<translate>Expression Bool = True</translate> | !<translate><!--T:27--> Expression Bool = True</translate> | ||
|- | |- | ||
|Bool → Bool | |Bool → Bool | ||
| Line 81: | Line 93: | ||
|} | |} | ||
<translate> | <translate> | ||
===Expression Parameter Int=== | ===Expression Parameter Int=== <!--T:28--> | ||
</translate> | </translate> | ||
{| class="wikitable" | {| class="wikitable" | ||
|+<translate>Animator Controller Parameter</translate> | |+<translate><!--T:29--> Animator Controller Parameter</translate> | ||
!<translate>Type</translate> | !<translate><!--T:30--> Type</translate> | ||
!<translate>Behaviour</translate> | !<translate><!--T:31--> Behaviour</translate> | ||
|- | |- | ||
|Int → Bool | |Int → Bool | ||
|<translate>Any Int value that isn’t 0 sets bool to True</translate> | |<translate><!--T:32--> Any Int value that isn’t 0 sets bool to True</translate> | ||
|- | |- | ||
|Int → Int | |Int → Int | ||
|<translate>Expected Behaviour</translate> | |<translate><!--T:33--> Expected Behaviour</translate> | ||
|- | |- | ||
|Int → Float | |Int → Float | ||
|<translate>Straight Conversion: e.g. Int = 2 → Float = 2.0</translate> | |<translate><!--T:34--> Straight Conversion: e.g. Int = 2 → Float = 2.0</translate> | ||
|} | |} | ||
<translate> | <translate> | ||
===Expression Parameter Float=== | ===Expression Parameter Float=== <!--T:35--> | ||
</translate> | </translate> | ||
{| class="wikitable" | {| class="wikitable" | ||
|+<translate>Animator Controller Parameter</translate> | |+<translate><!--T:36--> Animator Controller Parameter</translate> | ||
!<translate>Type</translate> | !<translate><!--T:37--> Type</translate> | ||
!<translate>Behaviour</translate> | !<translate><!--T:38--> Behaviour</translate> | ||
|- | |- | ||
|Float → Bool | |Float → Bool | ||
|<translate>Any Float value that isn’t 0 sets bool to True</translate> | |<translate><!--T:39--> Any Float value that isn’t 0 sets bool to True</translate> | ||
|- | |- | ||
|Float → Int | |Float → Int | ||
|<translate>Rounded Conversion: ≥0.5 → 1 ; <0.5 → 0</translate> | |<translate><!--T:40--> Rounded Conversion: ≥0.5 → 1 ; <0.5 → 0</translate> | ||
|- | |- | ||
|Float → Float | |Float → Float | ||
|<translate>Expected Behaviour</translate> | |<translate><!--T:41--> Expected Behaviour</translate> | ||
|} | |} | ||
<translate> | <translate> | ||
==Resources== | ==Resources== <!--T:42--> | ||
<!--T:43--> | |||
*{{VRC link|https://vrchat.com/home/world/wrld_6168d07b-f55c-40bc-8077-749dde39983c|Avatar 3.0 Hub}} world on VRChat | *{{VRC link|https://vrchat.com/home/world/wrld_6168d07b-f55c-40bc-8077-749dde39983c|Avatar 3.0 Hub}} world on VRChat | ||
*[https://creators.vrchat.com/avatars/expression-menu-and-controls/ Expression Menu and Controls] on Creator Docs | *[https://creators.vrchat.com/avatars/expression-menu-and-controls/ Expression Menu and Controls] on Creator Docs | ||
| Line 123: | Line 136: | ||
*[https://creators.vrchat.com/avatars/playable-layers Playable Layers] on Creator Docs | *[https://creators.vrchat.com/avatars/playable-layers Playable Layers] on Creator Docs | ||
==See also== | ==See also== <!--T:44--> | ||
<!--T:45--> | |||
*[[Special:MyLanguage/Avatars|Avatars]] | *[[Special:MyLanguage/Avatars|Avatars]] | ||
**[[Special:MyLanguage/Avatar Dynamics|Avatar Dynamics]] | **[[Special:MyLanguage/Avatar Dynamics|Avatar Dynamics]] | ||
| Line 130: | Line 144: | ||
*[[Special:MyLanguage/VRChat SDK|VRChat SDK]] | *[[Special:MyLanguage/VRChat SDK|VRChat SDK]] | ||
==References== | ==References== <!--T:46--> | ||
</translate> | </translate> | ||
Revision as of 11:40, 4 December 2025

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