Structure that contains multiple control points (aka. Keyframe) that are generally interpolated over time. Each segment can be either manually or procedurally generated and customized based on the way you want them to behave during playback.

Curves are used by a vast range of resources; they can be used to animate a character, predefine a camera path or generate procedurally a gradient texture or to control variables. They can be created manually, recorded or directly imported from a COLLADA file.

See Also

Static Variables

Name Description
keyframe_count Amount of Keyframe the Curve contains.
texture Reference to an existing Texture controlled by the active Curve.


Name Description
speed Controls the playback speed of the current Curve.
flags Bit mask used to control the Curve options.
visible Toggle on/off the Curve visibility in the editor.
reverse Force the Curve playback time be be inverted.
normalize Normalize the Keyframe values.
manual Indicate that the Curve playback time will be updated through its associated Channel manually by the user.


Name Description
AddKeyframe Add a new Keyframe.
GetKeyframe Retrieve a specific Keyframe using its unique id as key.
GetKeyframeAt Get an existing Keyframe using its index as key.
GetKeyframeAtLocation Use the key playback time of a Keyframe as key to retrieve it.
GetKeyframeIndex Retrieve the internal index of Keyframe from the stack.
RemoveKeyframe Remove a specific Keyframe from the stack.
RemoveKeyframeAt Remove a Keyframe at a specific index.
AdjustKeyframeHandleLeft Automatically adjust the position of the left handle of a Keyframe using its index as key.
AdjustKeyframeHandleRight Automatically adjust the position of the left handle of a Keyframe using its index as key.
ShiftSelection Apply a specific transformation matrix to all subsequent keyframes found after the current Keyframe selection.
TransformSelection Apply a specific transformation to all selected keyframes.
SortKeyframes Sort all keyframes in chronological order.
Cleanup Remove all duplicated keyframes using a custom threshold.
GetMin Return the minimum value of evaluated by the Curve.
GetMax Return the maximum value of evaluated by the Curve.
GetStartTime Retrieve the start time of the Curve.
GetEndTime Retrieve the ending time of the Curve.
GetDuration Return the total duration of an active Curve.
GetCycleTime Return the Curve playback time for a specific CycleMode.
Evaluate Manually evaluate the value of the Curve at a specific time and CycleMode.
EvaluateKeyframe Retrieve the current Curve Keyframe after evaluation.
MirrorX Mirror all keyframes on the X axis (by time).
MirrorY Mirror all keyframes on the Y axis (by value).
SetTexture Allow you to generate the content of a Texture using the Curve data.
ToTexture Use the active Keyframe content of the Curve to generate a Texture.
ToTexture Use the active Keyframe content of the Curve to generate a Texture
Update Force the Curve to be updated.


List of all interpolation types. It is generally used to tell the system how to to interpolate from one Keyframe to another. But it is also used at other locations to dictate other type of data interpolation.

  • kConstant: The value stay constant until the next entry.
  • kLerp: Linear interpolation; values are joined by a straight line segment.
  • kCosine: Cosine interpolation, which provides a smooth transition between adjacent segments.
  • kCubic: Cubic interpolation which provides true continuity between two segments.
  • kBezier: Provides a four points Bezier interpolation where the tangent at the end points can be controlled and by two handles.
  • kCatmull: Catmull-Rom splines; which uses the slope between the previous point and the next as the derivative at the current point.
  • kHermite: Four points cubic interpolation that provides a higher degree on continuity and optionally allow you to tighten up the curvature by settings its tension. In addition a bias can be specified to twist the curve about the two known points.
  • kParametric: Parametric curve which provides a low cost smooth interpolation.
  • kBend: Similar to cosine but smoother.


Type of handle to use with four points interpolation such as: kBezier and kHermite.

  • kSmooth: Keep both left and right handles in sync. for smooth interpolation.
  • kAligned: Align both the left and the right handle while they are being transformed.
  • kFree: Allows you to manipulate the left and right handles independently.
  • kAuto: Adjust both left and right handle to keep the transition between keyframes as smooth as possible. Consequently the left and right handles are moving in sync. and cannot be manipulated independently like when using kFree type.


Bit flags used to represent the different level of selection of a Keyframe.

  • fSmooth: Neither the key or the left and right handle is selected.
  • fKeySelected: Key selection.
  • fLeftHandleSelected: Left handle selection.
  • fRightHandleSelected: Right handle selection.


Control point that represents a single key on a Curve.

Static Variables

Name Description
uid Unique id to internally identify the Keyframe


Name Description
interpolation_type The InterpolationType to use to blend in the current segment with the next.
handle_type The HandleType to use based on the current InterpolationType.
key The active Keyframe key represented as a Bezier triple.
tension Tension factor used to tighten up the curvature (kHermite only).
bias Bias used to twist the curvature (kHermite only).
state Bit mask representing the active KeyframeState selection state of the key.

NRG - API 2022.3.383570 - Thu Jul 28 2022
Copyright © 2022 All Rights Reserved. Terms of Service - Privacy Policy - EULA