...
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 projectorsof these cluster nodes drives one or more display projectors.
Why Use nDisplay over the Unreal Toolkit Plugin
There are some inherent problems with the Unreal toolkit that are difficult to overcome. These include:
Slow performance with large complex, or optimized models.
No-post processing available
Issues with Lumen lighting engine not rendering correctly
Miss matched colours compared to the console view.
Limited to cubemap output, that only works in ICE.
nDisplay removes all of these issues, and adds even more features which include:
Clustering for complex and highly detailed models.
Large scale resolutions
True to life colours
Optitrack and VRPN support
Doesn’t require an external plugin
Doesn’t require an update from Igloo every time there’s a new Unreal update.
Warning |
---|
The only current issue with nDisplay is the lack of a method to input warps generated by the Igloo system. Requiring the use of scalable to do curved screens at this stage. |
PC Specification for Igloo
The main machine will be the same as the ICE machine. It should be high specification as it will be the center for the models, as the master node. However it will only need to output a single display, and not output anything to the projectors (only the console monitor)
However, it will be responsible for starting Unreal and telling all the other PC’s what to do, as it will be the Master node on the above diagram.
The individual machines will be infrequently used, and will need to be ‘gamer’ ready. This is due to Unreal not outputting it’s best when using Quadro based graphics cards. It also means they can be off the shelf cheaper products with a decent warranty. They can also be specified as smaller form factor machines to fit nicely into a server rack.
A company called MK1 Manufacturing make a wide range of lenovo rack mounting solutions, and could be commissioned to make one for their gaming machine chassis.
Possible solutions could include the LOQ machine, and the Legion T5 machine.
Info |
---|
Further conversations need to happen with Bill to recommend something suitable for a cluster solution. |
Setting up nDisplay within Unreal
Prerequisites
Unreal Version 22 4.4 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.
...
Info |
---|
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
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.
Info |
---|
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. |
...
Info |
---|
The computer you are using to calibrate the display is automatically assigned to the system with the name LocalHost. If the Calibration PC will not be driving a display, remove LocalHost from the Display clients assigned to the system list. |
Click to highlight one of the clients in your system.
Click Assign > to move the clients into the system.
Repeat for all remaining clients.
Scalable Display Manager will by default output a scalable mesh file, if instead you would like to directly apply the warp and blend in the graphics driver check the option Apply Warp & Blend in Graphics Driver.
...
Note |
---|
Wrong Number of Projectors or Incorrect Resolution If the number of projectors or their resolution is different from the actual system, manually choose or enter the resolution of a single projector under custom resolution.
|
...
To help with making sure that the projectors reach about an overlap value of 15-20% you can click Show Overlap Pattern. There are 3 sections Yellow,Green, and White. Having the edges of the bands touch will result in the level of overlap it represents.
...
Enter the Projector Arrangement
Select the physical arrangement of the projectors: Tiled, if the projectors are next to each other, or Stacked, if the projectors are on top of each other.
Select the number of projectors in a row.
Select the number of projectors in a column.
Click Redetect Displays to save the settings.
Order the Display Clients
...
Next, two images will be displayed on each projector, starting again with the first projector and going in order to the last. The first image will be a 5-dot pattern which is used to determine the center of the projected image. The second image displayed is the grid pattern which is used to map where the pixels are falling on the screen.
White Pattern | 5 Dot Pattern | Grid Pattern |
---|---|---|
What to do if an Error Occurs
...
The software can not discern the difference between a projected image that does not fill the screen and one that fills the screen but spills off.
End Calibration: In this case, the calibration should be stopped so that the camera can be re-positioned to see the entire projected image. | |
Ignore and Continue: The error action is expected and triggered because the projector is overshooting the screen. Continuing will not cause any issues. |
Choice | Description |
---|---|
Remember this action for this projector for session | Do not stop the calibration for this error on this projector until the software is restarted |
Remember this action for this projector forever | Never stop the calibration for this error on this projector |
Remember this action for all projectors for session | Do not stop the calibration for this error on any projector until the software is restarted |
Remember this action for all projectors forever | Never stop the calibration for this error on any projector |
Projector Visibility
Be careful when editing
...
Essentially that is all that’s required , but we will need to calibrate the eye location later on when setting up Unreal correctly for head trackingfor standard nDisplay, from Scalable’s perspective.
However, if you’re using head tracking, it is required that you adjust the eye level to the correct height, for where the exact center of the room will be.
Exporting Data to Unreal
Once your screen has been calibrated using the Scalable system, the master machine will have saved the DataSet to it’s C:/ drive, in the following folder:
Code Block |
---|
C:/ScalableDisplay/DataSets/DatasetXXXXXXXXXX/LastCalibration:\Program Files\Scalable Display\DEI\LocalCalibration |
In this folder, you will find a myriad of files, most of which are required for the nDisplay system to work.
Unfortunately, due to how these files are created, it’s difficult to setup this location as a shared space, so you will need to copy these files *(or rather the LastCalibration Folder as a whole) to the same location as your nDisplay config file.
...
a location similar to where your config.
...
Warning |
---|
Just like all other file locations, there can be no spaces in the address. Otherwise it won’t launch. |
Not all the files are required, but it’s easier to copy the entire thing.
...
Expand | ||||
---|---|---|---|---|
| ||||
You are welcome to copy this file, and expand on it. You should save it as a .cfg.
|
...
The projection value, explained below, is which projection policy will be used
Projection
...
[projection] id=proj_easyblend_1 type="easyblend" file="
...
D:\LocalCalibration\ScalableData.pol" origin=easyblend_
...
origin scale=
...
1
This is where the scalable setup differs from a standard nDisplay system. Instead of a ‘simple’ projection system, which specifies the cameras created by unreal, we use Scalable & Unreal’s easyblend system. This tells unreal how to create cameras based on the .pol data created by Scalable during setup.
...
The field value should be the location of your ScalabaleData.pol file relative to the location of this file. It’s also possible to put a complete file address , but this may cause issues as it will likely be stored on a shared drivelike within the example, but be careful to have the same address across all machines.
Info |
---|
If you are using one machine, with multiple screens, each screen will have it’s own .pol file. |
Camera
[camera] id=camera_static loc="X=0,Y=0,Z=0" tracker_id="ViveVRPN" tracker_ch=0
...
The example above, uses a HTC Vive, with a Vive tracker puck. Which also requires you to run an OpenVRPN server to convert the vive position data to something readable by other programs, and then hosts it on the network.
...
Expand | ||
---|---|---|
| ||
|
It is advised that all of these methods have their drawbacks, and only the config file doesn’t have any issues being accessed from multiple places.
...
The Launcher looks like this, with 3 main fields:
...
Add your packaged Project
.exe
file to the Applications list.
Click Add under the Applications list, then browse to and select the .exe file you packaged for your Project. The nDisplay Launcher will add your new application to the list. Click its name to select it. This must be the same location on all the machines in the cluster. The addresses must match.Specify your configuration file. Again, this must be a shared location, with the same address for all machines.
Make sure your application is highlighted, it will say ‘no application is selected’ otherwise. Then click Run
As long as your configuration is correct, you will see it send a run command to all the PC’s on the network.
...