VRPN
Source Wikipédia : VRPN (Virtual-Reality Peripheral Network) est une bibliothèque libre fournissant une interface transparente entre une application de réalité virtuelle tournant sur une machine, et des dispositifs physiques (trackers, wand, haptic device) connectés à d'autres machines d'un réseau.
Utilisation dans VRmaze
Dans VRmaze, le VRPN est un composant de type script de comportement. Un composant VRPN est conçu pour recevoir les données provenant d'un serveur VRPN sur le réseau. Nous considérons deux types de données provenant d'un serveur VRPN :
- Les données de tracking
- Les données d'interaction
Dans VRmaze Sim, les données VRPN sont exploitées directement via des scripts qui s'occupent de la réception des données et leurs conséquences sur l'environnement 3D.
Tracking
Dans VRPN il est possible d'obtenir la valeur d'un tracker, c'est-à-dire la position et l'orientation d'un objet physique exprimées dans le référentiel de tracking. Dans VRMaze, il est possible d'acquérir les données de tracking et de les affecter en tant que position et orientation à un objet virtuel, de manière à ce que l'objet virtuel (possiblement une caméra de rendu) voit sa position et son orientation affectée par le tracker. Pour ce faire, nous utilisons le script de comportement VRPN Tracker
.
Ce script permet de sélectionner les propriétés affectées par le tracker et nécessite évidement de renseigner le nom et l'adresse du tracker. Il nécessite aussi le renseignement du type de coordonnées et du canal du tracker.
Type de coordonnées
Le type de coordonnées peut prendre deux formes : le référentiel courant, identique à celui utilisé par Unity, avec l'axe Y vers le haut. Le type de coordonnées Vicon utilise un système d'axes dans lequel l'axe Z est vers le haut. Sélectionnez le type de coordonnées en fonction de votre système de tracking.
Canal du tracker
Il est possible que le serveur VRPN envoie plusieurs informations de tracking à une même adresse. Pour choisir le bon jeu de données VRmaze offre la possibilité de choisir le canal de tracking.
Nom et adresse du tracker
Le nom et l'adresse du tracker dans VRmaze correspondent au nom et adresse que l'on trouve dans la documentation de VRPN sous la forme nomTracker@adresseTracker
Référentiel de coordonnées
VRmaze affectera les données de tracking dans le référentiel local de l'objet virtuel.
Périphérique
VRPN gère non seulement les données de tracking, mais aussi les périphériques (disposant de boutons et autres joysticks). VRmaze Sim permet l'intégration et l'utilisation de tels périphériques sous forme d'un script de comportement récupérant l'ensemble des données d'interaction. Ces données sont utilisées nativement par VRmaze Sim pour, par exemple, gérer les interactions avec les panneaux d'outils ou le déplacement du sujet dans l'espace virtuel.
Tracking d'un joystick
Le script de comportement n'effectue pas le tracking de position, il faut donc, dans le cas d'un joystick traqué dans l'espace, ajouter un script de tracking.
Contrôle de la position dans l'espace virtuel
La volonté de déplacer un sujet dans l'espace virtuel réside en fait au déplacement du noeud Cave Root Node
dans l'espace virtuel. VRmaze Sim propose un script de comportement qui permet de déplacer le nœud Cave Root Node
dans l'espace en correspondance avec les informations recueillies par le script VRPN Joystick Data
.
Ce script permet de configurer la vitesse de déplacement et d'orientation et dispose d'un système de déplacement rapide lorsque le sujet utilise le bouton intégré au joystick du périphérique. Il est aussi possible d'effectuer un déplacement sous forme d'impulsion dont les propriétés de forces sont modifiables.
Interaction avec les éléments 2D et 3D
Par défaut, l'interaction dans l'espace 3D est assurée par le gestionnaire d'évènement VRPN Joystick Event Manager
présent par défaut sur le système de caméra. Ce système n'assure pas l'interaction avec les éléments 2D.
Suivant un mode déclaratif, le fait d'ajouter un comportement Cave UI input event controller
permettra d'utiliser le système de pointage et d'interaction au joystick VRPN sur les éléments 2D. Le script déclaratif utilise les données de tracking et les informations d'états des boutons du joystick pour fonctionner, il nécessite donc un script VRPN Tracker
et un script VRPN Joystick Data
au même niveau dans la structure hiérarchique du protocole.
Bouton d'interaction
Le script déclaratif Cave UI input event controller
permet de configurer le bouton VRPN qui servira de bouton d'action pour la gestion des interfaces graphiques.
Graphes de comportement
Les graphes de comportement proposent quelques nodes permettant un accès aux données provenant d'un serveur VRPN sur le réseau ou sur la machine locale.
Les nodes d'acquisition VRPN diposent de paramètres communs :
- Adresse du serveur (nom de machine ou adresse IPv4)
- Nom de l'objet tracké (chaîne de caractères)
- Canal de communication (nombre entier)
Nodes VRPN
Les nodes VRPN inclus dans les graphes de comportements sont totalement indépendants des scripts relatifs à VRPN. Il n'est pas nécessaire de faire référence à un script VRPN tracker pour utiliser le node VRPN Tracker, qui dispose d'un accès direct au système de communication VRPN.
Plusieurs serveurs VRPN ?
Il est tout à fait possible d'utiliser plusieurs serveurs VRPN au sein d'un même graphe. Chaque node VRPN est indépendant des autres et aura son propre comportement de connexion.
VRPN Analog
En plus des paramètres communs aux nodes VRPN, le node VRPN Analog nécessite la saisie d'un second canal de communication. En effet, ce node propose un vecteur 2 en sortie permettant de gérer les joysticks ayant à deux axes. Il est tout à fait possible, en sortie, d'utiliser une seule valeur de canal.
Système de coordonnées
Le node VRPN Tracker dispose d'un paramètre supplémentaire permettant de choisir le système de coordonnées.
Facteur d’échelle
Il est possible de convertir un système d'unité d'un serveur VRPN en système métrique utilisé dans VRMaze. Pour cela, le node VRPN Tracker dispose d'une propriété de facteur d’échelle, par défaut à 1, qui permet de prendre la coordonnée de position et la multiplier par un coefficient.