View Full Version : Torchflame rig for Max

01 January 2003, 11:24 PM
I want to share a solution for a "automated torch" i came up to for my Animation Challenge Entry ( here.
Forgot to mention that you can find vid examples there.

First of all id like to thank ACFred who inspired me by the idea of making the flame with a script ( his Challenge Entry ( )

I used Max but the concept can be used in other apps i guess.

The idea is simple. I wanted a torch where the flame behaves similar to reality. The flame had to follow the torch with a delay, allways point to the sky and flicker.

First i created the segmented torchflame (segmented because of challenge rules) and the torch itself.
then a skelleton for the flame (each bone a flamesegment).

now the rootbone of the flame is linked to a helper as well as the torchmesh itself. This helper will be the controller. So by moving around the helper the flame behaves automatically.

now to make the movement of the torch possible the flamebones have two IKs assigned. One from root to the half and the other from the half to the top.

The MiddleIKGoal, lets call it IK01 has a "Position List" assigned as position controller.
The first controller in this list is "Position XYZ" to keep it's original position.
The next one is a "Position Script". Here we make the delay stuff. The idea is to make a 5 frame delay for IK01 and a 10 frame delay for IK02 to the position of the rootbone (+ the z value of the IK01 and IK02).

So actually the IK01 and IK02 have the same position as the rootbone + their z values.

The script looks like this:

timedelay = 5f
curposx = 0
(at time (currenttime - timedelay) curposx = $b_Torch_1.pos.x)
curposy = 0
(at time (currenttime - timedelay) curposy = $b_Torch_1.pos.y)
curposz = 0
(at time (currenttime - timedelay) curposz = $b_Torch_1.pos.z)

[curposx, curposy, curposz-436]

The delay changes in the IK02 to 10frames. $b_Torch_1 is the rootbone.
The sick value of 436 is the z value to make the IK01 above the rootbone. By changing and evaluating you can get near to it (not the best solution but it works)

So what is actually happening? The script reads the position of the rootbone at -5 frames of currenttime and sets it to the IK (+ its Z value). You cant move the torch around to see the effect because it gets no old position of the rootbone. You see the delay first after making some keyframes.

The next controller is a noise position controller to make a flicker effect when the torch is not moving.

The same with IK02 but with delay = 10f and the other z value and another noise controller so they flicker seperatlly.

Hope this helps. Maybe someone will find a use in it or improve it. What do you think?

Here a scheme of the rig:

01 January 2003, 11:49 PM
That is Awesome:buttrock: Thanks!

01 January 2003, 01:38 AM
Yep, thanks for posting your methods here. Looking forward to your animation, too.


CGTalk Moderation
01 January 2006, 08:00 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.