[WEB App] VRM Scale & Transform Adjuster - VRMモデルのスケール調整ツール

[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 - VRMモデルのスケール調整ツール [WEB App] VRM Scale & Transform Adjuster - VRMモデルのスケール調整ツール

開発の経緯

PMX Scale & Transform Adjuster、3D Scale & Transform Adjuster(GLB版)に続く、スケール調整ツールのVRM版です。

VRMは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バイナリ直接操作方式について

  1. GLBファイルをJSONチャンク + BINチャンクに分離
  2. JSONからアクセサ・バッファビュー情報を取得し、BIN内の頂点座標データを特定
  3. Float32値を直接書き換え(スケーリング)
  4. ノードのtranslation値をJSONで更新
  5. JSONとBINを再結合してGLBを再構築

この方式のメリット:

  • VRM拡張データが完全に保持される
  • ファイル構造が変わらないため互換性が高い
  • Three.js GLTFExporterを経由しないため、データ欠落のリスクがない

対応VRMバージョン

バージョン対応状況
VRM 0.x (UniVRM)✅ メタ情報、スプリングボーン、コライダー
VRM 1.0 (VRMC)✅ メタ情報、VRMC_springBone、コライダー

関連ツール

ツール用途
3D Scale & Transform AdjusterGLB/GLTFモデルのスケール調整&ベイク
PMX Scale & Transform AdjusterPMXモデルのスケール調整&バイナリパッチ
VRM OptimizerVRMモデルのWebP + Draco圧縮
VRM Thumbnail GeneratorVRMサムネイル生成
VRM to MMDVRMモデルをPMX形式に変換

技術仕様

項目内容
GLBパース独自実装(DataView、チャンク分離)
対応フォーマットVRM (GLBコンテナ)
スケール方式GLBバイナリ直接操作(拡張データ非破壊)
3DプレビューThree.js r128 GLTFLoader
スキンメッシュ頂点 + ノード + IBM同時スケーリング
フレームワークAstro
データ処理全てブラウザ内、サーバー通信なし

対応ブラウザ

WebGL対応のモダンブラウザ(Chrome / Edge / Firefox / Safari)。

利用上の注意

  • スケール変更はGLBバイナリの数値を直接書き換えるため、元ファイルのバックアップを推奨します
  • Y軸回転はルートノードのrotation値として設定されるため、一部のビューアーで正常に動作しない場合があります
  • VRMモデルの利用にあたっては、各データの利用規約を遵守してください