Private & Confidential

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

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, however if the IglooSettings.xml has been modified to use ‘local’ settings, then these files can be found in StreamingAssets alongside the venerable IglooSettings.xml file.

Reasons to modifiy 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/

You can also modify this in the IglooSettings.xml, by adjusting line 3 as below:

displaySettingsOverridePath="C:/ProgramData/Igloo Vision/IglooCoreEngine/settings/Unity/displaySettingsOverride" />

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

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.

OffAxisData

Struct of Off Axis Data

explained below.

>canvasWidth

float ( 0 )

The total width of the output canvas.

>canvasHeight

float ( 0 )

The total height of the output canvas.

>cameras

array of OffAxisCameras

Informs the offAxisCamera system on how to create each camera in the scene.

Explained Below

>>id

string ( “cameraName” )

ID for the camera. Name similar to cubemap faces for consistency.

>>roi

rect ( x:0.0, y:0.0, z:0.0 w:1.0 )

The region of the canvas that this camera is going to output to.

>>lowerLeft

vector3 ( x:-1.0 , y:-1.0 , z:-1.0 )

Lower Left corner of the camera frustrum in 3D space relative to the player origin.

>>lowerRight

vector3 ( x:1.0 , y:-1.0 , z:-1.0 )

Lower Right corner of the camera frustrum in 3D space relative to the player origin.

>>upperLeft

vector3 ( x:-1.0 , y:-1.0 , z:1.0 )

Upper Left corner of the camera view frustrum in 3D space relative to the player origin.

Below is an example IglooCameraSettings.json file

 IglooCameraSettings.json - example code
{
    "isEnabled": true,
    "isStereo": false,
    "isSpoutOutput": true,
    "isNDIOutput": false,
    "useWarpAndBlend": false,
    "outputName":"IglooUnity",
    "nearClipPlane": 0.1,
    "farClipPlane": 1000.0,
    "stereoEyeDistance": 0.05000000074505806,
    "cameraRotationOffset": {
        "x": 0.0,
        "y": 0.0,
        "z": 0.0
    },
    "cameraType": 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}
        ]
    },
    "OffAxisData": {
        "canvasWidth": 0,
        "canvasHeight": 0,
        "cameras": [
            {
            "id": "Down",
            "roi": {"x": 0.0, "y": 0.0, "z": 0.333333, "w": 1.0},
            "lowerLeft": {"x": -1.0, "y": -1.0, "z": -1.0},
            "lowerRight": {"x": 1.0, "y": -1.0, "z": -1.0},
            "upperLeft": {"x": -1.0, "y": -1.0, "z": 1.0}
            },
            {
              "id": "Front",
              "roi": {"x": 0.0, "y": 0.33333, "z": 0.333333, "w": 1.0},
              "lowerLeft": {"x": -1.0, "y": -1.0, "z": 1.0},
              "lowerRight": {"x": 1.0, "y": -1.0, "z": 1.0},
              "upperLeft": {"x": -1.0, "y": 1.0, "z": 1.0}
            },
            {
              "id": "Back",
              "roi": {"x": 0.0, "y": 0.66666, "z": 0.333333, "w": 1.0},
              "lowerLeft": {"x": 1.0, "y": -1.0, "z": -1.0},
              "lowerRight": {"x": -1.0, "y": -1.0, "z": -1.0},
              "upperLeft": {"x": 1.0, "y": 1.0, "z": -1.0}
            }
        ]
    }
}

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

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.

 IglooDisplaySettings.json - example code
{
  "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
        }
    ]
}
  • No labels