Expressions/es: Difference between revisions

From VRChat Wiki
Sakuuh (talk | contribs)
Created page with "Un ejemplo del menú de expresiones en el menú de acción."
 
FuzzyBot (talk | contribs)
Updating to match new version of source page
 
(64 intermediate revisions by 2 users not shown)
Line 3: Line 3:
[[File:Action_Menu_Expressions.png|thumb|Un ejemplo del menú de expresiones en el menú de acción.]]
[[File:Action_Menu_Expressions.png|thumb|Un ejemplo del menú de expresiones en el menú de acción.]]
   
   
<div lang="en" dir="ltr" class="mw-content-ltr">
Las '''expressiones''' son una característica de los [[Special:MyLanguage/avatars|avatares]] de VRChat, compuesta por menús personalizados por el usuario que permiten activar acciones o alternar entre objetos en tu avatar; están diseñadas para ofrecer acceso flexible y sencillo a funciones únicas del avatar.
'''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.
 
Más información disponible en {{VRC link|https://creators.vrchat.com/avatars/expression-menu-and-controls|documentos para creadores de avatares (en inglés)}}.
 
<span id="Expressions_menu"></span>
==Menú de expresiones==
 
El menú de expresiones dentro del juego es accesible a través del [[Special:MyLanguage/Action Menu|menú de acción]], o del panel de expresiones en el [[Special:MyLanguage/Quick Menu|menú rápido]] y el [[Special:MyLanguage/Main Menu|menú principal]] en cualquier versión de VRChat. Los cambios en las expresiones de un avatar se sincronizan globalmente con otros usuarios en la misma [[Special:MyLanguage/Platforms|plataforma]] y pueden configurarse para una [[Special:MyLanguage/Guides:Synchronization|sincronización]] multiplataforma.
 
<span id="Expressions_in_the_SDK"></span>
==Expresiones en el SDK==
 
Las expresiones se editan utilizando varios parámetros en el [[Special:MyLanguage/VRChat SDK|SDK de VRChat]].
 
<span id="Base_expressions"></span>
===Expresiones base===
 
Cuando no se configura ninguna expresión, se agrega al avatar un menú de expresiones predeterminado con animaciones base, que contiene las siguientes animaciones:
* Saludar
* Aplaudir
* Señalar
* Animar
* Bailar
* Voltereta hacia atrás
* Morir
* Tristeza
 
<span id="Custom_expressions"></span>
===Expresiones personalizadas===
 
Para añadir expresiones personalizadas, crea un asset llamado '''Expression Menu''' y otro asset llamado '''Expression Parameters''' en Unity, y luego asígnalos en la sección ''Expressions'' del "VRChat Avatar Descriptor". El menú define qué controles aparecen en el menú dentro del juego, mientras que el asset de parámetros define los nombres, tipos, valores por defecto y el comportamiento de sincronización de los valores que esos controles cambian.
 
Cada parámetro personalizado puede marcarse como ''Saved'' y ''Synced''. Los parámetros personalizados sincronizados (Synced) cuentan para el presupuesto de sincronización de 256 bits del avatar, mientras que los avatares pueden definir hasta 8192 parámetros personalizados en total. Los parámetros de este asset también pueden ser modificados por [[Special:MyLanguage/Contacts|Contact Receivers]], [[Special:MyLanguage/parameter drivers|parameter drivers]], [[Special:MyLanguage/physbones|PhysBones]] y [[Special:MyLanguage/Open Sound Control|OSC]].
 
El SDK también incluye un botón de ''Default Parameters''. Este restaura los tres parámetros alias utilizados por los controladores AV3 predeterminados de VRChat: <code>VRCEmote</code>, <code>VRCFaceBlendH</code> y <code>VRCFaceBlendV</code>.
 
<span id="Controls"></span>
====Controles====
 
<div class="mw-translate-fuzzy">
Puedes crear hasta 8 controles por página. Al crear un control, elige su tipo:
* Botón
* Interruptor (Toggle)
* Submenú
* Control de dos ejes
* Control de cuatro ejes
* Control radial
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Puppet_Menu_Example"></span>
More information is available at {{VRC link|https://creators.vrchat.com/avatars/expression-menu-and-controls|Avatar Creators Docs}}.
=====Ejemplo de menú de control=====
</div>
 
[[File:PuppetMenu.gif|thumb|Ejemplo del menú de acción y el espejo facial en uso. ''(GIF animado)'']]
Al mover el joystick, el panel táctil o el ratón/mouse en diferentes direcciones, se modifican los parámetros de animación para combinar diferentes estados de ánimo (por ejemplo, "feliz" y "sorprendido"). Cualquier parámetro se puede controlar desde este menú.
 
Puedes abrir un menú con cada mano (o con ambas). Por defecto, desliza el dedo para seleccionar una opción. En la configuración del menú de acción, puedes usar el gatillo. Para salir de una selección en el menú de expresiones, aprieta el gatillo.
 
Cuando un control tipo radial está abierto, VRChat sincroniza sus valores en tiempo real usando el modo de sincronización ''IK'', que es más rápido. Después de cerrarlo, el valor se mantiene congelado hasta que se cambie nuevamente.
 
<span id="Expression_Parameter"></span>
==Parámetros de expresión==


<div lang="en" dir="ltr" class="mw-content-ltr">
Los parámetros de expresión se utilizan para controlar funciones del avatar mediante el menú de expresiones, el [[Special:MyLanguage/Contacts|contact receiver (receptor de contactos)]], [[Special:MyLanguage/Open Sound Control|OSC]], [[Special:MyLanguage/parameter drivers|controladores de parámetros]] o [[Special:MyLanguage/physbones|physbones]]. Estos parámetros luego se asignan a los parámetros del "Animator Controller" (controlador de animaciones) en los controladores: FX, Gesture o Action de tu avatar.
==Expressions menu==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Settings"></span>
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]].
== Ajustes ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Cada entrada en el asset de Expression Parameters almacena:
==Expressions in the SDK==
* '''Name''', que debe coincidir exactamente con el nombre del parámetro en el Animator.
</div>
* '''Type''', que puede ser <code>Bool</code>, <code>Int</code> o <code>Float</code>.
* '''Default''', que se utiliza cuando se reinicia el avatar.
* '''Saved''', que controla si el valor persiste entre sesiones.
* '''Synced''', que controla si el valor se envía a otros usuarios.


<div lang="en" dir="ltr" class="mw-content-ltr">
Por defecto, la sincronización de parámetros personalizados utiliza el modo de sincronización ''Playable'' de VRChat. Los controles radiales usan temporalmente la sincronización más rápida ''IK'' mientras están abiertos y activos.
Expressions are edited using various parameters in the [[Special:MyLanguage/VRChat SDK|VRChat SDK]].
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Built-in_parameters"></span>
===Base expressions===
=== Parámetros integrados ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
When no expressions are configured, a default expression menu with base animations is added to the avatar, containing the following animations:
VRChat also provides built-in Animator parameters. These do not need to be added to the Expression Parameters asset, and they do not count toward the custom parameter budget.
* Wave
* Clap
* Point
* Cheer
* Dance
* Backflip
* Die
* Sadness
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
===Custom expressions===
Built-in parameters are read-only. They are added directly to a playable layer's Animator Controller by name, and VRChat updates them automatically at runtime. They are not set on sub-animators, only on playable-layer animators.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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.
Additional built-in parameters include:
* <code>Viseme</code> (Int) — Set by lip sync from <code>0</code> (silence) to <code>14</code> (the "u" vowel) when the Avatar Descriptor's Lip Sync is set to Viseme Blend Shape or Viseme Parameter Only.
* <code>Voice</code> (Float) — Perceived microphone volume from <code>0.0</code> to <code>1.0</code>, affected by distance and earmuff settings.
* <code>VelocityX</code>, <code>VelocityY</code>, <code>VelocityZ</code>, <code>VelocityMagnitude</code> (Float) — Movement speed in m/s along each axis and total magnitude. Locally, playspace movement does not count; remotely, it does.
* <code>Upright</code> (Float) — <code>0</code> when prone, <code>1</code> when standing.
* <code>Grounded</code> (Bool) — Whether the user is touching the ground.
* <code>MuteSelf</code> (Bool) — Whether the user's microphone is muted.
* <code>Earmuffs</code> (Bool) — Whether the user has earmuffs enabled.
* <code>IsOnFriendsList</code> (Bool) — Whether the viewer is friends with the avatar's wearer (shows False locally).
* <code>ScaleFactor</code>, <code>ScaleFactorInverse</code>, <code>EyeHeightAsMeters</code>, <code>EyeHeightAsPercent</code> (Float) — Scaling-related parameters for avatar scaling. <code>EyeHeightAsMeters</code> is recommended for scale-aware systems because it is linear and does not depend on upload height.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
====Controls====
Each built-in parameter has a sync type determining when it is sent to remote users: ''IK'' for tracking-derived values (gestures, velocity, grounded), ''Speech'' for voice-related values (viseme, voice), ''Playable'' for user-state values (mute, earmuffs, tracking type, scale), or ''None'' for local-only values (IsLocal, PreviewMode).
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
You can create up to 8 controls per page. When creating a control, choose its type:
=== Network synchronization ===
* Button
* Toggle
* Sub Menu
* Two Axis Puppet
* Four Axis Puppet
* Radial Puppet
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
=====Puppet Menu Example=====
Only synced expression parameters and certain built-in parameters are sent over the network. The full list of data sent for each avatar includes:
* '''IK targets''' — Head, jaw, and hands for desktop and 3-point tracking; additionally hip and feet for full-body tracking. Index controller users also sync finger positions.
* '''Synced expression parameters''' — Only parameters marked as Synced are transmitted. Values are quantized: Int values sync in the range 0–255, Float values sync as multiples of 1/127 between −1 and 1, and Bools sync as true or false.
* '''Built-in VRC parameters''' — Including gestures, velocity, voice, and other runtime parameters.
* '''PhysBones''' — Pose position data is sent to late joiners.
</div>
</div>


[[File:PuppetMenu.gif|thumb|<span lang="en" dir="ltr" class="mw-content-ltr">Example of the Action Menu and Face Mirror in use. ''(Animated GIF)''</span>]]
<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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.
For reliable late-joiner support, a recommended pattern is to split animator logic using the <code>IsLocal</code> parameter: local-side layers handle contacts, parameter drivers, and all logic, then set synced parameters, while remote-side layers only read those synced parameters to play the correct visualization.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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.
=== Gestures and facial expressions ===
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
==Expression Parameter ==
The built-in <code>GestureLeft</code> and <code>GestureRight</code> parameters identify the user's hand gesture, while <code>GestureLeftWeight</code> and <code>GestureRightWeight</code> expose analog trigger pressure. On humanoid avatars, the Gesture playable layer is commonly used for hand poses, while facial expressions are often driven from the FX layer with blendshapes, material properties, or other non-humanoid animations.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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.
On tracked controllers where finger tracking overrides animation by default, creators can use a Tracking Control state behavior to switch the relevant fingers from ''Tracking'' to ''Animation'' when needed.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Expression_Parameter_Mismatching"></span>
== Expression Parameter Mismatching==
== Parámetros de expresión no coincidentes ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div class="mw-translate-fuzzy">
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.
La discrepancia de parámetros de expresión se refiere a la práctica de usar diferentes tipos de parámetros entre tus parámetros de expresión y los parámetros locales del controlador de animaciones. Aunque se recomienda mantener los tipos de parámetros consistentes, la discrepancia se acepta y el sistema convertirá los valores entre tipos según reglas específicas, lo que puede ser útil en ciertos ajustes <u>avanzados</u>.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div class="mw-translate-fuzzy">
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.
El sistema "Animator" de Unity usa números flotantes (floats) internamente para todos los tipos de parámetros, mientras que VRChat utiliza internamente SBytes para el almacenamiento de parámetros. La interfaz de usuario en Unity y el VRCSDK te permite seleccionar tipos de parámetros por conveniencia, pero bajo el capó, las conversiones son posibles. Esto significa que los parámetros no se convierten, sino que se desajustan. Este comportamiento también es compatible con herramientas populares como "Av3Emulator" y "Gesture Manager".
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Expression_Parameter_Bool"></span>
===Expression Parameter Bool===
===Parámetro de expresión Bool===
</div>
{| class="wikitable"
{| class="wikitable"
|+<span lang="en" dir="ltr" class="mw-content-ltr">Animator Controller Parameter</span>
|+Parámetro del controlador de animación
!<span lang="en" dir="ltr" class="mw-content-ltr">Type</span>
!Tipo
!<span lang="en" dir="ltr" class="mw-content-ltr">Expression Bool = False</span>
!Expresión Bool = Falso
!<span lang="en" dir="ltr" class="mw-content-ltr">Expression Bool = True</span>
!Expresión Bool = Verdadero
|-
|-
|Bool → Bool
|Bool → Bool
Line 119: Line 166:
|Float = 1.0
|Float = 1.0
|}
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Expression_Parameter_Int"></span>
===Expression Parameter Int===
===Parámetro de expresión Int===
</div>
{| class="wikitable"
{| class="wikitable"
|+<span lang="en" dir="ltr" class="mw-content-ltr">Animator Controller Parameter</span>
|+Parámetro del controlador de animación
!<span lang="en" dir="ltr" class="mw-content-ltr">Type</span>
!Tipo
!<span lang="en" dir="ltr" class="mw-content-ltr">Behaviour</span>
!Comportamiento
|-
|-
|Int → Bool
|Int → Bool
|<span lang="en" dir="ltr" class="mw-content-ltr">Any Int value that isn’t 0 sets bool to True</span>
|<span class="mw-translate-fuzzy">Cualquier valor "Int" que no sea 0 establece "Bool" en verdadero</span>
|-
|-
|Int → Int
|Int → Int
|<span lang="en" dir="ltr" class="mw-content-ltr">Expected Behaviour</span>
|Comportamiento esperado
|-
|-
|Int → Float
|Int → Float
|<span lang="en" dir="ltr" class="mw-content-ltr">Straight Conversion: e.g. Int = 2 → Float = 2.0</span>
|Conversión directa: ej. Int = 2 → Float = 2.0
|}
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Expression_Parameter_Float"></span>
===Expression Parameter Float===
===Parámetro de expresión Float===
</div>
{| class="wikitable"
{| class="wikitable"
|+<span lang="en" dir="ltr" class="mw-content-ltr">Animator Controller Parameter</span>
|+Parámetro del controlador de animación
!<span lang="en" dir="ltr" class="mw-content-ltr">Type</span>
!Tipo
!<span lang="en" dir="ltr" class="mw-content-ltr">Behaviour</span>
!Comportamiento
|-
|-
|Float → Bool
|Float → Bool
|<span lang="en" dir="ltr" class="mw-content-ltr">Any Float value that isn’t 0 sets bool to True</span>
|<span class="mw-translate-fuzzy">Cualquier valor "Float" que no sea 0 establece "Bool" en verdadero</span>
|-
|-
|Float → Int
|Float → Int
|<span lang="en" dir="ltr" class="mw-content-ltr">Rounded Conversion: ≥0.5 → 1 ; <0.5 → 0</span>
|Conversión redondeada: ≥0.5 → 1 ; <0.5 → 0
|-
|-
|Float → Float
|Float → Float
|<span lang="en" dir="ltr" class="mw-content-ltr">Expected Behaviour</span>
|Comportamiento esperado
|}
|}
<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Resources"></span>
==Resources==
==Recursos==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
*{{VRC link|https://vrchat.com/home/world/wrld_6168d07b-f55c-40bc-8077-749dde39983c|Avatar 3.0 Hub}} mundo en 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/ Menú de expresiones y controles] en Creator Docs
*[https://creators.vrchat.com/avatars/expression-menu-and-controls/ Expression Menu and Controls] on Creator Docs
*[https://docs.vrchat.com/docs/action-menu#expression-menu Menú de acción - Menú de expresiones] en Creator Docs
*[https://docs.vrchat.com/docs/action-menu#expression-menu Action Menu - Expression Menu] on Creator Docs
*[https://creators.vrchat.com/avatars/animator-parameters/ Parámetros del Animator] en Creator Docs
*[https://creators.vrchat.com/avatars/animator-parameters/#expression-parameter-aliasing Animator Parameters] on Creator Docs
*[https://creators.vrchat.com/avatars/playable-layers Capas reproducibles] en Creator Docs
*[https://creators.vrchat.com/avatars/playable-layers Playable Layers] on Creator Docs
*[https://creators.vrchat.com/avatars/state-behaviors/ Comportamientos de los estados] en Creator Docs
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="See_also"></span>
==See also==
==Véase también==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
*[[Special:MyLanguage/Avatars|Avatares]]
*[[Special:MyLanguage/Avatars|Avatars]]
**[[Special:MyLanguage/Avatar Dynamics|Avatar Dynamics]]
**[[Special:MyLanguage/Avatar Dynamics|Avatar Dynamics]]
*[[Special:MyLanguage/Action Menu|Action Menu]]
*[[Special:MyLanguage/Action Menu|Menú de acción]]
*[[Special:MyLanguage/VRChat SDK|VRChat SDK]]
*[[Special:MyLanguage/VRChat SDK|SDK de VRChat]]
</div>
 
<span id="References"></span>
==Referencias==


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
==References==
* [https://vrc.school/docs/Avatars/Expressions-Menu-Params VRC School: Expressions Menu and Parameters]
* [https://vrc.school/docs/Avatars/Gestures VRC School: Hand Gestures/Facial Expressions]
* [https://vrc.school/docs/Avatars/VRC-Parameters VRC School: Built-In VRC Parameters]
* [https://vrc.school/docs/Other/Network-Sync VRC School: Network Sync]
* [https://vrc.school/docs/Other/Parameter-Mismatching VRC School: Expression Parameter Mismatching]
</div>
</div>
<references />


[[Category:Avatar features{{#translation:}}]]
[[Category:Avatar features{{#translation:}}]]

Latest revision as of 12:30, 4 April 2026

Ver · Editar¡Esta es una página de información oficial de VRChat!
Es revisada y aprobada por el equipo de VRCWiki. Aprende cómo contribuir a esta página leyendo la guía de contribución.
Un ejemplo del menú de expresiones en el menú de acción.

Las expressiones son una característica de los avatares de VRChat, compuesta por menús personalizados por el usuario que permiten activar acciones o alternar entre objetos en tu avatar; están diseñadas para ofrecer acceso flexible y sencillo a funciones únicas del avatar.

Más información disponible en documentos para creadores de avatares (en inglés).

Menú de expresiones

El menú de expresiones dentro del juego es accesible a través del menú de acción, o del panel de expresiones en el menú rápido y el menú principal en cualquier versión de VRChat. Los cambios en las expresiones de un avatar se sincronizan globalmente con otros usuarios en la misma plataforma y pueden configurarse para una sincronización multiplataforma.

Expresiones en el SDK

Las expresiones se editan utilizando varios parámetros en el SDK de VRChat.

Expresiones base

Cuando no se configura ninguna expresión, se agrega al avatar un menú de expresiones predeterminado con animaciones base, que contiene las siguientes animaciones:

  • Saludar
  • Aplaudir
  • Señalar
  • Animar
  • Bailar
  • Voltereta hacia atrás
  • Morir
  • Tristeza

Expresiones personalizadas

Para añadir expresiones personalizadas, crea un asset llamado Expression Menu y otro asset llamado Expression Parameters en Unity, y luego asígnalos en la sección Expressions del "VRChat Avatar Descriptor". El menú define qué controles aparecen en el menú dentro del juego, mientras que el asset de parámetros define los nombres, tipos, valores por defecto y el comportamiento de sincronización de los valores que esos controles cambian.

Cada parámetro personalizado puede marcarse como Saved y Synced. Los parámetros personalizados sincronizados (Synced) cuentan para el presupuesto de sincronización de 256 bits del avatar, mientras que los avatares pueden definir hasta 8192 parámetros personalizados en total. Los parámetros de este asset también pueden ser modificados por Contact Receivers, parameter drivers, PhysBones y OSC.

El SDK también incluye un botón de Default Parameters. Este restaura los tres parámetros alias utilizados por los controladores AV3 predeterminados de VRChat: VRCEmote, VRCFaceBlendH y VRCFaceBlendV.

Controles

Puedes crear hasta 8 controles por página. Al crear un control, elige su tipo:

  • Botón
  • Interruptor (Toggle)
  • Submenú
  • Control de dos ejes
  • Control de cuatro ejes
  • Control radial

Ejemplo de menú de control
Ejemplo del menú de acción y el espejo facial en uso. (GIF animado)

Al mover el joystick, el panel táctil o el ratón/mouse en diferentes direcciones, se modifican los parámetros de animación para combinar diferentes estados de ánimo (por ejemplo, "feliz" y "sorprendido"). Cualquier parámetro se puede controlar desde este menú.

Puedes abrir un menú con cada mano (o con ambas). Por defecto, desliza el dedo para seleccionar una opción. En la configuración del menú de acción, puedes usar el gatillo. Para salir de una selección en el menú de expresiones, aprieta el gatillo.

Cuando un control tipo radial está abierto, VRChat sincroniza sus valores en tiempo real usando el modo de sincronización IK, que es más rápido. Después de cerrarlo, el valor se mantiene congelado hasta que se cambie nuevamente.

Parámetros de expresión

Los parámetros de expresión se utilizan para controlar funciones del avatar mediante el menú de expresiones, el contact receiver (receptor de contactos), OSC, controladores de parámetros o physbones. Estos parámetros luego se asignan a los parámetros del "Animator Controller" (controlador de animaciones) en los controladores: FX, Gesture o Action de tu avatar.

Ajustes

Cada entrada en el asset de Expression Parameters almacena:

  • Name, que debe coincidir exactamente con el nombre del parámetro en el Animator.
  • Type, que puede ser Bool, Int o Float.
  • Default, que se utiliza cuando se reinicia el avatar.
  • Saved, que controla si el valor persiste entre sesiones.
  • Synced, que controla si el valor se envía a otros usuarios.

Por defecto, la sincronización de parámetros personalizados utiliza el modo de sincronización Playable de VRChat. Los controles radiales usan temporalmente la sincronización más rápida IK mientras están abiertos y activos.

Parámetros integrados

VRChat also provides built-in Animator parameters. These do not need to be added to the Expression Parameters asset, and they do not count toward the custom parameter budget.

Built-in parameters are read-only. They are added directly to a playable layer's Animator Controller by name, and VRChat updates them automatically at runtime. They are not set on sub-animators, only on playable-layer animators.

Additional built-in parameters include:

  • Viseme (Int) — Set by lip sync from 0 (silence) to 14 (the "u" vowel) when the Avatar Descriptor's Lip Sync is set to Viseme Blend Shape or Viseme Parameter Only.
  • Voice (Float) — Perceived microphone volume from 0.0 to 1.0, affected by distance and earmuff settings.
  • VelocityX, VelocityY, VelocityZ, VelocityMagnitude (Float) — Movement speed in m/s along each axis and total magnitude. Locally, playspace movement does not count; remotely, it does.
  • Upright (Float) — 0 when prone, 1 when standing.
  • Grounded (Bool) — Whether the user is touching the ground.
  • MuteSelf (Bool) — Whether the user's microphone is muted.
  • Earmuffs (Bool) — Whether the user has earmuffs enabled.
  • IsOnFriendsList (Bool) — Whether the viewer is friends with the avatar's wearer (shows False locally).
  • ScaleFactor, ScaleFactorInverse, EyeHeightAsMeters, EyeHeightAsPercent (Float) — Scaling-related parameters for avatar scaling. EyeHeightAsMeters is recommended for scale-aware systems because it is linear and does not depend on upload height.

Each built-in parameter has a sync type determining when it is sent to remote users: IK for tracking-derived values (gestures, velocity, grounded), Speech for voice-related values (viseme, voice), Playable for user-state values (mute, earmuffs, tracking type, scale), or None for local-only values (IsLocal, PreviewMode).

Network synchronization

Only synced expression parameters and certain built-in parameters are sent over the network. The full list of data sent for each avatar includes:

  • IK targets — Head, jaw, and hands for desktop and 3-point tracking; additionally hip and feet for full-body tracking. Index controller users also sync finger positions.
  • Synced expression parameters — Only parameters marked as Synced are transmitted. Values are quantized: Int values sync in the range 0–255, Float values sync as multiples of 1/127 between −1 and 1, and Bools sync as true or false.
  • Built-in VRC parameters — Including gestures, velocity, voice, and other runtime parameters.
  • PhysBones — Pose position data is sent to late joiners.

For reliable late-joiner support, a recommended pattern is to split animator logic using the IsLocal parameter: local-side layers handle contacts, parameter drivers, and all logic, then set synced parameters, while remote-side layers only read those synced parameters to play the correct visualization.

Gestures and facial expressions

The built-in GestureLeft and GestureRight parameters identify the user's hand gesture, while GestureLeftWeight and GestureRightWeight expose analog trigger pressure. On humanoid avatars, the Gesture playable layer is commonly used for hand poses, while facial expressions are often driven from the FX layer with blendshapes, material properties, or other non-humanoid animations.

On tracked controllers where finger tracking overrides animation by default, creators can use a Tracking Control state behavior to switch the relevant fingers from Tracking to Animation when needed.

Parámetros de expresión no coincidentes

La discrepancia de parámetros de expresión se refiere a la práctica de usar diferentes tipos de parámetros entre tus parámetros de expresión y los parámetros locales del controlador de animaciones. Aunque se recomienda mantener los tipos de parámetros consistentes, la discrepancia se acepta y el sistema convertirá los valores entre tipos según reglas específicas, lo que puede ser útil en ciertos ajustes avanzados.

El sistema "Animator" de Unity usa números flotantes (floats) internamente para todos los tipos de parámetros, mientras que VRChat utiliza internamente SBytes para el almacenamiento de parámetros. La interfaz de usuario en Unity y el VRCSDK te permite seleccionar tipos de parámetros por conveniencia, pero bajo el capó, las conversiones son posibles. Esto significa que los parámetros no se convierten, sino que se desajustan. Este comportamiento también es compatible con herramientas populares como "Av3Emulator" y "Gesture Manager".

Parámetro de expresión Bool

Parámetro del controlador de animación
Tipo Expresión Bool = Falso Expresión Bool = Verdadero
Bool → Bool Bool = False Bool = True
Bool → Int Int = 0 Int = 1
Bool → Float Float = 0.0 Float = 1.0

Parámetro de expresión Int

Parámetro del controlador de animación
Tipo Comportamiento
Int → Bool Cualquier valor "Int" que no sea 0 establece "Bool" en verdadero
Int → Int Comportamiento esperado
Int → Float Conversión directa: ej. Int = 2 → Float = 2.0

Parámetro de expresión Float

Parámetro del controlador de animación
Tipo Comportamiento
Float → Bool Cualquier valor "Float" que no sea 0 establece "Bool" en verdadero
Float → Int Conversión redondeada: ≥0.5 → 1 ; <0.5 → 0
Float → Float Comportamiento esperado

Recursos

Véase también

Referencias