Document toolboxDocument toolbox

Private & Confidential

Advance: Adjustment of JSON files

Their are two json files that control how the Igloo Camera Toolkit creates and operates the visible output:

  • The Camera Settings File

  • The Display Settings File

Both of these are stored globally in the Igloo ICE settings files, or if they cannot be found there. The application will make it’s own files and store them in Streaming Assets.

Reasons to modify these files

  • You are an Igloo installer and you’re setting up ICE for the first time.

  • An adjustment has been made to the installation, and the files need to be adjusted to suit.

  • You are making an NDI or 3D version of an application that differs from the Global version stored on the ICE machine.

Locating the Global Files

By default the global files are located at the path below.

C:/ProgramData/Igloo Vision/IglooCoreEngine/settings/Unity/

Breaking Down the Camera Settings file

Below is a table of each adjustable setting in the IglooCameraSettings.json file. This is the default file that would exist on most igloo ICE installations.

Option

Input Type (Default value)

Effect

Option

Input Type (Default value)

Effect

isEnabled

boolean ( true )

Enables the Igloo Camera system.

isStereo

boolean ( false )

Enables 3D output of the Igloo Camera system.

isSpoutOutput

boolean ( true )

Creates a Spout sender, which sends the full camera output texture to another application on the same machine.

isNDIOutput

boolean ( false )

Creates an NDI sender, which sends the full camera output texture to another application on any machine on the same LAN.

useWarpAndBlend

boolean ( false )

Utilises the Igloo ICE warping and blending files in order to bypass the ICE software. Allows unity to create it’s own windows and display the output without ICE. Useful for large projects or complex systems to gain maximum performance.

outputName

string (“IglooUnity”)

When using Spout or NDI, this value will be the sharing name of the texture stream.

nearClipPlane

float ( 0.1 )

Adjusts the near clip for every generated igloo camera in the camera rig.

farClipPlane

float ( 1000.0 )

Adjusts the far clip for every generated igloo camera in the camera rig.

stereoEyeDistance

float ( 0.5 )

Adjusts the inter pupilary distance between each camera when outputting 3D stereo.

cameraRotationOffset

vector3 ( x:0.0 , y:0.0 , z:0.0 )

Rotates the camera rig within the 3D space. Useful for when Unity ‘faces forwards’ on the wrong wall in an Igloo Space.

cameraType

integer ( 0 )

Enum: 0 = Cubemap System | 1 = OffAxis System.

CubemapData

Struct of Cubemap Data

explained below.

>useTruePerspective

boolean ( false )

If true, an additional shader pass using the Igloo TruePerspective data will be carried out before outputting the texture. This can be a performance advantage. in some cases, over ICE doing it.

>cubemapFaceResolution

integer ( 2000 )

When generating a cubemap, each face of the cubemap will be rendered as a square with the resolution of this value on x and y.

>faceList

Array of Faces to generate

The faces in this array do not have to be in order. As they will be generated in the following order regardless:
Left, Front, Right, Back, Bottom, Top.
Each face in the array can be disabled if required. A black texture will be sent, but it will not render the scene.

>> face

string (“FaceName”)
boolean ( true )

e.g: “face”:“Back”, “enabled”: true.

 

Below is an example IglooCameraSettings.json file

{ "isEnabled": true, "nearClipPlane": 0.01, "useWarpAndBlend": false, "farClipPlane": 1000.0, "isStereo": false, "stereoEyeDistance": 0.05, "isSpoutOutput": true, "isNDIOutput":false, "outputName":"IglooUnity", "cameraTypeData": { "doc": "0 = Cubemap Camera, 1 = Off Axis Camera", "cameraType": 0 }, "cameraRotationOffset": {"x": 0.0, "y": 0.0, "z": 0.0}, "CubemapData": { "useTruePerspective": false, "cubemapFaceResolution": 2000, "faceList": [ {"face": "Back", "enabled": true}, {"face": "Left", "enabled": true}, {"face": "Front", "enabled": true}, {"face": "Right", "enabled": true}, {"face": "Down", "enabled": true}, {"face": "Up", "enabled": true} ] } }

Breaking Down the Display Settings file

Below is a table containing an example of what a DisplaySettings.json file could look like. This is not a default example, as in most cases this would be left blank.

Option

Input Type ( Default Value )

Effect

Option

Input Type ( Default Value )

Effect

Displays

array of displays

options explained below

>targetDisplay

int ( 1 )

Each display corresponds to a screen plugged into the PC. Starting at 0 with the main desktop.

>SourceX

float ( 0.0 )

Start X position of output canvas (measured from top right of window)

>SourceY

float ( 0.0 )

Start X position of output canvas (measured from top right of window)

>SourceWidth

float ( 0.5 )

How much width of the output canvas to display on this target display

>SourceHeight

float ( 1.0 )

How much height of the output cavnas to display on this target display

In the above example, which is part of the example code below, Half of the output canvas would be displayed on Screen 1, with the other half of the canvas being displayed on Screen 2.

{ "Displays": [ { "targetDisplay": 1, "SourceX": 0.0, "SourceY": 0.0, "SourceWidth": 0.5, "SourceHeight": 1.0 }, { "targetDisplay": 2, "SourceX": 0.5, "SourceY": 0.0, "SourceWidth": 0.5, "SourceHeight": 1.0 } ] }

(c) Igloo Vision 2020