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