With DMX, a control protocol commonly used to control stage lighting and effects, we can tie physical and virtual lights (or other effects) together. This creates more seamless environments for mixed reality content and improves its impact.

Check out our DMX example in the example projects.

For functionality specific to the Unreal Editor and some in-depth knowledge, check out https://docs.unrealengine.com/en-us/Engine/Editor.

Control from Pixotope

For controlling virtual and physical lights via Pixotope's control panel (using the ArtDMX Light controller plugin) check out 1.4 | Art-Net / DMX control.

We currently do not recommend using the ArtDMX Light controller plugin and Epics DMX plugins side by side.

Control from an external DMX controller

Here we describe how you can control virtual and physical lights (or other fixtures) from an external DMX controller using Epics DMX plugins.

Epic's DMX plugins are still in BETA.

Setup in the Editor

Enable plugins

  1. Open the "Plugins" window via Edit → Plugins in the window menu
  2. Click on the "Media" category or search for DMX
  3. Enable the following plugins:
    • DMX Engine
    • DMX Fixture
    • DMX Protocol
  4. Restart the Editor

Get plugin content

  1. Click "View Options" in the content browser on the bottom right
  2. Check both the "Show Engine Content" and "Show Plugin Content" checkboxes



  3. The "DMXFixtures Content" folder appears in the list

    To use these fixtures in a project it is recommended to create child actors of the fixtures, in your main content folder.

Setup in the project

Configure the network

  1. Open the "Project Settings" window via Edit → Project Settings in the window menu
  2. Click the "DMX Plugin" category under Plugins
  3. In the "Communication Settings" enter the "Interface IP address" of the network adapter the Editor should use
    • to listen
    • to send

Set a custom GameInstance

Epic's current DMX implementation uses a custom GameInstance.

  1. Open the "Project Settings" window via Edit → Project Settings in the window menu
  2. Click the "Maps & Modes" category under Project
  3. Select the BP_DMX_GameInstance

Create a DMX library

All the fixture mapping, in-engine faders and DMX communication setup lives inside a DMX Library asset.

  1. While showing the content of your project right-click in the content browser
  2. Click "DMX Library" under Create Advanced Asset → DMX

The DMX library contains the following tabs

  • Controllers - network settings and universe mapping for outgoing DMX data
  • Fixture Types - list of created fixture types and their settings
  • Fixture Patch - list of created fixture patches and their settings
  • Output Console - in-engine faders for testing
  • Monitor - monitor for in- and outgoing DMX data

Define Fixture types

  1. Click the "Fixture Types" tab
  2. Click "New Fixture Type"
  3. Choose the DMX category (Static, Matrix/Pixel Bar, Moving Head, Moving Mirror, Strobe or other)
  4. Add modes and functions for your fixture
    • Modes refers to how many channels a fixture uses, e.g. lights often have several modes, like 6-channel mode, 11-channel mode etc.
    • Functions refers to a specific function of a fixture and usually takes up 1 channel, but sometimes more. E.g. pan and tilt is commonly 16-bit and 2 channels, because they have both coarse and fine movement on separate channels (they are usually controlled with separate faders). The specifics for a fixture can be found in its technical documentation

      To see which functions are available in the generic fixture blueprints for virtual lights, we can look at them in the level.

      1. Drag one of the generic fixtures from the "DMXFixtures Content" folder into the level
      2. Check the DMX Name Mapping category in the Details panel
      3. Use these name values when setting up your fixture type
        • The bit depth (8-bit, 16-bit, ...) for each function comes from the definitions of your physical fixture
      Here is an example of the DMX Name Mapping of the BP_MovingHead fixture and the corresponding Fixture Settings

      Notice that it has 8 functions, and uses 10 channels. This is because 2 of the functions (Pan and Tilt) are 16-bit and use 2 channels rather than 1 channel. Check the auto-calculated "Channel Span" on top of the function list.

  5. Repeat this for all the different types in your setup

Assign Fixture types to universe

  1. Click the "Fixture Patch" tab
  2. Click "Add Fixture" and choose from the previously created Fixture Types
    • Create as many copies of each type as needed
  3. Assign the fixture to a universe
    • Universe is a set of 512 channels on which DMX data is sent
  4. Assign it to a specific channel or auto-assign it consecutively
  5. Repeat this for all your fixtures

Assign virtual fixture to DMX Library

  1. Drag your virtual fixture of the same type into the level
    • It is recommended to create child actors of the fixtures, in your main content folder
    • Generic fixtures can be found in the "DMXFixtures Content" folder
  2. Select the "DMX" component of the virtual fixture in the Details panel
  3. Choose your DMX Library for the DMXLibrary property
  4. Assign the correct fixture patch to your virtual fixture
    • To control multiple virtual fixtures as a group, assign the same fixture patch to all of them

Debugging

Monitor the data

  1. Open the "Monitor" tab from your created DMX Library and check if data is coming in




Make sure the external DMX controller sends to the correct network adapter

  1.  Check the "Communication Settings" of the global DMX plugin settings in the Project Settings



Send test values to virtual/physical fixtures

  1. Go to the "Output Console" in your DMX Library
  2. Click "Add fader" to add a fader
  3. Select the correct protocol
  4. Choose the universe and the channel address it should control
    • If you want to control more fixtures with the same fader:
      1. Add more elements
      2. Choose their universe and channel address
      3. Click the "Update Selected Fader" button

Known issues

As Epic's plugin is still in BETA, there are some known issues.

Wrong settings for Lavender color texture
  1. Double click the T_Color_Lavender texture in DMXFixtures Content → ColorWheel
  2. Change Compression → Compression Settings to "Default"
  3. Check Texture → sRGB
Using Create Render Target 2D, Auto Generate Mip Maps and DX12 crashes the Editor
  1. Double click the "BP_FixtureLogic" blueprint in DMXFixtures Content
  2. Go to the "CreateGoboDisk" function blueprint in My Blueprint → Functions → Gobo Disk
  3. Uncheck "Auto Generate Mip Maps" on both "Create Render Target 2D" nodes

Third-party tutorials