Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: 1.0 - Added tracking setup information

...

Essentially that is all that’s required , but we will need to calibrate the eye location later on when setting up Unreal correctly for head trackingfor standard nDisplay, from Scalable’s perspective.
However, if you’re using head tracking, it is required that you adjust the eye level to the correct height, for where the exact center of the room will be.

Exporting Data to Unreal

Once your screen has been calibrated using the Scalable system, the master machine will have saved the DataSet to it’s C:/ drive, in the following folder:

Code Block
C:/ScalableDisplay/DataSets/DatasetXXXXXXXXXX/LastCalibration\Program Files\Scalable Display\DEI\LocalCalibration

In this folder, you will find a myriad of files, most of which are required for the nDisplay system to work.
Unfortunately, due to how these files are created, it’s difficult to setup this location as a shared space, so you will need to copy these files *(or rather the LastCalibration Folder as a whole) to the same location as your nDisplay config file.

...

a location similar to where your config.

...

Warning

Just like all other file locations, there can be no spaces in the address. Otherwise it won’t launch.

Not all the files are required, but it’s easier to copy the entire thing.

...

Expand
titleExample config file

You are welcome to copy this file, and expand on it. You should save it as a .cfg.
It’s a 3 Igloo Media Server (IMP) 3 Projector system.

Code Block
# Tracker
[input] id="ViveVRPN" type="tracker"  addr="openvr/controller/LHR-8708C47F@10.1.5.169:3884" loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" front="Y" right="-X" up="Z"

Code Block
#####################################################################
# Igloo nDisplay Example Configuarion
#
# Note:
# Before use, make sure all settings correspond to your system.
#####################################################################

# Config file header.
[info] version="23"

# Cluster nodes
[cluster_node] id="IMP1" addr="19210.1681.05.101110" window="window1" master="true"
[cluster_node] id="IMP2" addr="19210.1681.05.102247" window="window2"
[cluster_node] id="IMP3" addr="19210.1681.05.103169" window="window3" master="window3true"

# Application windows
[window] id="window1" fullscreen=false WinX=0 WinY=0 ResX=1920 ResY=1080true viewports="viewport1"
[window] id="window2" fullscreen=false WinX=0 WinY=0 ResX=1920 ResY=1080 true viewports="viewport2"
[window] id="window3" fullscreen=false WinX=01920 WinY=0 ResX=1920 ResY=1080 viewports="viewport3"

# Projection policies
[projection] id=projector1proj_easyblend_1 type="easyblend" file="LastCalibration\ScalableDataOrthographicD:\LocalCalibration\ScalableData.pol"   origin=easyblend_origin scale=1
[projection] id=projector2proj_easyblend_2 type="easyblend" file="LastCalibration\ScalableDataOrthographicD:\LocalCalibration\ScalableData.pol_1" origin=easyblend_origin scale=1
[projection] id=projector3proj_easyblend_3 type="easyblend" file="LastCalibration\ScalableDataOrthographicD:\LocalCalibration\ScalableData.pol_2" origin=easyblend_origin scale=1

# Viewports
[viewport] id="viewport1" x=0 y=0 width=1920 height=1080 projection=projector1proj_easyblend_1
[viewport] id="viewport2" x=0 y=0 width=1920 height=1080 projection=projector2proj_easyblend_2
[viewport] id="viewport3" x=0 y=0 width=1920 height=1080 projection=projector3proj_easyblend_3

# Cameras
[camera] id=camera_static loc="X=0,Y=0,Z=0" tracker_id="ViveVRPN" tracker_ch=0

# Scene nodes
[scene_node] id=cave_origin       loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0"
[scene_node] id=wand              loc="X=0,Y=0,Z=1" rot="P=0,Y=0,R=0"
[scene_node] id=easyblend_origin  loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0"

# Tracker
[input] id="ViveVRPN" type="tracker"  addr="openvr/controller/LHR-8708C47F@10.1.5.169:3884" loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" front="Y" right="-X" up="Z"

# General settings
[general] swap_sync_policy=1

# Network settings
[network] cln_conn_tries_amount=10 cln_conn_retry_delay=1000 game_start_timeout=30000 barrier_wait_timeout=5000

# Custom arguments
[custom] SampleArg1=SampleVal1 SampleArg2=SampleVal2

...

The projection value, explained below, is which projection policy will be used

Projection

...

[projection] id=proj_easyblend_1 type="easyblend" file="

...

D:\LocalCalibration\ScalableData.pol" origin=easyblend_

...

origin scale=

...

1

This is where the scalable setup differs from a standard nDisplay system. Instead of a ‘simple’ projection system, which specifies the cameras created by unreal, we use Scalable & Unreal’s easyblend system. This tells unreal how to create cameras based on the .pol data created by Scalable during setup.

...

The field value should be the location of your ScalabaleData.pol file relative to the location of this file. It’s also possible to put a complete file address , but this may cause issues as it will likely be stored on a shared drivelike within the example, but be careful to have the same address across all machines.

Info

If you are using one machine, with multiple screens, each screen will have it’s own .pol file.

Camera

[camera] id=camera_static loc="X=0,Y=0,Z=0" tracker_id="ViveVRPN" tracker_ch=0

...

The example above, uses a HTC Vive, with a Vive tracker puck. Which also requires you to run an OpenVRPN server to convert the vive position data to something readable by other programs, and then hosts it on the network.

...