Aller au contenu

Expressions

L'expression dans VRmaze est une fonctionnalité permettant d'utiliser une fonction mathématique pouvant être complexe dans le but d'utiliser la valeur calculée.

L'idée de l'expression dans VRmaze est de fournir une solution intermédiaire entre l'utilisation relativement limitée des fonctions mathématiques proposées par défaut et la programmation informatique pure. L'expression propose le meilleur des deux mondes avec la puissance d'un code informatique sans programmation et à l'aide d'une interface graphique.

Le système d'expression repose sur la librairie NCalc et l'ensemble des fonctions de NCalc sont disponibles dans VRmaze.

Utilisation des expressions

Les expressions prennent différentes formes dans VRmaze. Les expressions de contrôle de propriétés sont des noeuds permettant la variation d'une propriété en fonction d'une formule mathématique. Le contrôle de propriété propose deux noeuds utilisant les expressions : Un générateur de signal basé sur le temps et un système de contrôle de propriété basé sur les autres propriétés d'entités.

L'exporteur Excel utilise aussi les expressions. Il est en effet possible d'effectuer un calcul spécifique lors de l'ajout d'un point d'entrée Excel, cela aura pour conséquence de calculer une valeur spécifique avant l'écriture du tableau Excel.

Création d'une expression

Les expressions dans VRmaze s'écrivent à même l'arbre de protocole, dans la cellule d'expression. A la modification de l'expression, la validation de celle-ci est effectué, évitant ainsi toute erreur.

Les paramètres des fonctions s'écrivent entre [] et les fonctions mathématiques s'écrivent de manière directe. Voici quelques exemples simples :

Besoin Expression
Calcul du sinus en fonction du temps Sin([T])
Valeur absolue du sinus en fonction du temps Abs(Sin([T]))
Signal carré en fonction du temps if(Sin([T])>0,1,0)
Signal carré (sur 5 secondes) avec un modulo sur le temps if([T]%5>2.5,1,0)
Signal carré (sur 5 secondes) avec un modulo sur le temps et d'amplitude 3 3*if([T]%5>2.5,1,0)

Il est possible, dans certains cas d'expression d'utiliser d'autres variables.

Composition

L'expression n'a pas de limite, elle peut être aussi complexe que souhaitée.

Fonction mathématiques

les fonctions mathématiques disponibles sont celles de NCalc. La liste est disponible ici

Termes génériques

Un certain nombre de mots clés sont intégrés à VRmaze, ce qui permet d'y faire référence dans les formules d'expressions.

Mot clé Définition Note
[T]5 Variable de temps Temps courant depuis le début du protocole
[Te]1 Variable de temps Temps courant depuis le début de l'experimentation courante
[Tt]1 Variable de temps Temps courant depuis le début de l'essai en cours
[dT] Variable de temps Temps passé entre la frame courante et la précédente
[Sp.x]2 Position du sujet Position courante du sujet sur l'axe x
[Sp.y]2 Position du sujet Position courante du sujet sur l'axe y
[Sp.z]2 Position du sujet Position courante du sujet sur l'axe z
[Sp.x]2 Rotation du sujet Rotation courante du sujet sur l'axe x
[Sp.y]2 Rotation du sujet Rotation courante du sujet sur l'axe y
[Sp.z]2 Rotation du sujet Rotation courante du sujet sur l'axe z
[V] Valeur Valeur de la précédente frame (ou valeur courante du point d'entrée Excel)
[Pi] Constante valeur de du nombre Pi.
[Deg2Rad] Constante Constante permettant la conversion de degrès en radians (0.01745)
[Rad2Deg] Constante Constante permettant la conversion de radians en degrès (57.295)
[Input.]23 Variable d'interaction Variable d'input clavier ou manette (par ex. [Input.P] pour la touche P du clavier (1 si appuyé, 0 sinon)
[Axis.]24 Variable d'interaction Variable analogique souris ou manette (Par exemple [Axis.Horizontal] pour obtenir la valeur de l'axe d'interaction Horizontal.
[Mouse.]2 Variable d'interaction Variable d'état des boutons de la souris (Par exemple [Mouse.0] pour le bouton gauche, [Mouse.1] pour le bouton du milieu et [Mouse.2] pour le bouton droit

  1. Non disponible pour le Contrôleur d'expression flotant (animation de propriété basée sur le temps) puisqu'il prend en charge le référentiel temporel en fonction de sa position dans l'arbre de protocole. 

  2. Non disponible pour le Contrôleur d'expression flotant (animation de propriété basée sur le temps). 

  3. Peut prendre n'importe quel KeyCode de Unity sous la forme [Input.KeyCode] 

  4. Peut obtenir les valeurs de ces axes : LeftRight, UpDown, ForwardBackward, MouseScrollWheel, Mouse X, Mouse Y, Horizontal, Vertical, HorizontalRotation et VerticalRotation 

  5. Dans le cas d'une animation déclenchée par un trigger, T vaut -1 tout pendant que le trigger n'est pas déclenché.