Aller au contenu

Le système de graphe de comportement

Image title 2

L'éditeur de comportement.

Le Système de graphe comportemental offre la possibilité de créer ses propres comportements avec un contrôle complet. Il est en effet possible de programmer simplement des comportements complexes en combinant différents blocs (appelés nodes pour les différencier des nœuds de VRmaze) entre eux.

graphe de comportement

Le système de graphe de comportement permet à un utilisateur non programmeur de développer ses propres comportements.

Principe de fonctionnement

Dans un graphe comportemental, chaque node à sa propre fonctionnalité et ne produit qu'une seule action. En fonction des paramètres qui lui sont fournis le node produira une action et sortira possiblement des valeurs sous forme de paramètres de sorties.

La combinaison des nodes entre eux permet d'utiliser les paramètres de sortie d'un node en paramètre d'entrée d'un autre node. Il devient donc possible de créer des comportements changeant en fonction de l'état des valeurs d'entrées.

Un graphe de comportement est déterministe, et l'ordre d'enchainement des nodes est très important. En effet, pour qu'un node donné fonctionne correctement, il convient d'avoir mis à jour l'ensemble de ses paramètres avant d’exécuter son action. De plus, il est possible de relier un paramètre de sortie à plusieurs paramètres d'entrée (sauf le paramètre contrôlant le flux d’exécution), par contre il n'est pas possible de relier plusieurs paramètre de sortie à un paramètre d'entrée.

Présentation de l'interface grapheique

Lancement de l'interface grapheique

L'interface grapheique d'édition peut être lancé depuis le menu général de VRmaze (Windows/Behavior graphe), par la barre d'outils principale, ou via le panneau d'attributs et comportement des entités compatibles.

L'interface grapheique propose l'ensemble des commandes permettant de gérer ses graphes, les créer et les modifier. Pour cela, une barre d'outil permet la gestion rapide des fichiers et la création de nouveaux types de graphes (graphe générique ou graphe de filtre de données).

Le bandeau de gauche offre un affichage de l'ensemble des nodes disponibles. L'ensemble des nodes sont catégorisés et dispose d'une courte aide indiquant leur action. Un simple glisser-déposer d'un nœud permet de l'ajouter au graphe en cours de modification.

Un champ de texte dans la partie inférieure indique comment manipuler la fenêtre :

Action Conséquence
Roulette de la souris Zoomer/Dézoomer
Glisser-déposer avec le bouton du mileu de la souris Déplacement latéral
Glisser-déposer avec le bouton droit de la souris Déplacement latéral
Glisser-déposer avec le bouton gauche de la souris Sélection multiple
Bouton gauche de la souris sur un node Sélection du node
Bouton gauche de la souris dans une zone vide Dé-sélection du node sélectionné
Bouton du milieu de la souris sur un node Suppression du node et de ces connexions
Alt+bouton gauche de la souris sur un connecteur Suppression de l'ensemble des connexions du connecteur
Glisser-déposer avec le bouton gauche depuis un connecteur vers un autre connecteur Création (si compatibilité) d'une connexion

La zone d'édition, qui occupe une grande partie de l'espace permet de concevoir ses graphes et donne accès aux paramètres du node sélectionné. Il est ainsi possible d'ajouter de nouveaux nodes (en faisant apparaitre le menu contextuel) mais aussi de créer des variables de graphe.

Le noeud

Image title 2

Un exemple de Node (non connecté)

Un node est une brique élémentaire dans un ensemble plus complexe qu'est le graphe. Un node dispose de sa propre logique. Il dispose possiblement de paramètres d'entrée (représentés sous forme de connecteurs et aussi de propriétés non connectables) et de paramètres de sorties (représentés sous forme de connecteurs).

Dans le cas ou le node est configurable, la configuration s'effectue dans la fenètre popup de paramètrage du node.

Image title 2

Node "To Tracker" avec une configuration "BaseTracker"

Image title 2

Node "To Tracker" avec une configuration "Mouse Tracker"

Exécution d'un node

Lors de l'exécution d'un node, celui ci prendra les valeurs d'entrée et exécutera sa logique. Lorsque cette logique est terminée, le node mettra a jour les paramètres de sorties en terminant toujours par le flux d'exécution, ainsi, nous sommes assurés que les prochains nodes exécutés disposeront des dernières valeur de paramètres en entrée.

Le connecteur

Image title 2

Les connecteurs d'un Node

Chaque node dispose de ses propres connecteurs en entrée et en sortie. Ces connecteurs sont fortement typés (ils ont des couleurs différentes, ce qui permet de savoir leur type). Un connecteur ne peut être relié qu'à un autre connecteur compatible.

Connecteur Any

Il existe un type de connecteur, le connecteur "Any" qui est compatible avec n'importe quel autre type de connecteur. Cependant, ce connecteur est rare et n'est disponible que dans quelques nodes seulement.

Convertisseur de connecteur ?

Il n'est pas possible de changer le type de connecteur d'un node. Par contre, il est possible de convertir un type de paramètre dans un autre type, c'est notamment le cas de la conversion IObject - ITrackable et la conversion de n'importe quel connecteur en connecteur de chaine de caractères. Les nodes de conversion sont disponibles dans la catégorie "Converters".

Modification des connecteurs

Certains nodes disposent de paramètres internes (qui ne sont pas des connecteurs) spécifiques qui ont une influence directe sur les connecteurs d'entrées ou de sorties. Par exemple, il existe deux nodes de création de trackers de données qui permettent de choisir le type de tracker à créer. Lorsque le type est choisi, les paramètres d'entrées et de sorties sont mis à jour.

Connecteur Non connecté

Lors de l'ajout d'un node, les connecteurs ne sont pas connectés aux autres nodes par défaut. Il convient de créer ses propres connexions en fonction des actions voulues. Il est tout à fait possible qu'un node voit certains de ses connecteurs d'entrée rester non connecté. Dans ce cas, il est possible de configurer (sur certains types de connecteurs uniquement) la valeur par défaut à utiliser.

Représentation d'un connecteur

Un connecteur connecté voit son cartouche de couleur rempli tandis que s'il n'est pas connecté, son cartouche couleur est vide.

La connexion

Image title 2

La connexion "process"

Il existe deux types de connexions possibles dans l'éditeur de graphe. Toutes deux essentielles, ces connexions ont des comportements différents. La première, la connexion d'exécution permet de manipuler l'ordre d'activation des nodes. Un node donné ne sera exécuté qu'après que le node auquel son entrée est connectée soit exécuté. Cela permet d'obtenir un flux déterministe, et n'autorise pas l’exécution multiple.

Image title 2

La connexion de paramètre

Le second type de connexion permet la connexion de l'ensemble des autres paramètres (autre que le flux d'exécution) pour tous les autres types de connecteurs.

Suppression d'une connexion

La suppression d'une connexion est possible en faisant un clic gauche de la souris et en maintenant Alt appuyé sur le connecteur.

Nodes spécifiques

Il existe deux nodes un peu différents des autres de par leur configuration

Les nodes de départ

Image title 2

Un node de départ dans un graphe générique

Jusqu'alors nous avons décrit les nodes comme ayant forcement un flux d'exécution en entrée et en sortie. Les nodes de départ diffèrent dans le sens où ils ne disposent pas de flux d'exécution en entrée. Ceux-ci sont reconnus par VRmaze comme étant des noeuds de départ d'exécution et sont activés automatiquement.

Un seul node de départ

Pour un graphe donné, il ne peux y avoir qu'un seul node de départ. Sans node de départ, le graph ne produira rien.

Il est possible de capter l'évènement de clic sur un bouton 2D , ainsi que le survole de la souris sur ces derniers. Il est ainsi possible de créer des comportements lors de clic de souris, qui ne seront donc pas mis à jour à chaque frame, mais uniquement sur évènement.

Image title 2

Un node de départ permettant la gestion des clics sur les boutons 2D

Ajout d'un node de gestion de clic

Le graphe vérifiera l'existence d'un node de départ lors de l'ajout d'un node de gestion de clic. Il n'est pas possible d'avoir deux node de départ dans un graphe, il faut donc supprimer le node de départ initial pour pouvoir en ajouter un différent.

Le node de commentaire

Le node de commentaire est spécial car il ne dispose d'aucun paramètre. Il est juste possible de lui ajouter du texte. Ce node de commentaire est aussi un node de groupement, ainsi, lorsqu'un node conventionnel se trouve à l'intérieur du node commentaire il est déplacé en même temps que le node de commentaire si ce dernier est déplacé.

Image title 2

Un node de commentaire incluant le node de départ et un court texte.