Flames Animation - English / Korean

This page shows the results of applying a custom surface shader, written in the RenderMan Shading Language, to a Maya scene in order to create the illusion of fire...

ho_flame shader


There are number of ways to make flame in CG. For this homework, I had to use a simple geometry, surface shader and displacement shader. I had thought only particles or fluid simulation always makes good result for fire, but later I saw a CG fire in Harry Potter and found using geometry and shader could make even better result. During doing this project, I also found I could have more control if I use just geometry instead of particles.

I tried to make something like a camp fire. I will use this fire for my personal character animation project.

working title: caveman

First thing I did was to shoot reference fire. I tried to catch proper speed, color, texture, and character of movement of a camp fire.

I started with noise(P) in SL.There are several way to specify point P in SL. I used “world” space P as a noise parameter because I used multiple nurbs planes with one surface shader. If each object has different position in 3D space, it can have different noise pattern even though they have same shaders. Actually, the patterns are not only different but also gradually different, so they can make a volume illusion.

To make a fine line texture, I made solarize effects like Photoshop solarize filter.


I used variety of frequencies of noise. For example, a flame color pattern is a kind of fractal noise that repeats same noise pattern but different frequency and amplitude, and this low frequency of noise makes characteristic motion of a flame.

For flames on the woods, a noise displacement shader which has also solarize effects was used.

The surface shader on woods can get information from displacement shader that is assigned to the same geometry using output variables in SL. In this case, the height of displacement decides the color and opacity of the surface shader.

In final image, facing ratio effect was also applied.

Also, both surface shader and displacement shader have enable or disable area parameter, so some part of surface shader can be transparent, and displacement height can be controlled by this parameter.

For more natural movement of fire, I actually moved multiple nurbs planes. However since all nurbs plans have a single shader that has the noise pattern that references world space “P”, they can be seen as one piece of fire.

This project is finished here, but later I will add smoke and sparks using Houdini particle for my personal animation project.