Desktop UI - Setting up a Game Engine Layer
This example shows how to configure a Layer in Igloo Core Engine to handle the output from a Unity / Unreal / 3rd Party application which is using the associated Igloo Plugin.
Tutorial Video
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 - Igloo Core Engine 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 Igloo Core Engine, then select the source from the Spout sender list.
As the output format is Equirectangular, applying the TruePerspective Effect will extract the correct perspective view for your screen.
The output can be verified in the Screen tab.
Step 3 - (Optional) Automatic application launch and quit
These settings can be used to automatically launch the Game Engine application when the session is loaded. The application will also be closed when the session is removed.
From the Layer settings Misc tab
File Path
Path to the executable of the application which creates the Spout sender. With the file path 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.
Arguments
This property can be used for passing command line arguments when launching the executable
On add batch | On remove batch
Batch scripts can be run when a layer is added and removed. This is useful for when an application needs to be opened and/or shutdown in a specific way.
An “on remove” script should not launch or let anything launched by “on add” keep running. This could prevent the Igloo Core Engine app from closing properly.
Step 4 - Save as a Session
See - Sessions - Igloo Core Engine Documentation - Confluence (atlassian.net)
Step 5 - Configure Igloo Unity/Unreal Toolkit settings
The following settings are meant as a quick start configuration suggestion, you may need to alter some settings depending on your setup.
Unity
Example IglooSettings.xml files can be found at C:\ProgramData\Igloo Vision\IglooCoreEngine\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>
</DisplaySetting