[comp.graphics] 3D clouds

spworley@athena.mit.edu (Spaceman Spiff) (01/22/91)

I'm trying to generate 3D descriptions of smoke or clouds. I've
found fractal descriptions of trees and mountains (from SPD 3.0
by Eric Hayes (?), an excellent tool) but I'd love one for clouds.

If anyone has any leads on programs to output clouds (or just an
object itself, in any format) I'd be very appreciative if you
get in touch with me. Thanks!

-Steve

------------------------------------------------------------------------------
Steve Worley                                           spworley@athena.mit.edu
------------------------------------------------------------------------------

rdt155r@monu6.cc.monash.edu.au (Ron Van Schyndel) (01/23/91)

spworley@athena.mit.edu (Spaceman Spiff) writes:

>I'm trying to generate 3D descriptions of smoke or clouds. I've
>found fractal descriptions of trees and mountains (from SPD 3.0
>by Eric Hayes (?), an excellent tool) but I'd love one for clouds.

Assuming this is for a Ray tracer and not a CSG system, one method you 
might try is to generate a 'skeleton' of the various cloud
types (where the skeleton does NOT have to be connected - cirrus clouds),
based on the underlying physics, and build a special ray-intersection 
procedure which works as follows:
                                                         

                /-----\           ^                             
               /                  |                        
        ------/                   |                       
               \        /--       |                        
                -------/-----  |  |                                  
                             \ /  | <-- 'Min'             
                                  |                       
                                  | <-- 'Max' distance  
                                  |              
                                  |       
                                  | Projected ray   


The skeleton is produced via a variation on the tree, and is encapsulated by
two limit surfaces representing the minimum and maximum intersection distance 
for rays

Find out the minimum distance to the skeleton that the projected ray makes
If that distance is less than a 'minimum' the ray is deemed to be entirely
absorbed by the cloud - return the ambient light intensity.

If that distance is greater than a 'maximum' the ray is unaffected - 
keep following it.

For distances in between, you must return a weighted average based 
on the light intensity at the maximum surface. The interpolation might not 
be linear and may depend on cloud type.

The light intensity may be determined from the 'global ambient' and from the
normal to the pseudo-surface at the 'maximum' distance position along the ray,

The key is that the object is diffuse, and thus needs special treatment by the
ray tracer -- and if you think this is interesting, try varying refraction
indices (fractal variations - of course).

Happy computing, RON

-- 
Ron van Schyndel                      rdt155r@monu6.cc.monash.edu.au
Physics Department, Monash University rdt155r%monu6.cc.monash.oz@uunet.UU.NET
CAULFIELD EAST, Victoria, AUSTRALIA   {hplabs,mcvax,uunet,ukc}!munnari!monu6..
Location: 37 52 38.8S  145 02 42.0E   Phone: +613-573-2567   Fax: +613-573-2748