[WEB App] PMX Scale & Transform Adjuster - PMXモデルのスケール調整&バイナリパッチツール
概要
PMX(MikuMikuDance モデルフォーマット)ファイルのスケール変更、Y軸回転、原点補正をブラウザ上で完結させるWebツール。 アップロード不要で、ファイルはローカル環境(ブラウザ内)で処理され、外部サーバーには送信されません。
PMXバイナリを直接パースしてオフセットを記録し、エクスポート時にFloat32値を直接書き換えるバイナリパッチ方式を採用。ファイル構造を一切変更しないため、他のツールとの互換性を維持したままスケール調整ができます。
🔗 ツールを開く: PMX Scale & Transform Adjuster
[WEB App] PMX Scale & Transform Adjuster
PROTOCOL.LAIN // PMXモデルのスケール調整 & バイナリパッチツール
lain-lab.com
開発の経緯
3D Scale & Transform Adjuster(GLB版)を作った直後に、本来作りたかったPMX版を作成しました。
[WEB App] 3D Scale & Transform Adjuster - GLB/GLTFモデルのスケール調整&ベイクツール // PROTOCOL.LAIN
GLB/GLTFモデルをブラウザ上で読み込み、一括・軸別スケール調整、Y軸回転、XZ原点センタリング、底面Y=0配置、トランスフォームの頂点ベイク、アニメーション移動量の自動スケーリングを行い、調整済みGLBとしてエクスポートするWebツール。
lain-lab.comlain-lab.com ではMMD関連のツール MMD to GLB、VRM to MMD、PMX Checker)を複数公開しており、PMXモデルのスケール調整が必要になる場面が多くありました。
- VRM to MMDで変換したモデルのサイズ微調整
- 異なるスケールのモデルを統一サイズに揃えたい
- PMXエディタを使わずにブラウザだけでスケール変更を完結させたい
PMX Checkerで実装済みのバイナリパーサーをベースに、スケール書き換え機能を追加して作りました。
使い方
1. モデルを読み込む
左サイドバーの「モデル読み込み」エリアからファイルを読み込みます。
- ドラッグ&ドロップ — PMXファイルまたはPMXを含むZIPファイルを破線エリアにドロップ
- クリックで選択 — エリアをクリックしてファイル選択ダイアログから選ぶ
読み込みが完了すると、右側の3Dビューポートにモデルのプレビューが表示されます。ZIP入力の場合はテクスチャ付きで表示、PMX単体の場合はシルエット表示になります。
2. スケールを調整する
一括スケール (Uniform)
スライダーまたは数値入力でモデル全体のスケールを調整します。よく使うスケール値はプリセットボタンから一発で設定できます。
| プリセット | 用途 |
|---|---|
| 0.01 (cm to m) | PMXモデル(cm単位)をメートル単位に変換 |
| 0.1 (10%) | 10倍サイズのモデルを正規化 |
| 0.5 (50%) | モデルを半分のサイズに縮小 |
| 1.0 (等倍) | デフォルト |
| 2.0 (2倍) | モデルを2倍に拡大 |
| 100 (m to cm) | メートル単位のモデルをcm単位に変換 |
軸別スケール (X / Y / Z)
「軸ごとのアスペクト比を固定」チェックを外すと、X・Y・Z軸を個別に調整できます。
3. 原点・位置・向きを補正する
| オプション | 内容 |
|---|---|
| Y軸回転 (向き) | 0° / 90° / 180° / 270° でモデルの向きを変更 |
| XZ軸を中心に自動配置 | モデルのXZ中心を原点 (0, 0) に移動 |
| 底面を Y=0 に自動配置 | モデルの底面を地面(Y=0)に揃える |
4. 適用範囲を選択する
スケール・回転の適用先を個別にON/OFFできます。
| 対象 | 内容 |
|---|---|
| 頂点座標 | メッシュの頂点位置と法線 |
| ボーン座標 | ボーンの位置とテールオフセット |
| モーフオフセット | 頂点モーフ・ボーンモーフの移動量 |
| 剛体(位置・サイズ) | 物理演算用剛体の位置とサイズ |
| ジョイント(位置・制限) | ジョイントの位置と移動制限値 |
通常は全てONで問題ありませんが、剛体やジョイントだけスケールしたくない場合など、柔軟に対応できます。
5. サイズを確認してエクスポート
画面下部の「サイズ情報 (Bounding Box)」で、元のサイズと調整後のサイズをリアルタイムに確認できます。
調整が完了したら「💾 調整済み PMX をエクスポート」ボタンでPMXファイルをダウンロードします。ファイル名は 元のファイル名_adjusted.pmx になります。ZIP入力の場合はZIPに再パッケージされます。
テクスチャプレビュー
PMXのテクスチャは外部ファイル参照(相対パス)のため、テクスチャ付きプレビューはZIP入力時のみ対応しています。
- ZIP入力 — ZIP内のテクスチャファイルを自動検出してマテリアルに適用。Shift_JISファイル名にも対応
- PMX単体入力 — テクスチャなしのシルエット表示(マテリアルのdiffuseカラーは反映)
スケール調整の動作自体はどちらの入力方式でも同一です。テクスチャプレビューは見た目の確認用で、エクスポートされるPMXデータには影響しません。
バイナリパッチ方式について
一般的なスケール変更ツールはモデルデータを完全にパース → 変換 → 再シリアライズしますが、本ツールはバイナリパッチ方式を採用しています。
- PMXバイナリをパースし、スケール対象データ(頂点座標、ボーン位置など)のバイトオフセットを記録
- エクスポート時にオリジナルバッファのコピーを作成
- 記録済みオフセットのFloat32値を直接書き換え
この方式のメリット:
- ファイル構造が一切変わらない(モーフ、表示枠、剛体、ジョイント等のセクション構造が保持される)
- 再シリアライズによるデータ欠落のリスクがない
- 処理速度が速い(必要な箇所だけを書き換え)
関連ツール
| ツール | 用途 |
|---|---|
| 3D Scale & Transform Adjuster | GLB/GLTFモデルのスケール調整&ベイク |
| PMX Checker | PMXファイルのチェック&修復 |
| MMD to GLB | PMX + VMDからアニメーション付きGLBを生成 |
| VRM to MMD | VRMモデルをPMX形式に変換 |
| VRM Optimizer | VRMモデルのWebP + Draco圧縮 |
技術仕様
| 項目 | 内容 |
|---|---|
| PMXパース | 独自実装バイナリリーダー(DataView) |
| 対応バージョン | PMX 2.0 / 2.1 |
| 対応ウェイト | BDEF1 / BDEF2 / BDEF4 / SDEF / QDEF |
| スケール方式 | バイナリパッチ(構造非破壊) |
| 3Dプレビュー | Three.js r128(頂点・面データから直接メッシュ構築) |
| テクスチャ | ZIP入力時にBlobURL経由で読み込み |
| ZIP処理 | JSZip(Shift_JISファイル名対応) |
| フレームワーク | Astro |
| データ処理 | 全てブラウザ内、サーバー通信なし |
対応ブラウザ
WebGL対応のモダンブラウザ(Chrome / Edge / Firefox / Safari)。 大規模モデル(頂点数10万以上)の処理にはPC環境での利用を推奨。
利用上の注意
- スケール変更はPMXバイナリの数値を直接書き換えるため、元ファイルのバックアップを推奨します
- テクスチャファイル自体は変更されません。テクスチャ付きプレビューはZIP入力時のみ対応しています
- MMDモデルの利用にあたっては、各データの利用規約を遵守してください