【コラム】ファーシェーダーのRenderQueue設定について

〇アバターのRenderQueueの設定値の考え方(2023/07時点)

 これは店長の個人的な感覚です。参考程度にしてください。(RQなどシェーダーの設定は人によって様々な考え方がありますので…)

・完全に不透明なオブジェクト(通常の体、髪など)

 ⇒何も考えずにデフォルトの2000

・カットアウトを使用しているオブジェクト

 ⇒何も考えずにデフォルトの2450

 ここまでは、Unityの仕様にしたがって設定していれば大きなトラブルはありません。

 しかし、透過マテリアルについては、干渉を起こすことがあるので、しっかり場合分けをして設定するのが良いのではないのかなと個人的には思っています。

 透過マテリアルのRenderQueueは、本来はUnity的に透過とみなされる2501以上に設定されているのが望ましいです。

 ただ、現在は透過マテリアルのRenderQueueがデフォルトで2460に設定されているシェーダーもあるため、それも頭に入れておく必要があるかなと思っています。

 なお、自分が消えずに済むように何も考えずにRenderQueueを小さくすると、今度はほかの人が消えてしまってその人がRenderQueueをさらに小さくして、また自分が消えるようになって…とイタチごっこになるのであきらめも肝心です。。。

半透明のオブジェクトのうち、

①面積が大きいもの(上着やマントなどの他人と重なるおそれがあるもの)

 ⇒ほかの人の透過マテリアル(RQ2460やRQ3000)を消さないようにRenderQueueを3000から少しだけ高い値(3001など)に設定。水などに負けてしまいますが、意図せず他人を脱がしてしまうよりは良いかと思います。

②面積は大きくはないが、最悪消えても大丈夫なもの(アクセサリーや小物など)

 ⇒水やガラスにだけは負けないように、RenderQueueを3000から少しだけ低い値(2999など)に設定。場合によっては更に下げても良いですが、Unity的に透過として処理される2501以上に留めるのが無難かと思います。

③消えてほしくなく、他人を消す可能性が低いもの(透過を含む髪、密着する肌着、表情パーツなど)

 ⇒透過マテリアル(RQ2460やRQ3000)に消されず、かつカットアウト(RQ2450)に悪影響のない2459に設定。他人の透過マテリアル(RQ2460やRQ3000)を消してしまう可能性があるので、事前によく検討してください。

 僕は、上記に従って1とか10刻みで微調整し、それでも改善しない場合は、逆に他人に悪影響を及ぼす可能性も考慮してあきらめることにしています。

 ちなみに、ボディのファーシェーダは③に該当すると考えているので、けだまびよりではRQ2455に設定して使用しています。

 (ただし、毛足が長い場合は②を適用する場合もあります)

 なお、不透明と透明の境目であるRQ2500にはいろいろと悩ましい部分もあり、①透明マテリアルをRQ2500以下で使った場合、スカイボックス(RQ2500)と干渉し空の描画がおかしく(フレア)なる、②逆に透明マテリアルをRQ2501以上で使った場合、VRC内のカメラが正しく深度値を取得できなくなりピントが合わずにボケる、といった問題もあるので難しいところです。

スカイボックス(空)と干渉して描画がおかしくなっている様子。
正しく震度が取得できずピントが合わない灰島ちゃんの図

〇まとめ

以上、店長の主観をまとめると以下のようになります。

・不透明なマテリアルはRQ2000(初期値)

・カットアウトなマテリアルはRQ2450(初期値)

・半透明なマテリアルはRQ2501以上の範囲で形状、環境に応じて調整し、やむを得ない場合のみ2451を下限として少し下げる

※半透明マテリアルのRenderQueueはむやみに下げ過ぎないこと!!!!

 結局のところよく行くワールドのマテリアル設定がどうなっているか、よく遊ぶフレンドのマテリアル設定がどうなっているか、ポートレートを撮るかどうかなどによって適切なRenderQueueの設定値は変わってきます。

 明確な答えがなく、定期的にSNSなどで話題に上がっているのを見かける案件ですが、ファーボディが消えてしまって悲しいケモノの皆さんは、一度挑戦してみてはどうしょうか。

 ちなみに、けだまびよりの店舗で使用している水などのマテリアルはRenderQueueを3010に修正したので、デフォルトのファーシェーダでも(たぶん)消えないので安心してください!

 以上、素人があれこれ書かせていただきましたが、なんとなく参考になれば幸いです。

 (詳しい方はご意見等ありましたらいただけますと幸いです。)

文責: