nDisplay Integration in a Shipped Unreal Engine Project

Hello everyone!

I’m currently working on launching a shipped project with an nDisplay setup, but all I get is a persistent black screen, even though it runs perfectly within the editor. :sweat_smile: I’d really appreciate any insights or suggestions from anyone who’s experienced similar issues!

Here is my .bat file that is used to launch everything :

@echo off
start Ndisplay_Simple.exe -game -messaging -dc_cluster -nosplash -fixedseed -NoVerifyGC -noxrstereo -xrtrackingonly -RemoteControlIsHeadless -StageFriendlyName="Node_0" -MaxGPUCount=2 -dc_cfg="NDisplayConfig_Simple.ndisplay" -dx11 -dc_dev_mono -dc_node=Node_0 Log=Node_0.log -ini:Engine:[/Script/Engine.Engine]:GameEngine=/Script/DisplayCluster.DisplayClusterGameEngine,[/Script/Engine.Engine]:GameViewportClientClassName=/Script/DisplayCluster.DisplayClusterViewportClient,[/Script/Engine.UserInterfaceSettings]:bAllowHighDPIInGameMode=True -ini:Game:[/Script/EngineSettings.GeneralProjectSettings]:bUseBorderlessWindow=True -ini:Input:[/Script/Engine.InputSettings]:DefaultPlayerInputClass=/Script/DisplayCluster.DisplayClusterPlayerInput -unattended -NoScreenMessages -handleensurepercent=0 -UDPMESSAGING_TRANSPORT_MULTICAST="230.0.0.1:6666" -UDPMESSAGING_TRANSPORT_UNICAST="[CENSORED]:0" -UDPMESSAGING_TRANSPORT_STATIC="[CENSORED]:9030" -ExecCmds="DisableAllScreenMessages" -windowed -forceres WinX=0 WinY=0 ResX=3840 ResY=1080 -CONCERTRETRYAUTOCONNECTONERROR -CONCERTAUTOCONNECT -CONCERTSERVER="Ndisplay_Simple_MU_Server" -CONCERTSESSION="MU_Session" -CONCERTDISPLAYNAME="Node_0" -CONCERTISHEADLESS -DPCVars="Slate.bAllowNotifications=0,p.Chaos.Solver.Deterministic=1" -useallavailablecores
pause

He is my nDisplay config file :

{
	"nDisplay": {
		"description": "",
		"version": "5.00",
		"assetPath": "NDisplayConfig_Simple",
		"misc": {
			"bFollowLocalPlayerCamera": false,
			"bExitOnEsc": true,
			"bOverrideViewportsFromExternalConfig": false
		},
		"scene": {
			"xforms": {
				"L_1080_screen": {
					"parentId": "",
					"location": {
						"x": -120,
						"y": 200,
						"z": 0
					},
					"rotation": {
						"pitch": 0,
						"yaw": -30,
						"roll": 0
					}
				},
				"R_1080_screen": {
					"parentId": "",
					"location": {
						"x": -120,
						"y": 0,
						"z": 0
					},
					"rotation": {
						"pitch": 0,
						"yaw": 30,
						"roll": 0
					}
				}
			},
			"cameras": {
				"DefaultViewPoint": {
					"interpupillaryDistance": 6.4000000953674316,
					"swapEyes": false,
					"stereoOffset": "none",
					"parentId": "",
					"location": {
						"x": 0,
						"y": 100,
						"z": 90
					},
					"rotation": {
						"pitch": 0,
						"yaw": 0,
						"roll": 0
					}
				}
			},
			"screens": {}
		},
		"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": "[CENSORED]",
					"sound": false,
					"fullScreen": false,
					"renderHeadless": false,
					"graphicsAdapter": -1,
					"textureShare": false,
					"window": {
						"x": 0,
						"y": 0,
						"w": 3840,
						"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": "Mesh",
								"parameters": {
									"section_index": "0.0",
									"base_uv_index": "-1.0",
									"chromakey_uv_index": "-1.0",
									"mesh_component": "L_1080_screen"
								}
							}
						},
						"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": "Mesh",
								"parameters": {
									"section_index": "1.0",
									"base_uv_index": "-1.0",
									"chromakey_uv_index": "-1.0",
									"mesh_component": "R_1080_screen"
								}
							}
						}
					},
					"outputRemap": {
						"bEnable": false,
						"dataSource": "mesh",
						"staticMeshAsset": "",
						"externalFile": ""
					}
				}
			}
		},
		"customParameters": {},
		"diagnostics": {
			"simulateLag": false,
			"minLagTime": 0.0099999997764825821,
			"maxLagTime": 0.30000001192092896
		}
	}
}

Thank you for your time and help!

Below are errors extracted from the logs file ;

[2024.06.28-12.56.22:106][  3]LogDisplayClusterProjectionMesh: Warning: Couldn't find mesh component 'L_1080_screen' in RootActor
[2024.06.28-12.56.22:106][  3]LogDisplayClusterProjectionMesh: Error: Couldn't create warp interface for viewport 'VP_0'
[2024.06.28-12.56.22:106][  3]LogDisplayClusterProjectionMesh: Warning: Couldn't find mesh component 'R_1080_screen' in RootActor
[2024.06.28-12.56.22:106][  3]LogDisplayClusterProjectionMesh: Error: Couldn't create warp interface for viewport 'VP_1'
[2024.06.28-12.56.22:106][  3]LogDisplayClusterRender: Warning: Couldn't compute view parameters for Viewport VP_0, ViewIdx: 0
[2024.06.28-12.56.22:106][  3]LogDisplayClusterRender: Warning: Got invalid projection matrix: Viewport VP_0, ViewIdx: 0
[2024.06.28-12.56.22:106][  3]LogDisplayClusterRender: Warning: Couldn't compute view parameters for Viewport VP_1, ViewIdx: 0
[2024.06.28-12.56.22:106][  3]LogDisplayClusterRender: Warning: Got invalid projection matrix: Viewport VP_1, ViewIdx: 0
[2024.06.28-12.56.22:136][  4]LogDisplayClusterStageMonitoringDWM: Warning: '19' VBlanks were missed.

It says here, that it can not find your warp mesh in the nDisplay root actor.

Did you use the nDisplay config editor to create the config?

Hello, I’ve discovered the cause of our issue—it was related to the mesh projection policy. During the compilation, the references to the meshes were getting lost. To maintain these references in a compiled project, it’s necessary to enable ‘Allow CPUAccess’ on the meshes specified in the nDisplay Config file. :slight_smile:

image

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.