Volume Cigarette Smoke

 
 
 

DEPRECATED. This shader is unsupported, but it may still get installed with Softimage to provide compatibility with older scenes that use it. It is recommended that you replace unsupported shaders in your scenes with equivalent shaders from the current Softimage shader library.

| Fractal | Fractal | Turbulence | Column Shape | Animation | Marching | Bounding Box | Proximity | Scattering | Lights | Volume Cigarette Smoke | Dusty

Shader Type: Volume

Output: Color (RGB) value

Simulates a cloud of small particles. Each ray that passes through the volume is broken down into steps, and at each step point the density function is evaluated. The density function returns separate R, G, and B components, which represent the individual densities of particles scattering only the respective color components.

The density function simulates a smoke column. A hollow column is swirled and a rising current of turbulence is added to it. The column springs into existence at Y = 0 and Time = 0. As it moves higher, the turbulence is added to it in progressively increasing amounts.

Tips:

  • Stepsize and Recursion: Keep your "max stepsize" as large as possible. Most often it is sufficient to have it about half the feature size of your density function. Unless you get spatial aliasing (strange plywood type effects), don't lower it. Aliasing can also be combated with the Jitter parameter.

For testing, keep the recursion depth at 0 and increase it only as necessary.

  • Density function: The fractal is fairly fast, but it slows down significantly when you request too many iterations. For test purposes, keep them low. And if you want the shader to be uniform, turn the fractal off altogether by setting "max iterations" to 0.

Name

The shader's name. Enter any name you like, or leave the default.

Colors

Color

Defines the Red, Green, Blue, and Alpha channels that make up the smoke's color.

Fractal

Noise Type

Offers two noise functions to build the fractal: Perlin and Recursive.

Absolute

Uses the absolute value of the noise for the fractal. This creates interesting discontinuities that produce a turbulence effect. A side effect is that the fractal value is always positive.

Maximum Iterations

Defines the maximum number of noise iterations. It works with the Minimum level in defining the complexity of the fractal. The more constraining of the two limits is used.

Minimum Level

Defines the minimum amplitude at which iteration will occur. It controls how often the shader calls the noise function. For a value of 0.1, the noise of amplitude less than 0.1 will not be added to the fractal, and iteration stops there.

Decay

Defines the amplitude decay of the fractal iterations. It is defined as the ratio of the amplitude as the frequency doubles. Thus, if the Freq. mult (see next parameter) is 2.0, the amplitude of every subsequent iteration is multiplied by this value.

Frequency Multiplier

Defines the frequency multiplier for subsequent iterations. Frequency is really just the inverse of scale. As doubling frequency is the same as scaling down by a factor of 0.5, every subsequent fractal is scaled by the value 1/Frequency.

Deformation

Swirl

Amount

Defines the amount of swirl applied. 0 = no swirl (and a dull-looking smoke).

Change Rate

Defines the rate at which the swirl pattern changes. 1 = one "change" per second.

Scale

Defines the size of the swirl patterns. For large smoke columns, increase this value to make the swirl large as well.

Wind

Speed

Defines the wind's speed. This parameter controls how much the smoke bends before the wind; it actually controls the curve shape and is independent of Rise Speed.

Altitude

Defines the maximum height of the smoke effect.

Turbulence

Altitude

Defines how high the smoke rises. Turbulence starts out with none at Y = 0 and reaches amount at Y = Altitude. This makes the smoke start out smooth but gradually turn more turbulent.

Amount

Defines the maximum amount of turbulence reached at altitude.

Bias

Controls the shape of the turbulence amplitude curve. When close to 0, the amplitude stays low until the last few units up to Altitude. 0.5 = a linear increase; a high value (close to 1) = changes to a high value right at the beginning.

Scale

Defines size of the turbulence pattern. If the smoke is very large, it is necessary to increase this value to keep the same size ratio between the smoke and its turbulence.

Column Shape

Radius

Defines the radius of the basic smoke cylinder that is subsequently swirled and mutated using the Turbulence parameters.

Thickness

Defines the thickness (as a fraction of the radius) of the column walls.

Start Length

Defines the distance the smoke takes to appear within the smoke column. At time 0, the smoke starts at Y = 0. When the smoke has risen to the Start Length value, it is completely revealed. For a Start Length of 2 and a Rise Speed time of 1 unit per second, it takes 2 seconds for the smoke to be completely visible.

Amplitude

Gives some variation to the smoke-column thickness around its perimeter. If left at 0, the column appears entirely smooth. This parameter defines the radius of the basic smoke cylinder that is subsequently swirled and mutated using the Turbulence parameters.

Animation

End

The highest Y level that the smoke reaches. It is safe to set the Y max value of the ray marcher's Bounding Box to this value. The smoke gradually fades out from Altitude to End.

Bias

Controls the shape of the fade-out curve.

Rise Speed

Defines the speed at which the turbulence is moved upward.

Time Offset

Offsets the shader's timing. The default ensures that the smoke column is visible at time = 0 (the first timeline frame). Setting it to 0 makes the smoke emerge at that point (see the Start Length parameter).

Marching

Step Size

Defines the maximum length of the steps taken during ray marching.

This parameter does not have to be fixed, as each point may be randomly jittered. Furthermore, according to a certain contrast limit, each step may be subdivided up to a certain point. This makes the ray marcher able to focus on features such as edges or umbra boundaries.

Maximum Subdivision

Defines the maximum number of recursions made during ray marching.

Maximum Difference

Defines the difference in density or density intensity at which a recursive subdivision of the marching step is made.

Jitter

Defines the amount that each sample point is randomly permeated from its calculated position. At 0 there is no jitter; at 1, the point is jittered so much it may touch its neighbor. This can be used to hide spatial aliasing artifact and replace them with noise.

Bounding Box

Always Honor

If the shader is being applied to an object (volume shader), this parameter selects whether to honor the box or not. For a global shader, it is always honored. If infinite rays are encountered, the far side of the box is used to truncate.

Minimum, Maximum X

Defines the X parameters of the boundary box.

Minimum, Maximum Y

Defines the Y parameters of the boundary box.

Minimum, Maximum Z

Defines the Z parameters of the boundary box.

Proximity

On

Activates proximity calculations.

Cone Angle

For correct proximity calculations, enter the angle of the spotlight you are modifying. For a point light shining in all directions, enter 360.

Intensity Scale

Controls the overall intensity of the lights.

Scattering

Ambience

Simulates an ambient light source illuminating the cloud.

Absorption

Controls how much of the light that falls on the particles is absorbed. For air or steam, keep this at 0; for dark smoke or soot, make it higher (about 1).

Assymetry

Controls the scattering behavior of the shader. At 0, the same amount of light is scattered back as well as forward; this is the case with small particles, such as air. Higher values make the scattering ever more forward biased, as with larger particles such as smoke or dust.

Uniform

Makes the light scattering uniform in all directions, much as with the ambient light that follows. However, light lookup is still performed, and self shadowing may occur (see Shadowed lights).

If you select Scattering Lights (uniform_scatt), the ray marcher uses them to determine light scattering at that point. Optical depth is accumulated and used to calculate the occlusion of both scattered light and transmitted light.

Density Scale

Scales the density of the cloud. It is an overall scaling factor: if the cloud/hypertexture appears too dense, you can lower this value instead of having to meddle with the density function on the right part of the dialog box.

Volumic Density

When the volume shader is applied to an object, this parameter makes the density automatically change according to the scaling of the object. E.g.: If you scale the object down ten times in the XYZ dimensions, the density of the texture will increase a thousandfold.

Transparent

Makes the texture invisible; i.e., it doesn't block light at all, and the shader becomes a glowing transparent gas, much like neon.

Lights

If you have scattered lights, it slows down the rendering somewhat because each light lookup can be quite time consuming, particularly if you've selected an area light. If you select the same light as both scatter light and shadow light, each light call will result in a ray marching from the current position to the light -- so rendering time may be almost squared! Do this only if you have either a large step size or you have a very dense material (hypertexture).

NoteThe self shadow is calculated for all the distance to the light, even if the light is outside the bounding volume. Therefore, volumetric lights should be within the bounding volume.

Lights

Scatter Lights

Lets you define a scatter light in your scene that will be used to compute the fast lens effect.

Shadow Lights

Lets you define a shadow light in your scene that will be used to compute the fast lens effect.

Render Tree Usage

To apply this volume effect to an object (as opposed to a scene) connect this shader to the Volume input of the Material node. Volume shaders cannot be expanded or built upon in the render tree.

Creative Commons License Except where otherwise noted, this work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License