Ola Madsen guides you through the process of creating a realistic whirl of dust billowing behind a speeding vehicle in Softimage
The looks, shape and form of any given dust cloud derive from a number of factors. In the case of a moving car, the local geology, the coating of the road, the humidity, air pressure, wind conditions, tyre treads, the weight and speed of the car, and so on, all play their part in forming the dust cloud. Altering any of these attributes can tip the balance and potentially have a drastic effect on the outcome.
While your scene will have to take all of these factors into account, there’s one important thing separating the real from the digital: while Mother Nature couldn’t care less about it, the most influential factor determining the final outcome of your cloud is your personal taste. In this tutorial you’ll learn how to set up an ICE Tree and use particles and forces in combination with the Render Tree and volume shaders to create anything from a puff of wind to a dense whirl of sand. Once you’ve finished you’re then free to go back and tweak the parameters to help understand how they all work together to create the final effect.
Define the particle cloud
ICE is a great way to explore and prototype different effects and scenarios, but you need to take a few minutes before you begin to think about which parts you need to gain control of, and whether these should be handled manually, automatically, or both.
A good example is the emission or origin of the dust cloud. The power generated from the car’s engine is transferred to the drive shaft, which in turn makes the wheels rotate. The friction between the wheels and the surface of the ground will then either propel the car forward or, if there isn’t enough friction, tear up a whirl of dust and dirt from the spinning wheels. While it’s an easy task to find the exact location where the wheels touch the ground automatically, it needs to be calculated. Once calculated it will return the position of the wheel, which you already knew in the first place. Just because something can be automated doesn’t necessarily mean it should be – on the contrary, the simplest solution is often the best.
Video 1 00:00 Set up the particles
Begin by opening the scene tyre_smoke_start.scn from the files accompanying this tutorial. The first thing you need to do is create a bunch of particles. Press  to switch to the ICE toolbar. Press  to open an Explorer and select the group named wheel_ emitter_grp. The group contains four grids, one for each wheel, and will be used to get the initial position for the particles. From the ICE > Particles > Create menu choose Basic Emission. This will automatically create a pointcloud and add the initial nodes for your particles. Press [Alt]+ to open an ICE Tree. Open the Emit From Geometry node, set Rate to around 100, and change Shape to Sphere. Close the PPG and get a Randomize Around Value node. Set Base Value to 3, then set Variance to 1, and connect it to the Size input of the Emit From Geometry node. An important factor when doing any type of simulation is the mass. A particle’s mass determines the amount of force needed to affect it. The more mass a particle has, the greater the force needed to change its trajectory. By randomising the value, each particle will react slightly differently to the forces, which creates more natural variation. Get a Randomize Value By Range, then set Min Value to 0.1 and Max Value to 0.3. Connect it to the Mass input of the Emit From Geometry node.
By default, all particles are born with the same orientation, and while you can’t really see it on the spheres, you risk getting perceptible patterns when you render the final cloud. Get a Randomize Rotation By Cone node and connect it to the Orientation input of the Emit From Geometry node. While this takes care of the orientation, all the particles still swirl off in a straight line.
To fix this you can use another node called Randomize Direction. Set Start Angle to -10 and End Angle to 10, and connect the node to the Execute On Emit1 input of the Emit From Geometry node. Video 1 00:00 The attributes and values you assign to the particles as they’re born will determine how the simulation turns out in the end
04:00 Define an age limit
If you want to alter or modulate any attributes based on a particle’s age, you must first define its lifespan as it’s born
Many of the subsequent steps make use of each particle’s age or the percentage of its total lifespan to modify or trigger new events. In order to do this you must first define how long each particle is allowed to live. Get a Set Particle Age Limit and connect it to New (Execute on Emit1) of the Emit From Geometry node. The default age limit, or lifespan, is set to four seconds, which means that every particle will live for exactly four seconds. By randomising this value you’ll get more realistic variability. Get a Randomize Value By Range node and connect it to the Set Particle Age Limit node.
Open the Randomize Value PPG and set Min Value to 2 and Max Value to 6. Once the particles have reached their age limit, they’ve played out their role and you can delete them. Get a Delete Particle At Age Limit node and connect it to the Execute1 input of the Simulation Root node.
05:40 Add natural forces
By randomising the direction and speed of the wind force you achieve a natural variation to the position and velocity of the dust cloud as it expands
You’ll use two forces in this setup: a wind force to inflate and sculpt the cloud, and a drag force that acts as air resistance and decreases the particles’ velocity over time. Get a Wind Force, a Drag Force, and an Add Force node. Connect the Wind and Drag to the Add Force node and the Add Force node to the Force input of the Simulation Root node. In the Drag Force PPG, change Strength to 0.025.
Get a Randomize Vector By Cone node; connect it to the Direction input of the Wind Force. You’ll use this node to control the spread of the cloud. You can also use it to add a slight upward force to make the dust cloud rise into the air. Open the PPG and set Base Vector’s Z value to -1, Start Angle to -35, and End Angle to 35. Get a Randomize Value By Range node. Connect it to the Wind Speed input of the Wind Force and open its PPG. Set Min Value to 10 and Max Value to 30.
11:30 Modify the particle size
The inflation of the cloud is the combined result of the active forces and having the particles grow in size over their lifespan
Naturally, the particles need some variance in their sizes, so get a Modify Particle Size node, connect it to the Execute1 input of the Simulation Root and open its PPG. Change Source Parameter to Age Percentage and set Multiplier to 5. The profile controls how each particle’s size is changed over its lifetime, where the keyframe on the left corresponds to the particle’s birth, and the keyframe on the right corresponds to the end of the particle’s life.
The default settings will override any previous values you’ve assigned to each particle’s size, so you’ll need to change this behaviour. Change Modification Type to Multiply By Initial Size. Select its slope handle on the left keyframe and position it above the keyframe so that the fcurve forms an arc. With this profile the particles will start off small under the wheels and then rapidly grow in size as they pass beneath the car.
15:30 Create a billowing effect
The billowing effect is achieved by spinning the particles along the axis in relation to their position
Get a Spin Particle node and connect it to the New (Execute1) input of the Simulation Root. While this node will indeed spin the particles, they’ll all rotate along the same axis and in the same direction. To create the billowing effect you need to define your own axis for the rotation.
Open the PPG and set Select Spin Axis to Relative To Input Position. Get a Get Point Position, a Get Particle Emit Location and an Add node. Connect the Point Position to the Value 1 input of the Add node and connect the Position output of the Emit Location to the Value 2. Then connect the Add node to the Input Position of the Spin Particle node.
The last task you need to do to complete the effect is to change the spin rate over a particle’s lifetime, gradually decreasing it as it reaches its end. Get a Modulate Value By Age Percentage node, connect it to the Spin Rate input of the Spin node, and open its PPG. Move the keyframe on the right to about 0.5 (on the Y axis). This means that the particle will spin at 0.5 (50 per cent) of the base value defined in the PPG when it reaches the end of its life. Change Base Value to 0.5 and you’re done here.
22:15 Flow around the surface
To prevent the cloud from expanding into the ground, use one of the factory compounds to push the particles outwards if they’re within a specified distance from the ground
Currently the cloud inflates in all directions, including into the ground, which isn’t what you want. This could be fixed to some extent by, for example, adding a slight upward force, but you’re looking for the impression of the cloud spreading across the surface rather than just into the air. Fortunately, there’s a compound that does exactly what you need.
Get a Flow Around Surface node and connect it to the New (Execute1) input of the Simulation Root. Press  to open an Explorer and drag and drop the ground_flow_surface into the ICE Tree. Connect it to the Surface1 input. You don’t want this node to affect the entire cloud, but only the particles within a certain distance from the surface. Open the PPG and set Cutoff Distance to 1.
24:00 The Modify Particle Color node
Generate the effect of the dust fading into thin air using a Modify Particle Color node, and alter the falloff to get the result you want
Get a Modify Particle Color node and connect it to the Execute3 input of the Simulation Root. You’re not interested in setting the colour of the particles because you’ll control this in the volume shader, but you need to set the transparency or alpha to create the effect of the dust gradually fading into thin air.
Open the PPG, change Source Parameter to Age Percentage, and change Modification Type to Set Alpha. Select the Color marker on the left and set the alpha to 0.2. Select the marker on the right and set the alpha to 0. By repositioning the Color markers, or adding additional markers, you can change the falloff, or how smoothly they’ll fade away – all depending on the effect you want to achieve.