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

チュートリアル:VRM1

VRChat PC向けのアバターをNDMFワークフローでアバターカメラアプリ向けのVRM1.0に出力するチュートリアルです。

TIPS

cluster VRM1.0のアバターを出力する場合は、このチュートリアルの指示に従った後、 チュートリアル+:VRM1 cluster を読んでください。

前提条件

以下の事項に関して、基本的な知識を持っている人が対象です。

  • Unityの操作
  • (Modular Avatarを利用した)VRChat向けアバターの改変
  • UniVRMアバターの改変

VRCSDK Avatarsプロジェクトの作成

本チュートリアルではVRChat想定アバターの設定を読み込む目的でVRCSDKを利用します。

ALCOM などでVRCSDK Avatarsのプロジェクトを作成した上で、アバターのインポートを行ってください。

ALCOM があれば、 VPM Repo: のURLをリポジトリとして登録することで、VPMパッケージを追加できるようになります。

ライブラリのインストール

INFO

特に明記されていない場合、ライブラリは最新版をインストールするようにしてください。

特にNDMFのクロスプラットフォームサポートは歴史が浅く更新が活発なため、ベータ版のライブラリを使う方が安全です。

NDMFのインストール

Modular Avatar を利用しているプロジェクトには既にインストールされているはずです。

(アバターが未改変、などの理由で)まだインストールされていない場合は、NDMFをインストールしてください。

Non-Destructive Modular Framework (NDMF)
Docs: https://modular-avatar.nadena.dev/ja/
VPM Repo: https://vpm.nadena.dev/vpm.json
アバターを非破壊改変するツールを連携して動作させるために使います。

vpm.kaikoga.netのインストール

VPM Repo: https://vpm.kaikoga.net/index.json

いっぱいインストールします。

Emote Wizard
VRMアバターの表情とリップシンクの設定を行います。

Avatar Tinker Vista
VRMのメタデータを設定します。

Avatar Tinker Vista - ApplyOnPlayHack
NDMFのApply On PlayでVRMアバターをVRMアバターとしてビルドできるようにします。

QuestReplacer
VRM1.0で使うMToon10マテリアルの生成と、ビルド時のマテリアル差し替えを行います。

UniVRMのインストール

Avatar Tinker VistaのVRM1.0出力はUniVRMを利用するため、UniVRMをインストールしてください。

UniVRM
Docs: https://vrm.dev/
GitHub Releases: https://github.com/vrm-c/UniVRM/releases
UnityでVRMアバターを取り扱うために使います。

WARNING

多くの外部NDMFプラグインは、unitypackageでインストールされたUniVRMを無視します。 このため、UniVRMはUPMでインストールすることが推奨されます。

具体的には、以下のURLをいずれかの方法で追加してください。

    "com.vrmc.gltf": "https://github.com/vrm-c/UniVRM.git?path=/Assets/UniGLTF#v0.130.1",
"com.vrmc.univrm": "https://github.com/vrm-c/UniVRM.git?path=/Assets/VRM#v0.130.1",
"com.vrmc.vrm": "https://github.com/vrm-c/UniVRM.git?path=/Assets/VRM10#v0.130.1",

外部ライブラリのインストール

AAO: Avatar Optimizer
Docs: https://vpm.anatawa12.com/avatar-optimizer/ja/
VPM Repo: https://vpm.anatawa12.com/vpm.json
ボーン数やメッシュ数を削減したり、全体的な負荷軽減を行います。

本チュートリアルでは以上のツールの使い方の説明はしません。 使い方はそれぞれのリンク先を参照してください。

シーンの準備

もしあなたがアバターごとに別々のシーンを作るスタイルなら、新しいシーンを作ってください。

シーンにVRChat PC向けアバターのプレハブを置いてください。 プレハブのUnpackは不要です。

NOTE

VRChat PCにアップロードするためのアバターとは別のオブジェクトとして編集することをお勧めします。

「アバターをVRChatにアップロードした時はVRChat向けの設定になり、VRM出力した時はVRM向けの設定に変わる」というワークフローは素晴らしく見えます。 しかし、自動変換だけで見た目を合わせるにはシェーダーの機能的差分が大きく、また自動変換でうまくいかなかった場合の微調整も難しいため、今回は目指しません。

最後に、もしあなたがアバターのPrefab Variantを作るスタイルなら、アバターをPrefab Variantにしてください。

セットアップ

VRMアバターへの変更

  1. VRC Avatar Descriptor VRC Pipeline Manager を削除してください。
  2. アバターに VRMInstance コンポーネントを追加してください。 これがアバターをVRM1.0として扱うためのマーカーとなります。
INFO

UniVRM単体でVRMアバターの改変を行う場合、 VRM10Object の作成が必要になります。

Avatar Tinker Vistaで VRM10Object を自動生成し、内容の設定まで全て行うため、UniVRMの Create new VRM10Object and default Expressions. select target folder ボタンを押す必要はありません。

マテリアルの差し替え

VRChat向けアバターをVRM1.0へ出力するためには、マテリアルがUniVRMで利用可能である必要があります。

アバターを右クリック→ Quest ReplacerNew VRM1 から、 Quest Replacer を作成してください。

Quest Replacer の Database が必要に応じて自動生成されるので、クリックして参照し、必要に応じて Generated Directory 以下の設定を確認してください。

TIPS

生成された Quest Replacer Database Assets/ 以下の好きなディレクトリに移動して良いです。

アバターに戻ったら、 Quest Replacer Sync and Generate ボタンを押してください。 ダイアログが何回か表示される場合がありますが、 OK を押してください。

INFO

シェーダーを変更するため、アバターの見た目がおかしくなることがあります。

その場合、生成されたシェーダーを調整して対応してください。

VRC PhysBonesの変換

VRChat向けアバターの揺れものをVRM1.0の出力に反映するためには、 VRC Phys Bone をVRM1.0のSpringBoneに変換する必要があります。

  1. アバターを右クリックし、 Avatar Tinker VistaExtract VRC PhysBones as ATiV Generate VRM0+1 SpringBones を実行します。
    • ダイアログが表示されるので、 Just Generate をクリックします。
  2. アバターを右クリックし、 Avatar Tinker VistaExtract VRC Constraints as ATiV Generate VRM1 Constraints を実行します。
    • ダイアログが表示されるので、 Just Generate をクリックします。
  3. アバターの子に生成された Secondary オブジェクトに ATiV Delete All VRC PhysBones コンポーネントを追加することで、アバターのVRC PhysBoneを削除するようにします。

アバターの子に生成された Secondary オブジェクト以下にSpringBoneの設定が入っている状態になります。

Unityのプレイモードに入ることで、 ATiV Generate 系コンポーネントは実際のVRMのSpringBoneに変換され、揺れものの動作確認ができます。

INFO

元の VRC Phys Bone の設定を残してあるので、 Secondary 以下に生成されたAvatar Tinker Vistaコンポーネントを削除することで、生成をやり直すことが可能です。

表情とリップシンクの設定

VRChatとVRMではアバターの表情設定の互換性がないため、このままだと表情が動かないアバターになります。

Emote WizardでVRMアバターの表情とリップシンクの設定が行えるため、利用します。

  1. アバターを右クリックし、 Emote WizardEmote Wizard Root します。
  2. Emote Wizard Root Setup を開き、Quick Setup VRM Sources します。
  3. BlendShape Sources の下に Generic Emote Sequence Source が生成されるので、内容を埋めます。

VRMメタ情報の設定

VRMにメタ情報を設定します。

VRMメタ情報の設定はAvatar Tinker Vistaのコンポーネントで行います。

アバターに空の子オブジェクトを追加して、 ATiV Overwrite VRM0+1 Meta コンポーネントを追加し、オブジェクトに適当な名前をつけてください。 このオブジェクトでは、VRM1.0に含まれるメタ情報を設定します。

VRM一人称描画設定

VRMの一人称描画設定はAvatar Tinker Vistaのコンポーネントで行います。

アバターに空の子オブジェクトを追加して、 ATiV Default VRM0+1 FirstPerson ATiV Merge VRM0+1 FirstPerson コンポーネントを追加し、オブジェクトに適当な名前をつけてください。 このオブジェクトでは、メッシュごとに一人称視点と三人称視点のどちらで描画されるかを設定します。

INFO

ATiV Default VRM0+1 FirstPerson Default Value ATiV Merge VRM0+1 FirstPerson Auto にすることもできます。 この場合、ヒューマノイドボーンに基づいて Both または Third Person Only が自動的に設定されます。

この方法のメリットは、簡単であることです。

この方法のデメリットとしては、 UniVRM によって自動的にメッシュが分割され、パフォーマンスに影響することがあります。

ビルド

NDMFプラグインの適用が必要なので、UniVRMのExport機能は使いません。

メニューバーの ToolsNDM FrameworkShow NDMF Console を選んでください。

アバターを選択し、Avatar PlatformのVRM 1.0 (ATiV)を選択してから、表示される Export VRM1.0 Avatar with NDMF ボタンをクリックしてください。 保存先選択ダイアログで指定されたパスにVRMファイルが生成されます。

TIPS

ATiV Export VRM0+1 UI コンポーネントのインスペクタに表示される Export VRM1.0 Avatar with NDMF ボタンは同じ機能を持ちます。