Repository navigation
Getting Started for Artists
This page is for people who want to get an MMD model and a dance into a Unity scene without touching code. It assumes you already have a .pmx model and its texture folder, and usually a .vmd motion file as well.
Two things are worth doing once, before your first import.
First, install lilToon (jp.lilxyzw.liltoon) through the Package Manager if you want MMD-style toon shading. UMT uses lilToon automatically when it is present. Without it, models still import but fall back to URP Unlit, which is flatter and ignores toon and sphere maps. Everything below works either way; lilToon just looks closer to MMD.
Second, create the shared resources asset. Run Tools ▸ UMT ▸ Create Default Resources once. This builds Resources/UMTResources.asset, which holds the rename lists, the humanoid bone mapping, and the romanisation dictionaries the importer needs. If this asset is missing, imports that rely on renaming or avatar building will fail, so do this before anything else.
Copy the whole model folder into your Unity project under Assets, the .pmx and its textures together, keeping the relative paths intact. Unity detects the .pmx and runs the importer on it. The result appears as a set of sub-assets nested under the .pmx file in the Project window: the model prefab, the generated meshes, the materials, and (optionally) a humanoid avatar. Drag the .pmx itself into the scene to get the model.
There is no separate "imported" folder and no saved prefab on disk. The model is the import result of the file, so re-importing the .pmx, or changing an import option, rebuilds the whole thing from scratch.
Textures are resolved as project assets. If the model looks untextured, the most likely cause is that the texture files were not copied alongside the .pmx, or were copied with broken relative paths. Put them back where the PMX expects them and reimport.
Select the .pmx in the Project window and the import settings show up in the Inspector, organised into four tabs across the top: Model, Rig, Animation and Materials. Set what you want and click Apply at the bottom to reimport.
Model holds general import settings. The one here is Generate Debug Data, which writes extra JSON describing the parsed model and the rename map next to the asset, plus a .pmx.import.log timing file. You only need this when you are diagnosing an import, so leave it off for normal work.
Rig is where humanoid avatar creation lives. Create Avatar builds a humanoid Avatar from the model's bones and attaches an Animator. Turn this on if you intend to drive the model with Unity humanoid animation or retargeted motion. It only succeeds when the model has the bones Unity's humanoid rig requires; if a model is missing required bones, the avatar is skipped and the rest of the import still completes. (It is off by default.)
Animation holds VMD Animations, a list you can populate with .vmd files to convert at import time. Each one becomes an AnimationClip sub-asset on the model. The bake settings below the list apply to these clips:
- Frame Rate sets the sampling rate of the generated clip; 30 matches MMD.
- Bake IK To FK is strongly recommended on. See Converting motion below for why.
- Bake Physics To FK bakes the result of the physics simulation (hair, skirts, accessories) into the clip so the motion plays back the same way every time. Only shown when Bake IK To FK is on.
- Physics Warm-Up Duration is how many seconds of physics to settle before the clip starts, so cloth and hair begin in a resting pose rather than snapping into place on frame one.
Materials controls how the generated materials are handled. By default (Standard mode) the materials are embedded sub-assets of the .pmx, rebuilt on every reimport. If you want to hand-tune materials and keep your edits, switch to Override mode: the tab then shows one slot per material where you can drop in your own Material asset, and a slot left empty falls back to the generated material. The Extract Materials… button does this for you in one step — it writes every generated material out as a standalone .mat asset in a folder you choose, switches the model to Override, and wires each extracted material into its slot. From then on your edits to those .mat files survive reimport.
You can convert a .vmd two ways: attach it to the model's import settings as above, or use the dedicated window at Tools ▸ UMT ▸ VMD Clip Converter for one-off conversions and camera motion.
In the converter window you choose a Target:
-
Motion converts body and morph animation. It needs the
PMXModelof the character the motion was made for, because the curves are built against that model's exact bone and morph layout. - Camera converts a VMD camera track into a clip for a two-node camera rig. Camera motion does not need a model. You pick a Frame Rate here (30, 60 or 120 fps — the native VMD timeline is 30 and is sub-sampled up while keeping the same real-time duration), and the window can create the rig in your scene for you with a button.
For Motion, you also pick a Conversion Mode:
- IK Baked To FK samples the fully solved pose on every frame, after IK and optionally physics, then writes plain rotation curves. This is the recommended mode. When it is selected the window also exposes Bake Physics To FK, a Physics Seed (fixing the seed makes the simulation repeatable), and a Physics Setup Duration warm-up.
- IK Runtime-Solved writes sparse curves and leaves IK to be solved live at playback by the model's runtime components. It produces smaller clips and keeps IK editable, but it depends on the runtime solver being present and correct at play time.
This is the one thing worth understanding before you commit to a workflow. MMD interpolates bone rotation as a proper spherical rotation along the path the animator authored. Unity's AnimationClip does not do this for quaternion curves: it blends the four quaternion components independently and ignores the interpolation handles (tangent weighting) entirely. The two give visibly different results on any rotation with real curvature: limbs can swing wide, ease the wrong way, or take a slightly off path between keys.
Baking sidesteps the whole problem. By sampling the solved pose every frame and writing a key per frame, there is nothing left for Unity to interpolate incorrectly, because the curve already contains the right value at every frame. The trade-off is larger clips and rotations that are no longer hand-editable as a few sparse keys, which for converted MMD motion is almost always the right trade.
You can get closer to MMD with the runtime-solved path by converting the rotations to Euler-angle curves and shaping them by hand in the editor, but it stays approximate: Euler curves interpolate per channel and still will not reproduce MMD's spherical path exactly, and they bring their own gimbal and continuity problems. For faithful playback, bake.
If a dance has lots of cloth and hair you care about, also turn on Bake Physics To FK and give it a few seconds of warm-up, so the simulated motion is captured into the clip and plays back identically every time rather than re-simulating live.
A baked clip is ordinary Unity animation. Drop it on an Animator or Animation component and play it. A model imported with Create Avatar can also take retargeted humanoid animation through its Animator, independently of any converted VMD.
The model's physics components are present on the imported root. Live physics only runs in play mode and only when it is enabled on the model's transform manager; in baked clips the motion is already in the curves, so you do not need live physics for playback to look right.
If renaming or the avatar fails on import, check that Create Default Resources has been run and that UMTResources.asset exists. Most setup failures trace back to that asset being missing.
If a model imports but appears grey or untextured, the textures were not found as project assets. Copy the texture folder alongside the .pmx with its original layout and reimport.
If converted motion looks subtly wrong, with limbs drifting, poses arriving early or late, or feet not planting, you are most likely on the runtime-solved path. Switch to baked and reconvert.
If shoulders, elbows or the neck pinch or crease when a limb rotates hard, those are SDEF joints and the spherical-deform pass may not be running. Normally it runs automatically. If it fell back to the CPU path (the import log warns when the SDEF compute shader is missing), that path only runs in play mode, so the joints will look un-deformed while you scrub in the editor and correct once you press Play.