Particle Animation with Anim8or v0.7
Designing
Particle Animation for smoke
| Let’s
do now a true PA. We’ll make a smoke trail (cigar smoke), using small,
partly transparent spheres as smoke particles. The smoke will come from a
limited volume of the space (a cube), will have an ascending movement on a
curly path and will vanish progressively. The particles will be released
randomly on random paths following a main smoke stream and disappear after
a time interval (lifetime). The effective length of the smoke animation
will be 144 frames. How to shape the paths? First of all, you have to design the main smoke stream: just animate with a few key frames an imaginary smoke particle, like in the image on the right. Save the file, open it in a text editor and write down the position controller parameters, something like this: |
![]() |
controller
{ "position"
track {
pointkey { 0 (0 0 0) (0 35.343 0) (0 -35.343 0) "?" }
pointkey { 17 (0 70.686 0) (-1.6632 30.561 1.4553) (1.6632 -30.561
-1.4553) "?" }
pointkey { 35 (-6.6528 122.25 5.8212) (2.079 23.908 -2.9106)
(-2.079 -23.908 2.9106) "?" }
pointkey { 53 (8.316 166.32 -11.642) (2.9106 23.493 -4.3659)
(-2.9106 -23.493 4.3659) "?" }
pointkey { 71 (4.9896 216.22 -11.642) (-1.6632 24.948 0) (1.6632 -24.948
0) "?" }
}
}
Each particle will
have a path obtained from the main stream’s path altering x and z key
positions for each key frame with a random value, as follows:
- first key frame
- no alteration
- second key frame
- max. 10 % alteration
- third key frame
- max. 15 % alteration
- fourth key frame
- max. 20 % alteration, and so on
That will ensure a
consistent shape for the smoke and an increasing cross-section in the upper
part, resembling dissipation.
The objectelement
section of the project file should look like this:
objectelement
{ "eobject1" "object01"
……
objectelement
{ "eobject294" "object01"
loc { (0.78708 82.17 0.32259) }
controller { "position"
track {
pointkey { 101 (0.82672 0.83303 0.36470) (0 35.343 0) (0 -35.343 0)
"?"
}
pointkey { 136 (1.9677 71.519 -0.81164) (-1.6632 30.561 1.4553)
(1.6632 -30.561 -1.4553) "?" }
pointkey { 172 (-9.814 123.08 10.513) (2.079 23.908 -2.9106)
(-2.079 -23.908 2.9106) "?" }
pointkey { 208 (10.298 167.15 -17.888) (2.9106 23.493 -4.3659)
(-2.9106 -23.493 4.3659) "?" }
pointkey { 244 (3.9795 217.05 -15.636) (-1.6632 24.948 0)
(1.6632 -24.948 0) "?" }
}
}
controller { "visibility"
track {
booleankey { 0 0 "?" }
booleankey { 98 0 "?" }
booleankey { 101 1 "?" }
booleankey { 199 1 "?" }
booleankey { 244 0 "?" }
}
}
}
…….
objectelement
{ "eobject2000" "object01"
…….
To avoid Anim8or v
0.7’s phantom-key problem, the distance between two consecutive key frames
must be less than 100. The awk script which generates the animation is the
following: