Every animation in Reze Studio is a collection of keyframes — snapshots of a bone’s pose at a specific frame number. The engine interpolates smoothly between those snapshots using per-channel Bézier curves. Editing an animation means managing that collection: inserting keyframes to set new poses, retiming them by dragging, removing unnecessary ones, and running simplify to compress the result. Every one of those operations is undoable and lives in a 100-step history stack.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/AmyangXYZ/reze-studio/llms.txt
Use this file to discover all available pages before exploring further.
Inserting a Keyframe
There are two ways a keyframe comes into existence. Implicit insert via posing: The most common path. Select a bone, scrub to the frame you want, and start moving a rotation or translation slider (or drag the viewport gizmo). If no keyframe exists at that frame, Reze Studio creates one automatically — it reads the engine’s interpolated pose at the current frame, creates a newBoneKeyframe with that pose, and applies your edit on top. On pointer release the whole gesture lands as one undo-able commit.
Explicit insert via the Properties Inspector: Click the Insert button in the Operations section of the Properties Inspector while a bone or morph is selected. This inserts a keyframe at the current playhead frame using the engine’s live interpolated pose (or weight, for morphs) as the value. Useful when you want to “pin” the current interpolated pose without changing any values.
The explicit Insert button is enabled only when a bone or morph is selected and a clip is loaded. If no bone is selected the button is greyed out.
The Dopesheet
The dopesheet is the lower panel of the Reze Studio layout. It shows a horizontal timeline ruler at the top and one row per visible bone track beneath it. Each diamond on a row represents a keyframe at that frame number. The playhead is the red vertical line that you scrub by clicking or dragging the ruler. Key dopesheet conventions:- A row is visible only for bones that belong to the currently-selected bone group.
- When a single bone is selected its diamonds are drawn in the accent colour; all other rows dim.
- Diamond position maps 1:1 to the
framefield on theBoneKeyframeobject. - The ruler numbers update as you zoom (
Ctrl/⌘ + scroll) or scroll horizontally.
Dragging Keyframes to Retime
To shift a keyframe in time, click and drag its diamond horizontally in the dopesheet.- While dragging, the keyframe’s
framevalue is mutated in place and the canvas redraws imperatively — no React re-render occurs per mouse move. - On pointer release a single
commit()call fires, deep-clones the modified clip, and pushes the previous snapshot onto the undo stack. That means retiming a keyframe is one undoable edit regardless of how far you dragged.
Deleting Keyframes
Select the keyframe
Click a diamond in the dopesheet to select it. The selected diamond highlights in blue. You can also Shift-click additional diamonds to extend the selection.
singleSel !== null) and a clip is loaded. If multiple keyframes are selected the button is disabled — deselect down to a single diamond before deleting.
Track Simplify
Simplify removes keyframes from the selected bone’s track that the Bézier curves between their neighbours can already reproduce within a small tolerance — effectively compressing the track without visible loss of motion quality. The algorithm used is a top-down Schneider-style recursive fit:- It samples the original track at every integer frame to capture the full motion.
- It tries to collapse the whole span into a single VMD segment by fitting four independent Bézier curves (one rotation slerp-t, three per-axis translation).
- If the maximum deviation at any frame is within tolerance, the intermediate keys are dropped and the fitted curves are stored on the surviving endpoint.
- If the fit fails, it splits at the frame with the highest error and recurses on both halves.
| Tolerance | Value | Meaning |
|---|---|---|
SIMPLIFY_ROT_DEG | 0.5 ° | Maximum allowed rotation drift |
SIMPLIFY_TRANS | 0.01 | Maximum allowed translation drift (MMD units, ≈ 3 mm at character scale) |
- Select the bone whose track you want to simplify.
- Click Simplify in the Track section of the Properties Inspector.
boneTrackLen > 2). The operation commits as a single undo step.
Track Clear
Clear wipes every keyframe from the selected bone’s track in one operation. Click Clear in the Track section of the Properties Inspector. The button is enabled whenever the selected bone has at least one keyframe. The operation is undoable — one undo step restores the full track.Selecting Multiple Keyframes
Click a diamond to select a single keyframe. To build a multi-selection:- Click additional diamonds while holding
Shiftto add or remove them from the selection. - The selection is stored as an array of
SelectedKeyframeobjects, each containing the bone name, frame number, channel (for curve-editor handles), and type ("dope"or"curve").
History limit: Reze Studio keeps the last 100 committed edits. When the 101st edit is committed the oldest entry is dropped from the stack. Plan accordingly for large editing sessions — export a VMD checkpoint periodically to avoid losing work you can no longer undo.