The purpose of my technical piece was to create a controllable flame for use in animations. The paper on which it was based presents ways to expose a parameterized interface for controlling various aspects of the flames.
The B-Spline
The paper uses a B-spline to represent the spine of the flame. Its control points convect within a wind field, and then the spline is resampled parametrically to remove any visual artifacts that would result from the clustering of control points. The top portion of the spline, once it reaches a certain height, is allowed to break off and form a plume of flame. This is controlled by testing against a random function.
The flame profile
The next step in the pipeline is to scan a flame profile from a library of profiles, or perhaps a hand-drawn one. The profile is rotated about an axis to produce a volume in which the flame resides (this represents the oxidization region of the flame.) Particles of the flame may only reside in this region.
Next a 2d image of a flame is sampled for colors, and particles are created with these colors within the profile-generated volume. This allows for the animator to create any color of flame desired.
Cylindrical MappingThe next step is to map the volume of particles to the deformed spline to give the flame a "waving" effect.
Problems
I found that the paper was somewhat vague about some aspects of the controls and implementation, and assumed a wide array of knowledge about aspects of graphics programming with which I had little or no experience. I spent a lot of time looking around various sources for further clarification and information about a number of the implementation details, and found that some of them seemed to be beyond the scope of a component of my project.
I also was unable to get the cylindrical mapping to look any good. I ended up scratching it from the project.
The flame was integrated into the film by an alpha blending compositing operation.
