WebGLライブラリThree.jsには、MikuMikuDance形式(PMD/PMX・VMD)を読み込み、物理演算Ammo.jsで髪やスカートを揺らす「MMDLoader」「MMDAnimationHelper」が用意されています。本記事では環境構築からモデル読込、モーション同期、物理挙動の調整、よくあるエラー解決までをステップ別に解説します。MikuMikuDanceはポージングとアニメーション専用のソフトウェアであるため、モデラーはBlenderやMetasequoiaなどの3Dモデリングソフトウェアを使用してモデルとUVマップを作成しているが、MMDプラットフォームへの変換(顔のモーフ、ボーン、身体など)の大部分は、MMDモデル変換専用に作られたプログラム、PMD Editorやその後継であるPMX Editorを使用している。
Ammoが出てくる背景がまだよくわからないが、とにかくThree.jsのmmdのデモではAmmoが出てきた、タイムラインのアップデートで動きとシンクロさせているが、細かいところはよくわからなかった。得手不得手あるように思う。
Q1. MMDLoaderとは何ですか?
A1. Three.jsの公式アドオンで、MikuMikuDance形式(PMD/PMXモデル、VMDモーション)をWebGL上に読み込むためのローダーです。
Q2. MMDモデルをThree.jsで使うための準備は?
A2. Three.js本体と、MMDLoader.js、MMDAnimationHelper.js を読み込みます。物理演算を行う場合は Ammo.js または ammo.wasm も必要です。
Q3. 物理演算を有効にする方法は?
A3. new THREE.MMDAnimationHelper({ physics: true }) のように初期化時に physics: true を設定し、Ammo.jsを事前に読み込むことで有効化されます。
Q4. モデルやモーションが読み込まれない場合の対処は?
A4. パスやファイル名の誤り、CORS設定、モデル・モーションのフォーマット不一致が原因になりやすいです。ブラウザのコンソールでエラー内容を確認してください。
Q5. パフォーマンスを改善するには?
A5. ポリゴン数の少ないモデルを使う、物理演算のステップ数を減らす、描画解像度を下げるなどが効果的です。
Q6. MMDモデルをGLTFに変換して使うことは可能ですか?
A6. 可能ですが、MMD特有の物理演算やモーションデータは変換後に一部失われる場合があります。
Q7. 商用利用は可能ですか?
A7. Three.jsやMMDLoader自体はMITライセンスですが、MMDモデルやモーションは配布元の利用規約に従う必要があります。