Skip to content

Warping and blending#

Blending#

If you are only using flat screens and your blending zones are purely horizontal and/or vertical, you can use MiddleVR's viewport blending.

Warping#

MiddleVR supports multiple warping types:

  • Mesh warping: Distorts the render based on a given a 3d file of the geometry.

  • Vioso AnyBlend and ScalableDisplay EasyBlend to support any type of warping and blending. The warping can be updated in realtime depending on the user's eyes position.

Mesh Warping#

Note: Supported renderers: Built-in legacy pipeline, URP & HDRP.

Example: Template configuration: VirtualStage-Curved

  • Start by adding a new Warper Mesh

  • Browse for the geometry file (fbx,...) and set Unit accordingly

  • Assign the warper to a Camera

Requirements:

  • Make sure that you have only one warper per camera or stereo camera.

  • UVs: The 3D model of the warper must have UVs correctly setup.

-- UV (0,0) must correspond to the lower-left corner of the mesh.

-- UV (1,1) must correspond to the top-right corner of the mesh.

-- Make sure that the UVs are correctly snapped to 0 and 1. If the UV values are slightly off (like 0.001 or 0.999), this will result in black lines.

-- If you have multiple meshes, each mesh must have UVs going from (0,0) to (1,1).

  • It is best if the mesh is triangulated although quads should work.

  • You need to have one fbx per display where one display is typically one GPU output.

  • The fbx should represent the actual display surface, so any frame/bezel should simply be represented as a gap between the different fbx.

  • If you have a mix of contiguous displays and displays separated by frame you can have a mix of fbx that are contiguous, as the left/mid/right.fbx in the template configuration "VirtualStage-Curved", and fbx that are not contiguous, like the ceiling.fbx.

Note: If the geometry file is in the same folder or in a subfolder as the configuration file, the configuration file will use a relative path to store the geometry file path. This allows you to move the configuration and geometry files together as long as their relative path stays the same. Otherwise the geometry file will be saved as an absolute path.

Scalable Display#

You can find a template MiddleVR configuration in C:/Program Files/MiddleVR3/data/Configs/Standard/Warping_Scalable-Display.vrx

  • Start by adding a new Scalable Display Warper

  • Enter the configuration file. MiddleVR supports both POL files and OL files. POL files are required for dynamic update of the warping based on the user point of view

  • Assign the warper to a Camera

  • Make sure the Window Mode is set to Compositor and Compositor Mode is Direct3D11

Vioso#

Note: You don't need to have the Vioso Unity integration in your application

Vioso.ini configuration#

Vioso requires a .ini file for its setup. You can find a template here C:/Program Files/MiddleVR3/data/Vioso_MiddleVR_Template.ini

If you have one VWF file for all your projector you only need one .ini file.

If you have one VWF file for each projector you need one .ini file per projector.

More details in the template .ini file.

Note: Make sure all cluster nodes have access to all the .VWF files and .ini files

MiddleVR configuration#

Note: It is advised to create a parent node for all the Vioso Warpers. This node will represent the zero position of the Vioso calibration. This is typically the position of the webcam/camera that was used for the calibration.

You can find a template MiddleVR configuration in C:/Program Files/MiddleVR3/data/Configs/Standard/Warping_Vioso.vrx

  • Start by adding a new Vioso Warper:

  • Enter the configuration file and a channel name. MiddleVR will initialzie Vioso as soon as both a channel name is entered.

  • Assign the warper to a Camera:

  • Make sure the Window Mode is set to Compositor:

Note: If when moving the head node the view is getting darker, you are probably getting out of a "Vioso box". You can change the size of this "box" by changing the autoViewC value in the .ini file. Try values like 2, 5, 10 but try to find optimal values because increasing this value too much will decrease the quality of warping.

Note: Vioso will create is own log file that will be stored in the same folder as MiddleVR logs.

MPCDI#

Note: MPCDI support is currently in beta

MPCDI is a standard for warping/blending calibration files. MiddleVR only supports MPCDI 2.0 Profile "Advanced 3D Simulation".

You can import an MPCDI file in MiddleVR config via the File > Import MPCDI... menu item.

MiddleVR will create MPCDI warpers, cameras and viewport based on the MPCDI file.

It will also load alpha/blending and beta/black images and apply them when Unity renders the cameras.

Note: If the MPCDI file is in the same folder or in a subfolder as the configuration file, the configuration file will use a relative path to store the MPCDI file path. This allows you to move the configuration and MPCDI files together as long as their relative path stays the same. Otherwise the MPCDI file will be saved as an absolute path.