Sprays, blobs, and clouds are all related to each other, and can be thought of as volumes of droplets or particles, for which RenderWorld models the creation and evolution of the density of droplets or particles in a chosen volume. Clouds are generated from sprays and blobs using various tools for controlling the evolution of these objects. We begin with a discussion of clouds because their input files are the simplest, and contain information common to all types.
Sprays are modeled as being emitted from imaginary ``nozzles'' in the spray volume. As spray material is ejected from the nozzle, it is exposed to the forces of gravity (including bouyancy), wind shear, vorticity, and turbulence. One method of generating a cloud is to stop the evolution of a spray volume at a desired stage and use that distribution for the cloud.
Blobs are similar to sprays in that they can be exposed to the same forces as sprays. However blobs do not have source ``nozzles'' ejecting material into the volume. Instead, a blob has an initial distribution of cloud material that undergoes evolution. The initial distribution can be based on a procedural method, or can be an actual cloud distribution from previous spray and blob models. As with sprays, stoping the evolution after a period of time can produce 3D cloud distributions for the cloud class of objects.
nx X ny X nz cells with a lattice spacing of dx, dy, dz, so that the dimensions of the box are (nx . dx, ny . dy, nz . dz). For sprays and blobs, the box must be large enough to contain the evolution of the density since material disappears when it exits the box. Since the evolution and rendering times, as well as the amount of memory required to store the spray, are proportional to nx X ny X nz, so memory consumptin can be large in some circumstances. To try and alleviate this problem, methods have been devised for separately adding small scale cloud material without running up memory usage.
Clouds, sprays, and blobs are lit by the sun. The light they emit is the integral result of sunlight that has been attenuated on the way in, scattered by volume density, and attenuated on the way out.
The scattering coefficient determines the strength with which light scatters from a unit density of material per meter, so that inverting the coefficient gives the average distance between scatterings in a medium with unit density. The absorption coefficient determines the strength with which light is absorbed by a unit density per unit length. For visible light this number is fairly small. The extinction coefficient is the sum of the absorption coefficient and the scattering coefficient in the real world. RenderWorld, however, allows you to specify this parameter independently in order to give you more control over the look of the image.
Roughly speaking, increasing the extinction coefficient increases the self-shadowing within the volume, increasing the absorption coefficient increases the opacity of the volume, and increasing the scattering coefficient increases the brightness of the volume.
The scattering is controled by the phase function, which is color dependent. This color dependence generates effects such as rainbows. The phase functions for all of the color bands is contained in a text file which may be edited and tailored to create exotic optical effects.