Expressions

From VRChat Wiki
Revision as of 17:58, 16 April 2026 by Fireeagle (talk | contribs)
V · EC'est une page officielle d'informations VRChat !
Elle est examinée et approuvée par l'équipe VRCWiki. Apprenez comment contribuer à cette page en consultant le Guide du contributeur.
Exemple du menu d'expressions dans le menu d'action.

Les expressions sont une fonctionnalité des avatars VRChat, composé de menus personnalisés par les utilisateurs, qui vous permettent d'activer des actions ou éléments de votre avatar, conçu pour être flexible et donner un accès simplifié aux fonctionnalités des avatars.

Plus d'informations disponibles sur la Documentation des créateurs d'avatar.

Menu des expressions

Le menu des expressions est accessible via le menu d'action ou le menu latéral des expressions du menu rapide et menu principal. Les modifications des expressions d'un avatar sont transmises globalement aux autres utilisateurs de la même plateforme et peuvent être réglés pour une synchronisation multiplateforme.

Expressions dans le SDK

Les expressions sont modifiés via de nombreux « parameters » dans le SDK VRChat.

Expressions de bases

Lorsqu'aucune expression n'est configurée, un menu d'expression avec les animations de base suivantes est ajouté à l'avatar :

  • Saluer
  • Applaudir
  • Pointer du doigt
  • Encourager
  • Danser
  • Salto arrière
  • Faire le mort
  • Tristesse

Expressions personnalisées

Pour ajouter des expressions personnalisées, dans Unity créez un fichier Expression Menu, ainsi qu'un fichier Expression Parameters, puis ajoutez-les à la section Expressions de l'Avatar Descriptor VRChat. Le menu définis quels contrôles apparaissent dans le menu en jeu, tandis que les paramètres définissent les noms, types, valeurs par défaut, et le comportement de syncrhonisation des valeurs que ces contrôles changent.

Chaque paramètre personnalisé peut être libellé comme Saved(Sauvegardé) et Synced(Synchronisé). Les paramètres perso. synchronisés prennent dans le budget de 256-bit de synchro de l'avatar, tandis que les avatar peuvent définir jusqu'un total de 8192 paramètres personnalisés. Les paramètres sur l'objet peuvent aussi être changé par Contact Receivers, parameter drivers, PhysBones, et OSC.

Le SDK inclut aussi un bouton Default Parameters(Paramètres par défaut). Cela restaure les trois paramètres d'alias utilisés par les contrôleurs AV3 par défaut de VRChat: VRCEmote, VRCFaceBlendH, et VRCFaceBlendV.

Contrôles

Vous pouvez créer jusqu'à 8 contrôles différents par pages. Lorsque vous créez un contrôle, choississez son type :

  • Button Bouton définit une valeur lorsque l'on appuie, puis se réinitialise une fois que VRChat a envoyé la modification.
  • Toggle Activer/Désactiver définit une valeur lorsqu'elle est activée et la réinitialise lorsqu'elle est désactivée.
  • Sub Menu Sous-menu ouvre un autre Expressions menu, et permet optionnellement de définir un paramètre pendant que ce sous-menu est ouvert.
  • Two Axis Puppet contrôle deux paramètres float à partir d'entrées horizontale et verticale, généralement dans la plage 0.0 à 1.0.
  • Four Axis Puppet contrôle quatre paramètre float, un pour chaque direction, généralement dans la plage 0.0 à 1.0.
  • Radial Puppet Menu radial contrôle un paramètre float de 0.0 à 1.0.

Example du « Puppet Menu »
Example d'utilisation du menu d'action et du miroir personnel. (GIF animé)

Lorsque vous déplacez votre joystick, pavé tactile ou souris dans différentes directions, vous modifiez les « parameters » d'animation pour changer d'humeur. (p. ex. « Content » et « Surpris »). Tous les « parameters » peuvent être contrôlés depuis ce menu

Vous pouvez un menu sur quelconque main (ou les deux). Par défaut, effectuez un mouvement de balayage pour sélectionner une option. Vous pouvez choisir d'utiliser la gâchette depuis les paramètres du menu d'action. Pour retourner en arrière, appuyez sur la gâchette.

When a puppet control is open, VRChat synchronizes its live values with the faster IK sync mode. After it is closed, the frozen value remains until it is changed again.

« Expression Parameter »

« Expression parameters » sont utilisés pour contrôler les fonctionnalités des avatars via le menu des expressions, les « contact Receiver », l'OSC, les « parameter drivers » ou les physbones. Ces « parameters » peuvent ensuite être assignés aux « parameters » de l'« Animator Controller » dans les « controllers FX, Gesture ou Action » de votre avatar.

Settings

Each entry in the Expression Parameters asset stores:

  • Name, which must match the Animator parameter name exactly.
  • Type, which can be Bool, Int, or Float.
  • Default, which is used when the avatar is reset.
  • Saved, which controls whether the value persists between sessions.
  • Synced, which controls whether the value is sent to other users.

By default, custom parameter sync uses VRChat's Playable sync mode. Puppet controls temporarily use faster IK sync while they are actively open.

Built-in parameters

VRChat fournit également des paramètres intégrés pour l’Animator. Ceux-ci n’ont pas besoin d’être ajoutés à l’asset des paramètres d’expression et ne sont pas comptabilisés dans le budget de paramètres personnalisés.

Les paramètres intégrés sont en lecture seule. Ils sont ajoutés directement au contrôleur d’Animator d’une couche jouable par nom, et VRChat les met à jour automatiquement à l’exécution. Ils ne sont pas définis sur les sous-animateurs, uniquement sur les animateurs des couches jouables.

Parmi les paramètres intégrés supplémentaires :

  • Viseme (Int) — Défini par la synchronisation labiale de 0 (silence) à 14 (voyelle "u") lorsque la synchronisation labiale de l’Avatar Descriptor est réglée sur Viseme Blend Shape ou Viseme Parameter Only.
  • Voice (Float) — Volume perçu du microphone de 0.0 à 1.0, affecté par la distance et les réglages de protections auditives.
  • VelocityX, VelocityY, VelocityZ, VelocityMagnitude (Float) — Vitesse de déplacement en m/s le long de chaque axe et magnitude totale. Localement, les mouvements de l’aire de jeu ne comptent pas ; à distance, ils sont pris en compte.
  • Upright (Float) — 0 lorsque l’utilisateur est couché, 1 lorsqu’il est debout.
  • Grounded (Bool) — Indique si l’utilisateur touche le sol.
  • MuteSelf (Bool) — Indique si le microphone de l’utilisateur est muet.
  • Earmuffs (Bool) — Indique si les protections auditives sont activées pour l’utilisateur.
  • IsOnFriendsList (Bool) — Indique si le spectateur est ami avec le porteur de l’avatar (affiche False localement).
  • ScaleFactor, ScaleFactorInverse, EyeHeightAsMeters, EyeHeightAsPercent (Float) — Paramètres liés à l’échelle pour le redimensionnement des avatars. EyeHeightAsMeters est recommandé pour les systèmes sensibles à l’échelle car il est linéaire et indépendant de la hauteur d’upload.

Chaque paramètre intégré possède un type de synchronisation qui détermine quand il est envoyé aux utilisateurs distants : IK pour les valeurs dérivées du suivi (gestes, vitesse, contact au sol), Speech pour les valeurs liées à la voix (visème, voix), Playable pour les valeurs liées à l’état de l’utilisateur (muet, protections auditives, type de suivi, échelle), ou None pour les valeurs locales uniquement (IsLocal, PreviewMode).

Synchronisation Réseau

Seuls les paramètres d’expression synchronisés et certains paramètres intégrés sont transmis sur le réseau. La liste complète des données envoyées pour chaque avatar inclut :

  • Cibles IK — Tête, mâchoire et mains pour le suivi sur bureau et à 3 points ; en plus, hanches et pieds pour le suivi corps entier. Les utilisateurs avec contrôleur Index synchronisent également la position des doigts.
  • Paramètres d’expression synchronisés — Seuls les paramètres marqués comme synchronisés sont transmis. Les valeurs sont quantifiées : les valeurs entières (Int) se synchronisent dans la plage 0–255, les valeurs flottantes (Float) se synchronisent par multiples de 1/127 entre −1 et 1, et les booléens (Bool) se synchronisent comme vrai ou faux.
  • Paramètres VRC intégrés — Inclut les gestes, la vitesse, la voix et d’autres paramètres d’exécution.
  • PhysBones — Les données de position des poses sont envoyées aux utilisateurs rejoignant tardivement.

Pour assurer un support fiable des utilisateurs rejoignant tardivement, il est recommandé de séparer la logique de l’animateur en utilisant le paramètre IsLocal : les couches côté local gèrent les contacts, les drivers de paramètres et toute la logique, puis définissent les paramètres synchronisés, tandis que les couches côté distant ne font que lire ces paramètres synchronisés pour afficher la visualisation correcte.

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.

« Expression Parameter » non compatible

La non-correspondance des paramètres d’Expression fait référence à la pratique consistant à utiliser des types de paramètres différents entre vos Expression Parameters et les paramètres de votre contrôleur d’animation local. Bien qu’il soit recommandé de garder les types de paramètres cohérents, la non-correspondance est prise en charge et le système convertira les valeurs entre les types selon des règles spécifiques. Ce qui peut être utile dans certaines configurations avancées.

Le système Animator de Unity utilise des flottants en interne pour tous les types de paramètres, tandis que VRChat utilise des SBytes pour le stockage des paramètres. L’interface utilisateur dans Unity et le VRCSDK vous permet de sélectionner des types de paramètres par commodité, mais sous le capot, des conversions sont possibles. Cela signifie que les paramètres ne sont pas convertis (cast), mais plutôt non correspondants. Ce comportement est également pris en charge par des outils populaires tels que Av3Emulator et Gesture Manager.

Paramètre d’Expression Bool

Paramètre du contrôleur d’Animator
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

Paramètre d’Expression Int

Paramètre du contrôleur d’Animator
Type Comportement
Int → Bool Toute valeur Int qui n’est pas 0 définit le bool à True
Int → Int Comportement attendu
Int → Float Conversion directe : ex. Int = 2 → Float = 2.0

Paramètre d’Expression Float

Paramètre du contrôleur d’Animator
Type Comportement
Float → Bool Toute valeur Int qui n’est pas 0 définit le bool à True
Float → Int Conversion arrondie : ≥0.5 → 1 ; <0.5 → 0
Float → Float Comportement attendu

Ressources

Voir aussi

Références