These examples are built in the Switchboard environment for nDisplay.
- To view the configurations properly, use notepad++ in “json” language.
- To work exclusively on the .ndisplay file instead of the .uasset in the UE editor, make sure to empty the parameter:
"assetPath": ""
- To enable movement control via WASD and mouse, set
bFollowLocalPlayerCamera
to true. - To use offsets in windows and viewports, make sure to set the node’s
fullscreen
parameter to false. - If using the (VWF) format, make sure switchboard is set to Directx 11.
- If using remote desktop control (e.g Teamviewer), make sure its not modifying window resolutions and coordinates (scaling, fit to screen..etc).
- In the log file, a warning might show “Could not compute view parameters for <vp_0>” even if views are output correctly. This is a known logging bug.
Table of Contents
Multi-viewport (3D)
CAVE: Single Server – 3x projectors (mosaic) [via vwf]
CAVE setup:
- 1x FHD 1920×1080 monitor: skipped by nDisplay
- 1x Mosaic of 3x FHD PJs: 5760×1080
- Custom eyepoint : z=180 cm
{ "nDisplay": { "description": "", "version": "5.00", "assetPath": "", "misc": { "bFollowLocalPlayerCamera": true, "bExitOnEsc": true, "bOverrideViewportsFromExternalConfig": false }, "scene": { "xforms": { "nDisplayXform": { "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } }, "ViosoOrigin": { "parentId": "", "location": { "x": 0, "y": 0, "z": 180 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } }, "cameras": { "DefaultViewPoint": { "interpupillaryDistance": 6.4000000953674316, "swapEyes": false, "stereoOffset": "none", "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } }, "screens": { "nDisplayScreen": { "size": { "width": 200, "height": 112.5 }, "parentId": "nDisplayXform", "location": { "x": 100, "y": 0, "z": 50 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } } }, "cluster": { "primaryNode": { "id": "Node_0", "ports": { "ClusterSync": 41001, "ClusterEventsJson": 41003, "ClusterEventsBinary": 41004 } }, "sync": { "renderSyncPolicy": { "type": "ethernet", "parameters": { } }, "inputSyncPolicy": { "type": "ReplicatePrimary", "parameters": { } } }, "network": { "ConnectRetriesAmount": "300", "ConnectRetryDelay": "1000", "GameStartBarrierTimeout": "18000000", "FrameStartBarrierTimeout": "1800000", "FrameEndBarrierTimeout": "1800000", "RenderSyncBarrierTimeout": "1800000" }, "failover": { "failoverPolicy": "Disabled" }, "nodes": { "Node_0": { "host": "127.0.0.1", "sound": true, "fullScreen": false, "window": { "x": 1920, "y": 0, "w": 5760, "h": 1080 }, "postprocess": { }, "viewports": { "VP_0": { "camera": "DefaultViewPoint", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "overscan": { "bEnabled": false, "mode": "percent", "left": 0, "right": 0, "top": 0, "bottom": 0, "oversize": true }, "region": { "x": 0, "y": 0, "w": 1920, "h": 1080 }, "projectionPolicy": { "type": "VIOSO", "parameters": { "base": "[1000 0 0 0] [0 1000 0 0] [0 0 1000 0] [0 0 1000 1] ", "file": "D:/Calib/Export/Mosaic/3D/left.vwf", "origin": "ViosoOrigin" } } }, "VP_1": { "camera": "DefaultViewPoint", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "overscan": { "bEnabled": false, "mode": "percent", "left": 0, "right": 0, "top": 0, "bottom": 0, "oversize": true }, "region": { "x": 1920, "y": 0, "w": 1920, "h": 1080 }, "projectionPolicy": { "type": "VIOSO", "parameters": { "base": "[1000 0 0 0] [0 1000 0 0] [0 0 1000 0] [0 0 1000 1] ", "file": "D:/Calib/Export/Mosaic/3D/middle.vwf", "origin": "ViosoOrigin" } } }, "VP_2": { "camera": "DefaultViewPoint", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "overscan": { "bEnabled": false, "mode": "percent", "left": 0, "right": 0, "top": 0, "bottom": 0, "oversize": true }, "region": { "x": 3840, "y": 0, "w": 1920, "h": 1080 }, "projectionPolicy": { "type": "VIOSO", "parameters": { "base": "[1000 0 0 0] [0 1000 0 0] [0 0 1000 0] [0 0 1000 1] ", "file": "D:/Calib/Export/Mosaic/3D/right.vwf", "origin": "ViosoOrigin" } } } }, "outputRemap": { "bEnable": false, "dataSource": "mesh", "staticMeshAsset": "", "externalFile": "" } } } }, "customParameters": { }, "diagnostics": { "simulateLag": false, "minLagTime": 0.0099999997764825821, "maxLagTime": 0.30000001192092896 } } }
Panadome: Single Server – 3x projectors (mosaic) [via mpcdi]
Panadome Setup:
- 2x FullHD Monitors: 1920×1080 : To be skipped by nDisplay.
- 1x Portrait Mosaic of 3x Projectors: 4800×2560 : Target display to run the application.
{ "nDisplay": { "description": "", "version": "5.00", "assetPath": "", "misc": { "bFollowLocalPlayerCamera": true, "bExitOnEsc": true, "bOverrideViewportsFromExternalConfig": false }, "scene": { "xforms": { "nDisplayXform": { "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } }, "cameras": { "DefaultViewPoint": { "interpupillaryDistance": 6.4000000953674316, "swapEyes": false, "stereoOffset": "none", "parentId": "", "location": { "x": -20, "y": 0, "z": 50 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } }, "screens": { "nDisplayScreen": { "size": { "width": 200, "height": 112.5 }, "parentId": "nDisplayXform", "location": { "x": 100, "y": 0, "z": 50 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } } }, "cluster": { "primaryNode": { "id": "Node_0", "ports": { "ClusterSync": 41001, "ClusterEventsJson": 41003, "ClusterEventsBinary": 41004 } }, "sync": { "renderSyncPolicy": { "type": "ethernet", "parameters": { } }, "inputSyncPolicy": { "type": "ReplicatePrimary", "parameters": { } } }, "network": { "ConnectRetriesAmount": "300", "ConnectRetryDelay": "1000", "GameStartBarrierTimeout": "18000000", "FrameStartBarrierTimeout": "1800000", "FrameEndBarrierTimeout": "1800000", "RenderSyncBarrierTimeout": "1800000" }, "failover": { "failoverPolicy": "Disabled" }, "nodes": { "Node_0": { "host": "127.0.0.1", "sound": true, "fullScreen": false, "window": { "x": 3840, "y": 0, "w": 4800, "h": 2560 }, "postprocess": { }, "viewports": { "VP_0": { "camera": "DefaultViewPoint", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "overscan": { "bEnabled": false, "mode": "percent", "left": 0, "right": 0, "top": 0, "bottom": 0, "oversize": true }, "region": { "x": 0, "y": 0, "w": 1600, "h": 2560 }, "projectionPolicy": { "type": "MPCDI", "parameters": { "MPCDIType": "Explicit PFM", "file": "", "buffer": "", "region": "", "origin": "", "EnablePreview": "", "alpha_gamma": "0.5", "scale": "1.0", "pfm": "C:/Users/Public/Documents/VIOSO/Anyblend/Export/3D/Display0.pfm", "alpha": "C:/Users/Public/Documents/VIOSO/Anyblend/Export/3D/Display0.png", "beta": "", "ue_space": "" } } }, "VP_2": { "camera": "DefaultViewPoint", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "overscan": { "bEnabled": false, "mode": "percent", "left": 0, "right": 0, "top": 0, "bottom": 0, "oversize": true }, "region": { "x": 3200, "y": 0, "w": 1600, "h": 2560 }, "projectionPolicy": { "type": "MPCDI", "parameters": { "MPCDIType": "Explicit PFM", "file": "", "buffer": "", "region": "", "origin": "", "EnablePreview": "", "alpha_gamma": "0.5", "scale": "1.0", "pfm": "C:/Users/Public/Documents/VIOSO/Anyblend/Export/3D/Display2.pfm", "alpha": "C:/Users/Public/Documents/VIOSO/Anyblend/Export/3D/Display2.png", "beta": "", "ue_space": "" } } }, "VP_1": { "camera": "DefaultViewPoint", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "overscan": { "bEnabled": false, "mode": "percent", "left": 0, "right": 0, "top": 0, "bottom": 0, "oversize": true }, "region": { "x": 1600, "y": 0, "w": 1600, "h": 2560 }, "projectionPolicy": { "type": "MPCDI", "parameters": { "MPCDIType": "Explicit PFM", "file": "", "buffer": "", "region": "", "origin": "", "EnablePreview": "", "alpha_gamma": "0.5", "scale": "1.0", "pfm": "C:/Users/Public/Documents/VIOSO/Anyblend/Export/3D/Display1.pfm", "alpha": "C:/Users/Public/Documents/VIOSO/Anyblend/Export/3D/Display1.png", "beta": "", "ue_space": "" } } } }, "outputRemap": { "bEnable": false, "dataSource": "mesh", "staticMeshAsset": "", "externalFile": "" } } } }, "customParameters": { }, "diagnostics": { "simulateLag": false, "minLagTime": 0.0099999997764825821, "maxLagTime": 0.30000001192092896 } } }
DOME: 5x Servers – 5x projectors [via MPCDI]
{ "nDisplay": { "description": "nDisplay configuration", "version": "5.00", "assetPath": "", "misc": { "bFollowLocalPlayerCamera": true, "bExitOnEsc": true }, "scene": { "xforms": { }, "cameras": { "DefaultViewPoint": { "interpupillaryDistance": 6.4000000953674316, "swapEyes": false, "stereoOffset": "none", "parentId": "", "location": { "x": 0, "y": 0, "z": 50 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } }, "screens": { "Display0": { "size": { "width": 100, "height": 100 }, "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } }, "Display1": { "size": { "width": 100, "height": 100 }, "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } }, "Display2": { "size": { "width": 100, "height": 100 }, "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } }, "Display3": { "size": { "width": 100, "height": 100 }, "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } }, "Display4": { "size": { "width": 100, "height": 100 }, "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } }, "scr_0": { "size": { "width": 100, "height": 100 }, "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } } }, "cluster": { "primaryNode": { "id": "node_0", "ports": { "ClusterSync": 41001, "RenderSync": 41002, "ClusterEventsJson": 41003, "ClusterEventsBinary": 41004 } }, "sync": { "renderSyncPolicy": { "type": "ethernet", "parameters": { } }, "inputSyncPolicy": { "type": "ReplicatePrimary", "parameters": { } } }, "network": { "ConnectRetriesAmount": "300", "ConnectRetryDelay": "1000", "GameStartBarrierTimeout": "18000000", "FrameStartBarrierTimeout": "1800000", "FrameEndBarrierTimeout": "1800000", "RenderSyncBarrierTimeout": "1800000" }, "nodes": { "node_0": { "host": "10.0.10.5", "sound": true, "fullScreen": false, "window": { "x": 0, "y": 0, "w": 1920, "h": 1080 }, "postprocess": { }, "viewports": { "vp_0": { "camera": "", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "overscan": { "bEnabled": false, "mode": "percent", "left": 0, "right": 0, "top": 0, "bottom": 0, "oversize": true }, "region": { "x": 0, "y": 0, "w": 1920, "h": 1080 }, "projectionPolicy": { "type": "simple", "parameters": { "screen": "scr_0" } } } }, "outputRemap": { "bEnable": false, "dataSource": "mesh", "staticMeshAsset": "", "externalFile": "" } }, "node_1": { "host": "10.0.10.21", "sound": false, "fullScreen": false, "window": { "x": 1920, "y": 0, "w": 2560, "h": 1600 }, "postprocess": { }, "viewports": { "Display0": { "camera": "", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "region": { "x": 0, "y": 0, "w": 2560, "h": 1600 }, "projectionPolicy": { "type": "MPCDI", "parameters": { "MPCDIType": "Explicit PFM", "file": "", "buffer": "", "region": "", "EnablePreview": "", "alpha_gamma": "1.0", "scale": "1.0", "pfm": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.21/Display0.pfm", "alpha": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.21/Display0.png", "beta": "", "ue_space": "" } } } }, "outputRemap": { "bEnable": false, "dataSource": "mesh", "staticMeshAsset": "", "externalFile": "" } }, "node_2": { "host": "10.0.10.22", "sound": false, "fullScreen": false, "window": { "x": 1920, "y": 0, "w": 2560, "h": 1600 }, "postprocess": { }, "viewports": { "Display1": { "camera": "", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "region": { "x": 0, "y": 0, "w": 2560, "h": 1600 }, "projectionPolicy": { "type": "MPCDI", "parameters": { "MPCDIType": "Explicit PFM", "file": "", "buffer": "", "region": "", "EnablePreview": "", "alpha_gamma": "1.0", "scale": "1.0", "pfm": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.22/Display0.pfm", "alpha": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.22/Display0.png", "beta": "", "ue_space": "" } } } }, "outputRemap": { "bEnable": false, "dataSource": "mesh", "staticMeshAsset": "", "externalFile": "" } }, "node_3": { "host": "10.0.10.23", "sound": false, "fullScreen": false, "window": { "x": 1920, "y": 0, "w": 2560, "h": 1600 }, "postprocess": { }, "viewports": { "Display2": { "camera": "", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "region": { "x": 0, "y": 0, "w": 2560, "h": 1600 }, "projectionPolicy": { "type": "MPCDI", "parameters": { "MPCDIType": "Explicit PFM", "file": "", "buffer": "", "region": "", "EnablePreview": "", "alpha_gamma": "1.0", "scale": "1.0", "pfm": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.23/Display0.pfm", "alpha": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.23/Display0.png", "beta": "", "ue_space": "" } } } }, "outputRemap": { "bEnable": false, "dataSource": "mesh", "staticMeshAsset": "", "externalFile": "" } }, "node_4": { "host": "10.0.10.24", "sound": false, "fullScreen": false, "window": { "x": 1920, "y": 0, "w": 2560, "h": 1600 }, "postprocess": { }, "viewports": { "Display3": { "camera": "", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "region": { "x": 0, "y": 0, "w": 2560, "h": 1600 }, "projectionPolicy": { "type": "MPCDI", "parameters": { "MPCDIType": "Explicit PFM", "file": "", "buffer": "", "region": "", "EnablePreview": "", "alpha_gamma": "1.0", "scale": "1.0", "pfm": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.24/Display0.pfm", "alpha": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.24/Display0.png", "beta": "", "ue_space": "" } } } }, "outputRemap": { "bEnable": false, "dataSource": "mesh", "staticMeshAsset": "", "externalFile": "" } }, "node_5": { "host": "10.0.10.25", "sound": false, "fullScreen": false, "window": { "x": 1920, "y": 0, "w": 2560, "h": 1600 }, "postprocess": { }, "viewports": { "Display4": { "camera": "", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "region": { "x": 0, "y": 0, "w": 2560, "h": 1600 }, "projectionPolicy": { "type": "MPCDI", "parameters": { "MPCDIType": "Explicit PFM", "file": "", "buffer": "", "region": "", "EnablePreview": "", "alpha_gamma": "1.0", "scale": "1.0", "pfm": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.25/Display0.pfm", "alpha": "S:/KALIBRIERUNGEN/Master/Export/calib4unreal/MPCDI_20220530_10.0.10.25/Display0.png", "beta": "", "ue_space": "" } } } }, "outputRemap": { "bEnable": false, "dataSource": "mesh", "staticMeshAsset": "", "externalFile": "" } } } }, "customParameters": { "SampleArg1": "SampleVal1", "SampleArg2": "SampleVal2" }, "diagnostics": { "simulateLag": false, "minLagTime": 0, "maxLagTime": 0.5 } } }
Single-viewport (2D)
Single Server – 3x projectors (mosaic) [via 2D vwf]
Panadome Setup: this 2D example shows the result of a 2D/manual calibration, blending one single texture accross all displays in a single viewport.
- 2x FullHD Monitors: 1920×1080 : To be skipped by nDisplay.
- 1x Portrait Mosaic of 3x Projectors: 4800×2560 : Target display to run the application.
{ "nDisplay": { "description": "", "version": "5.00", "assetPath": "", "misc": { "bFollowLocalPlayerCamera": true, "bExitOnEsc": true, "bOverrideViewportsFromExternalConfig": false }, "scene": { "xforms": { "nDisplayXform": { "parentId": "", "location": { "x": 0, "y": 0, "z": 0 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } }, "cameras": { "DefaultViewPoint": { "interpupillaryDistance": 6.4000000953674316, "swapEyes": false, "stereoOffset": "none", "parentId": "", "location": { "x": -20, "y": 0, "z": 50 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } }, "screens": { "nDisplayScreen": { "size": { "width": 200, "height": 112.5 }, "parentId": "nDisplayXform", "location": { "x": 100, "y": 0, "z": 50 }, "rotation": { "pitch": 0, "yaw": 0, "roll": 0 } } } }, "cluster": { "primaryNode": { "id": "Node_0", "ports": { "ClusterSync": 41001, "ClusterEventsJson": 41003, "ClusterEventsBinary": 41004 } }, "sync": { "renderSyncPolicy": { "type": "ethernet", "parameters": { } }, "inputSyncPolicy": { "type": "ReplicatePrimary", "parameters": { } } }, "network": { "ConnectRetriesAmount": "300", "ConnectRetryDelay": "1000", "GameStartBarrierTimeout": "18000000", "FrameStartBarrierTimeout": "1800000", "FrameEndBarrierTimeout": "1800000", "RenderSyncBarrierTimeout": "1800000" }, "failover": { "failoverPolicy": "Disabled" }, "nodes": { "Node_0": { "host": "127.0.0.1", "sound": true, "fullScreen": false, "window": { "x": 3840, "y": 0, "w": 4800, "h": 2560 }, "postprocess": { }, "viewports": { "VP_0": { "camera": "DefaultViewPoint", "bufferRatio": 1, "gPUIndex": -1, "allowCrossGPUTransfer": false, "isShared": false, "overscan": { "bEnabled": false, "mode": "percent", "left": 0, "right": 0, "top": 0, "bottom": 0, "oversize": true }, "region": { "x": 0, "y": 0, "w": 4800, "h": 2560 }, "projectionPolicy": { "type": "VIOSO", "parameters": { "base": "[1000 0 0 0] [0 1000 0 0] [0 0 1000 1000] [0 0 0 1] ", "file": "C:/Users/Public/Documents/VIOSO/Anyblend/Export/2d-nosplit.vwf", "origin": "nDisplayXform" } } } }, "outputRemap": { "bEnable": false, "dataSource": "mesh", "staticMeshAsset": "", "externalFile": "" } } } }, "customParameters": { }, "diagnostics": { "simulateLag": false, "minLagTime": 0.0099999997764825821, "maxLagTime": 0.30000001192092896 } } }