チュートリアル
GLBからVRMへの変換手順:VTuber用3Dアバターの準備と設定ガイド
GLBモデルをVRMへ変換し、ヒューマノイドリグと表情を整えて、VirmiiのブラウザトラッキングとOBS出力で確認する手順を解説します。
GLBとVRMは同じものではない
GLBは、メッシュ、テクスチャ、マテリアル、アニメーション、独自の骨格などを1つにまとめられるglTF 2.0のバイナリコンテナです。ただし、どのノードが頭なのか、どのモーフターゲットで目を閉じるのか、モデルをどの範囲で利用できるのかといった、アバター固有の情報は標準GLBだけでは決まりません。
VRMは同じglTFを基盤にしながら、ヒューマノイドボーンとモデルのメタデータを追加したアバター向けフォーマットです。必要に応じて、標準表情、視線制御、MToonマテリアル、スプリングボーンも格納できます。
そのため、ファイル名の末尾を.glbから.vrmへ変えるだけでは変換になりません。Virmiiはアップロードされたファイルの内部を確認し、VRM 0.xのVRM拡張、またはVRM 1.0のVRMC_vrm拡張があるかを検証します。通常のGLBをリネームしただけのファイルは、この検証を通りません。
GLBコンテナとVRMアバターの技術的な違い
保存形式として重なる部分は多いものの、VRMにはアバター用ランタイムが共通の方法で読み取れる定義が追加されています。
| 項目 | 標準GLB | VRMアバター |
|---|---|---|
| メッシュとテクスチャ | glTFのメッシュ、画像、サンプラー、バッファを格納 | 同じglTF構造を使用 |
| 骨格 | 任意のノード階層とボーン名を使用可能 | 必須ノードをヒューマノイドボーンへ割り当て |
| マテリアル | glTF PBRと関連拡張を利用可能 | PBRを維持するかMToonを追加 |
| 表情 | モーフターゲットの用途はモデルごとに異なる | 任意のプリセット表情とカスタム表情を割り当て可能 |
| 揺れもの | アバター専用のスプリング機構はない | 任意のVRMスプリングボーン拡張を追加可能 |
| 利用条件 | アバター向けの権限項目は定義しない | VRMメタデータに利用条件を記録 |
一般的な3Dビューワーならどちらも表示できます。しかしトラッキングアプリが頭や口を動かすには、VRM側のヒューマノイドと表情の割り当てが必要です。
Virmiiが担当する範囲
現在のVirmiiには、GLBをVRMへ変換する機能はありません。BlenderのVRM Add-on for Blender、またはUnityのUniVRMで変換を済ませてから、完成した.vrmファイルをアップロードします。
Virmiiのカスタムモデル機能では、現在次の操作ができます。
- カスタムVRMを最大3体まで非公開で保存
- 1回につき1つの
.vrmファイルをアップロード(上限30 MB) - ブラウザ上でモデルをプレビューし、カメラによるフェイストラッキングを確認
- OBSブラウザソース用の非公開・透明背景ライブステージを作成
Virmiiで生成したモデルについては、提供可能な場合に元のGLBをダウンロードできます。これは生成結果のダウンロードであり、任意のGLBをアップロードしてVRMへ変換する機能ではありません。
VRM 1.0とVRM 0.xのどちらを選ぶか
新しくモデルを作る場合は、連携先のアプリがVRM 0.xを必要としない限り、VRM 1.0を選ぶのが扱いやすいでしょう。Virmiiのビューワーは両方を読み込めますが、拡張名、表情名、座標の扱い、メタデータの項目は同じではありません。
とくに表情名は、バージョンごとに分けて扱います。
| 用途 | VRM 0.x | VRM 1.0 |
|---|---|---|
| 喜び | Joy | happy |
| 悲しみ | Sorrow | sad |
| リラックス | Fun | relaxed |
| 口型 | A、I、U、E、O | aa、ih、ou、ee、oh |
| 左右のまばたき | Blink_L、Blink_R | blinkLeft、blinkRight |
VRM 1.0の仕様では表情はオプションです。ただしVTuber用途では、対応する表情がないと頭は動いても、まばたきや口の動きを十分に再現できません。
変換ツールを選び、元データを確認する
ウェイトの修正、ボーン名の整理、シェイプキーの編集、マテリアル調整まで行うなら、BlenderとVRM Add-on for Blenderの組み合わせが扱いやすいでしょう。制作工程をUnityで管理している場合は、UniVRMも選択肢になります。
編集を始める前にGLBのコピーを残し、元データを確認します。
- 必要なメッシュとテクスチャがそろっているか
- アーマチュアの階層とスキンウェイトに問題がないか
- すでに用意されているモーフターゲットは何か
- 不要に見えるオブジェクトがリグの一部ではないか
- VRM 0.xとの互換性が必要か、VRM 1.0だけでよいか
エクスポーターの検証は早い段階で実行してください。マテリアルやスプリングボーンを調整した後で、headボーンの未割り当てに気づくより手戻りが少なくなります。
ヒューマノイドリグを整える
GLBをBlenderまたはUnityへ読み込み、VRMのヒューマノイドボーンを割り当てる前にアーマチュアを確認します。VRM 1.0で必須となる主な割り当ては次のとおりです。
- hips、spine、head
- 左右のupperArm、lowerArm、hand
- 左右のupperLeg、lowerLeg、foot
chest、upperChest、neck、shoulder、eye、toes、指のボーンはVRM 1.0では任意です。VRM 0.xでは一部の要件が異なるため、選んだバージョンの検証結果に従ってください。
モデルのレストポーズはVRMのTポーズ仕様に合わせます。VRM 0.x向けの「すべてのボーン回転をゼロにする」という説明を、そのままVRM 1.0へ適用しないでください。VRM 1.0ではレスト回転を保持でき、スケールについても正の有効な値が求められます。座標変換は手作業で決め打ちせず、現在のエクスポーターに検証させる方が安全です。
正面だけでなく横からも確認しましょう。肘のねじれ、膝の向き、左右ボーンの取り違え、不要なウェイトは、トラッキングを始めてから見つかることがあります。
PBRを残すかMToonへ変えるか
MToonはアニメ調のモデルに向いていますが、VRM 1.0の必須条件ではありません。glTFのPBRマテリアルを残したままVRMへ書き出すこともでき、VRM Add-on for BlenderはPrincipled BSDFを通常のglTFマテリアルとして扱えます。
モデルに合わせて選択してください。
- 金属感や粗さを活かしたい場合はPBRを維持
- 影色、リムライト、輪郭線を細かく制御したい場合はMToon
- 髪カードやまつ毛で透過順の問題が出る場合はOpaqueまたはCutoutを検討
- 30 MBを超える場合やGPU負荷が高い場合は、大きすぎるテクスチャを縮小
ブラウザ用アバターでは2048×2048のアトラスが出発点になりますが、常にそのサイズが正解とは限りません。実際に配信する端末とシーンで確認してください。
MToonを使う場合は、まず4つの項目を確認します。Lit ColorとShade Colorで明部と影の境界を決め、Rim Lightingで暗い背景から輪郭を分離します。Outlineの方式と幅は、カメラが動いたときの線の見え方に影響します。Surface ModeではOpaque、Cutout、Transparentの描画方法を選びます。
まつ毛や輪郭のはっきりした髪カードには、完全な透明合成よりCutoutが安定することがあります。半透明が実際に必要な部分だけTransparentを使ってください。透過面が重なると、レンダラーによって前後関係が変わる場合があります。書き出した後は明るい背景と暗い背景の両方で確認し、透明なOBSステージで縁取りや抜けが発生しないか見ておきます。
Virmiiが動かせる表情を設定する
VirmiiはMediaPipeを使い、生のカメラ映像をブラウザ内で処理します。現在の口パクはカメラから取得した顔の動きに基づくもので、マイク音声は取り込みません。
モデルが対応している場合は、VRM 1.0で次の表情を用意するとフルトラッキングを利用できます。
blink、またはblinkLeftとblinkRightaa、ih、ou、ee、ohhappy- 左右のeyeボーン、または
lookLeft、lookRight、lookUp、lookDown
VirmiiはMediaPipeから必要な顔パラメータを選び、これらのVRMコントロールへ変換します。元モデルにARKit形式の52ブレンドシェイプがあっても、Virmiiが52項目すべてを直接動かすわけではありません。
既存のシェイプキーを割り当てる手順は、BlenderでVRMのまばたきと口パクを設定するガイドで確認できます。表情を作った後に頂点数や頂点順を変えるモディファイアを適用すると、モーフターゲットが壊れることがあるので注意してください。
スプリングボーンとメタデータ
スプリングボーンは任意です。髪、リボン、しっぽ、ゆったりした衣装など、二次動作が必要な部分へ設定します。頭、肩、胴体の周辺にコライダーを置き、素早く頭を振ったときにめり込みや暴れが起きないか確認します。
First Person設定も任意で、主にVRや一人称視点のアプリで使われます。VirmiiのLive StudioとOBSステージは三人称カメラで表示するため、このワークフローではFirst Person用のメッシュ設定は必須ではありません。
エクスポート前に、使用するツールのVRM 1.0画面でメタデータを入力します。モデル名、作者、アバターの利用許可、商用利用、クレジット、再配布、改変条件を確認してください。別バージョン向けのJSON断片をコピーするより、エクスポーターの入力画面を使う方が安全です。
BlenderからVRM 1.0を書き出す
現在のVRM Add-on for Blenderでは、対象の仕様バージョンをアーマチュアへ設定します。Pythonで自動化する場合の最小例は次のとおりです。
flowchart TD
A["GLBを読み込み、内容を確認"] --> B["必須ヒューマノイドボーンを割り当て"]
B --> C["PBRまたはMToonを選択"]
C --> D["まばたき、口型、視線を設定"]
D --> E["任意のスプリングボーンとメタデータを追加"]
E --> F["VRM 0.xまたはVRM 1.0で書き出し"]
F --> G["Virmiiへアップロードして確認"]
G --> H["非公開OBSブラウザソースURLを作成"]画面から書き出す場合は、対象のメッシュとアーマチュア、VRMバージョン、メタデータを確認し、保存前にすべての検証メッセージを読みます。任意機能に関する警告は許容できる場合がありますが、必須ヒューマノイドボーンの欠落は修正が必要です。
spec_versionを指定しても、不完全なリグが自動で修復されるわけではありません。ヒューマノイドボーンとメタデータは事前に設定してください。
画面から書き出す場合は、File → Export → VRM (.vrm) を選び、アドオンに表示された検証エラーを解消してから保存します。
Virmiiへアップロードして確認する
Virmiiのモデル画面を開き、書き出した.vrmファイルをアップロードします。クライアントとサーバーの両方で30 MBの上限を確認し、サーバー側ではglTF 2.0コンテナとVRM拡張の有無も検証します。
アップロード後は、次の順番で確認します。
- モデルプレビューを開き、アバターが正しい向きと大きさで表示されるか確認
- Live Studioを開き、カメラの使用を許可
- 頭の回転、距離変化、視線、まばたき、5つの口型を確認
- 少し大きく動き、スプリングボーンの挙動を確認
- 表情が動かない場合はBlenderへ戻り、割り当てを直して再エクスポート
トラッキング結果はモデルの設定に依存します。対応する表情がないモデルでも頭の動きは利用できますが、それをフルフェイストラッキングとは呼べません。
OBSへ接続する
Live Studioから非公開のOBSブラウザソースURLを作成します。OBSでブラウザソースを追加し、サイズを1920×1080に設定して、そのURLを貼り付けてください。
Live Studioはカメラトラッキングのコントローラーとして開いたままにします。Virmiiは動きと表情の値を非公開ステージへ送り、生のカメラ映像は標準ではコントローラー側のブラウザ内で処理します。ステージの背景は透明なので、クロマキーは必要ありません。
ステージURLは認証情報と同じように扱い、公開しないでください。URLをリセットまたは無効化すると、以前のリンクは使えなくなります。現在の画面に沿った詳しい手順は、VirmiiからOBSへ接続するガイドで確認できます。
よくある問題
アップロードが拒否される
ファイルが30 MB以下で、拡張子が.vrmになっていることを確認します。内部にはVRM 0.xまたはVRM 1.0の拡張が必要です。通常のGLBをリネームしただけではアップロードできません。
モデルは表示されるが頭しか動かない
表情名とバインドを確認してください。Virmiiは、モデル内に存在するVRM表情だけを動かします。まばたき、口型、happy、視線の設定を見直します。
モデルがピンク、暗い、または透明になる
エクスポーターでテクスチャ参照とマテリアル設定を確認します。ピンク表示は、シェーダーやテクスチャが見つからないときによく起こります。透過の問題は、すべてをMToonへ変えるのではなく、マテリアルの描画モードとテクスチャのアルファを見直してください。
トラッキング時に手足がねじれる
ヒューマノイドボーン、レストポーズ、左右の割り当て、親子関係、スキンウェイトを確認します。選択したVRMバージョンに合わせて、エクスポーターの検証をもう一度実行してください。
髪や服が体へめり込む
スプリングの剛性と減衰を調整し、コライダーの位置と半径を確認します。書き出すたびにVirmiiのビューワーで結果を確認すると、原因を切り分けやすくなります。
よくある質問
拡張子を.vrmへ変えるだけで変換できますか?
できません。内部のglTFデータにはVRM拡張とヒューマノイドの割り当てが必要です。Virmiiはアップロード後にその構造を検証します。
BlenderまたはUnityは必須ですか?
必要なのは、有効なVRMを書き出せるツールです。BlenderとVRMアドオン、UnityとUniVRMは資料が多く扱いやすい選択肢ですが、別のエクスポーターでも、VRM仕様を満たしてVirmiiで正しく読み込めるなら利用できます。
すべてのマテリアルをMToonへ変える必要がありますか?
ありません。VRM 1.0ではglTF PBRマテリアルも使用できます。MToonは、トゥーン向けの影や輪郭線を調整したいときに選びます。
VirmiiはVRM 0.xとVRM 1.0の両方を読み込めますか?
はい。アップロード時の検証は両方に対応しています。ただし、トラッキング品質はファイル内のヒューマノイドと表情設定に左右されます。
配信前のチェックリスト
- 実体がVRMのファイルで、30 MB以下になっている
- 必須ヒューマノイドボーンがエクスポーターの検証を通る
- まばたきと口型が自然にニュートラルへ戻る
- eyeボーンまたは視線表情で目が動く
- スプリングボーンが大きくめり込まずに収束する
- 透明ステージ上でマテリアルが正しく表示される
- 非公開OBS URLを公開していない
ここまで確認できれば、変換したアバターをVirmiiのブラウザトラッキングとOBSステージで使用できます。