Expressions/es: Difference between revisions

From VRChat Wiki
Sakuuh (talk | contribs)
Created page with "Expresión booleana = Verdadero"
FuzzyBot (talk | contribs)
Updating to match new version of source page
 
(34 intermediate revisions by 2 users not shown)
Line 5: Line 5:
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.
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.


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)}}.
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>
<span id="Expressions_menu"></span>
Line 33: Line 33:
===Expresiones personalizadas===
===Expresiones personalizadas===


Para añadir expresiones personalizadas, crea un archivo llamado '''Expression Menu''' y otro llamado '''Expression Parameter''' (clic derecho en una carpeta dentro de Assets > Create > VRChat), luego asígnalos en el "Avatar Descriptor" de VRChat. El menú define las entradas de parámetros que se muestran en el menú de expresiones de tu avatar. Los parámetros son las variables que controla el menú. También puedes especificar detalles como si los parámetros deben sincronizarse para otros usuarios. Puedes configurar 256 bits para sincronizarse, dentro de un total de 8192 variables.
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>
<span id="Controls"></span>
====Controles====
====Controles====


<div class="mw-translate-fuzzy">
Puedes crear hasta 8 controles por página. Al crear un control, elige su tipo:
Puedes crear hasta 8 controles por página. Al crear un control, elige su tipo:
* Botón
* Botón
Line 45: Line 50:
* Control de cuatro ejes
* Control de cuatro ejes
* Control radial
* Control radial
</div>


<span id="Puppet_Menu_Example"></span>
<span id="Puppet_Menu_Example"></span>
Line 53: Line 59:


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.
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>
<span id="Expression_Parameter"></span>
Line 58: Line 66:


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.
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.
<span id="Settings"></span>
== 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 <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.
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.
<span id="Built-in_parameters"></span>
=== Parámetros integrados ===
<div lang="en" dir="ltr" class="mw-content-ltr">
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.
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
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 lang="en" dir="ltr" class="mw-content-ltr">
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 lang="en" dir="ltr" class="mw-content-ltr">
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 lang="en" dir="ltr" class="mw-content-ltr">
=== Network synchronization ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
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 lang="en" dir="ltr" class="mw-content-ltr">
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 lang="en" dir="ltr" class="mw-content-ltr">
=== Gestures and facial expressions ===
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
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 lang="en" dir="ltr" class="mw-content-ltr">
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>


<span id="Expression_Parameter_Mismatching"></span>
<span id="Expression_Parameter_Mismatching"></span>
== Parámetros de expresión no coincidentes ==
== Parámetros de expresión no coincidentes ==


<div class="mw-translate-fuzzy">
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>.
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 class="mw-translate-fuzzy">
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".
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>


<span id="Expression_Parameter_Bool"></span>
<span id="Expression_Parameter_Bool"></span>
===Parámetro de expresión booleano===
===Parámetro de expresión Bool===
{| class="wikitable"
{| class="wikitable"
|+Parámetro del controlador de animación
|+Parámetro del controlador de animación
!Tipo
!Tipo
!Expresión booleana = Falso
!Expresión Bool = Falso
!Expresión booleana = Verdadero
!Expresión Bool = Verdadero
|-
|-
|Bool → Bool
|Bool → Bool
Line 86: 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