Private & Confidential

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

About nDisplay

The Unreal Engine supports advanced Igloo structures through a system called nDisplay. This system addresses some of the most important challenges in rendering 3D content simultaneously to multiple displays:

  • It eases the process of deploying and launching multiple instances of your Project across different computers in the network, each rendering to one or more display devices.

  • It manages all the calculations involved in computing the viewing frustum for each screen at every frame, based on the spatial layout of your display hardware.

  • It ensures that the content being shown on the various screens remains exactly in sync, with deterministic content across all instances of the Engine.

  • It offers passive and active stereoscopic rendering.

  • It can be driven by input from VR tracking systems, so that the viewpoint in the displays accurately follows the point of view of a moving viewer in real life.

  • It is flexible enough to support any number of screens in any relative orientation, and can be easily reused across any number of Projects.

Every nDisplay setup has a single master computer, and any number of additional computers.

  • Each computer in the network runs one or more instances of your Project's packaged executable file.

  • Each Unreal Engine instance handles rendering to one or more display devices, such as screens or projectors.

  • For each of the devices an instance of Unreal Engine handles, it renders a single viewpoint on the same 3D scene. By setting up these viewpoints so that their location in the 3D world matches the physical locations of the screens or projected surfaces in the real world, you give viewers the illusion of being present in the virtual world.

  • The master node is also responsible for accepting input from spatial trackers and controllers through connections to Virtual-Reality Peripheral Networks (VRPNs), and replicating that input to all other connected computers.

nDisplay network overview

The image above shows a possible nDisplay network. Like all nDisplay networks, one of its PCs acts as the master node. This master node accepts input into the system from a VRPN server, which relays signals that come from spatial tracking devices and other controller devices. The network also contains several other PCs that run other instances of the Unreal Engine Project. Each of these cluster nodes drives one or more display projectors.

Setting up nDisplay within Unreal

Prerequisites

  • Unreal Version 22 or newer.

  • A computer with more than 1 screen, in an extended configuration.

  • The computer should be capable of running Unreal Engine, based on these recommended specifications.

New Project

Epic games have kindly given us a template that sets everything up for you. If this is your first time using nDisplay, Igloo completely recommends creating a new project using this template, and experimenting with the config file.

To create a new project, on the Epic Launcher, click Unreal Engine on the left toolbar, then Library on the Top toolbar. Ensure that you have a version of Unreal installed. I would recommend the most recent version if you’re starting from scratch.

Click Next, and on the Select Template menu, click nDisplay and once again click Next.

Finally, select a location for your new project, and wether you would like to include Starter Content, and enable Raytracing. I would recommend disabling Raytracing for your first project unless you’re familiar with it.

Upon selection of Create Project the editor will begin to unpack and create the project at the location you have specified. This might take a long time depending on your computers specifications.

It’s a good idea to create the project within a location that is easy to share on a network. This makes it a lot easier to create the cluster further into the nDisplay pipeline.

Existing Project

  1. Open your project, and navigate to the Plugin’s window. Search for nDisplay and Enable the nDisplay plugin. This plugin is included in Unreal 2.46 and newer.

You will be asked to restart your editor upon selection. I would recommend saving your work and doing this straight away. Grab a coffee, and wait for it to recompile.

2. Once the editor has re-opened, remove all players + cameras from the scene. The nDisplay system creates it’s own player and camera. This can be edited later using the blueprints and config files.

3. Add nDisplayClusterRootActor, from the Place Actors menu, into the scene where you would like the player to start. Place it on the floor, as it will be generated from the floor based on height values.

You’ve now added everything to an existing level that is required to get nDisplay working correctly!

For advanced systems, please refer to the Unreal Documentation for more guidance.

Building a project

[How to build the project, and where to place it once built. Adding the listener.exe, and where to find that. Placing the built version within a network shared location./]

When you are ready to build your project, it is done in the usual way by clicking File, Package Project, and Windows (64 bit).

You will then be asked to specify a folder for your completed build to be placed. At this point we recommend a folder that is easily shared. For instance I’m using:

D:/Unreal/nDisplayTest

-IMPORTANT- The path to your build must not contain any spaces.

Once the build is complete it is also a good idea to include, within the build folder, the nDisplay listener. This can be found in your Unreal Engine Binaries folder at the following path:

Program Files\Epic Games\UE_4.XX\Engine\Binaries\DotNET\

Copy the DisplayListener.exe from this location, and place it in the same location as your built application’s executable file (.exe)

Whilst at this location it’s also a good idea to create a shortcut to the nDisplayLauncher.exe by either adding a shortcut to the desktop, or pinning it to your start menu. We will be using this application further in the process.

Creating the config file

A config file is required to inform each of the machines within the nDisplay cluster, on how to create the various nDisplay components. Luckily Epic has given us a lot of examples of how this configuration file should look. They can be found at this location within your engine folder:

\Program Files\Epic Games\UE_4.XX\Templates\TP_nDisplayBP\Content\ExampleConfigs

Please take some time to view how each of them is constructed, and experiment with modifying them.

To preview how it will look, within the unreal editor, you can load a configuration within the properties of the DisplayClusterRootActor and it will load the asset structure created by the config file. This is a great tool for finding errors.

If you edit a config file and save it, you will need to load a different config file, and then re-load your original config file to see the changes you’ve made. Or you could edit the DisplayClusterRootActor.h and add a reload button in.

Config file with Scalable

Within Igloo structures, instead of creating the setup using the config file, we can create a barebones file, and instead use Scalable to create the screens, blends, and systems.

Luckily, Epic have done the work for us and created an Easyblend base config file, which can be found within the EasyBlend folder of the ExampleConfigs.

This configuration just handles the player, and the base locations for the camera system. Then using the scalable editor we can generate the required files for the warping and blending.

Using Scalable to generate warp and blend files.

[Opening, licencing, and explanation of scalable.]

[Blending a small cylinder with scalable]

[Exporting the warps to Unreal]

[Editing the config file to point to those warps]

Creating a cluster

[Multiple machine setup - what needs to be included on each machine]

[Using the nDisplay launcher]

[Launching the project for the first time (usual errors the pop up)]

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.