This example shows how to configure a Layer in ICE to handle the output from a Unity / Unreal / 3rd Party application which is using the associated Igloo Plugin.
Step 1 - Game Engine Plugin configuration
The Game Engine plugin settings should be configured with the following optimal settings
Output a single sender in Equirectangular format. Refer to the appropriate plugin documentation.
Some apps which use a very old version of the plugin may not be able to output in Equirectangular format, in this case you will need to configure a Composition Layer to handle the multiple camera sources
Give the sender an appropriate name
Step 2 - ICE Layer Configuration
Create a Layer which matches the Output method of the Game Engine source, in this example we will assume Spout is being used.
Give the Layer an appropriate name
Start the application to make the Spout output available to ICE, then select to source from the Spout sender list
As the output format is Equirectangular, applying the TruePerspective Effect will extract the correct perspective view for our screen.
The output can be verified in the Screen tab
Step 3 - (Optional) Automatic application launch and quit
From the Layer settings Misc tab, set the Filepath to be path to the executable of the application which is creates the Spout sender.
With the filepath set, whenever this Layer is added to the workspace, the executable will be opened. When the layer is removed from the workspace the executable will be closed.
Command line arguments can also be specified for launching the executable with.
Step 4 - Save as a Session
See - Sessions - ICE Documentation - Confluence (atlassian.net)
Step 5 - Configure Igloo Unity/Unreal Toolkit settings
Unity
Player settings
<rotationInput>1</rotationInput> <rotationMode>0</rotationMode> <movementInput>0</movementInput>
Display Settings
<DisplaySettings Name="YourApplicationNameHere"> <textureShareMode>1</textureShareMode> <useCubemapToEquirectangular>true</useCubemapToEquirectangular> <equirectangularTexuteRes x="8000" y="4000" /> <horizontalFOV>360</horizontalFOV> <verticalFOV>180</verticalFOV> <useCompositeTexture>false</useCompositeTexture> <useFramepackTopBottom3D>false</useFramepackTopBottom3D> <useWarpBlend>false</useWarpBlend> <HeadSettings> <headPositionOffset x="0" y="1.8" z="0" /> <headRotationOffset x="0" y="0" z="0" /> <leftEyeOffset x="-0.05" y="0" z="0" /> <rightEyeOffset x="0.05" y="0" z="0" /> <headtracking>false</headtracking> <headTrackingInput>0</headTrackingInput> </HeadSettings> <Displays> <DisplayItem Name="IglooUnity1"> <isRendering>true</isRendering> <fov>90</fov> <is3D>false</is3D> <isRenderTextures>true</isRenderTextures> <cubemapFace>0</cubemapFace> <renderTextureSize x="2000" y="2000" /> <textureShareMode>0</textureShareMode> <cameraRotation x="0" y="0" z="0" /> <nearClipPlane>0.01</nearClipPlane> <farClipPlane>1000</farClipPlane> <isFisheye>false</isFisheye> <fisheyeStrength x="0" y="0" /> <isOffAxis>false</isOffAxis> <viewportRotation x="0" y="0" z="0" /> <viewportSize x="0" y="0" /> <viewportPosition x="0" y="0" z="0" /> <targetDisplay>-1</targetDisplay> </DisplayItem> <DisplayItem Name="IglooUnity2"> <isRendering>true</isRendering> <fov>90</fov> <is3D>false</is3D> <isRenderTextures>true</isRenderTextures> <cubemapFace>1</cubemapFace> <renderTextureSize x="2000" y="2000" /> <textureShareMode>0</textureShareMode> <cameraRotation x="0" y="90" z="0" /> <nearClipPlane>0.01</nearClipPlane> <farClipPlane>1000</farClipPlane> <isFisheye>false</isFisheye> <fisheyeStrength x="0" y="0" /> <isOffAxis>false</isOffAxis> <viewportRotation x="0" y="0" z="0" /> <viewportSize x="0" y="0" /> <viewportPosition x="0" y="0" z="0" /> <targetDisplay>-1</targetDisplay> </DisplayItem> <DisplayItem Name="IglooUnity3"> <isRendering>true</isRendering> <fov>90</fov> <is3D>false</is3D> <isRenderTextures>true</isRenderTextures> <cubemapFace>2</cubemapFace> <renderTextureSize x="2000" y="2000" /> <textureShareMode>0</textureShareMode> <cameraRotation x="0" y="180" z="0" /> <nearClipPlane>0.01</nearClipPlane> <farClipPlane>1000</farClipPlane> <isFisheye>false</isFisheye> <fisheyeStrength x="0" y="0" /> <isOffAxis>false</isOffAxis> <viewportRotation x="0" y="0" z="0" /> <viewportSize x="0" y="0" /> <viewportPosition x="0" y="0" z="0" /> <targetDisplay>-1</targetDisplay> </DisplayItem> <DisplayItem Name="IglooUnity4"> <isRendering>true</isRendering> <fov>90</fov> <is3D>false</is3D> <isRenderTextures>true</isRenderTextures> <cubemapFace>3</cubemapFace> <renderTextureSize x="2000" y="2000" /> <textureShareMode>0</textureShareMode> <cameraRotation x="0" y="270" z="0" /> <nearClipPlane>0.01</nearClipPlane> <farClipPlane>1000</farClipPlane> <isFisheye>false</isFisheye> <fisheyeStrength x="0" y="0" /> <isOffAxis>false</isOffAxis> <viewportRotation x="0" y="0" z="0" /> <viewportSize x="0" y="0" /> <viewportPosition x="0" y="0" z="0" /> <targetDisplay>-1</targetDisplay> </DisplayItem> <DisplayItem Name="IglooUnity5"> <isRendering>true</isRendering> <fov>90</fov> <is3D>false</is3D> <isRenderTextures>true</isRenderTextures> <cubemapFace>4</cubemapFace> <renderTextureSize x="2000" y="2000" /> <textureShareMode>0</textureShareMode> <cameraRotation x="-90" y="0" z="0" /> <nearClipPlane>0.01</nearClipPlane> <farClipPlane>1000</farClipPlane> <isFisheye>false</isFisheye> <fisheyeStrength x="0" y="0" /> <isOffAxis>false</isOffAxis> <viewportRotation x="0" y="0" z="0" /> <viewportSize x="0" y="0" /> <viewportPosition x="0" y="0" z="0" /> <targetDisplay>-1</targetDisplay> </DisplayItem> <DisplayItem Name="IglooUnity6"> <isRendering>true</isRendering> <fov>90</fov> <is3D>false</is3D> <isRenderTextures>true</isRenderTextures> <cubemapFace>5</cubemapFace> <renderTextureSize x="2000" y="2000" /> <textureShareMode>0</textureShareMode> <cameraRotation x="90" y="0" z="0" /> <nearClipPlane>0.01</nearClipPlane> <farClipPlane>1000</farClipPlane> <isFisheye>false</isFisheye> <fisheyeStrength x="0" y="0" /> <isOffAxis>false</isOffAxis> <viewportRotation x="0" y="0" z="0" /> <viewportSize x="0" y="0" /> <viewportPosition x="0" y="0" z="0" /> <targetDisplay>-1</targetDisplay> </DisplayItem> </Displays> </DisplaySettings>