Tutorial #4: IL Effects
In this tutorial, you'll learn how to create basic effects that you can then render to your lights or RGB devices in both 2D or 3D space.
#1: Create an Immersive Lighting Effect UAsset
​
Start by creating a new folder in your Content Browser called Effects under your IL folder if you've already created it as an example. Right-click in the new folder and under the Immersive Lighting menu, select Immersive Lighting Effect and name the effect DemoEffect. Open the effect so we can edit it.
​
The first thing we need to do is select a Lighting Effect Type and assign the Color Curve and Position Curve. We've included a couple LinearColorCurves and also FloatCurves you can also use as a starting point. The Color Curve is used to show how color is laid out across all of the light sources or how it animates and the Position Curve will drive where the animation is for certain effect types.
​
Let's start by keeping the default Lighting Effect Type set to Uniform and go ahead and select or create a LinearColorCurve and assign it to Color Curve.
#2: Setup the Effect to be triggered using multiple Light Controllers
​
We'll go back and check out some of the other standard effect types built in but let's hook up the new DemoEffect to be triggered to start on BeginPlay. Go into your level blueprint and call Get Immersive Lighting System and from that, call Play Lighting Effect for BeginPlay and Stop Lighting Effect (or Stop All Lighting Effects) on EndPlay.
To assign the effect to an array of Light Controllers, Play Lighting Effect that can take in an Immersive Lighting Layout or Play Lighting Effect To Controller and Play Lighting Effect To Controllers can take one or more Light Controllers instead.
​
If you've setup your lighting interfaces correctly, you can test the effect out by playing in the editor. You should see your LinearColorCuve laid out across your device or set of lights.
​
As a note, you can assign a single Light Controller that could be for example an RGB keyboard with multiple LEDs, in which you would see the effect across of the LEDs. Each LED is treated as an individual light source in the entire array so you can use one or many devices on top of RGB lights.
#3: Try other Lighting Effect Types
​
Now that you've hooked up your first IL Effect, let's go back to it to try out other effect types. The Lighting Effect Type has a couple of built in effects we can take advantage of to create some common effects fairly easily. As a note, this system might be changed but the IL Volume Effects allow you for the time being to create your own custom effects that are far more advanced than the standard IL Effects. However, IL Effects can also trigger IL Volume Effects using the Effect Volume Class if Effect Volume is enabled. You may want to do this for various reasons but mainly for use in IL Master Effects.
​
Lighting Effect Types
​
Uniform: The effect is uniformly distributed across the light source(s). If Animate Color is set, it will animate the light source(s) using the the Color Curve.
Ripple: Creates a ripple effect from the inside out
Wave: Wave effect from one side to the other
Fill: Fill effect that fills from the inside out or vice versa
Progress: Progress bar like effect that goes from one side to the other
Random: Randomly animate individual light sources
Radial: Creates a radial effect where the colors are distributed based on distance
Spiral: Creates a spiral effect where the colors are rotated
Configure the new IL Effect UAsset (optional)
Color Curve: The color curve asset to use for this effect. NOTE: If you update the start/end time of the curve while editing in real-time, you'll need to restart playing in editor
Position Curve: The position curve asset to use for this effect. NOTE: If you update the start/end time of the curve while editing in real-time, you'll need to restart playing in editor
Effect Volume Class: The effect volume class to use if this effect uses a custom volume
Lighting Effect Type: The type of lighting effect this is
Effect Flow: The type of directions the user can customize the flow of the effect
Projected Access: The axis to project the effect onto
Effect Direction: A custom direction the effect travels in world space if specified
Offset: An optional offset applied to the effect origin in world space
Duration: The duration of the effect
Speed: The overall speed of the effect
Thickness: The normalized area the animation covers in
Distance Scale: The overall scale of the distance the animation has to travel
Random Duration: The duration of each random animation instance
Random Count: The number of instances that will be animating at once during a random effect
Loop Count: The number of times to loop the animation. This will loop indefinitely if it is < 0
Use Hue Color: Whether or not to treat the Linear Color Curve instead as a hue color ramp
Animate Color: Whether or not to treat the Linear Color Curve as an animation curve for the timeline
Colors In Sequence: Whether or not to display the colors on the LEDs in sequence rather than by horizontal positional on the actual device
Animate In Sequence: Whether or not to animate the LEDs in sequence rather than by horizontal positional on the actual device
Distance Scale Color: Whether or not to also apply the Distance Scale to the color
Reverse Color: Whether or not to reverse the color animation playback or how it is statically displayed on the device
Reverse Position: Whether or not to reverse the position animation playback
Ping Pong: Whether or not the animation will also play a second time in reverse before it is considered one full loop
Effect Volume: Whether or not this effect uses a custom Immersive Lighting Effect Volume