This section provides a guideline on how to integrate VIOSO multi-projector and multi-client calibrations into Unreal Engine.
Unreal Engine uses nDisplay for distributing and synchronizing content over multiple displays and servers. It can integrate VIOSO’s calibration data through the MPCDI or .VWF data formats.
Please note that VIOSO 6 or VIOSO Anyblend VR&SIM v5.1.7+ or VIOSO Integrate Plus v1.1.5+ is required to generate suitable MPCDI/VWF files!
Workflow in the steps below:
Table of Contents
1. In VIOSO Core
Create a camera based 3D calibration with VIOSO 6 or Anyblend VR&SIM (version 5.1.7 or later) or VIOSO Integrate Plus (version 1.1.5 or later) following the workflow for a calibration of a 3D model based screen: 3D calibration
Please note:
Anyblend or Integrate Standard is not sufficient.
After a successful 3D calibration of your displays, export your mapping in the VESA MPCDI v2 format. From the menu bar, go to File > Export Mapping:
- Select your compound display.
- Select the VESA MPCDI v2 format.
- Make sure the 3D box is checked, and set Blend Bit depth to Grey8 or Grey16
- Choose a file name and path.
- Click on Export.
The export will be a folder containing an XML document along with a set of PFM
files and their respective blending masks as PNGs
.
2. In Unreal Engine
2.1 versions 4.24 – 4.26
a. Workflow
Please follow the Quick Start Guide to get nDisplay up and running.
Step 1 – Set up Your Project for nDisplay
Step 2 – Set up the Configuration File
This is where the VIOSO calibration is integrated.
After you have configured your clusters, windows, and viewports according to the config file reference, you need to set your projection type to “mpcdi” and specify your .pfm and blending masks paths for each viewport in the format below:
[projection] id=proj_pfm_1 type="mpcdi" pfm= "..\..pfm" alpha="..\..png"
Optionally, you can add these parameters to the above line:
Parameter | Description |
---|---|
alpha_gamma |
Provides a multiplier for the alpha gamma of the blending mask. Typically =2 |
scale |
The scaling factor to use for the projection. |
origin |
The ID of a [scene_node] configuration section that defines the starting point for the projection. This maps the frame of reference defined in the calibration to the virtual space in your Unreal Engine Level. |
Step 3 – Package and Deploy
Step 4 – Launch all Cluster Nodes
b. Example Configurations
2.2 versions 4.27.x – 5
a. Workflow
Unreal Engine switched the nDisplay system to Switchboard. The workflow for VIOSO warp and blend remains fairly similar. Once you setup your project and have it up and running on all clusters and displays, the calibration files can now be added using the user interface of the 3D config Editor.
In the details inspector of each viewport, go to Configuration > Projection Policy
> choose VIOSO
or MPCDI
(type explicit pfm
) and specify the calibration file paths.
Type | Parameter | Description |
---|---|---|
VIOSO | file |
Calibration file (.vwf) exported from VIOSO. If it contains multiple mappings, split it into separate files. |
VIOSO | base |
transformation matrix transforming from VIOSO coordinates to UE coordinates. Units should match orientation and size (mm/m) of the 3d model. Last raw defines the pivot of a moving platform, column major format, ex: [1000 0 0 0] [0 1000 0 0] [0 0 1000 0] [0 0 1000 1] |
VIOSO | origin |
The ID of a [scene_node] configuration section that defines the starting point for the projection. This maps the frame of reference defined in the calibration to the virtual space in your Unreal Engine Level. You can use this node as an eyepoint offset to the 3D model origin you used in the calibration. |
MPCDI | pfm |
Geometry file exported in the VIOSO mpcdi folder |
MPCDI | png |
Blending file exported in the VIOSO mpcdi folder |
b. Example Configurations
3. Tips & Notes
- Make sure all paths and file names of your configuration contain no spaces.
- Carefully verify the syntax of your
.cfg /.nDisplay
file. A single typo may cause the application to crash at start-up. - Check the log files generated in
[YourBuildPath]\nDisplay\Saved\Logs
to monitor the events and errors of the application. - Make sure that the Windows account you intend to use on the master computer has administrative rights on all computers you will use in the nDisplay network.
- Make sure that all computers you want to use in the nDisplay network can receive TCP/IP communications over ports 41000, 41001, 41002, and 41003.
(You can use different ports instead; see Changing nDisplay Communication Ports) - Eyepoint Position: you can define the initial eyepoint position relative to your 3D model center by adding an “origin” param in the projection definition (MPCDI or VIOSO) and then defining its coordinates in a [scene node]. This origin is relative to the center of the 3D model used for the calibration.
-
- Example:
[scene_node] id="origin_node" loc="X=0.Y=0,Z=10" rot="P=0,Y=0,R=0"
- Example:
-
- MPCDI vs VWF formats:
VIOSO also has a native integration into nDisplay (UE v4.26+), allowing you to use the (.vwf) export format instead of MPCDI in the projection policy. This table summarizes the main differences and advantages of choosing between the two formats:
.mpcdi | .vwf | |
Unreal versions | v4.24 and later | v4.26 and later |
DirectX12 support | ✓ | x |
Mesh preview inside Unreal Engine | ✓ | x |
Calibration Type | 3D | 2D |
Color Adjustment, RGB blending/matching | x | ✓ |
Overshoot masking | must manually draw masks | automatically masked from the warping result |
Alpha/Gamma Blending factor | adjustable in the nDisplay config file Recommended=2 |
adjustable in the VIOSO export window Recommended=2 |