Expressions/fr: Difference between revisions

From VRChat Wiki
Shad0wDark (talk | contribs)
No edit summary
Fireeagle (talk | contribs)
No edit summary
 
(27 intermediate revisions by 2 users not shown)
Line 33: Line 33:
===Expressions personnalisées===
===Expressions personnalisées===


<div class="mw-translate-fuzzy">
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.
Pour ajouter des expressions personnalisées, créez un fichier «''' Expression Menu '''», ainsi qu'un fichier «''' Expression Parameter '''», puis ajoutez-les sur « VRChat Avatar Descriptor ». Le menu définit l'entrée des « parameters » affichés sur le menu d'expression de votre avatar. Les « parameters » sont les '''variables''' que contrôle le menu. Vous pouvez aussi préciser des détails tels que si les « parameters » doivent être synchronisés pour les autres utilisateurs. Vous pouvez avoir jusqu'à 256 bits synchronisés pour un total de 8192 variables.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
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 [[Special:MyLanguage/Contacts|Contact Receivers]], [[Special:MyLanguage/parameter drivers|parameter drivers]], [[Special:MyLanguage/physbones|PhysBones]], et [[Special:MyLanguage/Open Sound Control|OSC]].
Each custom parameter can be marked as ''Saved'' and ''Synced''. Synced custom parameters count toward the avatar's 256-bit sync budget, while avatars can define up to 8192 total custom parameters. Parameters on this asset can also be changed by [[Special:MyLanguage/Contacts|Contact Receivers]], [[Special:MyLanguage/parameter drivers|parameter drivers]], [[Special:MyLanguage/physbones|PhysBones]], and [[Special:MyLanguage/Open Sound Control|OSC]].
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
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: <code>VRCEmote</code>, <code>VRCFaceBlendH</code>, et <code>VRCFaceBlendV</code>.
The SDK also includes a ''Default Parameters'' button. This restores the three alias parameters used by VRChat's default AV3 controllers: <code>VRCEmote</code>, <code>VRCFaceBlendH</code>, and <code>VRCFaceBlendV</code>.
</div>


<span id="Controls"></span>
<span id="Controls"></span>
====Contrôles====
====Contrôles====


<div class="mw-translate-fuzzy">
Vous pouvez créer jusqu'à 8 contrôles différents par pages. Lorsque vous créez un contrôle, choississez son type :
Vous pouvez créer jusqu'à 8 contrôles différents par pages :
* '''Button''' Bouton définit une valeur lorsque l'on appuie, puis se réinitialise une fois que VRChat a envoyé la modification.
* Bouton (Button)
* '''Toggle''' Activer/Désactiver définit une valeur lorsqu'elle est activée et la réinitialise lorsqu'elle est désactivée.
* Activer/Désactiver (Toggle)
* '''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.
* Sous-menu (Sub Menu)
* '''Two Axis Puppet''' pilote deux paramètres float à partir d'entrées horizontale et verticale, généralement dans la plage <code>0.0</code> à <code>1.0</code>.
* Contrôle à deux axes (Two Axis Puppet)
* '''Four Axis Puppet''' pilote quatre paramètre float, un pour chaque direction, généralement dans la plage <code>0.0</code> à <code>1.0</code>.
* Contrôle à quatres axes (Four Axis Puppet)
* '''Radial Puppet''' Menu radial pilote un paramètre float de <code>0.0</code> à <code>1.0</code>.
* Menu radial (Radial Puppet)
</div>


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


<div lang="en" dir="ltr" class="mw-content-ltr">
Lorsqu'un contrôle de marionnette est ouvert, VRChat synchronise ses valeurs en temps réel avec le mode de synchronisation  plus rapide ''IK''. Une fois stoppée, la valeur figée reste en place jusqu'à ce qu'elle soit modifiée à nouveau.
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.
</div>


<span id="Expression_Parameter"></span>
<span id="Expression_Parameter"></span>
Line 75: Line 65:
« 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 [[Special:MyLanguage/physbones|physbones]]. Ces « parameters » peuvent ensuite être assignés aux « parameters » de l'« Animator Controller » dans les « controllers FX, Gesture ou Action » de votre avatar.
« 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 [[Special:MyLanguage/physbones|physbones]]. Ces « parameters » peuvent ensuite être assignés aux « parameters » de l'« Animator Controller » dans les « controllers FX, Gesture ou Action » de votre avatar.


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Settings"></span>
=== Settings ===
=== Paramètres ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Chaque entrée dans le fichier Expression Parameters stocke :  
Each entry in the Expression Parameters asset stores:
* '''Name''' Nom, qui doit impérativement correspondre au nom du paramètre dans l' ''Animator''.
* '''Name''', which must match the Animator parameter name exactly.
* '''Type''' Type, qui doit être un <code>Bool</code>, <code>Int</code>, ou <code>Float</code>.
* '''Type''', which can be <code>Bool</code>, <code>Int</code>, or <code>Float</code>.
* '''Default''' Défaut, qui est utilisé quand l'avatar se réinitialise en jeu, son état de base.
* '''Default''', which is used when the avatar is reset.
* '''Saved''' Sauvegardé, qui contrôle si la valeur persiste entre les sessions.
* '''Saved''', which controls whether the value persists between sessions.
* '''Synced''' Synchronisé, qui contrôle si la valeur est transmise ou non aux autre utilisateurs.
* '''Synced''', which controls whether the value is sent to other users.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Par défaut, la synchro des paramètres perso utilisent le mode de synchronisation ''Playable'' de VRChat. Les commandes de marionnettes utilisent temporairement la synchronisation ''IK'', plus rapide, pendant qu'elles sont actives.  
By default, custom parameter sync uses VRChat's ''Playable'' sync mode. Puppet controls temporarily use faster ''IK'' sync while they are actively open.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Built-in_parameters"></span>
=== Built-in parameters ===
=== Paramètres intégrés ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
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.
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">
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.
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">
Parmi les paramètres intégrés supplémentaires :
Additional built-in parameters include:
* <code>Viseme</code> (Int) — Défini par la synchronisation labiale de <code>0</code> (silence) à <code>14</code> (voyelle "u") lorsque la synchronisation labiale de l’Avatar Descriptor est réglée sur Viseme Blend Shape ou Viseme Parameter Only.
* <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) — Volume perçu du microphone de <code>0.0</code> à <code>1.0</code>, affecté par la distance et les réglages de protections auditives.
* <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) — 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.
* <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> lorsque l’utilisateur est couché, <code>1</code> lorsqu’il est debout.
* <code>Upright</code> (Float) — <code>0</code> when prone, <code>1</code> when standing.
* <code>Grounded</code> (Bool) — Indique si l’utilisateur touche le sol.
* <code>Grounded</code> (Bool) — Whether the user is touching the ground.
* <code>MuteSelf</code> (Bool) — Indique si le microphone de l’utilisateur est muet.
* <code>MuteSelf</code> (Bool) — Whether the user's microphone is muted.
* <code>Earmuffs</code> (Bool) — Indique si les protections auditives sont activées pour l’utilisateur.
* <code>Earmuffs</code> (Bool) — Whether the user has earmuffs enabled.
* <code>IsOnFriendsList</code> (Bool) — Indique si le spectateur est ami avec le porteur de l’avatar (affiche False localement).
* <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) — Paramètres liés à l’échelle pour le redimensionnement des avatars. <code>EyeHeightAsMeters</code> est recommandé pour les systèmes sensibles à l’échelle car il est linéaire et indépendant de la hauteur d’upload.
* <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">
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).
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">
<span id="Network_synchronization"></span>
=== Network synchronization ===
=== Synchronisation Réseau ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
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 :
Only synced expression parameters and certain built-in parameters are sent over the network. The full list of data sent for each avatar includes:
* '''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.
* '''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.
* '''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.
* '''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.
* '''Paramètres VRC intégrés''' — Inclut les gestes, la vitesse, la voix et d’autres paramètres d’exécution.
* '''Built-in VRC parameters''' — Including gestures, velocity, voice, and other runtime parameters.
* '''PhysBones''' — Les données de position des poses sont envoyées aux utilisateurs rejoignant tardivement.
* '''PhysBones''' — Pose position data is sent to late joiners.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
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 <code>IsLocal</code>: 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.
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">
<span id="Gestures_and_facial_expressions"></span>
=== Gestures and facial expressions ===
=== Gestures et expressions faciales ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Les paramètres pré-intégré <code>GestureLeft</code> et <code>GestureRight</code> indentifient la gestuelle de main de l'utilisateur, tandis que <code>GestureLeftWeight</code> et <code>GestureRightWeight</code> expose le niveaux de pression de la gachette analogique. Sur les avatars humanoïdes, la ''layer'' jouable ''Gesture'' est communnément utilisé pour la pose des main, alors que les expressions faciales sont souvent piloté par la ''layer'' FX avec des ''blendshapes'', propriétés de ''matérial'', ou autres animations non-humanoïdes.
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">
Sur les manettes où le suivi des doigts prime par défaut sur l'animation, les créateurs peuvent utiliser un état de contrôle de suivi (Tracking Control) pour inverser les doigts concernés de ''Tracking'' à ''Animation'' quand nécessaire.
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>
== « Expression Parameter » non compatible==
== « Expression Parameter » non compatible==


<div class="mw-translate-fuzzy">
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 ''Animator Controller'' 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. Cela peut être utile dans certaines configurations <u>avancées</u>.
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 <u>avancées</u>.
Le même comportement de conversion peut aussi être utilisé avec les paramètres pré-intégrés de l' ''Animator'' VRChat.
</div>


<div class="mw-translate-fuzzy">
Le système Animator de Unity utilise des <code>float</code> en interne pour tous les types de paramètres, tandis que VRChat stocke les paramètres personnalisés synchronisés dans des formats compact légé pour le réseau. L’interface utilisateur dans Unity et le SDK VRC permet aux créateurs de choisir des types de paramètres par convenance, mais sous le capot, des conversions de valeurs sont possibles. Cela signifie que les paramètres ne sont pas convertis (cast), mais plutôt non correspondants entre les systèmes. Ce comportement est également pris en charge par des outils populaires tels que Av3Emulator et Gesture Manager.
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.
</div>


<span id="Expression_Parameter_Bool"></span>
<span id="Expression_Parameter_Bool"></span>
Line 188: Line 151:
|-
|-
|Int → Bool
|Int → Bool
|<span class="mw-translate-fuzzy">Toute valeur Int qui n’est pas 0 définit le bool à True</span>
|Toute valeur Int qui n’est pas 0 définit le bool à True
|-
|-
|Int → Int
|Int → Int
Line 204: Line 167:
|-
|-
|Float → Bool
|Float → Bool
|<span class="mw-translate-fuzzy">Quelconque valeur « Float » différente de 0 règle le « Bool » sur « Vrai »</span>
|Toute valeur Int qui n’est pas 0 définit le bool à True
|-
|-
|Float → Int
|Float → Int
Line 215: Line 178:
==Ressources==
==Ressources==


<div class="mw-translate-fuzzy">
*Monde {{VRC link|https://vrchat.com/home/world/wrld_6168d07b-f55c-40bc-8077-749dde39983c|Avatar 3.0 Hub}} sur VRChat
*Monde {{VRC link|https://vrchat.com/home/world/wrld_6168d07b-f55c-40bc-8077-749dde39983c|Avatar 3.0 Hub}} sur VRChat
*[https://creators.vrchat.com/avatars/expression-menu-and-controls/ Menu d’Expression et Contrôles] sur les Creator Docs
*[https://creators.vrchat.com/avatars/expression-menu-and-controls/ Expression Menu and Controls] sur les Creator Docs
*[https://docs.vrchat.com/docs/action-menu#expression-menu Action Menu - Menu d’Expression] sur les Creator Docs
*[https://docs.vrchat.com/docs/action-menu#expression-menu Action Menu - Expression Menu] sur les Creator Docs
*[https://creators.vrchat.com/avatars/animator-parameters/#expression-parameter-aliasing Paramètres d’Animator] sur les Creator Docs
*[https://creators.vrchat.com/avatars/animator-parameters/ Animator Parameters] sur les Creator Docs
*[https://creators.vrchat.com/avatars/playable-layers Couches jouables] sur les Creator Docs
*[https://creators.vrchat.com/avatars/playable-layers Couches jouables] sur les Creator Docs
</div>
*[https://creators.vrchat.com/avatars/state-behaviors/ State Behaviors] sur les Creator Docs


<span id="See_also"></span>
<span id="See_also"></span>
Line 234: Line 196:
==Références==
==Références==


* [https://vrc.school/docs/Avatars/Expressions-Menu-Params VRC School: Expressions Menu and Parameters]
* [https://vrc.school/docs/Avatars/Expressions-Menu-Params VRC School: Menu d’expressions et paramètres]
* [https://vrc.school/docs/Avatars/Gestures VRC School: Hand Gestures/Facial Expressions]
* [https://vrc.school/docs/Avatars/Gestures VRC School: Gestes de la main / Expressions faciales]
* [https://vrc.school/docs/Avatars/VRC-Parameters VRC School: Built-In VRC Parameters]
* [https://vrc.school/docs/Avatars/VRC-Parameters VRC School: Paramètres VRC intégrés]
* [https://vrc.school/docs/Other/Network-Sync VRC School: Network Sync]
* [https://vrc.school/docs/Other/Network-Sync VRC School: Synchronisation réseau]
* [https://vrc.school/docs/Other/Parameter-Mismatching VRC School: Expression Parameter Mismatching]
* [https://vrc.school/docs/Other/Parameter-Mismatching VRC School: Incompatibilité des paramètres d’expression]


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

Latest revision as of 18:58, 16 April 2026

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 pilote deux paramètres float à partir d'entrées horizontale et verticale, généralement dans la plage 0.0 à 1.0.
  • Four Axis Puppet pilote quatre paramètre float, un pour chaque direction, généralement dans la plage 0.0 à 1.0.
  • Radial Puppet Menu radial pilote 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.

Lorsqu'un contrôle de marionnette est ouvert, VRChat synchronise ses valeurs en temps réel avec le mode de synchronisation plus rapide IK. Une fois stoppée, la valeur figée reste en place jusqu'à ce qu'elle soit modifiée à nouveau.

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

Paramètres

Chaque entrée dans le fichier Expression Parameters stocke :

  • Name Nom, qui doit impérativement correspondre au nom du paramètre dans l' Animator.
  • Type Type, qui doit être un Bool, Int, ou Float.
  • Default Défaut, qui est utilisé quand l'avatar se réinitialise en jeu, son état de base.
  • Saved Sauvegardé, qui contrôle si la valeur persiste entre les sessions.
  • Synced Synchronisé, qui contrôle si la valeur est transmise ou non aux autre utilisateurs.

Par défaut, la synchro des paramètres perso utilisent le mode de synchronisation Playable de VRChat. Les commandes de marionnettes utilisent temporairement la synchronisation IK, plus rapide, pendant qu'elles sont actives.

Paramètres intégrés

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 et expressions faciales

Les paramètres pré-intégré GestureLeft et GestureRight indentifient la gestuelle de main de l'utilisateur, tandis que GestureLeftWeight et GestureRightWeight expose le niveaux de pression de la gachette analogique. Sur les avatars humanoïdes, la layer jouable Gesture est communnément utilisé pour la pose des main, alors que les expressions faciales sont souvent piloté par la layer FX avec des blendshapes, propriétés de matérial, ou autres animations non-humanoïdes.

Sur les manettes où le suivi des doigts prime par défaut sur l'animation, les créateurs peuvent utiliser un état de contrôle de suivi (Tracking Control) pour inverser les doigts concernés de Tracking à Animation quand nécessaire.

« 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 Animator Controller 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. Cela peut être utile dans certaines configurations avancées. Le même comportement de conversion peut aussi être utilisé avec les paramètres pré-intégrés de l' Animator VRChat.

Le système Animator de Unity utilise des float en interne pour tous les types de paramètres, tandis que VRChat stocke les paramètres personnalisés synchronisés dans des formats compact légé pour le réseau. L’interface utilisateur dans Unity et le SDK VRC permet aux créateurs de choisir des types de paramètres par convenance, mais sous le capot, des conversions de valeurs sont possibles. Cela signifie que les paramètres ne sont pas convertis (cast), mais plutôt non correspondants entre les systèmes. 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