Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Julien Guertault, posted on November 12, 2004

Image Description, by Julien Guertault

This is a screenshot of the visual system developed by Alsim for its flight trainers. I worked in this company eight months and one of the tasks was to design and implement some realistic volumetric clouds.

The method used is inspired from the Mark Harris and Niniane Wang papers. It consists of dividing a cloud into metaballs and represent them by billboards. In order to reduce the number of metaballs required to give the cloud a realistic appearance, the billboards are textured. A set of textures is generated thanks to Perlin Noise functions.

Also, to reduce the overdraw due to all those transparent billboards (125 per cloud), each cloud is rendered by an imposter (which itself uses a texture manager to avoid video memory fragmentation). On each frame, imposter's accuracy is tested in order to update it if needed. The number of imposters to update by frame rules the tolerance used in the test to keep this number low enough.

The color is computed by hardware light functions. Normal vectors depend both on the position of the metaball inside the cloud, the observer, the cloud, and the sun.

Finally, we can manage more than 200 clouds in real-time (at least 30 fps, on an Ati Radeon 9800 Pro powered PC). The user can fly around, and get in the clouds, resulting in realistic effects.

You can find more information on the Alsim website ( and on my personnal webpage (

Best regards,
Julien Guertault

Image of the Day Gallery


Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
Andrew Brown

November 12, 2004, 04:10 AM

Looks good, 25000 2D metaballs running at 30 fps, very nice!

Little question, do the metaballs from one cloud check for collisions with the metaballs from another cloud? Or are they just localised to collisions within their own cloud?

Julien Guertault

November 12, 2004, 10:28 AM


Thank you for your comment! :-)

There is no collision detection: clouds are created according to some parameters (altitude, layer, and density). They are placed on a grid, and so are the metaballs inside a cloud (according to a shape). A natural looking is given adding some randomness.

In fact clouds move with the wind, and the density and so on can be changed, but their shape is static. If I had to add such a feature (storm formation for instance), I think I would not use collision detection but a field of metaballs wich could be either condensed (etc...) or not. Moves would then be simulated.



November 12, 2004, 01:28 PM

Is the initial set of cloud positions and new cloud created positions generated randomly or do they follow some pattern?

Are they always grouped together as above or can they be spread out with a maximum number?


Julien Guertault

November 12, 2004, 05:15 PM

Is the initial set of cloud positions and new cloud created positions generated randomly or do they follow some pattern?

Both actually... :-)

First, the aim of this feature is not to simulate some realistic weather model. This would be very interesting, but also time consuming and not trivial at all. :-) This feature is just supposed to allow the instructor to put the pilot in a particular weather condition.

So an array of clouds is created, mostly depending on the ressources. Let say 11x11 and up to 16x16. The positions are set according to this grid. As it looks too regular that way (a wonderfull grid of militar clouds ^_^), some randomness is added. It is still a grid, but less regular.

This "randomness" is determinist though. This is to have always the same list of numbers, since the visual system must be able to work on different computers at the same time (for cylindrical views).

Are they always grouped together as above or can they be spread out with a maximum number?

The size of this grid is not static. As I wrote sooner, the instructor can define the cloud density and so on. This directly affects the grid. So you can have a nice blue sky with some far cumulus, or an overcast gray sky.


This thread contains 4 messages.
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.