Advanced Animation in MojoWorld

The animation that's available in the Transporter and Generator is of the simple 'record a flightpath' variety. To animate anything other than a recorded flight path, you need to face the Pro UI. I already talked a little bit about that in my tutorial on blending time which creates a sunset by driving the sun orbit position with a Pro UI function graph. This tutorial will cover some more advanced topics, such as using a curve instead of a blend node in order to create repeating effects. The second section will cover animating with Krummen Hacker's new plugins including setting up a camera flight path.

The Movie Editor and The Uplink Queue

The following steps spell out the order in which things must happen to make a successful MojoWorld animation:

  • Select or build a world to use and decide what parameters to animate.
  • Build Time and/or SpaceTime driven graphs for all items that will animate.
  • Record some time, either by using the controls in the Movie Editor or by typing an 'r' to toggle recording on and off. When recording is toggled off, the Movie Editor will open.

    While recording, you may interactively animate one camera with Walk, Fly or UFO mode in the RTR. All your other cameras will remain still unless controlled by a Mover.

    These next few steps are optional and may be repeated:

    • Tweak parameters in existing objects / textures / graphs
    • Select a camera
    • Move the Global Time dials

    This last step is required and may be repeated:

  • Put the job into the Uplink Queue by choosing the 'Process Later' menu item in the Movie Editor.

With a single time recording, you could queue up any number of animations with slight modifications in each. For one it's viewing from the still camera and the clouds are changing 3 times faster, for another it's from the camera attached to the Mover and the sun starts at 90 instead of 180... just keep tweaking and queueing... but be sure to do as much initial set-up as possible.

If you need to add or remove a Time or SpaceTime driven graph, then you'll need to reset in the Movie Editor and record new time. That means you'll need to re-do any interactive flight paths, which is why we're all glad that we can move cameras with a Mover now.

The Time Nodes

There are two different Time nodes. The first is the general purpose Time node. It outputs the time in seconds for the currently rendering frame. It's the one I covered in that earlier tutorial on driving the sun orbit position.

The other Time node is the SpaceTime node. It makes some wonky four dimensional vector out of the World Position coordinate and the time which is suitable only for feeding into the Position parameter of a four dimensional fractal.

For this tutorial, we'll always use the simple Time node which outputs the time in seconds for the currently rendering frame.

Using a Time Curve

In that previous tutorial on the sunset, I used a blend node to change the orbit position value from its initial value to an end value. The 'Blend Range Low' of the Blend node from the sunset animation tutorial starts at 0, the beginning of time. The 'Blend Range High' was set to 10, which was how many seconds I recorded. What if I had recorded 20 seconds? After the time coming out of the Time node went past 10, the Blend node would always output its 'Blend High Value' value, and thus the sun would tool along for however many degrees for the first half of the animation, but at 10 seconds in, it'd stop cold in place for the remaining half of the movie. Or, if I'd recorded only 5 seconds, the output from the Time node would never reach the 'Blend Range High' of 10, it'd only get half way. In that movie, the sun would only move half as far.

Now let's look at what happens if we use a Curve node instead of a Blend node for that sun animation. (The picture there shows a brown 'Result Scale' node as the root - just pretend it's the sun's orbit position. This is the general form of any graph that uses a Time Curve - the Time node feeds into the Time Curve which then drives the parameter in question.) The Curve's 'Min Input' and 'Max Input' correspond to a Blend node's 'Blend Range Low' and 'Blend Range High'. The Curve's 'Min Output' and 'Max Output' correspond to a Blend node's 'Blend Low Value' and 'Blend High Value'. The last parameter of the Blend node, the 'Blend Value', corresponds to the curve itself. The Curve's 'Beyond Input' DDLB is the thing that make using a Time Curve so cool.

With the Curve's 'Max Input' set to 10, the end of time, and the 'Min Output' and 'Max Output' set to the beginning and end of the desired sun orbit arc and a default diagonal curve, the animation works the same way it did with the Blend node. But what happens if we record more time than the Curve's 'Max Input' depends on the setting of the 'Beyond Input' DDLB. In the default case, where the 'Beyond Input' DDLB is set to 'Continue', when the time coming out of the Time node goes past 10, the Curve node will 'Continue' beyond the input of 10 - it'll extrapolate along that diagonal line. In that movie, the sun never stops - it moves at the same constant rate throughout.

The other options for the Beyond Input DDLB are 'Clamp', 'Mirror' and 'Repeat'. Setting the Beyond Input DDLB to 'Clamp' will make the Time Curve behave exactly like the Blend node did in the original tutorial. When the output of the Time node goes beyond the Curve's Max Input of 10, the Curve clamps the input to 10 and thus the output ends up being the same for all values of 10 and greater. 'Mirror' and 'Repeat' are the ones most useful for animation. With the Beyond Input DDLB set to 'Mirror', when the input from the Time node goes past the Curve's 'Max Input' of 10, the output is based on a mirror image of the curve. So in our example animation, the sun would tool along for however many degrees up to 10 seconds into the movie, and then it'd suddenly start going backwards. Compare that to if the 'Beyond Input' DDLB is set to 'Repeat' - in that movie, the sun would tool along for however many degrees up to 10 seconds and then it'd suddenly jump back to where it was at the very beginning of the movie and move forward again.

With the Time Curve, your movies can be as long as you want and the various animating actions will either 'Continue', 'Mirror' (other animating apps call this 'pendulum' motion), or 'Repeat' throughout the animation.

I've got some more specifics on the curve editor that covers in more detail the various settings on the Beyond Input and Beyond Output DDLBs.

In the following curve editor screenshot, take a look at the following bits of how the curve is set up.

First, the Min/Max Input range is still set 0 to 1. The actual input to the curve is the time, so it will range from 0 to 10. The action we're doing will repeat, though, so it's the duration of the action that the curve should cover. The 'Beyond Input' menu is then set to 'repeat' to get our repeating action.

Second, in the curve iteself, both ends of the curve have the control handle set horizontally and at the same vertical position. This way, the curve smoothly loops with itself.

Lastly, the output simply is the Min and Max values I want my parameter to vary between over the 1 second intervals.

If you want to do a pendulum swing action that takes 1 second, set the Max Input to 0.5 and use 'Mirror' instead. For a pendulum-type action, the two end points of the curve do not necessarily have to be at the same vertical position.

Part Two - Krummen Hacker's animation suite of plugins...

 

Back to Generator Tutorials

Home