半透明パーティクルの重なり順(ソート順)がおかしくなる不具合の解決方法は、実機テストやレンダリングパイプライン拡張において頻発する重度なテクニカルバグです。カメラの角度を変えるたびに、半透明な煙や炎のエフェクトの前後関係がパタパタ入れ替わって見た目が崩れるバグの解決策の解説。
不具合の具体的な症状
シーン内の複数のパーティクル(Shuriken Particle SystemやVFX Graph)が重なり合っている場所で、カメラの角度を少し動かすだけで、後ろにあるべきエフェクトが突然手前に突き抜けて表示されたり、前後関係がパチパチと点滅するように激しく入れ替わってしまう。
現実世界での例え:透明なセル画を重ねる順番を、黒子が裏で毎フレーム迷って入れ替えてしまうパタパタ劇
半透明は「後ろから順番に重ね塗りする」必要がありますが、2枚のセル画(エフェクト)の中心点の距離がほぼ同じなため、カメラが少し動くたびに「どっちが奥か」の判定がパタパタと入れ替わり、順番が逆になって手前が奥に、奥が手前に塗り潰されています。セル画に「お前は常に1枚目に塗れ」と裏面に油性ペンで優先順位(Sorting Fudge)を書いておくことで、迷いを完全に消し去ります。
図:半透明パーティクルの重なり順(ソート順)がおかしくなる不具合の解決方法の不具合発生メカニズムと解決アプローチの概要図
想定される原因と詳細な仕組み
半透明オブジェクト(Transparent)はZバッファによる自動遮蔽が機能しないため、カメラからの「物理的な距離」を元にソートされて遠いものから順番に重ねて描画されますが、オブジェクト同士のピボット(中心点)の距離が非常に近い場合、カメラの僅かな角度変化でソート順(描画順)が逆転してしまうためです。
解決アプローチと最適化手順
パーティクルシステムのRendererモジュールを開き、「Sorting Fudge(ソート調整値)」の数値を手動で調整して前後関係を強制指定します。また、重ね合わせが特に重要なマテリアルは「Render Queue」の数値を個別に直接書き換えて描画の優先順位をガチガチに固定します。