List of my modules...

Module: Smooth_Camera_Path

Description:

From a choppy camera path, allows a smoother animation by using a Hermite Spline interpolation1-2.


Three keyframe animation. On the left is the default camera path, in which you can observe an acceleration of the camera position when it arrives at the middle keyframe, with a sudden change in velocity and direction.

NOTES:

Avizo camera trajectories

The following example shows two camera paths with two nearly identical keyframes, the first pointing towards the origin down from Z, the second pointing towards the origin down from Y. The only difference is the focal distance of the second keyframe. This is the code to set the camera :
# Keyframe 1
viewer setCameraPosition 0 0 1
viewer setCameraOrientation 0 0 0 0
viewer setCameraFocalDistance 1

# Keyframe 2
viewer setCameraPosition 1 0 0
viewer setCameraOrientation 0 1 0 1.57
viewer setCameraFocalDistance 10
The following figure shows two paths, one with D = 0.1, and one with D = 10.

Two camera paths with two identical keyframes, except for the focal distance of the second keyframe (left: 0.1, right:10).

Connections:

Path

[required]
The camera path, an instance of HxKeyframeCameraPath.

Ports:

Tension


Tension adjusts the lengths of the tangents of the spline at the keyframes. A value of 1 means zero length, the camera will effectively drop to 0 velocity at each keyframe. A value of -1 means double length, the camera will act as though thrown out of each keyframe and will slow down to arrive at the next.

Bias


Bias of the tangent directions. With the default 0 value, the tangent is a centered difference between previous and next keyframes. With a bias of 1, the next keyframe is ignored. A bias of -1, the previous is ignored. The idea for keyframe i is summarised in the following equation: tangent(i) = (x(i+1)-x(i))*(1-B) - (x(i)-x(i-1))*(1+B).

Continuity


Continuity of the tangent directions along the direction the camera is going. A value of 1 means that when the camera arrives at a keyframe it is in the direction of the next keyframe, and a value of -1 means it arrives opposite to the direction of the previous.

Time


Time port that should be identical to the input time port, but is a different instance, i.e. when moving this one, the input time does not change (no conflict in camera positioning). The actual computation of the camera position is performed when this port is updated.

Commands:

Additional options can be accessed when typing in the console Smooth_Camera_Path COMMAND_NAME.

verbose

Displays debug information. Retype to hide info.

References:

1 Foley, van Dam, Feiner and Hughes (1996). Computer Graphics Principles and Practice, 2nd ed., ISBN 0-201-84840-6.
2 Shoemake, Ken (1985). Animating Rotation with Quaternion Curves. In Computer Graphics, 19(3), July 1985, ACM SIGGRAPH, New York (Pages 245-254).
3 http://www.hugi.scene.org/online/coding/hugi%2012%20-%20cosplqua.htm