Aller au contenu

Setup

VRmaze Sim has a special configuration to cover all the hardware aspects of an immersive Cave space. Indeed, VRmaze Sim offers a set of tools allowing the remote control of the computers composing a computing cluster or the display projectors.

VRmaze Sim with a single computer?

VRmaze Sim can be used with a single computer. In addition to the hardware control features, the additional built-in software features make it a fast tool for visualization in a complex virtual reality system.

Management of a rendering cluster

A rendering cluster allows the rendering of large projected surfaces in a distributed way. The idea is to share the surface to be projected between different computers in order to distribute the volume of calculation to be produced to display the images.

VRmaze offers the possibility to control a rendering cluster in terms of switching on, switching off and launching remote executables. VRmaze relies on the VRmaze listener client, provided during installation, for post-startup management.

Wake On Lan (wol) protocol

VRmaze Sim relies on the WOL protocol to launch remote slave computers. Slave computers must therefore support this protocol to allow a remote startup.

Configuration

The management of the computer park requires a configuration file in which the information of each computer is filled in. The necessary information is :

  • The name of the machine to be displayed in VRmaze
  • The IP address of the machine
  • The subnet mask
  • The Mac address of the machine
  • The value of the Wol property (false or true, true to turn on this machine when sending the global turn on command)
  • The value of the KillProcess property (In case of emergency stop of the protocol in progress)

The Xml formalism for a computer is the following:

<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"/>

The Xml formalism of the complete cluster configuration is as follows:

<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>

To allow such a configuration to be taken into account, you should configure its parameters according to its rendering cluster and store the configuration in an Xml file in the data folder. To finish, the configuration file path must be filled in the VRmaze Sim preferences ("Cluster configuration file").

Image title 2

Cluster configuration preferences

Storing configuration files

By convention, we store configuration files in the "Config" folder of the data folder. Regarding the cluster, we name the configuration file cluster.xml

Image title 2

Reading the configuration file in VRmaze Sim

Basic command

The cluster configuration alone allows remote computers to be launched and stopped. The shutdown and all other commands in the rest of this document rely on VRmaze Listener. It is necessary that the VRmaze Listener client is running on the cluster computers.

Launch at startup

When VRmaze is installed, there is no option to specify that the VRmaze Listener application should launch at startup. The automatic startup process must be performed by the administrator of the computer park after the installation of the software.

Access to commands

The horizontal toolbar provides direct access to all configured commands, with two special buttons for turning on and off computers.

Run a command on all computers

It is possible to run a command on all computers at the same time. In fact, VRmaze Sim offers, in the list of computers, an additional item "All slaves" that allows you to launch a common command on all computers at the same time and with a single click.

Stop the current run

The Cluster toolbar of VRmaze Sim contains a button that allows you to stop a run. In the event of an unintentional shutdown of the run on the master computer, the slave computers may not be shut down. In this case, a forced stop can be executed via the toolbar which will stop all the runs on all the computers.

Forced shutdown

Forced shutdown does not take into account the computer selected in the list of computers in the cluster. It will stop the current runs on all computers without distinction.

Generic commands

Generic commands are commands that are executed either automatically at certain times or on demand. For example, VRmaze does not, by default, synchronize data between the master and slave computers. The data needed to run a simulation protocol may require a copy of the data on the slaves before launching.

This kind of case is handled by the generic commands. The idea is to describe a set of commands in the form of a .bat file (DOS commands) that can be launched from the graphical interface or automatically.

Dos commands

.bat files containing Dos commands are, by convention, stored in the "Commands" folder of the data folder.

The parameters required for saving a command in VRmaze are as follows:

  • The name of the file to be executed
  • The name of the command displayed
  • The state of the command execution when a protocol is launched
  • The arguments to pass to the command (%_p_% will pass the name of the protocol launched in a pre-pass automatic execution)

The Xml formalism of a command is the following:

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

The path to the file containing the command set must be saved in VRmaze Sim preferences as a value of the "Cluster Command file" property. The Xml formalism of the command set is as follows:

<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>

Passing a parameter

It is possible to pass the protocol name as a parameter at runtime by setting the argument of the command to be run to the value %_p_%

Image title 2

Reading the cluster command configuration file.

Executing a command

The execution of a command is performed on the computer selected in the computer list.

Remote commands

Remote commands are programs installed on machines in the cluster. The idea is to launch the executable installed on a remote machine from the master computer.

Just like other configuration systems, a remote command has the following properties:

  • Name of the command to be displayed
  • Full path of the executable on the remote machine
  • The arguments to pass to the executable to be launched
  • the state of the remote command in terms of launch or stop (allows to stop an executable remotely)

The Xml formalism of a remote command is the following:

<DistantProcess Type="HumanVirtualMaze.Model.Commands.CaveSystem.DistantProcess" Name="Run Vicon Tracker" ExeCommand="C:\Program Files\Vicon\Tracker3.5\Tracker.exe" Parameters=""   Kill="False"/> 

The Xml formalism of a remote stop command is as follows (no need for the full path of the executable, just the process name):

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

The path to the file containing the set of remote commands must be saved in VRmaze Sim preferences as the value of the "Distant process file" property. The Xml formalism of the command set is as follows:

<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

Reading the remote command configuration file.

Executing a remote command

The execution of a remote command is performed on the computer selected in the computer list.

Projectors configuration

Just like the computers that make up a rendering cluster, the configuration of the projectors is based on the same principle of a configuration file containing various information, however, this information is much less numerous:

  • Name of the projector to be displayed
  • IP address of the projector

The Xml formalism of a projector information is the following:

<ProjectorNode Type="HumanVirtualMaze.Model.Commands.CaveSystem.ProjectorNode" Name="Gauche_01"     Ip="192.168.11.101" />

The Xml formalism of the projector set configuration is as follows:

<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>

To enable such a configuration to be taken into account, its parameters should be configured according to its projection system and the configuration should be stored in an Xml file in the data folder. To finish, the configuration file path must be filled in the VRmaze Sim preferences ("Projector setup file").

Image title 2

The VRmaze Sim projector setup preferences.

Image title 2

Reading the projectors configuration file.

Projector Commands

Like cluster commands, projector commands are commands that are sent directly to projectors.

The properties of the commands are as follows:

  • Name of the command to display.
  • Command to execute.

The Xml formalism of a projector command is as follows:

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

The path to the file containing the set of projector commands must be saved in VRmaze Sim preferences as the value of the "Projector command file" property. The Xml formalism of the projector set configuration is as follows (Here for Christie projector):

<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

Reading the configuration file projector commands.

Here is an example of the commands configuration for Barco brand projectors (JSon formalism must be converted to 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>

TCP communication with projectors

Communication with projectors is done in TCP on a specific configurable port. For example, on Barco projectors, communication is done in TCP on port 9090 by default.

Projector brand

Ask the manufacturer for more information about the commands to be sent in TCP protocol. The TCP protocol is compatible with Barco and Christie projectors.

Turn on and off commands ?

There is no direct on/off command for a projector like there is for a computer. Each brand of projector has its own communication protocols, so it is impossible to control the ignition natively.