Expressions: Difference between revisions

From VRChat Wiki
Hackebein (talk | contribs)
Prepare translations
Hackebein (talk | contribs)
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

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 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