Aller au contenu

Paramètres de l'animateur

Ceci est une liste de Paramètres (sensibles à la casse) qui peuvent être ajoutés à n’importe quelle Couche Jouable (contrôleur d’animation) et modifiés sur toutes les Couches Jouables incluant ce paramètre. Les paramètres créés par l’utilisateur qui ne figurent pas dans cette liste existeront uniquement localement au sein de ce contrôleur d’animation et ne sont actuellement pas modifiables par l’avatar.

Vous devrez les ajouter à vos animateurs de Couches Jouables pour les utiliser. Ils sont sensibles à la casse !

Paramètres

NomDescriptionTypeSynchronisation
IsLocalVrai si l’avatar est porté localement, faux sinonBoolAucune
VisemeIndex de visème Oculus (0-14). Lors de l’utilisation de Jawbone/Jawflap, la plage est de 0-100 indiquant le volumeIntParole
VoiceVolume du microphone (0.0-1.0)FloatParole
GestureLeftGeste du contrôle de la main gauche (0-7)IntIK
GestureRightGeste du contrôle de la main droite (0-7)IntIK
GestureLeftWeightGâchette analogique gauche (0.0-1.0)†FloatJouable
GestureRightWeightGâchette analogique droite (0.0-1.0)†FloatJouable
AngularYVitesse angulaire sur l’axe YFloatIK
VelocityXVitesse de déplacement latérale en m/sFloatIK
VelocityYVitesse de déplacement verticale en m/sFloatIK
VelocityZVitesse de déplacement vers l’avant en m/sFloatIK
VelocityMagnitudeAmplitude totale de la vitesseFloatIK
UprightÀ quel point vous êtes “droit”. 0 est couché, 1 est debout droitFloatIK
GroundedVrai si le joueur touche le solBoolIK
SeatedVrai si le joueur est dans une stationBoolIK
AFKLe joueur est-il indisponible (capteur de proximité du HMD / touche Fin)BoolIK
Expression1 - Expression16Paramètre défini par l’utilisateur, Int (0-255) ou Float (-1.0-1.0)Int / FloatIK ou Jouable
TrackingTypeVoir la description ci-dessousIntJouable
VRModeRetourne 1 si l’utilisateur est en VR, 0 s’il ne l’est pasIntIK
MuteSelfRetourne vrai si l’utilisateur s’est mis en sourdine, faux s’il n’est pas en sourdineBoolJouable
InStationRetourne vrai si l’utilisateur est dans une station, faux sinonBoolIK
EarmuffsRetourne vrai si la fonction Earmuff de l’utilisateur est activée, faux sinonBoolJouable
IsOnFriendsListRetourne vrai si l’utilisateur qui visualise l’avatar est ami avec l’utilisateur le portant. Faux localement.BoolAutre
AvatarVersionRetourne 3 si l’avatar a été créé en utilisant le SDK3 de VRChat (2020.3.2) ou plus récent, 0 sinon.EntierIK

”Supine” et “GroundProximity” sont visibles dans l’affichage de débogage, mais ne sont pas encore implémentés. Ils ne font actuellement rien et ne changent jamais de valeurs.

† GestureLeftWeight et GestureRightWeight vont de 0.0 à 1.0 dans divers gestes en fonction de la traction de la gâchette. Par exemple, si vous faites un poing mais ne tirez pas sur la gâchette de la main gauche, GestureLeft sera 1, mais GestureLeftWeight sera 0.0. Lorsque vous commencez à tirer sur la gâchette, elle montera de 0.0 vers 1.0. Cela peut être utilisé pour créer des gestes “analogiques” ou détecter conditionnellement diverses choses.

Paramètres de mise à l’échelle de l’avatar

NomDescriptionTypeSynchronisation
ScaleModifiedRetourne vrai si l’utilisateur est mis à l’échelle à l’aide de la mise à l’échelle de l’avatar, faux si l’avatar est à sa taille par défaut.BoolJouable
ScaleFactorRelation entre la hauteur par défaut de l’avatar et la hauteur actuelle. Un avatar avec une hauteur des yeux par défaut de 1m mis à l’échelle à 2m rapportera 2.FloatJouable
ScaleFactorInverseRelation inverse (1/x) entre la hauteur par défaut de l’avatar et la hauteur actuelle. Un avatar avec une hauteur des yeux par défaut de 1m mis à l’échelle à 2m rapportera 0.5. Peut être inexact aux extrêmes.FloatJouable
EyeHeightAsMetersHauteur des yeux de l’avatar en mètres.FloatJouable
EyeHeightAsPercentRelation de la hauteur des yeux de l’avatar en mètres par rapport aux limites de mise à l’échelle par défaut (0.2-5.0). Un avatar mis à l’échelle à 2m rapportera (2.0 - 0.2) / (5.0 - 0.2) = 0.375.FloatJouable

Tous ces paramètres sont en lecture seule.

Types de paramètres

Vous avez accès à trois types de variable lors de la définition de vos paramètres dans votre objet Paramètres.

Vous pouvez utiliser jusqu’à un total de 256 bits de “mémoire”. Ceci n’est pas strictement de la mémoire dans le sens de l’utilisation de la mémoire de l’avatar, mais a à voir avec la bande passante que vous utilisez lors de la synchronisation des paramètres.

Type de paramètrePlageUtilisation de la mémoireNotes
int0-2558 bitsEntier non signé de 8 bits.
float-1.0 à 1.08 bitsDécimal fixe signé de 8 bits†.
boolVrai ou Faux1 bit

† Les valeurs float synchronisées à distance ont 255 valeurs possibles, donnant une précision de 1/127 sur le réseau, et peuvent stocker -1.0, 0.0, et 1.0 précisément. Lorsqu’elles sont mises à jour localement, telles qu’avec OSC, les valeurs flottantes sont stockées comme des valeurs à virgule flottante natives (32 bits) dans les animateurs.

Valeurs de GestureLeft et GestureRight

GestureLeft et GestureRight utilisent ces valeurs :

IndexGeste
0Neutre
1Poing
2Main Ouverte
3Doigt Pointé
4Victoire
5RockNRoll
6Pistolet
7Pouce Levé

Valeurs de Visème

Nous utilisons l’index de visème Oculus, de haut en bas, où sil est 0. Pour référence :

Paramètre VisèmeVisème
0sil
1pp
2ff
3th
4dd
5kk
6ch
7ss
8nn
9rr
10aa
11e
12i
13o
14u

Types de synchronisation

  • Parole - Utilisé uniquement pour les visèmes, est piloté par les paramètres de sortie de la synchronisation labiale Oculus en fonction de votre parole. Mis à jour localement, pas directement synchronisé (car il est piloté par l’audio)
  • Jouable - Un mode de synchronisation plus lent destiné à synchroniser des états d’animation de longue durée. Mises à jour toutes les 0,1 à 1 secondes selon les besoins en fonction des changements de paramètres (1 à 10 mises à jour par seconde), mais vous ne devriez pas compter dessus pour une synchronisation rapide.
  • IK - Un mode de synchronisation plus rapide destiné à synchroniser des valeurs qui changent fréquemment. Mises à jour continues toutes les 0,1 secondes (10 mises à jour par seconde), et interpole les valeurs float localement pour les utilisateurs distants. Selon le paramètre, cela peut également être simplement calculé en fonction de l’état IK rendu localement de l’avatar.

Lorsqu’un paramètre d’expression est utilisé dans un menu de marionnette, il passe automatiquement de Jouable à IK afin que vous obteniez le taux de mise à jour continu et l’interpolation douce. Lorsque le menu est fermé, il revient à la synchronisation Jouable.

Pilotage des paramètres d’expression

De plus, les paramètres d’expression peuvent être “pilotés” vers une valeur via des comportements d’état. Ils peuvent être définis à l’aide du comportement d’état Avatar Parameter Driver sur un état dans un animateur.

État AFK

L’état AFK est déclenché par :

  • L’utilisateur retire le casque et le capteur de proximité du HMD indique que le casque n’est pas porté
  • Un menu système est ouvert. Cela dépend de la manière dont la plateforme que vous utilisez fournit des données lorsque les menus système sont ouverts - par exemple, le Oculus Dash ne s’enregistre pas comme AFK, mais le menu SteamVR s’enregistre comme AFK. C’est un peu un effet secondaire, et non un comportement conçu.
  • L’utilisateur a appuyé sur la touche Fin, basculant l’état AFK.

Paramètre TrackingType

TrackingType indique plusieurs informations.

Si la valeur est 3, 4 ou 6 tandis que VRMode est 1, cela indique combien de points de suivi l’utilisateur de l’avatar a activés et suit actuellement. Cette valeur peut changer ! Si un utilisateur en suivi à 6 points retire ses trois points supplémentaires, la valeur passera de 6 à 3. Prenez cela en compte lorsque vous concevez votre animateur.

Si la valeur est 0, 1 ou 2 tandis que VRMode est 1, cela indique que l’avatar est encore en cours d’initialisation. Vous ne devriez pas concevoir des animateurs pour créer des branches basées sur cette combinaison de valeurs, et devriez plutôt attendre une valeur “valide” de 3, 4 ou 6.

ParamètreDescription
0Non initialisé. Se produit généralement seulement lorsque l’utilisateur change d’avatar et que son IK n’est pas encore envoyé.
1Configuration générique. L’utilisateur peut avoir un suivi de n’importe quel type, mais l’avatar est configuré en tant que générique, donc le suivi est ignoré. Peut être un utilisateur de bureau si VRMode est 0.
2Se produit uniquement avec AV2, et par conséquent n’est pas un état dans lequel vous devriez vous attendre à rester longtemps pour les contrôleurs AV3 sur les avatars. Peut encore se produire avec les stations SDK3.
Suivi des mains seulement, sans les doigts. Cela ne se produit que dans des états qui sont des transitions - c’est-à-dire, vous devriez vous attendre à ce que TrackingType change à nouveau, et l’avatar ne devrait pas rester dans cet état.
3Suivi de la tête et des mains. Si VRMode est 1, cet utilisateur est en VR à 3 points. Si VRMode est 0, c’est un utilisateur de bureau dans un avatar humanoïde.
4Utilisateur VR à 4 points. Tête, mains et hanche.
5Utilisateur VR à 5 points. Tête, mains et pieds suivis. Essentiellement un suivi complet du corps mais sans la hanche.
6Utilisateur VR avec suivi complet du corps. Tête, mains, hanche et pieds suivis.

Alias des paramètres d’Expression

Vous devez créer des noms (ou “alias”) pour les paramètres d’Expression. Vous ne pouvez pas (et ne devriez pas !) utiliser le nom d’Expression par défaut pour les paramètres.

Une fois que vous avez créé des noms pour tout paramètre d’Expression que vous souhaitez utiliser, vous pouvez utiliser ce nom directement dans votre Contrôleur. Cela signifie que vous pouvez concevoir votre propre standard de nommage pour vos paramètres. Cela signifie aussi que les définitions de menus et les contrôleurs peuvent être combinés et assortis tant qu’ils utilisent les mêmes noms. Vous pouvez obtenir des contrôleurs préfabriqués d’autres personnes et créer vos propres styles de menus en fonction de vos préférences, sans vous soucier des conflits de paramètres d’Expression.

Lorsque vous nommez vos propres paramètres, l’utilisation de barres obliques (/) fera en sorte que les paramètres s’organisent automatiquement dans divers menus déroulants. Par exemple, nommer un paramètre Toggles/Hat fera apparaître la sélection de menu comme Toggles -> Hat lors de la sélection de paramètres pour des choses comme les transitions d’animateur et les menus d’Expression, tout en conservant le même nom pour le paramètre sous-jacent. Cela ne change pas la façon dont les paramètres se comportent, cela rend simplement plus facile de travailler avec de longues listes de paramètres.

Aliasing par défaut AV3

Il y a quelques “défauts” utilisés par les contrôleurs AV3 VRChat que vous pouvez utiliser si vous ne voulez pas construire vos propres contrôleurs. Ils ne rentreront pas en conflit avec votre propre utilisation (tant que vous ne les nommez pas de la même manière) grâce à l’aliasing.

En particulier, les couches d’Action et FX par défaut utilisent l’aliasing. Vous n’avez pas besoin de vous soucier d’utiliser une Expression qui est dans ces couches.

Les actions utilisent des paramètres aliasés nommés VRCEmote, qui est un Int avec une plage de 1 à 16.

FX utilise des paramètres Float aliasés appelés VRCFaceBlendH (-1,1) et VRCFaceBlendV (-1,1), si vous souhaitez essayer vos propres menus pour les utiliser. La couche FX par défaut nécessite que vous ayez un mesh skinné nommé Body avec des blendshapes mood_happy, mood_sad, mood_surprised et mood_angry.

Pour reformuler, si vous avez un avatar que vous téléchargez en tant qu’avatar Avatar3 sans couches jouables personnalisées, vous pourrez utiliser certains émoticônes intégrés avec eux tant que vous avez les blendshapes nommés ci-dessus.

Si vous avez également un blendshape eyes_closed, il les fermera lorsque vous utiliserez l’émoticône Die par défaut ou passerez en mode AFK.

Synchronisation des paramètres multiplateforme

Lors de l’utilisation d’un avatar qui a des versions Quest et PC téléchargées, les paramètres sont synchronisés par leur position dans la liste des paramètres et leur type de paramètre, et non par les noms des paramètres. Pour qu’un paramètre donné soit synchronisé entre PC et Quest, il doit être à la même position dans la liste des paramètres et avoir le même type de paramètre.

Étant donné cela, il peut être judicieux d’utiliser le même asset de paramètres d’Expression pour les versions PC et Quest d’un avatar, même si une version n’utilise pas tous les paramètres.