Sequential animation, driven by curves.
Nota
An expression tag for Cinema 4D that animates a whole group of objects one after another. Each child flows through an IN, HOLD and OUT cycle, staggered in time and shaped entirely by spline graphs. No manual keyframe offsetting.
Why Nota
One tag, the whole group
Drop Nota on a parent object and every child becomes part of one staggered animation. Add, remove or reorder children and the sequence rebuilds itself, with no per object keyframes to babysit.
Everything is a curve
Position, rotation, scale, ordering, offsets, randomness, oscillation. Each one is shaped by its own spline graph. You draw the motion instead of guessing tangent handles.
In, hold, out
Objects fly in from a Start Reference, hold on their keyframe, then fly out to an End Reference. A full enter and exit lifecycle with independent timing and easing for each stage.
Features
Staggered timeline
Duration, Hold and Out times plus a per object Step delay and a global Offset. Objects cascade in sequence; tune the rhythm with a single number.
Start & End references
Link a Start object the group animates from and an End object it animates to. Add a Motion Reference for a shared, additive movement on top.
Graph driven transforms
Dedicated spline curves for position, rotation, scale and per axis offsets, both for the IN and the OUT phase. Plus a Scale Min/Max range and a Shader Time output.
Layered randomness
Independent random vectors for position, rotation and scale, each faded in over time by its own curve and driven by a seed, separately for entering and exiting.
Oscillator
Add continuous secondary motion on position and rotation, with a frequency, a per object phase step and custom waveform curves you can edit.
Spline path & sorting
Constrain objects to a spline path with optional tangent alignment, and sort the activation order by distance to a target or at random.
How it works
Nota is an expression tag. Apply it to a Null (or any parent), put the objects you want to animate underneath it, and each child runs through the same IN / HOLD / OUT cycle, offset in time so the group animates one element after another.
One parent, many children
Nota lives on a parent object and reads its direct children. The keyframe pose of each child, its own position, rotation and scale, is the pose the IN phase resolves to and the pose the OUT phase departs from. Move the children, retime the tag, and everything updates live.
Because the sequence is built from the child list, you can add or remove objects at any time without touching a single keyframe.
The IN / HOLD / OUT timeline
Each object's life is split into three stages:
- Duration (IN): how long the object takes to animate into its keyframe pose, starting from the Start Reference.
- Hold: how long it stays parked on the keyframe before leaving.
- Out: how long it takes to animate away towards the End Reference.
Step delays each object relative to the previous one (the cascade), Offset shifts the whole group in time, and Random Duration + Seed add controlled variation per object.
The OUT stage is new to the Python version and mirrors IN completely: every IN control (the easing curves for position, rotation and scale, the per axis offsets and the layered randomness) has an exact OUT counterpart. The exit is as art directable as the entrance, using the same panel laid out the same way.
Draw the motion
Almost every channel in Nota is shaped by a spline graph instead of a fixed easing. You decide the look of the motion by editing a curve:
- Position / Rotation / Scale: easing of each transform over the IN phase, with matching curves for the OUT phase.
- Offset X / Y / Z: per axis positional offset, centred so 0.5 means "no offset".
- Order: remap how the activation order maps onto the group, to bias the cascade.
- Random curves: fade randomness in and out over time rather than applying it flat.
Oscillation, paths & constraints
On top of the base animation, Nota adds the touches that make a sequence feel alive:
- Oscillator: continuous wobble on position and rotation, with a frequency, a per object phase step and editable waveform curves.
- Spline path: constrain objects to a linked spline, optionally aligning them to its tangent.
- Sorting & Kerning: order the cascade by distance to a target (or randomly), and offset objects relative to a kerning reference.
- Axis locks: freeze any of X, Y, Z or H, P, B to the reference, so part of the pose stays fixed.
Installation
Get the ZIP from the Download button above and extract it.
Move the Py-Nota folder into your Cinema 4D plugins directory.
Nota appears in the Tags menu (Expression tags), ready to drop on any parent object.
Plugins directory:
Windows: %APPDATA%\Maxon\<version>\plugins\
macOS: ~/Library/Preferences/Maxon/<version>/plugins/
FAQ
How do I apply it?
Put the objects you want to animate under a single parent (a Null works well), then add the Nota tag to that parent. Nota animates the parent's direct children in sequence.
Does it work on macOS?
Yes. Nota is pure Python with no native dependencies, so the same plugin file works on Windows and macOS.
What does a curve actually control?
Each curve maps the normalised progress of a phase (0 to 1) to a value. For position, rotation and scale it's the easing; for offsets and oscillation it's the shape of the movement; for randomness it's how the random amount fades in over time.
Can I temporarily disable it?
Yes. Switch the tag's Enable checkbox off and the children are released, free to be moved by hand again. Turn it back on to resume the sequence.
What are the Start and End references for?
The Start Reference is where objects animate from during the IN phase; the End Reference is where they animate to during the OUT phase. Leave them empty to animate from/to the objects' own keyframe pose.
Is it really free?
Yes. Nota is offered free of charge. If you find it useful and want to support continued development, consider a one time donation on Ko-fi, much appreciated, never required.
Animate the whole group with one tag.
Free download, no license, works on all platforms.