Private & Confidential
v1.3 Settings File
The Unity script (IglooManager.cs) attached to the IglooManager prefab loads an XML settings file, which defines settings for all aspects of the Igloo system: Display, System, Player, and Network configurations.
The easiest way to create a suitable file is to edit one of the existing examples, found in Resources/IglooResources/Settings
Here is a description of the file contents:
System Settings
<SystemSettings vSyncMode="0" targetFPS="0" sendStartupMessage="false" useDisplaySettingsOverride="false" displaySettingsOverridePath="%localappdata%/Igloo Vision/IglooWarper/" />
System settings are optional
vSync Mode: takes an int value to set the application vertical sync setting https://docs.unity3d.com/ScriptReference/QualitySettings-vSyncCount.html :
0 - ignores your monitor refresh and outputs the frames as fast as possible.
1 - will output one frame update for every screen update.
2 - will output one frame update every second screen update
targetFPS: takes an int value to set the target framerate of the application
sendStartupMessage: bool value - Sends an OSC broadcast to the warper when it is started.
useDisplaySettingsOverride: bool value - Uses the ‘global’ display settings file instead of the display settings outlined within the rest of the xml.
displaySettingsOverridePath: string value - The path of the global settings file default:
"%localappdata%/Igloo Vision/IglooWarper/"
Player Settings
<PlayerSettings Name="player">
<usePlayer>true</usePlayer>
<headtracking>false</headtracking>
<rotationInput>0</rotationInput>
<rotationMode>0</rotationMode>
<movementInput>0</movementInput>
<movementMode>0</movementMode>
<runSpeed>10</runSpeed>
<walkSpeed>5</walkSpeed>
<smoothTime>10</smoothTime>
<crosshairMode>0</crosshairMode>
</PlayerSettings>
Name: string value to specify name of the player
usePlayer: takes an bool value to set player system enabled state
headTracking: not yet implemented
rotationInput: takes an int value to set the player rotation input method:
0 - Standard: player rotation is controlled using the default Unity input settings
1 - Warper: player rotation is controlled via OSC network message from IglooWarper application
2 - GyroOSC: OSC Messages relayed from Igloo Warper, from GyroOSC iPhone/Android application
3 - VR Controller: OSC Messages relayed from Igloo Warper using Igloo OpenVR
4 - Optitrack: Optitrack client sends messages to Unity via Optitrack Plugin
5 - VRPN: OSC Messages received from the Unity VRPN Server
rotationMode : takes an int value to set the rotation mode of the displays assigned to the player:
0 - Igloo 360: display rotation is static and does not follow the player's rotation, optimal settings for a standard 360-degree Igloo structure
1 - Igloo Non-360: display follows the rotation of the player in the y-axis but is static in the x-axis.
2 - Game: display follows the rotation of the player in both x and y-axis.
movementInput: takes an int value to set the player rotation input method:
0 - Standard: player movement is controlled using the default Unity input settings
1 - GyroOSC: player movement is controlled via OSC networks messaging from GyrOSC app http://www.bitshapesoftware.com/instruments/gyrosc/
movementMode: takes an int value to set the player rotation input method:
0 - standard: player movement is controlled using the default Unity input settings
1- gyroOSC: player movement is controlled via OSC networks messaging from GyrOSC app http://www.bitshapesoftware.com/instruments/gyrosc/
runSpeed: takes a float value to set the player speed while running
walkSpeed: takes a float value to set the player speed while walking
smoothTime: takes a float value to set the rotation smoothing amount. 1 is much smoothing, 10 - is no smoothing
crosshairMode: takes an int value to set the player rotation input method:
0 - show: crosshair visible
1 - show on move: crosshair visible when player is moving
2 - hide: crosshair not visible
Network Settings
<NetworkSettings>
<inPort>9007</inPort>
<outPort>9001</outPort>
<outIP>127.0.0.1</outIP>
</NetworkSettings>
inPort: takes an int value to set the input port for network messages
outPort: takes an int value to set the output port for network messages
outIP: takes a string value to set the output IP address for network messages
Display Settings
The Display Settings can be used to define any number of Displays , which positioned and oriented to support any Igloo structure. The outputs of these displays can be shared separately via the textureShareMode options, alternatively, they can be processed into a single output using either useCubemapToEquirectangular or useCompositeTexture
Name: sharing name if textureShareMode is enabled
textureShareMode: when either useCubemapToEquirectangular or useCompositeTexture are enabled, multiple Display textures are composited into a single texture, the method for sharing the resulting texture is specified using an int value:
0 - do not share
1 - share texture via Spout
2 - share texture via NDI
useCubemapToEquirectangular: enables Cubemap to Equirectangular system, assumes Displays have been configured appropriately with Cubemap faces assigned.
equirectangularTexuteRes: output resolution of Cubemap to Equirectangular conversion, supports any aspect ratio
horizontalFOV: Range of angles covered by the render on the horizontal axis. Use 360° for a full render, 180° for a half-sphere, and so on.
verticalFOV: Range of angles covered by the render on the horizontal axis. Use 360° for a full render, 180° for a half-sphere, and so on.
useCompositeTexture: when enabled a single render texture will be created, it’s resolution will be the combined resolution of cameras defined in Displays. This texture will be assigned as the target texture for every camera with appropriate viewport settings.
Note - the setting is ignored if useCubemapToEquirectangular is enabled
useFramepackTopBottom3D: when either useCubemapToEquirectangular or useCompositeTexture are enabled and the 3D is being used, the resulting textures for the left and right eyes can be combined into a single texture, left on top, right on the bottom.
HeadSettings: position and rotation of the Head game object, part of the Igloo Prefab, cameras are parented to this.
DisplayItem
Name: sharing name if textureShareMode is enabled
isRendering: camera component enabled state
fov: camera vertical field of view
is3D: if enabled a 3D camera pair is created for the Display
isRenderTextures: camera is rendered to a target texture, must be enabled to use texture sharing
cubemapFace: should be set if using useCubemapToEquirectangular, specifies which face of the Cubemap the camera is. 0 - left, 1 - front, 2 - right, 3 - back, 4 - down, 5 - up
renderTextureSize: resolution of the camera target texture. if using useCubemapToEquirectangular resolution x and y must be equal.
textureShareMode: when either useCubemapToEquirectangular or useCompositeTexture are enabled, multiple Display textures are composited into a single texture, the method for sharing the resulting texture is specified using an int value:
0 - do not share
1 - share texture via Spout
2 - share texture via NDI
cameraRotation: rotation of the camera
nearClipPlane: camera near clipping plane distance
farClipPlane: camera near clipping plane distance
isFisheye: when enabled, a fisheye shader is applied to the camera.
Note - should be disabled when using useCubemapToEquirectangular
fisheyeStrength: amount of fisheye distortion to apply to each axis
isOffAxis: when enabled, a custom off-axis projection matrix can be used by configuring the following viewport settings.
Note - when offAxis is used the cameraRotation setting is ignored as the custom viewport dictates what the camera will render.
viewportRotation: the rotation of the viewport relative to the Igloo game object
viewportSize: the size of the viewport, units are in meters
viewportPosition: the position of the viewport relative to the Igloo game object, units are in meters
(c) Igloo Vision 2020