Hello UE lighting engineers, I hope you’re having a good day!
I found a solution for this issue. In fact, the problem comes from the Spot Light itself, not the DMX Fixture. Indeed, a Spot Light is used internally within the blueprint of the Moving Head, so the actual solution proposed here quite is transposable to a standard Spot Light.
Explanations:
It is possible to assign to any Spot Light a “Light Function Material” in the actor parameters. For the Moving Head blueprint, the equivalent actor parameter is “Spot Light Material Instance”. This light function material is a material set with a “Light Function” material domain. When the material domain is set to “Light Function”, the graph of this material has a unique parameter: “Emissive Color”. It is possible to add a texture to this parameter so that the texture is projected like a movie projector.
By default, the projection of this light function material is managed by the “Light Function Atlas” process (more details here: Using Light Functions in Unreal Engine | Unreal Engine 5.8 Documentation | Epic Developer Community ). However, this process presents some limitations, starting with the fact that UVs should not be manipulated, but this is exactly what the Moving Head blueprint does. By default, the light function material of the Moving Head uses the dimmer range but also the UVs for the gobo. Consequently, the “Light Function Atlas” process does not work properly, and the interaction with volumetric fog is broken. As soon as we deactivate the gobo… Surprise! The interaction with volumetric fog through the dimmer works very well.
Of course, deactivating the gobo is not that convenient as some lighting engineers may need it. I figured out a more generic solution to make the Moving Head compatible with the “Light Function Atlas” process.
Solution:
- From the Engine Content, copy and paste into your project the blueprint “BP_MovingHead” (DMXFixtures/LightFixtures/), the light function material instance “MI_Light” (DMXFixtures/LightFixtures/DMX_Materials/), and the light function master material “M_Light_Master” (DMXFixtures/LightFixtures/DMX_Materials/Masters).
- In the copied blueprint “BP_MovingHead”, set the default actor parameter “Spot Light Material Instance” to the copied “MI_Light”.
- In the copied “MI_Light”, set the parent material to the copied “M_Light_Master”.
- In the copied “M_Light_Master” settings, search for “Compatible With Light Function Atlas” and check it.
Notes:
The first three steps are just here to ensure you do not modify the Engine Content. In fact, the core of the solution is just the box to check.
The solution has been tested in the DMX template project, using version 5.7.4 of Unreal Engine: the gobo shapes interact perfectly with the volumetric fog and the intensity changes with the dimmer value.
This solution is limited as the number of light functions that an atlas slot can support presents a limit (depending on the atlas resolution and size). Consequently, this solution will show its limits if it has to be applied to hundreds of lights…
I hope this will help! Positive vibes to you!