MMDを、ブラウザで再生・調査・編集。
インストール不要・ログインなしでも使える
PMX/PMDモデルとVMDモーションをその場で再生し、相性やテクスチャの問題を調べ、VMDの反転・切り出し・結合・速度変更までブラウザだけで処理できます。保存・共有したい組み合わせはシーンにもできます。
できること
- まず、その場で再生する — 手元のPMX・PMD・VMDを選ぶだけ。ログインもアップロードもせず、ブラウザの中だけでMMDを再生できます。
- 困ったところを調べて直す — モデルとモーションのボーン相性、テクスチャ参照、VMDの中身を診断。診断した同じファイルを選び直さず、必要なVMD加工や再生へそのまま進めます。
- 必要なら保存・共有する — モデル・モーション・カメラ・照明・BGMの組み合わせは「シーン」として保存。URLを送れば相手のブラウザでそのまま再生できます。
ログインせずに試せること
- MMDをその場で再生 — 手元のPMX・PMD・VMDを、アップロードもログインもせず再生できます。読み込んだ同じファイルをそのまま診断へ渡せます
- VMDを直す・加工する — 左右反転・トリミング・結合・速度変更・ボーン名の読み替えなどをブラウザ内で処理し、結果をそのまま再生・再診断できます
- PMX・PMD・VMDを診断する — テクスチャが表示されない原因や、モデルとモーションのボーン相性を調べ、同じファイルで加工・再生へ進めます
- PMMを再生・救出する — 古いPMMから内部モーション・カメラ・照明を取り出し、手元のPMX/PMDやBGMと照合して主シーンをブラウザ再生できます。切れた素材参照の復旧にも使えます
- MMDの仕組みを調べる — PMX・VMDの形式、ボーン、物理演算、カメラなどを実ファイルで検証した解説です
- 公開シーンを見る — 保存されたモデル・モーション・カメラ・BGMの組み合わせをブラウザで再生できます
MMDの解説
- VMDファイルの構造(バイト単位の仕様) — VMD(Vocaloid Motion Data)の全6ブロックを、オフセット・型・単位まで書き下したプログラマ向けの解説です。補間曲線64バイトの並びや、種類の見分け方も実物で確かめています。
- PMXファイルの構造(バイト単位の仕様) — PMX 2.0/2.1のヘッダから頂点・面・材質・ボーン・モーフ・剛体・ジョイントまで、可変長インデックスやボーンのフラグを含めてバイト単位で書き下したプログラマ向けの解説です。
- MMD標準ボーン・準標準ボーン一覧|モデル/VMDの不足も診断 — MMDの標準ボーン・準標準ボーンを一覧で確認できます。PMXモデルとVMDモーションを照合し、不足ボーンと一致率をブラウザで調べる方法も実データで検証しています。
- PMXのテクスチャが表示されないときに見るところ — モデルが真っ白・一部だけ灰色になる原因を、実際に踏んだ順に並べました。大文字小文字の食い違い、相対パス、sph/spa/tga の扱いなど。
- カメラVMDの中身と、カメラ位置の正しい求め方 — カメラVMDの61バイトの並びと、注視点・距離・回転からカメラ位置を求める式。three.jsのMMDLoaderの実装とMMDの意味が食い違っている点も実測値つきで説明します。
- MMDをブラウザで動かす仕組み(three.js + MMDLoader) — PMX・VMDをブラウザで再生するのに必要な構成と、three.jsのバージョンやAmmo.jsまわりで実際に踏んだ落とし穴をまとめます。
- VMDの切り出し・結合・速度変更で壊れるところ — モーションを途中から切り出す、2つ繋げる、速度を変える。どれも「フレーム番号を書き換えるだけ」に見えて、実際には黙って壊れる箇所があります。実物のVMDで測った件数つきで説明します。
- モーションを左右反転するときの計算と、反転できないもの — VMDの左右反転は、位置のXと回転のY・Zを反転してボーン名の「左」「右」を入れ替える処理です。符号をどこで反転するのか、なぜカメラと表情は反転できないのかを実データつきで説明します。
- ボーン名・表情名が化ける理由(15バイトのShift_JIS固定長) — VMDのボーン名と表情名は15バイトのShift_JIS固定長です。日本語なら7文字まで。実物のVMDで名前の長さを数え、どこで切れるのか・何が化けるのかを調べました。
- キーフレームを手で置いてモーションを作るときの注意 — ポーズを並べてVMDを作るときに必ず引っかかる3点 — 補間は同じボーンの間だけ効く、全キーフレームに全ボーンを書く、物理で揺れるボーンは書き出さない。実モデルでの本数つきで説明します。
- 物理演算(揺れもの)の仕組みと、扱うときの割り切り — 剛体の種別・ジョイント・重力の意味と、シークで揺れが再現できない理由、体型を変えたときに剛体がどうなるかを、実モデルの本数つきで説明します。
- PMXのモーフ(表情)の種別と、パーサがずれる原因 — PMXのモーフは11種類あり、種別ごとにレコードの長さが違います。追加UVモーフを読み飛ばし損ねるとその後のブロックが全部ずれます。実モデルでの件数と、three.js同梱パーサの未実装箇所を示します。
- MMDのスケールと単位(1ユニット≒8cm)— モデルを縮小してはいけない理由 — MMDの1ユニットが何センチなのかを実モデルの身長から確かめ、他のエンジンへ持っていくときにモデルを縮小すると何が壊れるのかを、実測値つきで説明します。影の解像度の決まり方も。
- MMDの再生画面を動画・静止画で書き出す(ブラウザだけで) — 画面録画とフレーム単位の書き出しの違い、スローモーションになる理由、透過PNGの書き出し、キャプチャが真っ黒になる原因を実測つきで説明します。
- VPD(ポーズデータ)の形式と、VMDとの変換|ブラウザで相互変換 — MMDのポーズデータ(VPD)の書式と、VMDとの違いを実物で確かめて解説します。VPDを1フレームのVMDにする方法と、VMDの好きなフレームの姿勢をVPDとして取り出す方法も紹介します。
- 複数人で踊らせるときの立ち位置合わせと、音ズレの直し方|VMDを全ての親で動かす — MMDで複数のモデルを並べて踊らせるときの立ち位置・向きの合わせ方と、音楽とモーションのずれ(音ズレ)をフレーム単位で直す方法を、実物のモデルとVMDで確かめて解説します。
- MMDをインストールせずにブラウザで再生する|PMX・VMD・音楽をその場で — MikuMikuDanceをインストールしなくても、手元のPMX/PMDモデル・VMDモーション・音楽をブラウザだけで再生できます。必要なファイル、手順、テクスチャが出ないときや姿勢が崩れるときの見方をまとめました。
- MMDのモデルが読み込めない・何も起きないときに見るところ|zip・文字化け・形式違い — 配布されたMMDモデルを開こうとしても何も起きない、エラーになるときの原因を、よくある順に並べました。zipのまま、展開時の文字化け、ダウンロードの途中切れ、PMM・.xとの取り違えを、実物のファイルで確かめて解説します。
- PMDとPMXの違い|何が変わったか、どちらで配られていても再生できるか — MMDのモデル形式PMDとPMXの違いを、ファイルの中身から比べました。名前の長さ、頂点数の上限、ウェイトの種類、表情の種類、テクスチャの書き方。実物のPMX 5体で、どの機能が実際に使われているかも数えています。
- スマホでMMDのモデルとモーションを再生する|iPhone・Androidのブラウザだけで — スマホにはMMDを入れられませんが、ブラウザならPMX・VMDを再生できます。スマホではフォルダを渡しにくいのでzipのまま選ぶ、画面が消えない・裏に回して戻ったときの扱いなど、スマホで再生するときに気をつけるところをまとめました。
- MMDの表情モーション(モーフのVMD)の中身|別のモデルで表情が動かない理由 — VMDの表情キーは、モーフの名前・フレーム・値だけの23バイトです。名前が1文字違うと黙って無視されるため、別のモデルでは表情の2〜3割が動かないことがあります。実物のVMD 30本とPMX 3体で数えた、表情キーの中身と直し方をまとめました。
- IKを切ったVMDで脚が引き戻される|VMDのIKオン/オフ(IK・表示ブロック)の中身 — 足IKを切って、脚の回転だけで動かすVMDがあります。IKのオン/オフはVMDの最後のブロックに書かれていますが、three.jsのMMDLoaderはこのブロックを読みません。実物のVMD 30本で数えた中身と、読まないと脚がどうなるかを実測でまとめました。
- MMDのモーションを別のモデルで踊らせると一部が動かない|実物で数えた原因と直し方 — 配布モーションを別のモデルに読み込むと、肩・足先・髪などの一部だけが動かないことがあります。実物のVMD 28本とPMX 3体で数えると、原因は「モデルにボーンが無い」「名前の半角・全角が違う」「モデル固有の補助ボーン」の3つでした。
- MMDモデルの顔に影が落ちる|PMXの材質フラグ(両面描画・地面影・セルフ影・輪郭)の中身 — PMXの材質は、両面描画・地面影・セルフ影・輪郭線のオン/オフを1バイトのフラグで持っています。three.jsのMMDLoaderが読むのは両面描画と輪郭線だけで、セルフ影の指定は捨てられます。実物のPMXで数えたフラグの使われ方と、無視すると顔に前髪の影が落ちることを実測でまとめました。
- PMXの付与ボーン(回転付与・移動付与)の中身|腕捩・足D・目はこう動いている — PMXのボーンは、ほかのボーンの回転や移動を割合で受け取る「付与」を持てます。腕捩1〜3・足D・両目の連動はこの仕組みです。実物のPMX 3体で数えた付与ボーンの使われ方と、three.jsで動くもの・動かないものをまとめました。
- MMDの材質モーフ(着せ替え・色替え)の中身|ブラウザで表情を動かしても変わらない理由 — PMXの材質モーフは、材質の色や不透明度を変える表情です。衣装の着せ替え・パーツの出し入れ・色替えに使われますが、three.jsのMMDLoaderは当てません。実物のPMXで数えた使われ方と、このサイトで当てるようにした範囲をまとめました。
- PMXのスフィアマップとトゥーン|乗算・加算の決まり方と共有トゥーン — MMDの材質の見え方は、テクスチャのほかにスフィアマップ(質感)とトゥーン(影の階調)で決まります。PMXではスフィアの合成方法を拡張子ではなく材質の指定で決めます。実物のPMXで数えた使われ方と、three.jsでの扱いをまとめました。
- PMXのUVモーフとボーンモーフ|表情パネルで動かしても変わらない残りの2種類 — PMXのUVモーフはテクスチャの貼り方をずらす表情、ボーンモーフはボーンを動かす表情です。どちらもthree.jsのMMDLoaderは当てません。実物のPMXでの使われ方と、このサイトでUVモーフを当てるようにした結果をまとめました。
- PMXのボーンのフラグと変形階層|実物で数えた使われ方とthree.jsでの扱い — PMXのボーンは、回転・移動できるか、表示するか、IKか、付与を受けるか、などを16ビットのフラグで持ちます。変形の順番を決める変形階層もあります。実物のPMXで数えた使われ方と、three.jsのMMDLoaderがどれを使っているかをまとめました。
- MMDの輪郭線(エッジ)の太さと色はどこで決まるか|材質の指定と頂点ごとの倍率 — MMDの輪郭線は、材質ごとの「輪郭線を描くか・色・太さ」と、頂点ごとの「太さの倍率」の組み合わせで決まります。three.jsは頂点ごとの倍率を見ていなかったため、作者が消した輪郭線が出ていました。実物のPMXで数えた値と、このサイトでの直し方をまとめました。
- PMXの表示枠と表情の操作パネル|ボーンと表情の並び方の決まり — MMDの画面でボーンや表情がどの見出しの下に並ぶかは、PMXの「表示枠」と、表情ごとの「操作パネル」で決まります。実物のPMXで数えた中身と、パネルに出ない表情の正体をまとめました。
- PMX 2.1のモデルがthree.jsで読めない原因|バージョンの比較とQDEF・フリップモーフ — three.js(r171)のMMDLoaderが使うmmdparserは、PMX 2.1のファイルを1つも読めません。ヘッダのバージョンの比較に誤りがあるためです。2.1で増えたQDEF・追加UVモーフ・フリップモーフの扱いと、このサイトでの直し方をまとめました。
- PMXの頂点ウェイトの種類(BDEF1・BDEF2・BDEF4・SDEF・QDEF)と実物での使われ方 — PMXの頂点は、どのボーンにどれだけ付いて動くかを5通りの方式で持ちます。実物のPMXで方式ごとの頂点数と、SDEFがどこに使われているかを数え、three.jsでの扱いをまとめました。
- VMDの補間曲線64バイトの読み方|Z移動と回転のx1は1行目に無い — VMDのボーンの補間曲線は、16バイトの並びを1バイトずつずらして4回書いた64バイトです。実物30本・255,380件で数えると、1行目のZ移動と回転のx1は全部0で、本当の値は2行目以降の写しにだけ残っていました。three.jsのMMDLoaderはこの0を読んでいます。
- PMXのIKの設定(ループ回数・単位角・角度制限)|実物の値とthree.jsでの解き方 — PMXのIKボーンは、ループ回数・1回あたりの角度の上限(単位角)・リンクごとの角度制限を持ちます。実物のPMXの値と、three.jsのCCDIKSolverがそれをどう使うか、ループ回数を減らすと足首がどれだけ目標から離れるかを実測しました。
- PMXの剛体とジョイントの中身|衝突グループ・ばね・回転の順番 — PMXの剛体は形・種類・衝突グループ・質量・減衰を、ジョイントは移動と回転の制限・ばねを持ちます。実物のPMXで数えた値と、three.jsのMMDPhysicsでの扱い、剛体の回転をどの順番で読むべきかを実物で確かめた結果をまとめました。
- three.jsでMMDモデルの半透明はどう決まるか|材質の不透明度・モーフ・テクスチャの透明 — three.jsのMMDLoaderは、材質の不透明度・不透明度を変えるモーフ・テクスチャの透明な画素の3つで、材質を半透明として扱うかを決めます。実物のPMXで数えると、3つ目の判定は結果が使われておらず、調べる三角形も3つに1つでした。見た目への影響も測りました。
- 曲から踊りのモーションを自動で作る|拍の推定と、自然に見せるための工夫 — 曲のファイルから拍(BPM)を推定し、拍に合わせて踊るVMDを学習なしで作るしくみを解説します。実物の12曲で拍の推定がどこまで合ったか、髪の揺れを実在のダンスモーションと比べた数字、曲とモーションが周回ごとにずれる落とし穴まで、測った値で書いています。
- BGMをWAVからMP3にすると音は何ミリ秒遅れるか|MMDの音ズレとファイルサイズ — MMDのBGMをWAVからMP3にすると、ファイルは10分の1ほどになりますが、曲の頭に無音が足されて音が少し遅れます。サンプリング周波数ごとに何ミリ秒・何フレーム遅れるかをブラウザで測り、WAVを読むときの落とし穴もまとめました。
- three.jsでMMDモデルの色が浅くなる原因はトーンマッピング|7種類を実物で比べた — three.jsでMMDモデルを表示すると色がぼんやりする場合、トーンマッピングが原因のことがあります。three.js r171 の7種類を同じモデル・同じ照明で切り替えて、彩度・コントラスト・白飛びを数えました。ACESでは白い衣装のモデルの彩度が半分近くまで落ちます。