見出し画像

【VRChat】超むず!!ワンランク上を目指してアバターのQuest対応を理解する

 Quest対応について調べると、やり方を解説してくれているページが沢山出てきますよね。とってもありがたいです。
 さて、しかしながら結局何をどうすればアバターをQuest対応出来るのでしょうか? 実は皆さん、よく分かっていないのでは?

 このnoteでは、Quest対応どころかFallback可アバターを作り続けている自作アバター勢の私が、Quest対応のやり方……ではなく、Quest対応とはつまり何をしなければならないのかについて製作者目線から超絶スーパー長文で解説していきます。やり方は調べればいくらでも出てくるからね。
 あ、ワールドは専門外なので、スミマセン…

 最重要事項として、もしも分からない単語が出てきた場合は即、ググって下さい。

 追記(23/12) スマホ版やPico4版の登場により、Quest対応も今後はAndroid対応と名前を変え、状況が変わってきそうですが、この記事ではあくまでも「Quest単機で見る事の出来るQuest対応」を基準として記述していきます。

最終加筆 24/02


★そもそもQuest対応って何?

 いやいや、これくらい誰でも分かりますよね。そう、
「Quest対応されているアバターをアップロードする事」…ではありません!!!!!!!!!!!!!!!!!

QuestアバターはQuest用にアップロードしなければならない

VRCSDKのControl Panel (23/08時点の物。見た目はSDKのverによって違う場合がある)

 例えば上記のスクショのように、Switch Build Target to Androidを押すなどして、Androidビルド(Quest版)でアップロードしなければなりません。
 つまり「Quest対応の基準を満たしたアバターをPC版でアップロード」した所でQuestからは見えません。ここ、すごく重要です。
 逆に言うと、Quest版のみでアップロードされたアバターをPC版から見る事は出来ず、フォールバックになってしまいます。
 最終的には「PC、Quest両方のアバターを同じBlueprint ID(以下BPID)でアップロード」する事により、PCではPC版の、QuestではQuest版のアバターが表示される事になります。(なので究極的には全く違う外見、システムのアバターを同じBPIDでアップロードする事もできます)

Quest対応の基準とは

 Questに対応する為にはポリゴン削ったり軽量化しないといけない……というイメージを持っている方が大半だと思うのですが、実の所Quest対応にポリゴン数もメッシュ数もマテリアル数も、一切関係ありません(23/08現在)

  • シェーダーをVRC公式が定めているものにする

  • PBやPBコライダーの数を指定のコンポーネント数、本数まで減らす

  • 特殊なコンポーネント(Constraintなど)を使わない

  • 全体で10MBに収める

 以上です。何も考えずにこの基準を満たすだけで良いなら、メチャ簡単です。シェーダーを変えてPBやギミック全部抜いてテクスチャサイズを落としまくれば良いだけなので。

 実際に使えるシェーダーや、使えないコンポーネントについては公式サイトを参照してください。
Quest Content Limitations
https://creators.vrchat.com/platforms/android/quest-content-limitations/

パフォーマンスランクとは

 しかし実際は、Quest対応は難しいと言われています。何故でしょうか。
 要因のひとつとしてパフォーマンスランクがあります。ちなみにPCとQuestで基準が全く違う為気を付けましょう。PCでexcellentだろうがQuestではverypoorなんてザラです。
 このnoteでは、パフォーマンスランクは全てQuest基準で記述しますのでご注意ください。

公式サイト( https://creators.vrchat.com/avatars/avatar-performance-ranking-system/ )より一部抜粋

 この表が一覧(の一部)ですが、とりあえず下4行のPBなんちゃらの個数がpoor基準を超えるとアップロードできなくなります。(それ以外の数値は超えるとverypoorになるだけでアップロードは出来る)ちなみに、これがgoodかexcellentになるとフォールバックアバターとしての条件を満たします。
 パフォーマンスランク? 何それ? みんなベリプだし気にした事ないけど? という方が大半かと思いますが、Quest対応の際は話が別。何故なら、
 verypoorはQuest単機だと絶対にShow Avatarしないと見えないし、PCと比べて本当に重くなりやすい
 
からです。また、スマホ版ではそもそもverypoorは表示されません。(ShowAvatarが出来ない。なお、poorだったとしてもアバターは見えるがparticleは見えません)
 つまり、ベリプなら余裕だけどpoor以下を目指そうとすると難易度が跳ね上がるという事です。だからQuest対応は難しいと言われているのですね。
 なお、poorはpoorでデフォルトではShow Avatarが必須である為(設定で不要にはできる)出来る事ならmediumを目指すと良いでしょう。poorはあくまでも最低ラインです。

medium以下にしなければダメなのか

 ……とは言いましたが、これは製作者目線での話。
 ユーザーが独自に対応しようとする場合、実の所PC専用の販売アバターをmedium以下におさめるのは修羅の道であり(出来る方は変態(誉め言葉)であり、誰でも真似できる事ではありません)全くおすすめ出来ません。
 そこまでするなら自作アバター勢になった方が早いです。ガチです。

 ですから、ツールを使ってverypoorでじゅうぶんです。今の所はQuest単機勢からも見えるし、Questから見えればQuest対応です。重ければ非表示にしてフォールバックアバターにしてもらえば良いだけの話なので、気負う必要はありません。その為のフォールバックシステムですからね(出来れば、どのフォールバックアバターを見せるかちゃんと設定しておきましょう!)

 Quest対応は難しいので、PC勢単機勢ともに、お互い強要する事はやめましょう。

 しかし、自作アバターをQuest対応として販売・配布するつもりならmedium(せめてpoor)以下を目指す必要性が今後は高まっていくと思います。
 スマホではverypoorは表示すらできない。QuestやPico4単機でもpoorまではデフォルトでは見えない。だからといってmediumを目指すQuest対応は難しすぎて現実的ではない、じゃあ最初からmedium(もしくはpoor)以下のアバターを探そう! という方も増えてくるでしょうからね。
 それでもやはりQuest対応は難しいので、せめてverypoorでも良いから同梱したいとなれば、仕様に書いてQuest単機だとShowAvatar必須ですよの注意書きのひとつは必要かと思います。

役立つ素敵なツールもある

 Quest対応のやり方を検索するとまずツールの使い方が一番上に出てくると思います。検索すれば使い方も含めて即出てきますから、ここでは有名な2ツールのURLだけ置いておきます。製作者様に感謝!
VRCQuestTools

https://booth.pm/ja/items/2436054
Avatar Optimizer

https://booth.pm/ja/items/4885109

ユーザーの皆さんは素直にQuest対応アバター買いましょう

可愛いアバターいっぱい。たまには新着順も見てあげてね

 究極的にはコレです。コレが一番早い。
 
例えば、BOOTHの絞り込み検索で「3Dモデル」「3Dキャラクター」カテゴリの「Quest対応」タグで検索してみましょう!(上記画像)
 この際、poor以下を探したい場合はverypoorではないかしっかり確認する必要があります。たまにポリゴン数などの仕様を一切書いていないアバターもあるので、仕様が分からないものはどんだけ刺さる見た目だろうが避けるべきですね。ベリプでも対応は対応であり、別に販売者が嘘ついてるわけではない事に注意しましょう。Quest対応という言葉に複数の意味がある方が悪いので。
 一応「Fallback対応」タグもありますが、誰も使ってない数が少なくてあんまり機能してないかも。

Fallback対応タグの検索結果はご覧のあり様

★Quest対応の難しさ

 なんかもうよく分かんない。面倒くさいなあ、という感じですね。ではここで、Quest対応の基準についておさらいです。

  • シェーダーをVRC公式が定めているものにする

  • PBやPBコライダーの数を指定のコンポーネント数、本数まで減らす

  • 特殊なコンポーネント(Constraintなど)を使わない

  • 全体で10MBに収める

 何も考えずにこの基準を満たすだけで良いなら、メチャ簡単なんです。シェーダーを変えてPBやギミック全部抜いてテクスチャサイズを落としまくれば良いだけなので。(二回目)
 そう……ここに書いてある条件は見た目を気にしなければ簡単に満たす事が出来ます。Quest対応が難しいとされるのは見た目を気にする場合にいじらなければならない部分が多すぎるからです。これはverypoorだろうがmediumだろうが一緒です。
 今回はverypoorで構わないという前提で、何をしたらいいのか解説します。
 それでは上から何が難しいのか見ていきましょう。

Quest対応シェーダーは表現の幅が狭い

  • シェーダーをVRC公式が定めているものにする

Quest対応シェーダーに切り替えた事により、眉毛などが海苔になっている様子(悲しみ)

 Quest対応の際に地味に引っかかりやすいポイントなんですが、対応シェーダーでは透過、カットアウト、裏面描画が出来ません。
 
particleシェーダーを使えば透過は出来る、と紹介される場合がありますが、SDKのバージョンによっては描画が安定せず思わぬ描画の原因となってしまう事、VRC公式には「particleシェーダーはパーティクルに使う必要がある」という記述があり、アバター本体に使われる事を想定していなさそうな事から、個人的には推奨しません。particleシェーダーはパーティクルシステムにのみ使いましょう。そもそもQuestアバターでパーティクルを使うとverypoorなんですけどね
 上の画像のようなVroidの場合、Blenderがほぼ必須(テクスチャの形に板ポリを切り抜き、形を整えるのに使う)であると言っても過言ではありません。が、そうするとVroidではなくなる(Vroidとしての利点がなくなる)ので、なんとかVroid studio上で完結する、顔のテクスチャの上に眉毛もまつげも二重も全部描く(もしくはまゆげなどは周りを全て肌色で塗ってしまうなど)という手段を取る事になるでしょう。あんまり見た目よくないしめんどい。
 透過が頬染めや青ざめなど、普段は隠れている場所にしか使われていない場合はUnity上でアニメーションを編集し「透過テクスチャが使われているアニメーションを表情を制御しているレイヤーから捨て去る」もしくは「アニメーションそのものをいじって透過表現シェイプキーを使わないようにする」事で対応できるのでまだ楽です。一部の表情を諦める事になりますが。
 ちなみに、諦めるのは透過表現であって赤面表現ではないので注意が必要です。Blenderさえ使えるならやりようはいくらでもあります。
 例えば以下の画像のように処理することが出来るでしょう。

青ざめなら鼻のあたりに丸い青浮かべるとか

シェーダーはtoonlit一択?

 日本向けのアバターは大体アニメ調なのでtoonlitにしろと言われるわけですが、じゃtoonlitってなんなのと言いますと、そもそもシェーダーにはstandard系のリアル調の影が出る物とtoon系のアニメ調の影が出る物がありまして(以下略)
 まあとにかくtoonlitにしておけば「変な影が出ない」という事です。
 なのでむしろリアルな影を表現したい場合はStandard Liteを使います。あと出番があるのはマットキャップを使いたい時のMatcap Litくらいですかね。ちなみにlitというのはライトの意味です(光に反応するシェーダーですよという事)
 Questアバターでも、複数のシェーダーを使って色んな表現をしたいなあ、という場合があるかもしれません。ただシェーダーを複数使うという事は「マテリアルが増える」という事。パフォーマンスランクの表を見れば分かる通り、これを3個にした瞬間にpoor確定です。メッシュも一緒に増やすならverypoor確定です。
 アバターの場合、せいぜい「顔(髪と体)」と「服」の2メッシュにしか分けられませんから、例えばtoonlitの体にバチバチstandard影が落ちてる服を着てるアバターが画面に映る事になり、いや、これは、なんかなぁ……となる事うけあいです。

浮くからやめとけ

 表現によっぽどこだわりがなければtoonlitに統一しておきましょう。

 ちなみにですが、モデルに頂点カラーが使われている場合、toonlitだとまず意図した表示にならないので使わない・削除する事をおすすめします。上で紹介したVRCQuestToolsは頂点カラーを自動で削除してくれるため、Blenderを使いたくない方にとって非常に便利ですね。

滅茶苦茶厳しいPB制限

  • PBやPBコライダーの数を指定のコンポーネント数、本数まで減らす

 ツールを使って対応しようとしてみました! という時にまずはじめに引っかかるのがここでしょう。揺れ物制限です。
 PBコンポーネントの数、揺れるボーンの数、コライダーの数、コライダーに反応するボーンの数、をそれぞれ指定まで減らす必要があります。以下にその数を示します。

poor コンポーネント8個の64本、コライダー16個の64本まで
medium コンポーネント6個の32本、コライダー8個の32本まで
good コンポーネント4個の16本、コライダー4個の16本まで

 Quest対応するだけならpoor、軽量化を目指すならmedium、fallbackまでやるならgoodの数値まで落とします。ちなみにexcellentを目指す場合はPBそのものが使用できません。あまりメリットがないので目指してgoodでしょう。
 しかし数を羅列された所で、アバターを自作した事のない方はあまりピンと来ないと思うので、大体一般的なPC専用アバターの平均値(諸説あり)を表記しますと、PBコンポーネント30個の100本コライダー…は分かりませんでしたが少なからず2~5個(足とか、ロングヘアが貫通しないように胸辺りについていたりする)の150本程度はある感じです。
 もしもお着換えシステムなどを導入している場合、下手するとPBコンポーネント200個超なんてのもあり得ない話ではありません。

 ここでもう一度Quest対応の為のPB制限を見てみましょう。poorでも8個の64本です。PCアバターが30個の100本使ってるのに対してたったこれだけしか使えません。
 は? 無理じゃん……となったと思います。実際、1から作り直さなければ無理です。本当に綺麗に見せる為にはまずウエイトの修正から入らなければならないでしょう。
 これが自作アバターでない、販売アバターであった場合は大抵揺れ物を諦めるという選択肢を取る事になります。ケモミミやしっぽ、スカートは諦めてせめて髪の毛だけ揺れるようにする、とかですね。
 Ignoreを駆使したり、EmptyをRoot boneの代わりにする事によるコンポーネントの節約技とかもあるので、揺れないよりは揺れる方が良いからUnityだけでなんとかしたい場合はやり方を調べてみるのも一興です。
「いや、俺は揺れ物を諦めない!! Blenderを起動!!!」……という方もいらっしゃるかもしれませんが、そこまでするなら自分で1から全部作った方がよっぽど早いので、やめときましょう。ほんと。作者さんにQuest対応のお願いメールでも送った方がまだワンチャンあると思います(ただし、Quest対応の予定はないと明言されている作者さんに要望を送りつけるのはやめましょう)

ネットワークIDって何?

 揺れ物ついでにネットワークIDについても少し記載しておきます。これは同期に関係があります。
 例えば、スカートとしっぽが揺れるPC用アバターと、しっぽのみが揺れるQuest用アバターを同じBPIDでアップロードしたとします。PC用アバターのスカートを掴んだ時、QuestではスカートPBが存在しないので同期しませんよね。この時、もしかしたらQuest側からはしっぽが掴まれているように見えるのではないでしょうか?(検証した事がないので分からないんですけど)
 これはネットワークIDが関係していて、何も設定していない場合、IDは上から順番に割り当てられます。ですので、PBの順番だけではなく、PCにはあるメッシュがQuestにはないみたいな要因でもIDがズレると思います。

設定はこちらからどうぞ

 そんなわけで、違うアバターを用意する時はIDが同じになるように設定しましょう。
 でもPCもQuestも同じアバターとメニューを使う運用にした方が余計な事に気を回さずに済んで楽だと個人的には思います 

アバターのデザインはPBの数で決める

 1からアバター作ってるよ! という場合は、作り始める前にまずどこに何本使うかを決めるとこの先の作業が楽になると思います。

洋服に何本までボーンを使えるか計算している様子
実際に出来上がったアバター

 この画像のアバターの場合はFallback対応のgoodを目指し、使うボーンの数を先に決めてから制作に入ったものです。ちなみにmedium版も存在します。
 medium版は有料ですがgood版は無料なので、厳しい制限の中ボーンをどこにどれだけ割り当てているのか、中身が気になる方はこちらからDLしてみてくださいね。他にも色々Quest対応・Fallback可な無料~有料のアバターあります(宣伝)

 制作アバターの試着ワールドもある為、実際の動きが気になる方はこちらもどうぞ


 なお、PBの揺れ方を少ない本数で出来るだけ綺麗に見せる為には、ボーンの位置、ボーンロール、ウエイトの付け方、PBの設定と考える事とやる事がとても多いです。そして、破綻もある程度許容する心が必要です。
 そもそも、ボーン数やコンポーネントの制限があろうがなかろうが揺れ物を3Dで美しく魅せる事は制作者の永遠の課題ですから、Quest対応に限った話ではありませんね。
 私から言えることは、mediumを目指す場合に使えるスカートボーンの数は最大で16本までだよという事です(両足にコライダーを付ける場合、片足一個につき反応させられるのが16本まで(両足2個でちょうど32本になる)なので)
 ※当たり前の話ですが、Upperlegとleg両方にコライダー付けたい場合はPB8本(コライダー両足4個で32本)です

特殊なコンポーネントは使わないというか、そもそもギミックは諦める

  • 特殊なコンポーネント(Constraintなど)を使わない

 これは簡単な話で「VRCSDK上で赤ビックリマーク(※verypoorのマークではない)が出て怒られてるコンポーネントは消す」でOKですね。
 例に挙げているConstraintというのは、簡単に言うと自分の腕を動かしたら頭の上のミニアバターも一緒に動くみたいなギミックで使われるやつです。
 腕や脚の捻じれを防止する為に使われている事もありますが、もちろん容赦なく切ります。捻じれるって? 3Dモデルってそういうもんだし……
 あとは何かギミックを入れているなら諦めるのが一番早いです。最初からQuest対応として作られているギミックならそのままでも構いませんが、そうでなくてパフォーマンスランクに直結する場合は消した方が早いです。その方が分かりやすいし。
 PCとQuestでは制限が違うので出来る事が全く違うのは当たり前。割り切りが必要です。
 じゃあQuest対応しようと思ったらギミックはほぼ使えないっていう事!? となるかもしれませんが、人々は日夜Quest対応しているよくわかんない変態ギミックを開発しています。BOOTHをチェックして、導入できそうなものは使ってみましょう!

容量を抑えるために出来る事

  • 全体で10MBに収める

 意外と引っかかる方が多いこの項目ですが、3Dモデルにおいて一番容量を食っている場所がどこか知っていますか?
 そう。テクスチャです。
 特にVRC向けモデルの場合、改変への利便性の観点からマテリアルを細かく分けていく都合上、テクスチャの枚数が多い上に全て4kで制作されている事も珍しくありません。それらのテクスチャを2kや1kに落とすだけで容量は劇的に減ります。

4kテクスチャ1枚は2k4枚、1k16枚分に相当すると言えば分かりやすいでしょうか

 ですから、顔や服などのあまり解像度を落としたくない場所は2k、多少解像度を落とした所で目立たない小物などは1k(なんなら512や256まで落とす)という風に考えながらサイズを落としていきましょう。
 テクスチャには、見た目を決めるメインカラーの他、マスクテクスチャやマットキャップテクスチャなど多岐に渡ります。それらの適切な設定については、アバターミュージアムの作者さまがとても素晴らしい記事を書かれている為、ここを読めばOKです。

 テクスチャはしっかり抑えたのに10MB切らないよ! という場合もあるかもしれません。よっぽどな事が無い限りポリゴンやQuest対応ギミックだけで10MB超える事はない……とは思うんですが……
 少なくとも、全てのテクスチャ合計を4K一枚におさまるサイズにすれば、10MBは切れているハズです。切れていると思うんだけどな~~!
 しかし、絶対に容量をクリアしているはずなのに、何をやってもど~~~しても10MB切れない! というか容量が動かない! なぜ!? という場合、Unity(というかVRCSDK?)のバグを踏んでいる可能性があります……
 その場合、諦めずにアップロードボタンを押し続けたり、再起動を試みるのが解決策でしょうかね……
 いや、やっぱりポリゴンが多すぎて容量が超えてるらしいとなったならば、適切なツールかBlenderを使ってなんとかしましょう。
 それでもダメなら潔く諦める。フォールバックで我慢するかQuest対応アバター、買おう!

★Quest対応は「しなければならない」のか

 最後にまとめで締めさせていただきます。
 ここまで大変な思いをしてQuest対応しなきゃいけないのか? もちろんそんな事はありませんね。してくれたら嬉しいけどしなければならないものではありません。
 非対応アバターを独自で対応しようとしている場合、poorでもすごく難しいから、verypoorでも良い。

poor以下を目指す場合はポリゴン削減が必要

 とはいえ、これからはスマホVRCの登場によって一層poor以下のQuest対応が求められる環境になるのかもしれませんね。その場合ポリゴン削減を迫られるので、Quest対応は更に敷居の高い物になるでしょう……少なくとも、ユーザーが努力で対応できるのは、まあマテリアル統合までですね……ポリゴン削減まで行くともう趣味の領域です。そこまでするなら自作アバター勢になる方が早い(何度も書いていますがガチです)
 ポリゴン削減は今の所自動でキレイに行えるツールのようなものはない、と認識しています。自動デシメートでもしようものならシェイプキーもウエイトも形もニュアンスも全部吹っ飛びますし。
 ポリゴン10万超えの販売アバターともなると、顔だけ(もちろん髪を抜いた状態)で2万なんぞ軽々と超えている場合があり、素人にはとてもQuest対応などできない状況になりそうです。多分プロでもやりたくないと思います。
 これはやっぱり……最初からQuest対応しているアバターを買うのが正解だな!!

Quest対応を名乗る販売アバターならせめてpoor以下を目指したい

 再度書きますが、今後上記のような「最初からpoor以下のQuest対応しているアバターを探している」ユーザーの事も含めて考慮していくならば、販売アバターならmedium以下……最低でもpoor以下を目指す事が重要になってくるでしょう(もちろん、そもそもQuest対応を考慮しない場合は別です)
「Android対応してスマホユーザーにもアバターを買ってもらう!」とかいうよりは「買ってくれたPC勢のユーザーがQuest対応をしてくれた時に過不足ない状態にする」という風に考えると良いかもしれません。
 このアバター、Quest対応って書いてあるのにQuest勢やスマホ勢から見えないって言われちゃいました……なんてなったら悲しくないですか? 作った本人は「まあverypoorはデフォじゃ見えないからね」と承知しているかもしれませんが、特にPCVR勢のユーザーは、そもそもアバターの仕様なんて一切見ていないし知らないという方も多数いらっしゃるでしょう。
 ですから何回でも言いますが、verypoorやpoorのアバターをQuest対応として販売する際は、せめて仕様に書いてQuest単機だとShowAvatar必須ですよの注意書きのひとつは必要だと思います。
 たとえ話、win7に対応してるけどwin10ではユーザーが色々環境構築したりしてがんばらなきゃ動かないソフトをwin10対応です! って言って売らないじゃないですか? 確かにがんばったら動くかもしれませんけどがんばらなきゃ動かない事を記載しておかないのは誠意がないというか……
 確かに、Quest対応は難しいです! でもやっぱり、制作者の皆さんは是非、medium(最低限poor)を目指していきましょう!
 ユーザーのみなさんは、制作者が物凄い苦労して作ってるので、ぜひQuest対応アバター買って下さい!!!!!!!!!!!!!!!!!!!


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