Travailler avec VRPN
Une section documentaire de présentation de VRPN est disponible ici.
Référentiel Standard / Vicon
Un serveur VRPN peut proposer un envoi de données selon un système d'axes différent de celui utilisé dans VRmaze. VRmaze propose une possibilité de modifier à la volée les coordonnées reçues lorsque le système de coordonnées d'envoi ne correspond pas à celui d'Unity/VRmaze. Le référentiel peut être Standard (sans conversion) ou Vicon (inversion d'axe) Voici le code intégré et disponible dans les scripts VRPN tracking script
:
public static class VRPN
{
...
// Code d'acquisition des données VRPN
public static Vector3 vrpnTrackerPos(string address, int channel)
{
return new Vector3(
(float)vrpnTrackerExtern(address, channel, 0, Time.frameCount),
(float)vrpnTrackerExtern(address, channel, 1, Time.frameCount),
(float)vrpnTrackerExtern(address, channel, 2, Time.frameCount));
}
public static Quaternion vrpnTrackerQuat(string address, int channel)
{
return new Quaternion(
(float)vrpnTrackerExtern(address, channel, 3, Time.frameCount),
(float)vrpnTrackerExtern(address, channel, 4, Time.frameCount),
(float)vrpnTrackerExtern(address, channel, 5, Time.frameCount),
(float)vrpnTrackerExtern(address, channel, 6, Time.frameCount));
}
}
public static class ViconVRPN
{
//Code d'acquisition des données VRPN dans un référentiel Vicon
public static Vector3 vrpnTrackerPos(string address, int channel)
{
var vector = VRPN.vrpnTrackerPos(address, channel);
return new Vector3(vector.x, vector.z, vector.y);
}
public static Quaternion vrpnTrackerQuat(string address, int channel)
{
var quaternion = VRPN.vrpnTrackerQuat(address, channel);
return new Quaternion(quaternion.x, quaternion.z, quaternion.y, -quaternion.w);
}
}
Inversion d'axe
Le choix du référentiel peut permettre de résoudre un problème d'inversion d'axe, cependant, lors de la mise en place du serveur VRPN, il convient de bien définir l'origine du référentiel qui servira d'expression du système de coordonnées. En effet, une mauvaise rotation des axes du référentiel ne pourra être corrigée en changeant de référentiel Standard/Vicon.
S'assurer de la communication
VRmaze propose un système d'affichage permettant de vérifier et de valider la bonne connexion entre le serveur VRPN et le logiciel. Ce système indique uniquement si la communication est établie, mais ne donnera aucun élément de réponse en cas de connexion impossible.
Affichage des infos
Pour afficher les informations relatives aux trackers VRPN, il faut activer le mode Debug de VRmaze.
Communication Impossible
Dans le cas où le serveur VRPN ne peut pas être atteint, les positions X,Y,Z auront la valeur -505
Valeurs égales à -505 !
Dans le cas d'une valeur de position égale à -505, la communication est manquante entre le serveur VRPN et VRMaze. Dans ce cas, il faut procéder dans l'ordre et s'assurer en premier lieu que le serveur VRPN est lancé. Le serveur VRPN est souvent fourni avec un exécutable nommé VRPN_print_device
qui permet d'obtenir les informations de tracking d'un objet spécifique. La commande à lancer est la suivante, nécessitant la fourniture de l'adresse de l'objet à traquer sous la forme nom_objet@adresse_ip:
vrpn_print_devices.exe Head@192.168.10.10
Minuscule/majuscule
Les serveurs VRPN sont sensibles à la casse et les majuscules et minuscules doivent être respectées.
Le nom de l'objet ainsi que l'adresse du serveur VRPN sont aussi nécessaire dans les nœuds de tracking de VRmaze. Il est donc possible de recopier les informations pour permettre de vérifier si l'exécutable VRPN_print_device
a le même comportement que VRmaze.
Si le comportement est différent (ie. VRPN_print_device
affiche les bonnes valeurs) il faut alors se tourner du côté du réseau et de la communication entre les deux ordinateurs, le serveur VRPN et l'ordinateur exploitant VRmaze. Windows fourni des outils permettant de vérifier la communication, la commande DOS ping
permet de valider la communication.
Une communication validée par la commande DOS ping
peut ne pas suffire. En effet, le serveur VRPN utilise un port de communication spécifique, en ce sens, la communication peut être bloquée soit par le pare-feu installé, soit par un logiciel antivirus. La désactivation de ces deux systèmes peut permettre de résoudre les problèmes de communication.