{"record":{"id":"296fd6b42b1da2de","repo":"moeru-ai/airi","slug":"mmd-motion-descriptor-name-loaded-but-has-0","errorCode":null,"errorMessage":"[mmd] motion \"${descriptor.name}\" loaded but has 0 tracks matching this model. The VMD's bone/morph names likely do not match the model (different rig/naming).","messagePattern":"\\[mmd\\] motion \"(.+?)\" loaded but has 0 tracks matching this model\\. The VMD's bone/morph names likely do not match the model \\(different rig/naming\\)\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/stage-ui-mmd/src/components/scenes/MMD.vue","lineNumber":338,"sourceCode":"\n  for (const descriptor of availableMotions.value) {\n    if (registeredMotions.has(descriptor.name))\n      continue\n    try {\n      // The VMD file lives in IndexedDB (shared across windows); build a\n      // window-local object URL to load it, then revoke it once parsed.\n      const file = await mmdStore.getMotionFile(descriptor.id)\n      if (!file) {\n        console.warn(`[mmd] motion file \"${descriptor.name}\" (${descriptor.id}) not found in storage`)\n        continue\n      }\n      const url = URL.createObjectURL(file)\n      try {\n        const clip = await loadMMDAnimationClip(url, mesh)\n        animation.registerClip(descriptor.name, clip)\n        registeredMotions.add(descriptor.name)\n        if (clip.tracks.length === 0) {\n          console.warn(\n            `[mmd] motion \"${descriptor.name}\" loaded but has 0 tracks matching this model. `\n            + 'The VMD\\'s bone/morph names likely do not match the model (different rig/naming).',\n          )\n        }\n      }\n      finally {\n        URL.revokeObjectURL(url)\n      }\n    }\n    catch (err) {\n      console.error('[mmd] failed to load motion', descriptor.name, errorMessageFrom(err))\n      emit('error', err)\n    }\n  }\n\n  if (idleMotionName.value && registeredMotions.has(idleMotionName.value))\n    animation.setIdleMotion(idleMotionName.value)\n}","sourceCodeStart":320,"sourceCodeEnd":356,"githubUrl":"https://github.com/moeru-ai/airi/blob/677329427f32468c74b17f3ec47eeca4e05bec65/packages/stage-ui-mmd/src/components/scenes/MMD.vue#L320-L356","documentation":"loadMMDAnimationClip() parsed the VMD file into an AnimationClip, but the clip has zero tracks for the current model: no bone or morph name in the VMD matched the loaded PMX/PMD rig. The clip is still registered under the descriptor name but will animate nothing.","triggerScenarios":"Using a VMD authored for a different model family: Japanese vs English/localized bone names, bones absent from the target model, or morph-only VMDs whose morph names do not exist on the model.","commonSituations":"Downloading a motion made for one character and applying it to another model; mixing rigs (e.g. a Tda-style rig vs a standard rig); VMDs targeting IK/appendage bones the target model does not have.","solutions":["Use a VMD authored for the same model or rig family — confirm the model has the bones the motion drives (e.g. センター/center, 腰/hips)","Retarget the VMD onto the target model's bone names with a tool (Blender MMD tools, CATS)","Confirm the intended PMX/PMD model was loaded — a wrong model with the same motion produces the same warning","For morph-only or camera VMDs where bone motion is not required, this warning can be ignored"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// After building the clip, before registering it\nconst clip = await loadMMDAnimationClip(url, mesh)\nif (clip.tracks.length === 0) {\n  console.warn(`[mmd] motion \"${descriptor.name}\" has 0 tracks matching this model; skipping registration`)\n  continue\n}\nanimation.registerClip(descriptor.name, clip)","typeGuard":"function clipMatchesModel(clip: AnimationClip): boolean {\n  return clip.tracks.length > 0\n}","tryCatchPattern":null,"preventionTips":["Prefer VMD files authored for the same model or rig family","Retarget mismatched VMDs with Blender MMD tools / CATS before importing","Surface a user-facing hint when a motion loads with zero tracks instead of only console output"],"tags":["mmd","vmd","animation","rig-mismatch","bone-names"],"backgroundTag":"animation-rig-mismatch","analyzedSha":"677329427f32468c74b17f3ec47eeca4e05bec65","analyzedAt":"2026-08-18T17:29:58.153Z","contentChangedAt":"2026-08-18T17:29:58.153Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}