Skip to main content

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.

VMD (Vocaloid Motion Data) is the standard animation format for MikuMikuDance and compatible renderers. A .vmd file stores a list of keyframes per bone and per morph — frame number, rotation quaternion, translation vector, and Bézier interpolation handles for each key. Reze Studio reads and writes this format natively: you can import an existing clip from any MMD-compatible tool, hand-key or refine it in the timeline and curve editor, and export it back to a .vmd that any MMD renderer will accept. Nothing is sent to a server — all file I/O happens entirely inside your browser.

Loading a VMD file

1

Open the File menu

Click File in the top-left menu bar, then select Load VMD…. This option is disabled until the engine has finished initializing and a model is loaded.
2

Pick a VMD file

Your browser’s file-picker opens filtered to .vmd files. Select the file you want to import.
3

Clip loads into the timeline

The engine parses the VMD, and all bone and morph tracks appear in the dopesheet immediately. The playhead resets to frame 0 and any previous animation is replaced. The undo/redo history is cleared — loading a VMD calls replaceClip, which resets the past and future stacks so history from the previous clip does not bleed into your new work.
4

Clip name is set from the filename

The clip’s display name (shown in the status bar and used as the export filename) is derived from the filename without its extension using fileStem(). A file named my_dance.vmd becomes the clip name my_dance.
The clip display name is extracted with fileStem(), which strips the directory path and extension and trims whitespace. If the result is empty (e.g. a file named .vmd), the name falls back to "clip".

Starting a new clip

If you want to key an animation from scratch rather than editing an existing VMD, use File → New to reset the timeline to a blank state.
1

Open the File menu

Click File in the menu bar, then select New. This option is disabled until the engine is ready.
2

Timeline resets

All bone and morph tracks are removed. A blank clip is created with a default length of 120 frames (4 seconds at 30 fps), as defined by DEFAULT_STUDIO_CLIP_FRAMES in lib/utils.ts. The playhead moves to frame 0.
3

Undo/redo history clears

The undo/redo stack is reset along with the clip so history entries from the previous session do not bleed into your new work.
4

Clip name resets

The clip display name resets to "clip". Rename it before exporting if you want a meaningful filename.
You can start a new clip on any loaded model. The bone list and morph list stay exactly as they are — only the animation data clears. Begin by scrubbing to the frame you want, selecting a bone, posing it with the inspector sliders or the viewport gizmo, and a keyframe is inserted automatically.

Exporting to VMD

When you are ready to save your work, export it as a .vmd file that any MMD-compatible renderer can open.
1

Open the File menu

Click File, then select Export VMD…. This option is disabled when there is no loaded clip.
2

File downloads automatically

The engine serializes the current clip to VMD binary format and your browser downloads the file as <clip-name>-export.vmd. For example, a clip named my_dance produces my_dance-export.vmd.
Reze Studio has no server and no auto-save. Your clip exists only in browser memory. If you close the tab, reload the page, or your browser crashes, any unexported work is lost permanently. Export early and export often.

Unsaved-change warning

Reze Studio tracks whether your clip has unsaved changes. If you try to close or reload the tab while there are edits that have not been exported, the browser will show its standard “Leave site? Changes you made may not be saved” confirmation dialog. This uses the browser’s beforeunload event — it fires for tab close, window close, and page refresh, but not for navigation within the same tab. The dirty flag clears automatically after a successful export. Loading a VMD file or clicking New also clears it because those operations replace the clip entirely with a known state.

The bundled sample clip

When Reze Studio opens for the first time in a session, it automatically loads a sample animation alongside the default model so you can see the editor in action without any setup. The sample clip is fetched from:
/animations/miku.vmd
This path is defined as VMD_PATH in engine-bridge.tsx. The clip name is set by passing VMD_PATH through fileStem(), which extracts miku as the display name. If the file is not found (e.g. in a local development build without the asset), the engine logs a warning and starts with an empty timeline instead.
The sample clip is loaded with suppressClipDirtyRef set so that the initial load does not trigger the unsaved-change warning. Opening the tab fresh and immediately closing it will not prompt you to stay.

Track retention on model swap

When you load a new PMX model while a clip is active, Reze Studio does not discard your animation outright. It runs a retention pass that:
  • Keeps tracks for bones and morphs that exist on the new model by name.
  • Silently drops tracks for bones and morphs that do not exist on the new model.
The retained clip is loaded onto the new model immediately. If the new model shares bone and morph naming conventions with the original (standard Japanese MMD names such as 上半身, 左腕, 右腕, etc.), most or all of your animation data will survive the swap intact.

Bones retained

Any bone track whose bone name is present in the new model’s skeleton is kept with all its keyframes and Bézier handles unchanged.

Bones discarded

Any bone track whose bone name does not appear in the new skeleton is removed. There is no warning — check the bone list after swapping to verify coverage.

Build docs developers (and LLMs) love