Introduction
This is a quick outline on how to get these swell cloud animations
together and running in real time, and how your can explore you own cloudy
creations with the Swell software. We are occasionally privileged to witness turbulent and potent cumulus
boiling into storm, the diffusing carpet of lazy stratus, or the wispy hair of
icy cirrus. Clouds, like other amorphous
phenomena, elude traditional modeling techniques with their peculiar yet
ubiquitous patterns of intricate, ever-changing microstructures. The medium,
dirty water vapor, is equally complex to illuminate. Our technique attempts to
recreate the nuances of airborne condensation both visually convincingly, and
tractable under the artists' wish.
How We Model Clouds
Step 1: Model Turbulent 3D Space
Our first step is defining a turbulent, random space for our clouds to
inhabit. This noisy space needs to be continuous yet conceal their
procedural origination, so we actually sum our noise at several different
scales.
Beside are several planes displaying this noise. The higher the resulting
noise value, the more opaque white the plane appears. Here we see many
blobby
structures in the noise as if peering into a vast sky of perfectly random
clouds. Keep in mind we are just seeing 2D cross sections of the 3D noise.
Our application can texture geometry using hardware-accelerated texture
volumes. This is perfect for our 3D noise! By simply sampling the same noise
texture at several different scales, we can create noisy space on demand in
little time. |
 |
Step 2: Slice Turbulent Space into Lattices
As demonstrated in the last image, we can cut planes through 3D noise.
For a nice continuous image, we need to do this lots of times. When rotating
this volume around, keep the orientation of the planes toward the viewer to
conceal the alleged solid space's literal geometry. Our cloud will exist
somewhere in our cross-sections, so we also need to allocate vertices we can
color in our geometry. To do this, we subdivide our cutting planes to a
user-specified resolution.
This image is similar to the the last except with many more slices: 32 in
all.
|
 |
Step 3: Color Vertices About Framework Structures (Implicit Spheres)
Now, color vertices only in or around the structure representing the
final cloud shape. Our construction primitive is an implicit sphere. So now
our cutting planes are not only alpha modulated by noise, but by location as
well.
The resulting picture is a fuzzy ball representing all the noisy space
around the vertices in proximity. |
 |
Step 4: Impose Lower Alpha Cut-Off
To emphasize microstructures of the cloud, omit those pixel below a
certain transparency threshold. This refines the image into a focused shape
full of intricate features.
See the finer details now that the extraneous "blur" has been omitted? |
 |
Step 5: Darken with an Accumulating Buffer
Finally to expose the depth and inner structures on the cloud, illuminate
the model by examining the colors before it. Tracing a straight path from a
light beam's source, each vertex is colored a gradually darker color then
the vertex before it. |
 |
Animating Clouds
Given the simple primitives we use to model clouds, animation is easy. By
moving about the cloud's constructive balls, the cloud's greater structure
radically changes. Slowly growing the ball's size while moving away from each
other suggests natural cloud growth.
Some of most subtle effects are through transforming cloud space. A slight
rotation suggests atmospheric turbulence and gives a general "life" to the
smaller structures. Noise translation performs a wind-like sweep of the clouds
that when combined with ball translation, produces very realistic effects.
Last updated: September 25, 2005