The IPO Curves

Relevant to Blender v2.31

Figure 2. The IPO window.

Now we want to see exactly what happened. The first Screen initialised in the standard Blender start-up file is excellent for this. Activate it with CTRL-LEFTARROW. At the right we see the IPOWindow displayed (Figure 2). You can of course turn any window into an IPO window with the pertinent Window Type menu entry, but it is more handy to have both a 3D window and an IPO window at the same time. This shows all the IPO Curves, the channels used and those available. You can zoom in and out the IPO Window and translate it just as every other Blender Window.

In addition to the standard channels, which can be set via IKEY, you have the delta options, such as dLocX. These channels allow you to assign a relative change. This option is primarily used to control multiple objects with the same IPO. In addition, it is possible to work in animation 'layers'. You can achieve subtle effects this way without having to draw complicated curves.

Each curve can be selected individually with the RMB. In addition, the Grabber and Size modes operate here just as in the 3DWindow. You can select IPOs also by clicking the color button in the right channel names column. By clicking the IPO channel name you effectively hide/show the relative curve. Selecting all curves (AKEY) and moving them to the right (GKEY), you can move the complete animation in time.

Each curve can be placed in EditMode individually, or it can be done collectively. Select the curves and press TAB. Now the individual vertices and handles of the curve are displayed. The Bézier handles are coded, like it is in the Curve Object:

Handles can be moved by first selecting the middle vertex with RMB. This selects the other two vertices as well. Then immediately start the Grab mode with RMB-hold and move. Handles can be rotated by first selecting the end of one of the vertices and then use the Grabber by means of the RMB-hold and move action.

As soon as handles are rotated, the type is changed automatically:

"Auto" handles are placed in a curve by default. The first and last Auto handles always move horizontally, which creates a fluid interpolation.

The IPOCurves have an important feature that distinguishes them from normal curves: it is impossible to place more than one curve segment horizontally. Loops and circles in an IPO are senseless and ambiguous. An IPO can only have 1 value at a time. This is automatically detected in the IPOWindow. By moving part of the IPOCurve horizontally, you see that the selected vertices move 'through' the curve. This allows you to duplicate parts of a curve (SHIFT-D) and to move them to another time frame.

It is also important to specify how an IPOCurve must be read outside of the curve itself. There are four options for this in the Curve>>Extend Mode Submenu in the IPO Window header (Figure 3).

Figure 3. IPO extension options.

The effect of each of these can be appreciated in (Figure 4).

Figure 4. Extended IPOs.

From left to right:

Extend mode Constant:

The ends of selected IPOCurves are continuously (horizontally) extrapolated. It is the default behaviour.

Extend mode Extrapolation:

The ends of the selected IPOCurves continue in the direction in which they ended.

Extend mode Cyclic:

The complete width of the IPOCurve is repeated cyclically.

Extend Mode Cyclic Extrapolation:

The complete width of the IPOCurve is extrapolated cyclic.

In addition to Béziers, there are two other possible types for IPOCurves. Use the TKEY command, and the dialog which then pops-up, or the Curve>>Interpolation Mode submenu entry to select them. The interpolation of the selected IPOCurves can be set to:

The IPO curves need not be set only by Key Framing. They can also be drawn 'by hand'. Use the CTRL-LMB command. Here are the rules:

There is no IPO block yet (in this window) and one channel is selected:

a new IPOBlock is created along with the first IPOCurve with one vertex placed where the mouse was clicked.

There is already an IPO block, and a channel is selected without an IPOCurve:

a new IPOCurve with one vertex is added.

There is already an IPO block, and a channel is selected with an existing IPOCurve:

A new point is added to the selected IPOCurve.

This is not possible if multiple IPOCurves are selected or in EditMode.

TipMake an object rotate

This is the best method for specifying axis rotations quickly: Select the object; in the IPOWindow, press one of the "Rot" channels and use CTRL-LMB to insert two points. If the axis rotation must be continuous, you must use the Curve>>Extend Mode>>Extrapolation Menu entry.

One disadvantage of working with motion curves is that the freedom of transformations is limited. You can work quite intuitively with motion curves, but only if this can be processed on an XYZ basis. For a location, this is outstanding, but for a size and rotation there are better mathematical descriptions available: matrices (3x3 numbers) for size and quaternions (4 numbers) for rotation. These could also have been processed in the channels, but this can quite easily lead to confusing and mathematically complicated situations.

Limiting the size to the three numbers XYZ is obvious, but this limits it to a rectangular distortion. A diagonal scaling such as 'shearing' is impossible. Simply working in hierarchies can solve this. A non-uniform scaled Parent will influence the rotation of a Child as a 'shear'.

The limitation of the three number XYZ rotations is less intuitive. This so-called Euler rotation is not uniform - the same rotation can be expressed with different numbers - and has the bothersome effect that it is not possible to rotate from any position to another, the infamous gimbal lock. While working with different rotation keys, the user may suddenly be confronted with quite unexpected interpolations, or it may turn out to be impossible to force a particular axis rotation when making manual changes. Here, also, a better solution is to work with a hierarchy. A Parent will always assign the specified axis rotation to the Child. (It is handy to know that the X, Y and Z rotations are calculated one after the other. The curve that affects the RotX channel, always determines the X axis rotation).

Luckily, Blender calculates everything internally with matrices and quaternions. Hierarchies thus work normally, and the Rotate mode does what you would expect it to. Only the IPOs are a limitation here, but in this case the ease of use prevails above a not very intuitive mathematical purity.