ヒルヒル流・PCアバターのQuestMedium化(ShowAvatarしなくても見えるようにする)指南記事


PCアバターをQuestでの Avatar Rank Medium 化し、PCアバターと共存させる手順を解説します!

注意!

こちらは、ある程度BlenderやUnity等のソフトの操作に慣れた人を対象とした記事です
また、この記事内容ではBlender2.79やMetasequoia 4等のあまりメジャーではないツールを使用しています
Blender2.8以降でも問題なく実行できるかと思われますが、もし不明な操作や用語等がありましたらGoogle先生に訊くなどしてご対処願います("Blender2.9 メッシュ統合"など)
コメント欄やTwitter等でのご質問には回答出来かねます、ご了承ください

また、無理にポリゴン削減をした結果、見た目をひどく損なう可能性があるため、
3万ポリゴン前後までのアバターで行うことを強く推奨します

そしてQuestMedium化なんか大半の人はしなくて大丈夫です
「初心者案内するからVisitorさんにアバター最初から見られたい」とか無い限り、
普通の人間はVeryPoorでアップロードするだけでも全然大丈夫です マジで


当記事は、単なる「Quest対応」(Androidに切り替えてシェーダーだけ変えてVeryPoorでアップする)とは異なります
とりあえずQuestで見えてほしい!というだけの方は
ブラウザバックを推奨します
また、当記事の内容は2021年12月時点のものとなります。

QuestMedium化とは?

皆さんご存知かとは思いますが、VRChatのアバターには Avatar Rank というものがあります
まあ簡単に説明するとアバターがどれだけ重いかでランクが決まる、そういうやつです
どれくらいのランクから表示するかをSafetyから決められます
また、Rankの基準はPCとQuestで異なりまして、Questでは初期状態ではMedium以上のみ表示されます
始めたてのQuestのVisitorさんにShowAvatarせずとも最初からアバター表示してもらうためには、Medium以上のアバターを用意する必要があります
そのQuestでのMediumの基準がというと・・・

  • メッシュレンダラ2つ(Skinned Mesh Renderer 2個、Mesh Renderer 2個まで)*1
  • マテリアルスロット2つ
  • 15000ポリゴン以下
  • このほかにもシェーダーやDB使用禁止等ありますが割愛します

そんなこんなでわりと厳しい!! 大半のPC専用アバターでは満たせない!ので、
この記事では、MediumにするためにBlender等でゴニョゴニョする方法を解説いたします

GoodやExcellentじゃなくても大丈夫?

ぶっちゃけMedium以上であれば表示されるというか、Safetyの選択肢にもMediumとPoorしか無いので、エクセ目指すメリットはマジで特にありません
しいて言えば、アバターを自作・販売する場合、改変の余裕を残すために1メッシュ1マテリアルにする、くらいです

使用ツールについて

  • 必須
    • Blender(2.79以降~2.9系まで?)
      • この記事では2.79を使いますが、2.8以降でも問題なく行えるでしょう
        3.x系以降では下記Cats Blender Pluginが上手く動作しないようです!
    • Cats Blender Plugin
      • インストール手順・表示方法についてはここでは割愛します
  • Unity(VRChatに対応するバージョン)
    • この記事では執筆当時(2021-12-13)時点での対応バージョン 2019.4.31f1 LTS を使います
  • VRCSDK3-AVATAR
    • この記事では執筆当時(2021-12-13)時点でのバージョン 2021.11.24.16.20_Public を使います
  • 任意(私が普段Blenderに慣れてないだけ)
    • Metasequoia 4 EX

今回ご利用させていただくアバター

この記事では あまとうさぎ / こまど さんの 「ラスク」ちゃん v1.11 を使います
komado.booth.pm

手順

Unityでのアバターの用意

すでに既存のプロジェクトがある場合、新しくプロジェクトを作り直す必要はありません
今回はバニラ状態のSDK3ラスクちゃんを利用します

モデリングソフトでの不要な部分の削除など

普段使用しているモデリングソフトで、服で見えない胴体など不要な部分を削除します(ついでに、着せ替え用のシェイプキーなども削除しちゃいましょう)
私はBlenderが不慣れなので2万円のMetasequoiaを使用しましたが、普通の人であればBlenderでそのまま編集したほうが手っ取り速いです

こうやって削除しても
服で隠れるので無問題

また、余裕や技術力があればテクスチャ書き込んで表現するなど、軽量化に使える技術は惜しみなく投入しちゃってください
手作業でポリゴン削減できる部分は行っておくと後々破綻せず効率的にポリゴン削減できるかと思われます

パーカーの紐とか
Questだとダイナミックボーン無いので片面ポリでもいいでしょう

例えば自分のラスクちゃんの場合、ニーソックスが別オブジェクトなのを素足のテクスチャに書き込んでその分のポリゴンを削減しています

本来別メッシュのニーソックスを
Bodyテクスチャに書き込んじゃいます

テクスチャ改変をしてる場合、この時点でテクスチャを設定しておきましょう

自分はメタセコを使用しているためここで一旦FBXにエクスポートしますが、Blenderの場合はそのまま次のステップに行って大丈夫です(可能であればBlendファイルでバックアップをとりましょう)

Blenderでのポリゴン削減

(自分はメタセコなので)ひとまずBlenderで先程FBXでエクスポートしたモデルを開きます(Blenderの場合開きなおし等しなくてもOK)

いまだに2.79ですよ 軽量化にしか使わないので・・・

顔以外のポリゴン数削減をしていきます
(顔はシェイプキーがあるので削減できません、削減してしまうと表情が動かなくなります・・・)

2.79の場合、モディファイア(レンチのマーク)→追加→ポリゴン数削減からできます

胴体や服など、左右対称のオブジェクトは"対象"にチェックを入れておきましょう

面数を確認しながら比率をグリグリして、素人目でも大丈夫そうだなーってくらいの見た目維持してればOKです

適用ボタンを押すと反映されます
ただし、あまり削減しすぎると関節を曲げた時に見た目がおかしくなってしまうので、反映後に編集モードでポリゴンがどうなっているかの確認はしておきましょう

三角面数が15000以下になっていればOKです

昔はPCアバターでも2万ポリまでしか使えない時代があったのじゃよ

この状態で一旦Blendファイルを保存しておきましょう(Blenderの民の場合、先程保存したBlendファイルとは別名のが良いかも)

オブジェクトの結合

Shiftキーを押しながらオブジェクトをクリックして選択します
この際、顔のオブジェクトを最後に選択すると、結合した際に名前が顔のオブジェクトの名称になり、PC用のアニメーションがそのまま流用できます

最後は顔! 覚えておきましょう

その後、3Dビューにマウスカーソルを置いて Ctrl+J でオブジェクトを結合します

CATS Blender Plugin を利用したマテリアルのベイク

CATSタブから、"最適化"→"Generate Material List"をクリックします

2.8以降はキーボードのNキーを押すと出せるみたいです

この際、アルファテクスチャのあるモデルの場合、アルファテクスチャのみ数字を2にセットしておいてください

または、Unityのアニメーション設定時に頬赤らめのシェイプキーを消しましょう

"Save Atlas to..."ボタンを押し、FBXかBlendファイルと同じ場所など、Unityから見つけやすい場所に保存しておきましょう

FBXエクスポート、Unityにもっていく

FBXへエクスポートします
この際、オペレータは以下のように設定するらしいです

ここらへんよくわかってない

エクスポートしたFBXモデルとテクスチャをUnityにぶっこみます
RigをHumanoidに設定し、Materialsを Use External Materials にしましょう

Bangsが顎ボーンに設定されてたので、こちらの関連付けも外しておく

また、Modelsタブについては元のモデルと同じ値に設定してください(Read/Write Enabled や、 Blend Shape Normalsなど)

テクスチャの Alpha is Transparency にチェックを入れます

可能であればAndroid Overrideで圧縮設定いじっておいてもよいかも

FBXをシーンにD&Dします

Atlasマテリアルのシェーダーを VRChat/Mobile下のものに変更します(Toon Lit がおすすめ)

Atlasマテリアルを複製し、複製したマテリアルのシェーダーを VRChat/Mobile/Particles/Multiply にします

Ctrl+Dで複製!
Additive も使えます お好みで

複製したマテリアルをメッシュの Materials 内 Elements 2に適用します

これで表情も問題なくQuestで出てきます

元のPC用アバターの VRC_Avatar Descriptor を Copy Component して、Quest用アバターにPasteします

こぴーして
はりつけ!

この際、PCアバター側のBodyやEyeボーンが関連付けされたままなので、Quest用アバターの同名オブジェクトをD&Dして関連付けさせてください

これ忘れるとアイトラやリップシンクが動かないよ~~~

VRCSDKコントロールパネルよりQuest用アバターの "Build & Test" をクリックしてビルドし、VRChatを起動して確認します(SDK3のみ)*2

もしここでエラーなどあったら"Auto Fix"ボタンを押せるなら押しましょう
Build & Test を押してちょっと待つとこうなるので、
同じPCでVRChatを起動してAvatarsの下の方にスクロールするとあるので
選択するとローカルでテストできます(他の人からは見えません)

確認して問題が無ければ、Build Settings等からAndroidビルドに切り替えておきます

コントロールパネルからでもできるけど、Build Settings からやった方が確実

この際、アップロードできないアバターが他にあると Build & Publish ボタンが押せないので、PC用アバターは非Activeにしておきましょう

(すでにPC側にもアバターをアップしている場合)VRCSDKコントロールパネルの Content Manager から、既存のアバターのBlueprint IDをコピーして、
Quest用アバターにAttachしてください

コピーして
はりつけてAttach!

その後、VRCSDKコントロールパネルから "Build & Publish for Android" を押してアップロードします
この際、Overall Performance が Medium 以上になっているか確認して下さい!

この際、New Avatar ではなく、アバターを更新するときの Update Avatar になっていれば成功です(PC側が更新されることはなく、Android側のみ変更されます)

これでアップロードが完了すれば、QuestMedium対応は成功です!お疲れ様でした!

←PC Quest→
PC側ではPoor、Quest側ではMediumなのが(実機で)確認できます

あとがき

ものすご~~~く画像過多なくせしてわかりづらい記事となってしまいましたが、ご参考になれば幸いです!

・・・・この記事は以上となります それでは~

*1:理論上は2個ずつで4個使えますが、マテリアルスロット数に引っかかります

*2:SDK2であれば、BlueprintIDをDetachして新規アバターとしてアップロードして確認しましょう