[WEB App] VRM Scale & Transform Adjuster - VRMモデルのスケール調整ツール
概要
VRM(VRoid/UniVRM系アバターフォーマット)ファイルのスケール変更、原点補正をブラウザ上で完結させるWebツール。 アップロード不要で、ファイルはローカル環境(ブラウザ内)で処理され、外部サーバーには送信されません。
GLBバイナリを直接パースしてJSON・BINチャンクを分離し、アクセサデータを書き換えてGLBを再構築する方式を採用。VRM拡張データ(メタ情報、スプリングボーン、ブレンドシェイプ設定等)を一切失わずにスケール調整ができます。
🔗 ツールを開く: VRM Scale & Transform Adjuster
[WEB App] VRM Scale & Transform Adjuster
PROTOCOL.LAIN // VRMモデルのスケール調整ツール(拡張データ保持)
lain-lab.com
開発の経緯
PMX Scale & Transform Adjuster、3D Scale & Transform Adjuster(GLB版)に続く、スケール調整ツールのVRM版です。
[WEB App] PMX Scale & Transform Adjuster
PROTOCOL.LAIN // PMXモデルのスケール調整 & バイナリパッチツール
lain-lab.com
[WEB App] 3D Scale & Transform Adjuster
PROTOCOL.LAIN // GLB/GLTFモデルのスケール調整 & ベイクツール
lain-lab.comVRMはglTFベースですが、GLTFExporterで再エクスポートするとVRM拡張データ(メタ情報、スプリングボーン、ブレンドシェイプ、ファーストパーソン設定等)が全て失われます。そのため、GLBバイナリを直接パース・書き換えてVRM拡張を完全保持する方式で作りました。
使い方
1. モデルを読み込む
左サイドバーの「モデル読み込み」エリアからファイルを読み込みます。
- ドラッグ&ドロップ — VRMファイルを破線エリアにドロップ
- クリックで選択 — エリアをクリックしてファイル選択ダイアログから選ぶ
読み込みが完了すると、右側の3Dビューポートにモデルのプレビューが表示されます。VRMバージョン、タイトル、作者などのメタ情報もサイドバーに表示されます。
2. スケールを調整する
一括スケール (Uniform)
スライダーまたは数値入力でモデル全体のスケールを調整します。よく使うスケール値はプリセットボタンから一発で設定できます。
| プリセット | 用途 |
|---|---|
| 0.01 (cm to m) | cm単位のモデルをメートル単位に変換 |
| 0.1 (10%) | 10倍サイズのモデルを正規化 |
| 0.8 (VRoid fix) | VRoidモデルのサイズ微調整 |
| 1.0 (100%) | デフォルト |
| 10 (10x) | モデルを10倍に拡大 |
| 100 (100x) | モデルを100倍に拡大 |
軸別スケール (X / Y / Z)
「軸ごとのアスペクト比を固定」チェックを外すと、X・Y・Z軸を個別に調整できます。
3. 原点・位置・向きを補正する
| オプション | 内容 |
|---|---|
| Y軸回転 (向き) | 0° / 90° / 180° / 270° でモデルの向きを変更 |
| XZ軸を中心に自動配置 | モデルのXZ中心を原点 (0, 0) に移動 |
| 底面を Y=0 に自動配置 | モデルの底面を地面(Y=0)に揃える |
⚠️ Y軸回転はルートノードの回転値として設定されます。スキンメッシュの構造上、一部のビューアーやアプリで表示が崩れる場合があります。問題が出る場合は 0° のままご利用ください。
4. 適用範囲を選択する
スケールの適用先を個別にON/OFFできます。
| 対象 | 内容 |
|---|---|
| 頂点座標 (Position) | メッシュの頂点位置 |
| 法線の再正規化 | 非均一スケール時の法線補正 |
| ノード座標 (Translation) | ボーン・ノードの位置 |
| モーフターゲット (BlendShape) | ブレンドシェイプの頂点オフセット |
| アニメーション移動量 | アニメーションのtranslationトラック |
| スプリングボーン (揺れもの) | 揺れもののhitRadius |
| コライダー | コライダーのオフセットとradius |
通常は全てONで問題ありません。
5. サイズを確認してエクスポート
画面下部の「サイズ情報 (Bounding Box)」で、元のサイズと調整後のサイズをリアルタイムに確認できます。
調整が完了したら「💾 調整済み VRM をエクスポート」ボタンでVRMファイルをダウンロードします。ファイル名は 元のファイル名_adjusted.vrm になります。
VRM拡張データの保持について
VRMファイルはglTF(GLB)コンテナに VRM/VRMC 拡張データを格納した構造です。一般的なGLTFエクスポーターはこれらの拡張データを認識しないため、再エクスポート時に以下のデータが全て失われます:
- メタ情報(タイトル、作者、ライセンス等)
- ブレンドシェイプグループ(表情設定)
- スプリングボーン(揺れもの物理)
- ファーストパーソン設定
- マテリアル拡張(MToon等)
本ツールはGLBバイナリを直接操作する方式のため、JSON内の拡張データは一切変更されず、全てのVRM固有機能が保持されます。
GLBバイナリ直接操作方式について
- GLBファイルをJSONチャンク + BINチャンクに分離
- JSONからアクセサ・バッファビュー情報を取得し、BIN内の頂点座標データを特定
- Float32値を直接書き換え(スケーリング)
- ノードのtranslation値をJSONで更新
- JSONとBINを再結合してGLBを再構築
この方式のメリット:
- VRM拡張データが完全に保持される
- ファイル構造が変わらないため互換性が高い
- Three.js GLTFExporterを経由しないため、データ欠落のリスクがない
対応VRMバージョン
| バージョン | 対応状況 |
|---|---|
| VRM 0.x (UniVRM) | ✅ メタ情報、スプリングボーン、コライダー |
| VRM 1.0 (VRMC) | ✅ メタ情報、VRMC_springBone、コライダー |
関連ツール
| ツール | 用途 |
|---|---|
| 3D Scale & Transform Adjuster | GLB/GLTFモデルのスケール調整&ベイク |
| PMX Scale & Transform Adjuster | PMXモデルのスケール調整&バイナリパッチ |
| VRM Optimizer | VRMモデルのWebP + Draco圧縮 |
| VRM Thumbnail Generator | VRMサムネイル生成 |
| VRM to MMD | VRMモデルをPMX形式に変換 |
技術仕様
| 項目 | 内容 |
|---|---|
| GLBパース | 独自実装(DataView、チャンク分離) |
| 対応フォーマット | VRM (GLBコンテナ) |
| スケール方式 | GLBバイナリ直接操作(拡張データ非破壊) |
| 3Dプレビュー | Three.js r128 GLTFLoader |
| スキンメッシュ | 頂点 + ノード + IBM同時スケーリング |
| フレームワーク | Astro |
| データ処理 | 全てブラウザ内、サーバー通信なし |
対応ブラウザ
WebGL対応のモダンブラウザ(Chrome / Edge / Firefox / Safari)。
利用上の注意
- スケール変更はGLBバイナリの数値を直接書き換えるため、元ファイルのバックアップを推奨します
- Y軸回転はルートノードのrotation値として設定されるため、一部のビューアーで正常に動作しない場合があります
- VRMモデルの利用にあたっては、各データの利用規約を遵守してください