Aller au contenu

Configuration

VRmaze Sim dispose d'une configuration spéciale permettant de couvrir tous les aspects hardware d'un espace immersif de type Cave. En effet, VRmaze Sim propose un jeu d'outils permettant le contrôle à distance des ordinateurs composant un cluster de calcul ou des projecteurs d'affichages.

VRmaze Sim avec un seul ordinateur ?

VRmaze Sim peut être utilisé avec un seul ordinateur. Outre les fonctionnalités de contrôle hardware, les fonctionnalités logicielles supplémentaires intégrées en font un outil rapide de visualisation dans un système complexe de réalité virtuelle.

Gestion d'un cluster de rendu

Un cluster de rendu permet le rendu de grandes surfaces projetées de manière distribuée. L'idée est de partager la surface à projeter entre différents ordinateurs de manière à répartir le volume de calcul à produire pour afficher les images.

VRmaze offre la possibilité de contrôler un cluster de rendu en termes d'allumage, d'arrêt et de lancement d'exécutables à distance. VRmaze repose sur le client VRmaze listener, fourni à l'installation, pour la gestion post allumage.

Protocole Wake On Lan (wol)

VRmaze Sim s'appuie sur le protocole WOL pour lancer les ordinateurs esclaves à distance. Les ordinateurs esclaves doivent donc prendre en compte ce protocole pour permettre un allumage à distance.

Configuration

La gestion du parc informatique nécessite un fichier de configuration dans lequel les informations de chaque ordinateur sont renseignées. Les informations nécessaires sont :

  • Le nom de la machine à afficher dans VRmaze
  • L'adresse Ip de la machine
  • Le masque de sous-réseau
  • L'adresse Mac de la machine
  • La valeur de la propriété Wol (false ou true, true pour allumer cette machine lors de l'envoi de la commande d'allumage globale)
  • La valeur de la propriété KillProcess (En cas d'arret d'urgence du protocole en cours de passation)

Le formalisme Xml pour un ordinateur est le suivant :

<ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="Gauche_02" Ip="192.168.11.2"   MacAddress="EC:B1:D7:33:3F:83" Wol="true" KillProcess="true" Mask="255.253.254.0"/>

Le formalisme Xml de la configuration complète d'un cluster est le suivant :

<ClusterNodes Type="HumanVirtualMaze.Model.Setup.CaveSystem.ClusterNodeList">
    <ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="Gauche_02" Ip="192.168.11.2"   MacAddress="EC:B1:D7:33:3F:83" Wol="true" KillProcess="true" Mask="255.253.254.0"/>
    <ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="Gauche_01" Ip="192.168.11.3"   MacAddress="EC:B1:D7:33:3D:0F" Wol="true" KillProcess="true" Mask="255.253.254.0"/>
    <ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="Face" Ip="192.168.11.4"        MacAddress="EC:B1:D7:33:3D:2F" Wol="true" KillProcess="true" Mask="255.253.254.0"/>
    <ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="Droite_01" Ip="192.168.11.5"   MacAddress="EC:B1:D7:33:3F:6D" Wol="true" KillProcess="true" Mask="255.253.254.0"/>
    <ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="Droite_02" Ip="192.168.11.6"   MacAddress="EC:B1:D7:33:3F:BD" Wol="true" KillProcess="true" Mask="255.253.254.0"/>
    <ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="Sol_01" Ip="192.168.11.7"  MacAddress="EC:B1:D7:33:3E:2B" Wol="true" KillProcess="true" Mask="255.253.254.0"/>
    <ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="Sol_02" Ip="192.168.11.8"  MacAddress="DC:4A:3E:75:28:2D" Wol="true" KillProcess="true" Mask="255.253.254.0"/>
    <ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="Vicon" Ip="192.168.11.253"     MacAddress="00:19:99:AF:85:1B" Wol="true" KillProcess="true" Mask="255.253.254.0"/> 
    <ClusterNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ClusterNode" Name="D-FLOW" Ip="192.168.11.50"     MacAddress="90:1B:0E:5A:B7:E3" Wol="true" KillProcess="true" Mask="255.253.254.0"/> 
</ClusterNodes>

Pour permettre la prise en compte d'une telle configuration, il convient de configurer ses paramètres en fonction de son cluster de rendu et de stocker la configuration dans un fichier Xml dans le dossier de données. Pour terminer, il faut renseigner le chemin de fichier de configuration dans les préférences de VRmaze Sim ("Fichier de configuration Cluster").

Image title 2

Préférences de configuration du Cluster

Stockage des fichiers de configuration

Par convention, nous stockons les fichiers de configurations dans le dossier "Config" du dossier de données. Concernant le cluster, nous nommons le fichier de configuration cluster.xml

Image title 2

La lecture du fichier de configuration dans VRmaze Sim

Commande de base

La configuration du cluster seule permet le lancement des ordinateurs à distance ainsi que leur arrêt. L'arrêt et l'ensemble des autres commandes à la suite de ce document s'appuie sur VRmaze Listener. Il est nécessaire que le client VRmaze Listener tourne sur les ordinateurs du cluster.

Lancement au démarrage

A l'installation de VRmaze, aucune option ne permet de spécifier que l'application VRmaze Listener doit se lancer au démarrage. Le processus de démarrage automatique doit être réaliser par l'administrateur du parc informatique après l'installation du logiciel.

Accès aux commandes

La barre d'outils horizontale propose un accès direct à l'ensemble des commandes configurées, avec deux boutons spéciaux pour l'allumage et l'arrêt des ordinateurs.

Lancer une commandes sur tous les ordinateurs

Il est possible de lancer une commande sur tous les ordinateurs en même temps. En effet, VRmaze Sim propose, dans la liste des ordinateurs, un élément supplémentaire "All slaves" permettant de lancer une commande commune sur tous les ordinateurs en même temps et en un seul clic.

Arrêt de la passation en cours

La barre d'outils Cluster de VRmaze Sim contient un bouton permettant l'arrêt d'une passation. En effet, en cas d'arrêt involontaire de la passation sur l'ordinateur maître, les ordinateurs esclaves peuvent ne pas être arrétés. Dans ce cas, un arrêt forcé peut être exécuté via la barre d'outils ce qui aura pour conséquence d'arreter toutes les passations en cours sur tous les ordinateurs.

Arret forcé

L'arrêt forcé ne tient pas compte de l'ordinateur sélectionné dans la liste des ordinateurs du cluster. Il arrêtera les passations en cours sur tous les ordinateurs sans distinction.

Commandes génériques

Les commandes génériques sont des commandes qui sont exécutées soit automatiquement à certains moments précis soit à la demande. Par exemple, VRmaze ne synchronise pas, par défaut, les données entre l'ordinateur maître et les esclaves. Les données nécessaires à l'exécution d'un protocole de simulation peuvent nécessiter une copie de données sur les esclaves avant lancement.

Ce genre de cas de figure est géré par les commandes génériques. L'idée est de décrire un ensemble de commandes sous forme de fichier .bat (commandes DOS) qui vont pouvoir être lancées depuis l'interface graphique ou automatiquement.

Commandes Dos

Les fichiers .bat contenant les commandes Dos sont, par convention, stockés dans le dossier "Commands" du dossier de données.

Les paramètres nécessaires pour l'enregistrement d'une commande dans VRmaze sont les suivants :

  • Le nom du fichier à exécuter
  • Le nom de la commande affichée
  • L'état de l'exécution de la commande au lancement d'un protocole
  • Les arguments à passer à la commande (%_p_% passera le nom du protocole lancé dans une exécution automatique pré-passation)

Le formalisme Xml d'une commande est le suivant :

    <CommandNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.CommandNode" Name="Copy Protocols"    File="CopyProtocols.bat"    ExecuteBeforeStartProtocol="true"/>

Le chemin du fichier contenant l'ensemble des commandes doit être enregistré dans les préférences de VRmaze Sim en tant que valeur de la propriété "Cluster Command file". Le formalisme Xml de l'ensemble des commandes est le suivant :

<CommandNodes Type="HumanVirtualMaze.Model.Setup.CaveSystem.CommandNodeList">
    <CommandNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.CommandNode" Name="Copy Protocols"    File="CopyProtocols.bat"    ExecuteBeforeStartProtocol="true"/>
    <CommandNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.CommandNode" Name="Copy all data"     File="CopyData.bat"         ExecuteBeforeStartProtocol="false" />   
    <CommandNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.CommandNode" Name="Copy executable"   File="copyExec.bat"         ExecuteBeforeStartProtocol="false"/>    
</CommandNodes>

Passage de paramètre

Il est possible de passer en paramètre le nom du protocole lors de l'exécution en configurant l'argument de la commande à lancer à la valeur %_p_%

Image title 2

La lecture du fichier de configuration des commandes cluster.

Exécution d'une commande

L'exécution d'une commande est effectuée sur l'ordinateur sélectionné dans la liste des ordinateurs.

Commandes distantes

Les commandes distantes sont des programmes installés sur des machines du cluster. L'idée est de lancer l'exécutable installé sur une machine distante depuis l'ordinateur maître.

Tout comme les autres systèmes de configuration, une commande distante dispose des propriétés suivantes :

  • Nom de la commande à afficher
  • Chemin complet de l'exécutable sur la machine distante
  • Les arguments à passer à l'exécutable à lancer
  • l'état de la commande distante en termes de lancement ou d'arrêt (permet d'arrêter un exécutable à distance)

Le formalisme Xml d'une commande distante est le suivant :

<DistantProcess Type="HumanVirtualMaze.CaveSystem.DistantProcess" Name="Run Vicon Tracker" ExeCommand="C:\Program Files\Vicon\Nexus2.2\Nexus.exe" Parameters=""  Kill="False"/>

Le formalisme Xml d'une commande d'arrêt à distance est le suivant (aucun besoin du chemin complet de l'exécutable, juste le nom du processus) :

<DistantProcess Type="HumanVirtualMaze.Model.Commands.CaveSystem.DistantProcess" Name="Stop Vicon Tracker" ExeCommand="Tracker" Parameters=""    Kill="True"/>

Le chemin du fichier contenant l'ensemble des commandes distantes doit être enregistré dans les préférences de VRmaze Sim en tant que valeur de la propriété "Distant process file". Le formalisme Xml de l'ensemble des commandes est le suivant :

<DistantProcesses Type="HumanVirtualMaze.Model.Commands.CaveSystem.DistantProcessList">
    <DistantProcess Type="HumanVirtualMaze.Model.Commands.CaveSystem.DistantProcess" Name="Run Vicon Tracker" ExeCommand="C:\Program Files\Vicon\Tracker3.5\Tracker.exe" Parameters=""   Kill="False"/>
    <DistantProcess Type="HumanVirtualMaze.Model.Commands.CaveSystem.DistantProcess" Name="Run Vicon Nexus" ExeCommand="C:\Program Files (x86)\Vicon\Nexus2.8\nexus.exe" Parameters=""   Kill="False"/>
    <DistantProcess Type="HumanVirtualMaze.Model.Commands.CaveSystem.DistantProcess" Name="Stop Vicon Tracker" ExeCommand="Tracker" Parameters=""    Kill="True"/>
    <DistantProcess Type="HumanVirtualMaze.Model.Commands.CaveSystem.DistantProcess" Name="Stop Vicon Nexus" ExeCommand="Nexus" Parameters="Test properties"     Kill="True"/>  
</DistantProcesses>

Image title 2

La lecture du fichier de configuration des commandes distantes.

Exécution d'une commande distante

L'exécution d'une commande distante est effectuée sur l'ordinateur sélectionné dans la liste des ordinateurs.

Configuration des projecteurs

Tout comme les ordinateurs composant un cluster de rendu, la configuration des projecteurs repose sur le même principe d'un fichier de configuration renseignant différentes informations, toutefois, ces informations sont bien moins nombreuses :

  • Nom du projecteur à afficher
  • Adresse Ip du projecteur

Le formalisme Xml d'une information de projecteur est le suivant :

<ProjectorNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNode" Name="Gauche_01"     Ip="192.168.11.101" />
    ```
Le formalisme Xml de la configuration de l'ensemble des projecteurs est le suivant : 

``` xml
<ProjectorNodes Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNodeList">
    <ProjectorNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNode" Name="Gauche_01"     Ip="192.168.11.101" />
    <ProjectorNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNode" Name="Gauche_02"     Ip="192.168.11.102" />
    <ProjectorNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNode" Name="Face"          Ip="192.168.11.103" />
    <ProjectorNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNode" Name="Droite_01"     Ip="192.168.11.104" />
    <ProjectorNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNode" Name="Droite_02"     Ip="192.168.11.105" />
    <ProjectorNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNode" Name="Sol_01"        Ip="192.168.11.106" />
    <ProjectorNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNode" Name="Sol_02"        Ip="192.168.11.107" />  
</ProjectorNodes>

Pour permettre la prise en compte d'une telle configuration, il convient de configurer ses paramètres en fonction de son système de projection et de stocker la configuration dans un fichier Xml dans le dossier de données. Pour terminer, il faut renseigner le chemin de fichier de configuration dans les préférences de VRmaze Sim ("Projector setup file").

Image title 2

Les préférences de configuration des projecteurs de VRmaze Sim.

Image title 2

La lecture du fichier de configuration des projecteurs.

Commandes des projecteurs

Tout comme les commandes cluster, les commandes des projecteurs sont des commandes qui sont envoyées directement aux projecteurs.

Les propriétés des commandes sont les suivantes :

  • Nom de la commande à afficher
  • Commande à exécuter.

Le formalisme Xml d'une commande projecteur est le suivant :

<ProjectorCommand Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorCommand" Name="Power on" Command="(pwr1)" />

Le chemin du fichier contenant l'ensemble des commandes de projecteur doit être enregistré dans les préférences de VRmaze Sim en tant que valeur de la propriété "Projector command file". Le formalisme Xml de la configuration de l'ensemble des projecteurs est le suivant (Ici pour projecteur Christie) :

<ProjectorCommands Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorCommandList">
    <ProjectorCommand Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorCommand" Name="Power on" Command="(pwr1)" />
    <ProjectorCommand Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorCommand" Name="Power off" Command="(pwr0)" />
    <ProjectorCommand Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorCommand" Name="Shutter on" Command="(shu1)" />
    <ProjectorCommand Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorCommand" Name="Shutter off" Command="(shu0)" /> 
</ProjectorCommands>

Image title 2

La lecture du fichier de configuration commandes des projecteurs.

Voici un exemple de configuration des commandes pour les projecteurs de marque Barco (Le formalisme JSon doit être converti en Xml) :

<ProjectorCommands Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorCommandList">
    <ProjectorCommand Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorCommand" Name="Power on (Barco)" Command="{&quot;jsonrpc&quot;: &quot;2.0&quot;,&quot;method&quot;: &quot;system.poweron&quot;}" />
    <ProjectorCommand Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorCommand" Name="Power off (Barco)" Command="{&quot;jsonrpc&quot;: &quot;2.0&quot;,&quot;method&quot;: &quot;system.poweroff&quot;}" />  
</ProjectorCommands>

Communication TCP avec les projecteurs

La communication avec les projecteurs s'effectue en TCP sur un port spécifique configurable. Par exemple, sur les projecteurs Barco, la communication se fait en TCP sur le port 9090 par défaut.

Marque de Projecteurs

Renseigner vous auprès du constructeur pour en savoir plus sur les commandes à envoyer en protocole TCP. Le protocole TCP est compatible avec les projecteurs Barco et Christie.

Commandes d'allumage et d'arrêt ?

Il n'existe pas de commande d'allumage ou d'arrêt direct d'un projecteur comme pour un ordinateur. Chaque marque de projecteur ayant ses propres protocoles de communication, il est impossible de commander l'allumage nativement.