home about gallery publications education links contact

..::plugin free volumetric smoke::..

Note from the author: This article was written without any specific package in mind, yet the information contained can be introduced to 3ds max to produce effective volumetric smoke.

The main thing in common with these plugins is the way the cloud effect is linked to a particle system. This therefore enables the plugin to be indirectly controlled by the particle system, hence generating it's shape, form and motion. The plugin does the rest, namely the smoke generation, birth, death, fading, opacities, specularity, bump, shadow casting, smoke texture animation and so on. If each part of the smoke generation process is broken down into it's core components, it is relatively simple to emulate using a 3D package's standalone features.

The main task is to generate the smoke texture, so that it is of a relevant density and size compared to the entire smoke particle system. Materials based on the age of the particles (if they exist for your 3D package) can then be included to control the colour values of the diffuse slot, the luminance values for the opacity slot, and the bump and specular channels, the smoke effect can then fade in and out depending on the particle's dirth, life and death. Additionally, give the material a high falloff, either by using a Fresnel (or similar) map, or, if your package doesn’t support it, whack up the transparency filter amount (in most packages) and make it subtractive. If possible, a combination of the transparency filter, the Fresnel (or other falloff) map and an opacity map generated from the animated texture (linked to the particle’s age and diffuse, specular and bump - normally with a smaller noise map) would be ideal.

The next stage is to link all this to the particle system. This can be done by applying the material directly to the particle system, or to an instanced object that is set as the particle type. This is recommended as it give you greater flexibility over the particle's shape, enabling you to apply any distortion or displacement to the object you require, even animating it size or applying a noise displacement if you wish, with the end effect of each particle individually animating! Set up the particle system's birth and death rates accordingly, depending on the type of smoke required (steam, cloud, rocket engine, pyroclastic flow (etc)), and play it back in a preview to make sure it looks right.

Some packages also allow you to deform the particle depending on it's direction of motion. Turn this on, but only have the value set at a low amount or some nasty stretching will occur (unless you want this of course!). And that’s about it. You will have to play with the values for the particle count and particle size (higher particle count, lower particle size and vice versa) to achieve the best effect for your scene. Additonally, if the package supports it, increase any additional variation to birth, death, velocity (etc) to add that extra bit of chaos (also helps smooth out any wayward particles and hides the birth rate), and, if all else fails, add just a touch of motion blur to feather things out a bit.

The smoke will cast shadows, although raytraced shadows will have to be used in some packages due to the particles being ‘solid’ and only having an opacity map applied which, unfortunately, can greatly increase rendering times.

Enlarge ScreenshotDepending on the materials setup, mainly with regards to noise or smoke density, the particle count may have to be increased to acheive the desired effect, or irregularities will be noticed.
Enlarge ScreenshotRaytraced shadows work better than mapping as the particle's shape may become visible. By using material id's for specific colours in the particle's age, effects, like glows, can also be added.

Initially published: 3D World magazine, Issue 4, October 2000.

Copyright © Pete Draper, October 2000. Reproduction without permission prohibited.