By the end of this tutorial you will have created a 3D particle system with a moving point emitter that will look similar to this:
1 – Set up a 3D scene layer
Once it’s there make sure you move the transport onto the layer and double click on the layer so that its window opens. Once it does, you’ll see 3 nodes: On layer begin, Run and On layer end. Next, right-click somewhere in the empty area and create 2 nodes: Camera and Render. Now, make a Lifeline connection between Run, Camera and Render node in this order. At the end your layout should look like this:
There is one last thing we have to do before we can move on to actually creating some particles. That is we have to tell our 3D scene which Camera do we want it to render in the preview window (you can actually create many cameras and choose which one you want to render). We do that by first left-clicking somewhere in the empty area of the layout and then selecting our camera in the radio button on the right.
Congratulations, you’ve created a foundation on which you’ll build a Particle system!
2 – Create a particle system
Start by clicking on the button Add new system input.
You’ll see a new input appear in the Render node. Then create a new Particle system node, a Texture particle node, a Behavior node and a Point emitter node and connect them as shown below.
Now, let’s explain what all these nodes are doing:
- The Emitter node tells Lightact where in 3D space you want to emit the particles.
- Particle node tells Lightact what kind of particle you want. We used Texture particle node, which uses whichever texture is connected to its Texture pin. If nothing is connected to this pin, it uses a default white blob texture.
- Behavior node (optional), tells Lightact if you want to apply any forces to the particles once they are created.
But before you’ll actually see any particles in the 3D view of the 3D scene we have to set the particle sizes and particle colors. We’ll do that by creating 2 more nodes called Size cluster and Color cluster and connect them to the Particle node as shown below.
These 2 nodes tell Lightact how you want the particle size and color to change over time. Each of these properties is defined by 3 pairs of values. The float values define the time at which size or color should be at the corresponding value.
Once you’ve done that insert the following numbers into Size cluster node:
- Leave T1 at 0
- Size 1 to 300
- T2 to 2
- Size 2 to 400
- T3 to 3
- Size 3 to 500
Then, similarly, change the values of Color cluster node:
- Leave T1 at 0
- Change color 1 to, say, red (255,0,0,255)
- T2 to 2
- Change color 1 to blue(0,255,0,255)
- T3 to 3
- Change color 3 to black transparent (0,0,0,0)
Lastly, let’s go back to the Emitter node and change the Spawn rate to 200.
When you insert all of the above numbers you should see an image similar to this:
This doesn’t look too good, does it? As you might have guessed we need to change the blending mode of the Particle system because at the moment the textures don’t blend properly. We do that by clicking on the Particle system node and changing the blending mode on the right-hand side to Alpha.
Now you should be seeing something like this:
The next thing we’ll do is make the emitter move around.
3 – Creating movement
To make things easier, we’ll move the camera a bit so that it is parallel to the coordinate system. We do that by changing its Source to 0,3,3.
As the next step, let’s create 3 more nodes: Sine wave, Float reader and Vec3 joiner, and connect them as shown below. Float reader is actually not required, but it allows you to watch float values coming in.
In the sine wave enter 2 under Amplitude and 0.3 as the Frequency. By now your particles should slowly move from the left to the right side of the screen.
Now, for the fun of it, let’s make some more changes. In the Texture particle node, change the Min init velocity to (-10,-10-10) and Max init velocity to (10,10,10).
These 2 parameters determine the min and max of the initial velocity range that each particle gets at its spawn.
Then in the Behavior node, change the Acceleration to (0,1,0) and Damping to 0.07. This adds a bit of upward acceleration to all particles and increases damping (the amount of resistance particles encounter when moving through space).
Feel free to play with these parameters as much as you like. You can achieve many different looks. When you are done, we just need to do one more step before this texture can be sent to a canvas and then on to screens, projectors or light fixtures. We need to make this rendered texture available in other layers.
4 – Rendering particles to a canvas
As you probably know by now, Variables give you the power to share numbers, textures and other types of data between layers. So before we can render our particles to a canvas (and then further on to a video screen for example) we need to bring this texture to a Regular layer as only they have Render to canvas node. Render to canvas node is the node that takes any texture and renders it to a canvas of your choosing. So without much further ado let’s create a Texture variable in our 3D scene layer. We do that by right-clicking on the Texture root under Variable section in our 3D scene layer and selecting Create new.
When you expand the Texture root you’ll see a new texture variable called Exposed texture 1. Now we need to tell our Camera that it should write whatever it sees (its texture basically) to this variable. We do this by selecting our Camera node and selecting Exposed texture 1 as its parent variable.
There is one more thing you’ll probably want to do before leaving this 3D scene layer and that is to hide the grid. You can do that by left clicking somewhere in an empty area of the layout and unchecking Render grid checkbox.
That’s all we had to do in our 3D scene layer. Now we have to grab this texture in a Regular layer and render it to a canvas. So let’s start by first, creating a new canvas. You do that by right-clicking in the Visualizer and selecting Add canvas
Then let’s create a Regular layer by right-clicking in the Sequencer and selecting Add layer.
Double click it so that it’s layout opens and once there, create a Render to canvas and a Texture getter node and connect them as shown below.
We are nearly there, don’t worry. You just have to select the Texture node and in its properties on the right, select our Texture variable as its parent.
Now select the Render to canvas node and select our canvas as its parent.
This is it. Now you should see your particles on the canvas you created.
From here you can easily map the content to video screens, eDMX fixtures or elsewhere. If you don’t know how, head over to other Quick start guides.