メインコンテンツまでスキップ

VRChat向けキャラクターをVRMに変換する場合

Tataraでは、VRM形式のファイルを読み込んでキャラクターとして使用できます。

VRChat向けに販売・配布されているアバターや、VRChat向けに改変したアバターをVRMへ変換する方法として、VRoid StudioXAvatarを経由してVRMへ変換したり、shimapyon様が作成されたNDMF VRM Exporterを利用したりする方法などがあります。

Tataraでは、NDMF VRM Exporterを利用した変換を推奨しています。

このページでは、NDMF VRM Exporterを利用した基本的な変換の流れと、Tataraで使用するために変換する際の注意点を中心に説明します。

NDMF VRM Exporter

NDMF VRM ExporterはUnity上のアバターにコンポーネントを追加することでVRM 1.0形式へ出力できるため、比較的少ない手順で変換できます。また、Modular AvatarやAvatar Optimizerなど、VRChatのアバター改変で広く利用されている非破壊編集ツールと組み合わせやすく、普段使用している改変済みPrefabをベースに変換できる点もメリットとなっています。

NDMF VRM Exporter自体の各機能や詳細な設定については、公式ドキュメントもあわせて参照してください。

このページで使用しているアバター

本ページでは、変換例としてIKUSIA様より販売されているオリジナル3Dモデル「輝夜 -kaguya-」を使用しています。

  • モデル:「九尾オリジナル3Dモデル「輝夜」-kaguya-」
  • 製作者:Paryi
  • 販売ページ

アバターを利用する場合は、各モデルの利用規約を確認してください。


1. NDMF VRM Exporterを導入する

NDMF VRM ExporterをUnityプロジェクトへ導入します。

VRChat Creator Companion(VCC)またはALCOMからNDMF VRM ExporterのVPMリポジトリを追加し、プロジェクトへインストールしてください。

こちらのリンクをクリックすることでリポジトリを導入できます。

手動で導入する場合

手動で導入する場合、VCCでは次の手順でリポジトリを追加します。

  1. 「Settings」を開き、「Packages」を選択します。
  2. 「Add Repository」を選択します。
  3. 「Repository Listing URL」にNDMF VRM ExporterのリポジトリURLを入力します。
  4. URLの右側に緑色のチェックが表示されたことを確認し、「Add」を選択します。

VCCでNDMF VRM Exporterのリポジトリを追加する画面

リポジトリを追加したら、対象のUnityプロジェクトへ「NDMF VRM Exporter」をインストールします。ALCOMを使用する場合も、同じリポジトリURLを追加してからパッケージをインストールしてください。

NDMF VRM ExporterはNDMFを利用してVRChat向けアバターをVRM 1.0へ変換します。 Modular Avatarを使用して改変しているアバターについても、基本的にはその状態のまま変換できます。

また、Tataraで使用するアバターを作成する場合は、あわせて以下のツールを導入することをおすすめします。

  • lilToon(今回利用を想定しているシェーダー)
  • AAO: Avatar Optimizer(アバターの軽量化に利用するツール)
  • Modular Avatar(アバターの改変などに使用している場合)
変換前の軽量化

VRChat向けアバターには、多数のBlendShapeやGameObjectなどが含まれていることがあります。

これらを多く含んだままVRMへ変換すると、VRMのファイルサイズが大きくなり、Tataraへの追加や読み込みに非常に時間がかかる場合があります。

Tataraで使用するキャラクターを変換する際は、Avatar Optimizerなどを利用してあらかじめ不要なデータを削減しておくことをおすすめします。

軽量化の方法については後述の「Avatar Optimizerで軽量化する」で説明します。


2. Tataraで不要な機能を整理する

VRMへ変換する前に、Tataraでは使用しないVRChat向けの機能を整理しておくことをおすすめします。

まず、変換したいキャラクターのPrefabをHierarchyへ追加します。アバターに衣装やギミックの有無が異なるPrefabが用意されている場合は、Tataraで使いたい構成に近く、不要な機能が少ないものを選びます。

このページの例では、ギミックなどが入っていない「kaguya none」Prefabを選択しています。

UnityのHierarchyへギミックのないアバターPrefabを追加した画面

Tataraで不要になる機能の例として以下が挙げられます。

  • AFK用の演出
  • ハンドジェスチャーに連動したギミック
  • 武器や小物などのギミック
  • Particle Systemを利用した演出
  • Contactを利用したギミック
  • VRChatのExpressions Menuから切り替えるオブジェクト
  • 使用しない衣装や髪型
  • その他、Tatara上で使用する予定のないオブジェクト

TataraではVRChatのPlayable LayersやExpressions Menuなどの仕組みを使用しないため、これらを残していてもVRChatと同じように動作するとは限りません。

不要なものをあらかじめ削除・無効化しておくことで、VRMの構造を単純にし、変換時の問題を減らすことができます。

アバターの複製

この作業を行う際は、普段VRChatで使用しているアバターを直接編集するのではなく、PrefabやSceneを複製してTataraへの変換専用Prefabを作成することをおすすめします。 変換専用Prefabを用意することで、VRChatで使用しているアバター本体へ影響を与えずに作業をすることができます。


3. AAO: Avatar Optimizerで軽量化する

VRChat向けアバターには多数のBlendShapeやGameObject、メッシュなどが含まれていることがあります。 これらをそのままVRMへ変換するとファイルサイズが大きくなり、Tataraへの追加や読み込みに時間がかかる場合があるため、変換前にAvatar Optimizerを利用した軽量化をおすすめします。

Hierarchyでアバターのルートを選択し、InspectorからAAO Trace and Optimizeコンポーネントを追加すると、Avatar Optimizerによる自動的な最適化を行えます。

アバターのルートへAAO Trace and Optimizeコンポーネントを追加した画面

特に、不要なBlendShapeやGameObjectの削減、メッシュの統合などによって、VRMのファイルサイズや読み込み時の負荷を大きく減らせる場合があります。

まずはAAO Trace and Optimizeによる自動最適化を使用し、必要に応じてAvatar Optimizerのその他の機能を利用してください。

より詳しい使い方

より詳しくAAO: Avatar Optimizerの使い方について知りたい方は、公式ドキュメントをご覧いただくか、こちらの記事などを参考にしてください。

変換後に問題が発生する場合

Avatar Optimizerでは、メッシュの統合やPhysBoneの最適化など、アバターの構造を変更する処理も行われます。 NDMF VRM Exporterとの組み合わせによっては、これらの最適化後に揺れ物やメッシュなどの挙動が変化する場合があります。

VRMへの変換後に問題が発生した場合は、一度AAO Trace and Optimizeを無効にして再度出力し、問題が改善するか確認してください。

AAOを無効にすると正常に動作する場合は、Avatar Optimizerの各最適化項目を個別に無効化し、原因となっている処理を切り分けてください。

表情について

Tataraでは、瞬き・リップシンク・表情などにBlendShapeを使用します。 最適化後は、必要な表情が正常に残っていることを確認してください。

実際に出力したVRMをTataraで読み込み、表情に問題がないことを確認することをおすすめします。


4. VRM Export Descriptionを設定する

メタデータを取得するためにVRChatへアップロードする

Retrieve Metadata via VRChat APIを使って作者情報などを取得する場合は、先に変換対象のアバターをVRChatへアップロードします。

VRCSDK Control Panelからアバターをアップロードし、「Upload Succeeded!」と表示されたことを確認してください。メタデータの取得だけが目的の場合は、公開範囲をPrivateに設定できます。

VRCSDK Control Panelでアバターのアップロードが完了した画面

メタデータを手動で入力する場合は、事前にVRChatへアップロードする必要はありません。

VRM Export Descriptionを追加する

変換するアバターをHierarchy上で選択し、VRC Avatar Descriptorが設定されているGameObjectへVRM Export Descriptionコンポーネントを追加します。

VRM Export Descriptionコンポーネントのメタデータ設定画面

VRM Export Descriptionでは、VRMに必要な作者情報などを設定します。

先ほどの手順でVRChatへアップロード済みの場合、Retrieve Metadata via VRChat APIから情報を取得することができます。

コンポーネントを追加した直後は「Authors is required」と表示されます。Authorsに作者名を設定し、LicensesでライセンスURLを確認してください。VRChat APIから取得した場合も、作者情報や利用条件が正しいことを確認します。

Expressionsを設定する

ExpressionsではVRMで使用する表情を設定します。PresetにはHappy、Angry、Sad、Relaxed、Surprised、Blinkなどの標準的な表情が設定されています。Customでは、必要に応じて独自の表情を追加できます。

BlendShapeを使用する場合、Base TypeBlendShapeを選び、使用したいBlendShapleが存在するSkinned Mesh Rendererと使用するBlendShapeを指定します。まばたきとリップシンクはVRC Avatar Descriptorの設定をもとに自動設定されますが、必要な表情が割り当てられていることを確認してください。

FaceEmoなどを使用して表情ごとのAnimationClipを作成している場合は、Base TypeAnimationClipを選び、それぞれに対応したAnimationClipを指定してください。

VRM Export DescriptionでPresetのExpressionsを設定する画面

必要に応じてPreview機能を使用し、MToonへ変換した際のマテリアルの見え方を確認します。

なお、Spring Boneなどの揺れ物の挙動はPreviewでは確認できないため、最終的には出力したVRMをTataraへ読み込んで確認してください。


5. VRMを書き出す

設定が完了したら、NDMF ConsoleからVRMを書き出します。

  1. Hierarchyで対象のアバターを選択します。
  2. VRM Export Descriptionコンポーネント名の左側にあるチェックを外します。
  3. 表示されたOpen NDMF Console to export VRM fileを選択します。

VRM Export Descriptionのチェックを外してNDMF Consoleを開く画面

NDMF Consoleが開いたら、次の操作を行います。

  1. Avatar platformからVRM 1.0 (NDMF VRM Exporter)を選択します。
  2. Exportを選択します。

NDMF ConsoleでVRM 1.0を選択して書き出す画面

ファイルの保存画面が開いたら、出力先とファイル名を指定します。

出力された.vrmファイルをTataraへ追加してください。


Tataraで使用する際の注意点

シェーダーについて

VRChat向けアバターではさまざまなシェーダーを利用できますが、VRMへ変換した際に同じ見た目を完全に再現できるとは限りません。

NDMF VRM Exporterでは、lilToonをVRM 1.0のMToon互換マテリアルへ変換できます。

そのため、Tataraで使用するアバターではlilToonの使用を推奨します。

lilToon以外のシェーダーを使用している場合、NDMF VRM ExporterではMToonへの変換は行われず、glTFとして最低限のマテリアル情報のみが出力されます。そのため、UnityやVRChat上とは大きく異なる見た目になる場合があります。

また、lilToonを使用している場合でも、すべての表現をMToonへ変換できるわけではありません。

例えば、以下のような表現は正しく再現できない場合があります。

  • ラメ
  • 宝石
  • 屈折
  • ファー
  • 複雑なMatCapやRim Lightを利用した表現
  • 特殊なライティングを前提としたプリセット
Tataraでモデルが暗く表示される場合

特殊なlilToonのプリセットや複雑なライティング設定を使用している場合、VRMへ変換した際に影や明るさの見え方が変化し、Tatara上でモデルが不自然に暗く表示される場合があります。

この場合は、一度マテリアルの設定を通常のlilToonに近いシンプルな状態へ戻し、再度VRMを出力してみてください。


PhysBoneなどの揺れ物について

NDMF VRM Exporterでは、VRChatのVRC PhysBoneをVRMのSpring Boneへ変換できます。

ただし、VRC PhysBoneとVRM Spring Boneでは揺れ物の計算方法や利用できる機能が異なります。 そのため、VRChat上での動作を完全に再現できるわけではありません。

特に以下のような箇所では違いが発生する可能性があります。

  • スカート
  • 尻尾
  • アクセサリー
PhysBoneの角度制限について

VRC PhysBoneとVRM Spring Boneでは利用できる機能が異なるため、VRChat上で設定した揺れ物の挙動を完全に再現できるわけではありません。 特に、VRC PhysBoneで設定したLimitによる角度制限は、Tatara上では同じように適用されません。

そのため、VRChatでは一定の範囲までしか動かなかったスカートや髪などが、Tataraでは大きくめくれたり、不自然な方向へ動いたりする場合があります。

揺れ物の挙動がおかしい場合

Tataraへ読み込んだ際に、

  • スカートが大きくめくれ上がる
  • 髪や尻尾が不自然な方向へ飛ぶ
  • 揺れ物が必要以上に動く
  • 特定のボーンだけ激しく振動する

といった問題が発生する場合があります。

この場合はUnityの変換元アバターへ戻り、該当するVRC PhysBoneの設定を調整してから、再度VRMを出力してください。

特に、Limit・Immobile・Gravityなどに強く依存した設定では、VRMへの変換後に挙動が変わる可能性があります。

調整しても正常な挙動にならない場合は

調整しても正常な挙動にならない場合は、以下の方法で問題のある揺れ物をVRMへ変換しないことも検討してください。

  • VRM Export DescriptionSpring Bone Options > Excluded Spring Bonesに対象のPhysBoneを登録する
  • 対象のVRC PhysBoneコンポーネントを無効化または削除する

Excluded Spring Bonesを利用すれば、アバターのGameObjectやPhysBoneコンポーネント自体を削除せずに、特定の揺れ物だけをVRM Spring Boneへの変換対象から除外できます。

また、このページの手順のようにTataraへの変換専用Prefabを作成している場合は、Tataraでは必要のないPhysBoneコンポーネント自体を無効化・削除してしまう方法でも問題ありません。

Avatar Optimizerを使用している場合は、一度AAO Trace and Optimizeを無効にして出力し、最適化による影響がないか確認することもおすすめします。


VRChat固有のギミックについて

VRChat向けアバターには、AnimatorやExpressions Menu、Contactなどを利用したさまざまなギミックがあります。

これらはVRMそのものの機能ではないため、Tataraへ読み込んでもVRChatと同じようには動作しません。

例えば、

  • Expressions Menuによる衣装切り替え
  • ハンドジェスチャーによる表情・オブジェクト切り替え
  • AFKアニメーション
  • Contact Sender / Receiver
  • Avatar Dynamicsを利用したギミック
  • VRChat専用のParticle System演出

などをTataraで使用することは想定されていません。

Tataraで必要のない機能については、変換前に削除・無効化しておくことをおすすめします。


変換後に確認すること

VRMの出力が完了したら、Tataraへ追加して次の項目を確認してください。

AIキャラクターを作るのモデル選択で「自分のファイル」を選び、出力した.vrmファイルを追加します。「読み込み準備完了」と表示され、モデルが正常に表示されることを確認してください。

Tataraで変換したVRMを読み込み、モデルの表示を確認する画面

  • モデルが正常に表示される
  • テクスチャやマテリアルが正常に表示される
  • 瞬きが正常に動作する
  • リップシンクが正常に動作する
  • 表情が正常に切り替わる
  • 髪や服などの揺れ物が正常に動作する
  • 不要なオブジェクトが残っていない
  • ファイルサイズが極端に大きくなっていない

問題がある場合は、出力されたVRMを直接修正するのではなく、可能であればUnity上の変換元アバターを修正してから再度出力することをおすすめします。


よくある問題

症状考えられる原因対処方法
モデル全体が暗いlilToonからMToonへの変換でマテリアルの見え方が変化しているlilToonの設定を単純化し、再度出力する
一部のマテリアルだけ見た目がおかしい特殊なシェーダーやlilToonの特殊機能を使用している通常のlilToonに変更する
スカートや髪が大きく暴れるPhysBoneとSpring Boneの計算方法の違いPhysBoneの設定を調整する。改善しない場合は変換対象から除外する
揺れ物のAngle Limitが効かないTataraではVRC PhysBoneの角度制限を同じように再現できないPhysBoneの設定を調整するか、対象のPhysBoneを変換対象から除外する
VRMのファイルサイズが大きい不要なBlendShapeやオブジェクトが大量に残っているAAO Trace and Optimizeを利用する
AAOを使用するとメッシュや揺れ物がおかしくなるAvatar Optimizerによるメッシュ統合やPhysBone最適化などの影響AAO Trace and Optimizeの各項目のチェックを外すなどして原因を調査する
VRChatのギミックが動かないVRChat固有のAnimatorやContactなどを利用しているTataraでは不要なギミックを変換前に削除する
表情の一部が動かない必要なBlendShapeやExpression設定が正しく変換されていないExport前の設定と最適化後のBlendShapeを確認する

関連リンク