Skip to the content.

A new character or dance

1. The character file

mmdance reads a .blend with one armature and one main skinned mesh, and never modifies it. The pipeline assumes:

Shading is up to you; the pipeline keeps whatever materials the file has. A toon shader with outlines suits MMD motions. The example character uses an EEVEE toon node group and a geometry-nodes outline.

2. Inspect it

python -m mmdance inspect character/my_character.blend inspect/

This prints report.json and writes inspect/character.png, front and side views with a 5 cm height grid coloured by material. The report contains:

The suggestions are starting points, read off the mesh by simple rules.

3. Write project.toml

Start from python -m mmdance new projects/<name>. Only set what differs from mmdance/defaults.toml.

Skirt ([skirt]):

Overskirt ([overskirt]): turn it on only for a real second layer, such as open panels or a peplum over the skirt. rig prints how many vertices it found on the outer layer and the panel columns.

Hair ([hair]):

Other sizes: for a character H metres tall, multiply these by H:

The physics stiffnesses are ratios and need no scaling; gravity follows motion.scale automatically.

Repairs ([fixes]) are opt-in, for errors auto-riggers make: hair/cloth seams pulled by the arms, waist vertices that follow the thighs, weights that bleed between legs that touch, boots that crumple. Turn one on only when you see the problem in a still.

Hands ([hands]): use these only if the hands are fused blobs and have their own material slot. The replacement is a clean stylised hand built from the bones. skin_color sets its flat colour.

Face ([face]):

Camera:

Stage:

4. Build, look, iterate

python -m mmdance build  projects/<name>/project.toml
python -m mmdance stills projects/<name>/project.toml 120,480,900 cam,front,side
python -m mmdance stills projects/<name>/project.toml 480 bone=LeftHand=0.25,face 800
python -m mmdance qa     projects/<name>/project.toml 1540 1600      # a spin: hem lag, frames to check

Simulation first: --until 300 simulates only the first 300 frames, so a parameter change can be judged in a minute. A full simulation of a 90 s dance takes 15–20 minutes, rendering about 2 hours at 1080p.

Things to check in stills:

5. Render

python -m mmdance render projects/<name>/project.toml --jobs 2
python -m mmdance encode projects/<name>/project.toml

Rendering skips frames that already exist and writes placeholders, so processes can share the range and a stopped render resumes. Delete the frames folder to re-render from scratch. encode refuses to run while frames are missing or still placeholders.