見出し画像

VRoidモデルをVRChatアバターにする - Quest対応化編 -

※最終更新日: 2022/11/13

前回までのあらすじ

VRoid Studioで作成したモデルをVRChatのアバターとしてアップロードしたときの備忘録を書きました。

しかし、このアバターはQuest版VRChatに対応していません。
別途Quest版のアバターを追加アップロードする作業が必要になりますが、一筋縄ではいかなかったため上手くいった方法を書き残します。

手探りで辿り着いた手順なので最適解かどうかは不明ですが、備忘録として。
改良案コメント下さると嬉しいです。

Quest対応の目標値

Quest版ではアバターに対する制限がPC版よりも厳しいです。
そのため、PC版のアバターをそのままアップロードすることができない場合がほとんどです。
Quest版の基準でVery Poorだとそもそもアップロード不可となっています。
また、PoorはQuest版VRChatのデフォルト設定で非表示にされているため、色んな人にアバターを見てもらうためにはQuest版Medium判定に捻じ込む必要があります

Quest版Mediumの主な制限は下記の通り

  • ポリゴン数: 15,000

  • マテリアルスロット数: 2

  • メッシュオブジェクト数: 2

  • PhysBonesコンポーネント数: 6

  • PhysBonesコライダー数: 8

  • ダイナミックボーン: 不可

  • シェーダー: Toon Litなど(透過テクスチャ非対応)


Quest対応のために諦めたこと

前述したQuest版Mediumの制限の中でVRoidモデルと特に相性が悪いのがシェーダーの制限です。
VRoidはその仕組み上どうしても透過テクスチャを多用しているため、そのままQuest対応させると透過部分が正常に表示されず真っ黒になって顔に海苔がついているような姿になってしまいます。

透過部分を残してシェーダーを変更すると海苔状態に!

モデルを最適化するにはBlender等での修正作業が必要になってくるのですが、修正内容を簡略化(技術的に自分にできなかったこともあるので)するために下記のことを諦めました。

  • 眉毛
    眉毛の透過部分を削除する作業にちょっと躓いてしまったので、顔のテクスチャに直接眉毛を書くことにしました。


  • 眉毛と同様の理由ですが、顔のテクスチャに乗せるのも面倒なのでもう省くことにしました。

  • 睫毛
    睫毛の透過部分を切り取る作業なんて細かすぎてとんでもない……!
    もう省いてしまいます。

  • 目のハイライト
    必要なら目のテクスチャに書き込んでしまいましょう。

  • 揺れもの
    PhysBonesの制限内でやりくりすることを考えるとかなり改造が必要そうなので、もうすべて無効化してしまいます。
    そもそも今回紹介する自動最適化ツールに通すと勝手にコライダーが削除されるため、PhysBonesを生かしたいならそれなりの手間が必要そうです。


追加で必要になったもの

以前記載したPCアバター編からQuest対応するために追加で必要になったものは下記のとおりです。

VRoid Texture Converter for VRChat on Quest

眉毛とアイラインのテクスチャ画像を顔のテクスチャに貼り付けるために使いやすい画像を生成してくれるソフトです。
なくても画像編集ソフトがあればできなくはないですが、あるととても楽。

画像編集ソフト

眉毛とアイラインのテクスチャ画像を上記ソフトで編集すると色が変わることがあるので、画像の色を変えるのに使います。
お手持ちの画像編集ソフトがあればそれでOK。
ない場合は、下記のようなwebツールを使うと簡単です。

https://colorcodesearch.com/changehue/

Blender

モデルの修正に使います。
最新版の3.3は私の環境と相性が悪いのか、入れたアドオンが3.3非対応なのか、原因は不明ですが落ちまくりました……
2.93を使いました。

VRM Add-on for Blender

BlenderでVRMモデルを読み書きするための追加機能です。
zip形式でダウンロードできますが、絶対に解凍しないでください

Cats Blender Plugin

Blender上でアバターのデータを自動で軽量化してくれる便利な追加機能です。
zip形式でダウンロードできますが、絶対に解凍しないでください

VRM表情設定するやつ

Blenderでモデル修正をしたら表情の設定が失われてしまったので、再設定するためにこちらのツールを使用しました。

VRCQuestTools

アバターを Quest 用にアップロードできるように自動変換してくれるUnityのアセットです。


Vroid Studioでの追加作業

① 目玉の透明部分を塗りつぶす

白目の透明部分を白く塗りつぶします。
「テクスチャを編集」で瞳のレイヤーの下に新しいレイヤーを作って、しっかりはみ出すぐらいに塗りつぶします。

② 眉毛とアイラインのテクスチャ画像を取り出す

眉毛とアイラインのテクスチャ画像をそれぞれ「テクスチャを編集」の画面からレイヤーを右クリックして「エクスポート」します。

エクスポートしたテクスチャ画像をVRoid Texture Converter for VRChat on Questに取り込みます。
「白色を透過」にチェックを入れて変換すると、このソフトと同じフォルダの中に「brow.png」「eyeline.png」が生成されます。

眉毛とアイラインの色が変わっていることが多いので、画像編集ソフトで好きな色に修正してください。

③ 眉毛とアイラインを顔に貼り付ける

②で生成した画像を顔の肌テクスチャの上に重ねます。
これで顔の模様として眉毛とアイラインを貼り付ける作業は完了です。

④ 眉毛、アイライン、まぶた、まつげ、目のハイライトをなくす

眉毛、アイライン、まぶた、まつげ、目のハイライトのポリゴンメッシュが生成されると海苔状態になってしまうので、なくします。


⑤ マテリアル数を2にしてエクスポートする

本当は後述するBlenderでの透明部分切り落とし作業が終わってからマテリアルまとめた方が楽なのですが、マテリアルを自動でまとめてくれるBlenderのアドオン「Material Combiner」がなぜか上手く動作しませんでした……
(Material Combinerと和解できた方がいれば教えてください)

なので、今回はVRoid Studio側でやってしまいました。
「マテリアル数」を2に設定してVRMをエクスポート。


Blenderでモデルを改造

① VRM Add-on for Blenderをインストールする

Blenderを開いたら「編集 > プリファレンス…」をクリックして出てきたウィンドウから「インストール」をクリック。

ダウンロードしたアドオンのzipファイルを選択して「アドオンをインストール」をクリック。

インストールが完了したら、アドオンの表示を「コミュニティ」にして、「Import-Export: VRM format」を探してチェックを入れて有効化してください。

② Cats Blender Pluginをインストールする

①と同じ手順でCats Blender Pluginをインストールして「3D View: Cats Blender Plugin」を有効化してください。

この時点でこうなっていればOKです。

③ VRMモデルをインポートする

アドオンのインストールに成功していれば「インポート > VRM (.vrm)」が実行できます。
これを使ってVRoid Studioで作成したVRMモデルをインポートしてください。

最初は灰色の状態になっていますが、右上のボタンでマテリアルプレビューに切り替えれば色がついた状態で見ることができます。

④ 衣装の透明部分を切り落とす

Blenderのナイフツールを使って透明になっている部分を切り落としていきます。
ナイフツールの使い方については下記サイトが詳しいです。

手始めに衣装の襟の透明部分から。

透明になっているけどメッシュはしっかりある

衣装=体を編集したいので「Body」を選択。

「編集モード」に切り替え。

「面選択」に切り替え。

ナイフツールを使って透明部分の境界線を切っていきます。

Enterキーで境界線を確定。

ボックス選択を使って消したい部分を選択していきます。
Shiftを押しながら面をポチポチ追加選択していきましょう。

選択出来たらDeleteキーを押して削除メニューから「面」を選択。
(多分これで合ってると思う……他のオプションとの使い分けを知ってる人がいたら教えてください)

透明部分のカットが完了です。

こんな感じで透明部分をチマチマ消していきます。
このモデルの場合は衣装の襟と、下駄の鼻緒に透明部分があったため切り落としました。

⑤ はみ出た白目を切り落とす

白目が顔の表面から突き出ているので、不要な面を削除します。
面の削除方法は④と同じ。
大まかに削れればいいので、カットツールまでは使いませんでした。

削除前
削除後

目のように奥まったものを編集する場合は、面をひとつ選択した状態で"Ctrl"を押しながら"+"を連打で繋がっている面を拡張選択→"Shift"+"H"で選択しているメッシュ以外を非表示にするとやりやすいです。
"Alt"+"H"で元の状態に戻せます。

⑥ Cats Blender Pluginでモデルを修正

ここからは自動でQuest版に最適化させていきます。
隠れてる矢印をクリックして、「CATS」のメニューを出します。
そこから「モデルを修正」の隣にある工具マークをクリック。

ここに隠れてる

「モデルを修正」の設定をします。
私はこの設定で上手くいきました。
「OK」を押して設定を確定し、「モデルを修正」を押せば自動で最適化が行われます。

⑦ Cats Blender Pluginでポリゴン数を減らす

まずは現在のポリゴン数を確認します。
下矢印ボタンから「ビューポートオーバーレイ」のメニューを出して「統計」にチェックを入れます。

すると、左上に現在のポリゴン数が「面」として表示されます。
削減前のポリゴン数は39,148。
Quest版Mediumでは15,000以下に削減しなければなりません。

そこでまたCATSを使います。
「デシメーション」の「トリス」に「15000」を入力して「Quick Decimation」を実行すると、いい塩梅にポリゴン数を自動削減してくれます。
モードはデフォルトの「Smart」にするとシェイプキーの破綻(モデルがトゲトゲに爆発する原因)がないように全体を処理してくれるようです。賢い。
「Smart」で上手くいかなかった場合は、より慎重な「Save」にすると安定するかも。

モデルの軽量化作業はこれで完了。

⑧ VRMファイルをエクスポートする

「ファイル > エクスポート > VRM (.vrm)」をクリック。

何故かHipsのボーン設定は消えていたので、「Hips」を選んで再設定します。
その後、「OK」を押せばVRMで保存できます。

表情の再設定

CATSでモデル修正したせいでVRMから表情の設定が消えていました。
「VRM表情設定するやつ」を使って表情の設定をしていきます。
ちなみに、眉毛のポリゴンがありませんので眉の表情は動かしても意味がありません。

設定が完了したら「Export(Nomal)」でVRMを再出力。

Unityでの追加作業

前回書いたPC版アバター編の「Unityでの作業⑥」までを終わらせてください。
その後の手順がQuest版だと下記のようになります。

① VRCQuestToolsを追加でインポートする

「VRCQuestTools」をUnityにインポートします。
インポートの方法は前回書いたPC版アバター編を参照のこと。

② Quest用に変換する

変換したいアバターのデータを選択している状態で「VRCQuestTools > Convert Avater for Quest」を実行する。

色々書いてありますが、「変換」をクリック。

揺れものがついているとこのような画面が出てくるので、「すべて残す」のチェックを外して「選択していないコンポーネントを削除」をクリックしてください。

ここに作られているのがQuest版に最適化されたアバターのデータになります。

③ PC版アバターのIDをバインドする

VRChat SDKの「Content Manager」から以前アップロードしたPC版アバターのIDを「Copy ID」で取得します。

視点位置や目の可動域を調整するのに使った設定画面と同じところにある「Pipeline Manager > Blueprint ID」に入力。
「Attach」をクリックして設定します。

④ Quest版アバターとしてアップロードする

Quest版に変換したデータのみが有効&選択されている状態でVRChat SDKを開きます。

「Builder > Switch Build Target to Android」をクリック。

小さいウィンドウが表示されるので「Confirm」をクリック。

しばらく時間はかかりますが、画面が切り替わります。
再びVRChat SDKのBuild画面を開くとボタンが「Build & Publish for Android」となっています。
これを実行すればQuest版アバターとしてのアップロードが実行されます。
以降はPC版アバター編と同じなので割愛。


Quest版VRChatで確認する

ちゃんとQurst版VRChat上でMedium判定のアバターとして表示されました!
顔に海苔もついていません!めでたし!

この記事が気に入ったらサポートをしてみませんか?