Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ XR Studio

Example: Stereoscopic and Mono Mixed Viewports

  • Last UpdatedApr 27, 2026
  • 3 minute read

This is an example of a RenderSetup XML file using two viewports to render left and right eyes perspectives in two separate views, that combined allow to achieve stereoscopic vision, and two additional center camera views placed at the side of the stereoscopic ones

Notice the parameter cameraMode is used to define what eye to render in each viewport.

cameraMode

Allows you to select what eye perspective to render in the viewport, taking into account cameraConvergenceType, global eyes separation and convergence parameters, supported values are:

  • left_eye: render the left eye perspective.

  • right_eye: render the right eye perspective.

  • setting any value different from left_eye or right_eye or not setting this parameter results in the default center camera to be used for rendering.

Limitations

  • Only supported in dualhead sidebyside rendering

    ThecameraMode parameter is only supported in dualhead sidebyside rendering.

    To enable dualhead sidebyside rendering on a rendersetup XML, it is necessary to name the file by including the words "dualhead" and "sidebyside" in its filename (for example, rendersetup_fgi_4screens_dualhead_sidebyside.xml).

    The dualhead and sidebyside modes detection is currently handled by naming convention.

  • Viewports naming convention for dualhead

    The dualhead rendering imposes the following constraints, that must be respected:

    • A layout named DEFAULT_VIEWPORT must exist.

    • A layout named RIGHT_VIEWPORT must exist.

Example description

This example defines four viewports lined in a single row:

[SX_VIEWPORT] [DEFAULT_VIEWPORT] [RIGHT_VIEWPORT] [DX_VIEWPORT]

DEFAULT_VIEWPORT and RIGHT_VIEWPORT are used to render left and right eyes respectively.

Due to current naming convention limitations two viewports nby these names must exist in the rendersetup xml when using dualhead rendering. Therefore using these two viewports to render left and right eyes cameras is a common practice.

SX_VIEWPORT and RIGHT_VIEWPORT are two generic viewports, rendering the center camera (cameraMode parameter is not specified). Aside from DEFAULT_VIEWPORT and RIGHT_VIEWPORT, additional viewports can have any name.

Filename

rendersetup_fgi_4screens_dualhead_sidebyside.xml

Code example

<?xml version="1.0" encoding="utf-8" ?>

<renderSetup version="1.0">

<Viewport name="SX_VIEWPORT">

<hwnd index="0"/>

<pos value="0 0"/>

<size value="0.25 1"/>

<outputLayer value="SX_SCENE_LAYER"/>

<layers>

<Layer name="SX_SCENE_LAYER" type="sceneFGI">

<fgiConfig file="./GameData/hdr/fgi_default.xml"/>

<postProcess id="SX_POSTPROCESS" file="./GameData/hdr/post_process_default.xml"/>

<sceneName value="_all_"/>

<cameraName value="ft_player0_camera"/>

</Layer>

<Layer name="SX_2D_LAYER" type="2dOverlay">

<layer2DName value="SX_2D_LAYER_MAIN"/>

<input1 value="SX_SCENE_LAYER"/>

</Layer>

</layers>

</Viewport>

<Viewport name="DEFAULT_VIEWPORT">

<hwnd index="0"/>

<pos value="0.25 0.0"/>

<size value="0.25 1"/>

<outputLayer value="DEFAULT_2D_LAYER"/>

<cameraMode value="left_eye"/>

<layers>

<Layer name="DEFAULT_SCENE_LAYER" type="sceneFGI">

<fgiConfig file="./GameData/hdr/fgi_default.xml"/>

<postProcess id="DEFAULT_POSTPROCESS" file="./GameData/hdr/post_process_default.xml"/>

<sceneName value="_all_"/>

<cameraName value="ft_player0_camera"/>

</Layer>

<Layer name="DEFAULT_2D_LAYER" type="2dOverlay">

<layer2DName value="DEFAULT_2D_LAYER_MAIN"/>

<input1 value="DEFAULT_SCENE_LAYER"/>

</Layer>

</layers>

</Viewport>

<Viewport name="RIGHT_VIEWPORT">

<hwnd index="0"/>

<pos value="0.5 0"/>

<size value="0.25 1"/>

<outputLayer value="RIGHT_2D_LAYER"/>

<cameraMode value="right_eye"/>

<layers>

<Layer name="RIGHT_SCENE_LAYER" type="sceneFGI">

<fgiConfig file="./GameData/hdr/fgi_default.xml"/>

<postProcess id="RIGHT_POSTPROCESS" file="./GameData/hdr/post_process_default.xml"/>

<sceneName value="_all_"/>

<cameraName value="ft_player0_camera"/>

</Layer>

<Layer name="RIGHT_2D_LAYER" type="2dOverlay">

<layer2DName value="DEFAULT_2D_LAYER_MAIN"/>

<input1 value="RIGHT_SCENE_LAYER"/>

</Layer>

</layers>

</Viewport>

<Viewport name="DX_VIEWPORT">

<hwnd index="0"/>

<pos value="0.75 0"/>

<size value="0.25 1"/>

<outputLayer value="DX_SCENE_LAYER"/>

<layers>

<Layer name="DX_SCENE_LAYER" type="sceneFGI">

<fgiConfig file="./GameData/hdr/fgi_default.xml"/>

<postProcess id="DX_POSTPROCESS" file="./GameData/hdr/post_process_default.xml"/>

<sceneName value="_all_"/>

<cameraName value="ft_player0_camera"/>

</Layer>

<Layer name="DX_2D_LAYER" type="2dOverlay">

<layer2DName value="DX_2D_LAYER_MAIN"/>

<input1 value="DX_SCENE_LAYER"/>

</Layer>

</layers>

</Viewport>

</renderSetup>

Image example

cavePoints setup

Note that in the displayed image, SX_VIEWPORT and DX_VIEWPORT are rotated in left and right directions. This is done by setting their cavePoints property.

Due to a current limitation, it is not possible to set the parameters caveEnable and cavePoints by the render setup xml when using dualhead rendering. To achieve the displayed result, it is necessary to enable cave mode and set the cavepoints to the desired viewports by script.

The following script shows how to enable cave mode and set cave points on SX_VIEWPORT and DX_VIEWPORT.

<Coroutine name="cmd_setCavePoints" execute="true">

<wait condition="[@cmd_setCavePoints.timeFromWait]&lt;0.1" />"[@cmd_setCavePoints.timeFromWait]&lt;0.1" />

<set name="viewport_SX_VIEWPORT.caveEnable" value="True" />

<set name="viewport_SX_VIEWPORT.cavePoints" value="-1 -1 -1,-1 -1 1,-1 1 -1" />

<set name="viewport_DX_VIEWPORT.caveEnable" value="True" />

<set name="viewport_DX_VIEWPORT.cavePoints" value="1 -1 1,1 -1 -1,1 1 1" />

</Coroutine>

In This Topic
Related Links