[WEB Add] MMD to GLB - MMDモデルをアニメーション付きGLBに変換
概要
MMD(MikuMikuDance)のPMXモデルとVMDモーションファイルを読み込み、アニメーション付きGLBファイルに変換するWebツール。 アップロード不要で、ファイルはローカル環境(ブラウザ内)で処理され、外部サーバーには送信されません。
MMD形式は専用ソフトウェアでの利用が前提ですが、GLBに変換することでThree.js、Babylon.js、Blender、Sketchfabなど、glTF対応のあらゆる環境で利用可能になります。
🔗 ツールを開く: MMD to GLB
[WEB Add] MMD to GLB
PROTOCOL.LAIN // MMDモデルをアニメーション付きGLBに変換
lain-lab.comMMDモデルは以下でお借りしています。
3D model: にーしか氏
「ぬかりさん」 / にーしか さんの作品 - ニコニ立体
先頃販売されていた「ぬいぐるみのゆかりさん」をモチーフに二次創作したものです。Ver.1.31更新内容:スカート丈を長くしました(2020.10.16)図解 → td73080
3d.nicovideo.jp「MMD to GLB」 でMMDの読み込み及びGLB変換。
出力したGLBモデルを再生テスト。
使い方
1. PMXモデルを読み込む(ZIP形式)
画面左上の「MODEL (ZIP)」エリアからモデルを読み込む。
- ドラッグ&ドロップ — PMXファイルとテクスチャをまとめたZIPファイルを破線エリアにドロップ
- クリックで選択 — エリアをクリックしてファイル選択ダイアログから選ぶ
PMXモデルはテクスチャファイル(PNG/JPG/TGA/BMP等)と一緒にZIPに圧縮する必要があります。PMX単体では正しく表示されません。
2. ファイル情報の確認
読み込みが完了すると、FILE INFO セクションにモデルの解析データが表示される。
| 項目 | 内容 |
|---|---|
| Name | ZIPファイル名 |
| PMX | PMXファイル名 |
| Triangles | 総ポリゴン(三角形)数 |
| Vertices | 総頂点数 |
| Materials | マテリアル数 |
| Bones | ボーン数 |
| Morphs | モーフ(表情)数 |
プレビューエリアにはモデルが描画され、マウス操作(回転・拡縮・パン)で確認できる。
3. VMDアニメーションの追加(オプション)
右パネルの「ANIMATIONS」エリアにVMDファイルをドロップする。
- 複数のVMDファイルを追加可能
- クリップ名はインラインで編集可能(デフォルトはファイル名)
- リスト上のクリックでプレビュー再生
- ✕ボタンで個別削除
アニメーションなしでもポーズ固定のGLBとしてエクスポートできる。
4. エクスポート設定
EXPORT OPTIONS セクションでオプションを指定する。
| オプション | 内容 |
|---|---|
| Remove Morphs (blend shapes) | モーフデータ(表情)を削除。ファイルサイズが大幅に減少する。NPCなど表情が不要な用途向け。 |
| Convert to Unlit materials | マテリアルをUnlit(影なし)に変換。描画負荷が下がる。 |
5. エクスポートとダウンロード
▶ EXPORT GLB ボタンをクリックすると、アニメーションベイク→マテリアル変換→GLBエクスポートが実行される。
処理完了後、RESULT セクションに元のZIPサイズとGLBサイズの比較が表示される。
⬇ DOWNLOAD ボタンをクリックすると .glb ファイルがダウンロードされる。
なぜMMDからGLBに変換するのか
互換性
MMDのPMX形式は専用ソフトウェアでしか扱えませんが、GLB(glTF Binary)はWeb3Dの国際標準フォーマットです。変換することで以下の環境で利用可能になります。
- Three.js / Babylon.js — WebGLアプリケーション
- Blender — 3Dモデリング・レンダリング
- Sketchfab — 3Dモデルの公開・共有
- Unity / Unreal Engine — ゲームエンジン
パフォーマンス
MMDLoaderはランタイムでPMXのパース、トゥーンマテリアル処理、物理演算(Bullet Physics)を行いますが、GLBにすると標準的なGLTFLoaderだけで読み込めます。複数キャラクターを同時に表示する場合、描画負荷が大幅に下がります。
アニメーション
VMDモーションデータはMMD専用形式ですが、GLBに変換することでglTFの標準AnimationClipとして扱えます。Three.jsのAnimationMixerで再生・切り替えが可能です。
const mixer = new THREE.AnimationMixer(model);
const idle = gltf.animations.find(a => a.name === 'idle');
mixer.clipAction(idle).play();
アニメーションベイクについて
VMDモーションデータはMMDのボーン構造に依存するため、GLTFExporterでそのまま書き出すと正しく再生されない場合があります。
本ツールでは、MMDAnimationHelperで各フレームを実行し、ボーンの変換結果(位置・回転)を30FPSでサンプリングして新しいAnimationClipを構築する「ベイク方式」を採用しています。これにより、IK(逆運動学)やモーション補間の結果を含めた正確なアニメーションがGLBに焼き込まれます。
ZIP形式について
PMXモデルはテクスチャファイルへの相対パス参照を持っています。テクスチャとPMXファイルをまとめてZIPに圧縮してください。
model.zip
├── model.pmx
├── tex/
│ ├── body.png
│ ├── face.png
│ └── hair.png
└── toon/
├── toon01.bmp
└── toon02.bmp
ZIP内のディレクトリ構造は保持されます。PMXからの相対パスでテクスチャが解決されます。
関連ツール
| ツール | 用途 |
|---|---|
| VRM to GLB | VRM + VRMAからアニメーション付きGLBを生成 |
| GLB Compressor | GLBモデルのWebP + Draco圧縮 |
| VRM Optimizer | VRMモデルのWebP + Draco圧縮 |
| VRM Texture Replacer | VRMテクスチャの確認・差し替え |
| VRM Validator | VRMファイルのバリデーション |
技術仕様
| 項目 | 内容 |
|---|---|
| レンダリング | Three.js 0.160.0 (WebGL) |
| MMDパース | MMDLoader + mmdparser |
| アニメーション | MMDAnimationHelper(ベイク方式) |
| GLBエクスポート | GLTFExporter |
| ZIP展開 | JSZip |
| フレームワーク | Astro(CDN + importmap) |
| データ処理 | 全てブラウザ内、サーバー通信なし |
対応ブラウザ
WebGL対応のモダンブラウザ(Chrome / Edge / Firefox / Safari)。 ZIP展開およびメモリ上のバイナリ処理を伴うため、PC環境での利用を推奨。
利用上の注意
- MMDモデル・モーションデータの利用にあたっては、各データの利用規約を遵守してください
- 改造・再配布が許可されているデータのみを使用してください