Kochanek–Bartels spline
In mathematics, a Kochanek–Bartels spline or Kochanek–Bartels curve is a cubic Hermite spline with tension, bias, and continuity parameters defined to change the behavior of the tangents. It was invented by Doris Kochanek of National Film Board of Canada and Richard Bartels of University of Waterloo in Canada to automate the process of creating the effect desired by the animator for interpolated motion between key frames in computer animation, reducing the need to input additional information.[1][2]
Definition
The key positions (data points) of each keyframe are , , and are interpolated using a cubic Hermite spline.
For each , define the incoming tangent vector and the outgoing tangent vector as follows:
For the interval between the start point and the end point , Kochanek-Bartels spline is obtained by applying the starting tangent vector and the ending tangent vector to the definition formula of cubic Hermite spline.
Parameters and Effects
| Parameter | Effect and Purpose |
|---|---|
| default () | The tangent vector is simply the average of the source chord and the destination chord , is the Catmull–Rom spline. |
| Tension | controls how sharply the curve bends at a key position.
Tension is implemented as a scale factor which changes the length of both the incoming and outgoing parts of the tangent vector equally at a key position. If , the length of the tangent vector is reduced to zero and tightens the curve, if , the length of the tangent vector is increased and produced more slack in the curve. |
| Bias | simulates the traditional animation effect of following through after an action by "overshooting", or exaggerating a movement by "undershooting" a key position.
Tangents are formed as an average of incoming and outgoing chords, but the bias controls the direction of the path as it passes through a key position by assigning different weights to the two chords when forming the average. If , the weight of the destination chord is greater, and if , the weight of the source chord is greater. |
| Continuity | reduces continuity, would produce the desired abrupt change. For example, to make the movement of a ball careening off a tree look convincing, with altering its direction of motion at the point of impact without slowing down ahead of time.
If , the weight of the destination chord is greater for incoming tangent vector, and the weight of the source chord is greater for outgoing tangent vector. In this case, the motion path looks similar to when is increased, but the motion dynamics are different. When is increased, the length of the tangent vector, and therefore the velocity, decreases as it approaches the key position, so there is no discontinuity. On the other hand, when is decreased, the velocity remains constant and there is an abrupt change in direction at the key position. |
Example of implementation
The source code of Steve Noskowicz in 1996 actually describes the impact that each of these values has on the drawn curve:[4]
| Tension | T = +1→ Tight | T = −1→ Round | |
| Bias | B = +1→ Post-shoot | B = −1→ Pre-shoot | |
| Continuity | C = +1→ Inverted corners | C = −1→ Box corners |
The code includes matrix summary needed to generate these splines in a BASIC dialect.
References
- ^ Kochanek, Doris H. U.; Bartels, Richard H. (1984). "Interpolating splines with local tension, continuity, and bias control". ACM SIGGRAPH Computer Graphics. 18 (3): 33–41. doi:10.1145/800031.808575. ISBN 0-89791-138-5.
- ^ Alan Watt; Mark Watt (1992). Advanced animation and rendering techniques. ACM Press. pp. 353–356. ISBN 0-201-54412-1.
- ^ Kochanek, Bartels (1984), p.36, Figure 6
- ^ "Interpolation Mini Guide". povray.org. Retrieved 2025-02-16.
External links
- Shane Aherne. "Kochanek and Bartels Splines". Motion Capture — exploring the past, present and future. Archived from the original on 2007-07-05. Retrieved 2009-04-15.