こんにちは、もなよ(@monayoVR)です。

VRChatでフォーカスを使って写真撮影をしているとき、
アバターの髪や服がぼける、ピントが合わない
といった現象に悩まされたことはありませんか?
背景だけぼかしたいのに、アバターがぼけてしまうと綺麗な写真を撮ることができないので困りますよね。
この問題の主な原因は、マテリアルのRender Queue(レンダーキュー)設定です。※
本記事では、VRChatでアバターの髪や服がぼける主な理由を整理しつつ、
Render Queue(レンダーキュー)の仕組み、具体的な設定方法を分かりやすく解説します。
※正確にはRender Queue、ZWriteの有無、シェーダーの深度処理、VRChat側のフォーカスの仕様といった複数要素の組み合わせ
解決方法:Render Queue(レンダーキュー)設定を2400にする

結論から言うと、解決方法は
髪や服などのマテリアルのRender Queue(レンダーキュー) を「2400」に設定する※ことです。
もなよ2499や2449などで設定する方もいるので環境による差異はあるかと思いますが、私の環境では2400が安定しました。
※アバター構成や他マテリアルとの関係によって最適値は前後します。Render Queueは描画順に影響する繊細な設定のため、常に全てのマテリアルのRender Queueを2400にすれば良いという意味ではありません。本記事ではフォーカスでぼけた髪・服のマテリアルの設定のみに限定しています。
Unityでの設定方法
1.HierarchyまたはScene上から該当のパーツを選択


今回は髪がぼけていたので、髪を選択します。
2.Inspectorのマテリアルの基本設定を開き、Render Queueの数値を変更する


2900になっていたのを、2400に変更しました。
前髪や後ろ髪などのマテリアルが同じパーツは、1度の数値変更で全箇所同じ設定が適用されます。



これで終わり!



グワッ(簡単~)
Render Queue(レンダーキュー)とは?


一般的なRender Queue(レンダーキュー)の数値設定は以下の通りです。
- Background(背景):1000
- Geometry(不透明):2000
- AlphaTest(くり抜き):2450
- Transparent(半透明):3000
- Overlay(オーバーレイ):4000
Render Queue(レンダーキュー)とは、Unityにおいて、
オブジェクトをどの順番で描画するかを数値で制御する仕組みです。
数値が小さいものから順番に描画されるのが基本の処理となります。
例えば髪は多くの場合半透明の描画のマテリアルを使用しているため、3000付近に設定されていることがあります。
Render Queue(レンダーキュー)が同じ数値のオブジェクトが複数ある場合、以下のような描画順になります。
・不透明系(2000〜2500付近)
→ カメラから近いオブジェクトが優先して描画されることが多い
・半透明系(3000付近)
→ カメラから遠いオブジェクトから順に描画されることが多い
※マテリアルの種類やシェーダー設定によっても描画順が変わることがある
なぜRender Queue(レンダーキュー)が原因でぼけるのか
VRChatのフォーカス機能は、
カメラからの距離(深度値)をもとに最も手前にあると判断された位置にピントを合わせる仕組みになっています。
一方で、髪や服などに使われることの多い半透明マテリアルは背後にあるものを透かして表示する必要があるため、
「この位置が最前面である」という距離情報を確定しにくい性質※があります。
それゆえに画面上では髪や服が手前に見えていてもカメラ側ではそれらの深度情報を正しく取得できず、
「最前面にあるオブジェクト」として認識されないことがあります。
この結果、
・見た目上は手前に表示されている
・しかしフォーカスは別の位置に合ってしまう
といったズレが生じ、髪や服などアバターの一部がぼけてしまいます。
※多くの半透明マテリアルは背後を透かして描画する都合上、描画時にカメラとの距離情報を深度バッファ(Zバッファ) へ書き込まない設定(ZWriteが無効)になっていることがあります。
深度バッファ(Zバッファ)は、画面上の各ピクセルについて「カメラからどれくらいの距離にあるか」という深度値を記録しておく仕組みです。
VRChatのフォーカス機能は、この深度バッファに記録された深度値を参照してピント位置を判断するため、深度情報が書き込まれていない半透明マテリアルはフォーカスの判定に含まれなくなります。
また、使用しているシェーダー(lilToon / Poiyomi 等)によって挙動が異なる場合があります。
まとめ


最後まで読んでいただきありがとうございました!
フォーカスでアバターがぼけてしまう、ピントが合わないという方は、ぜひRender Queue(レンダーキュー)の設定を見直してみてください。









