最近にカメラの描画順でハマッったことがあり、Unity Answersに助けてもらったのでメモとして残してみることにした:
---------
http://answers.unity3d.com/questions/302803/orthographic-camera-rendering-order-not-always-wor.html
Aug 16, 2012 at 12:01 PM
質問
Unityで画面上のゲームオブジェクトのレンダリング順序を毎フレーム設定している。そして z ソートの順序を決めるようにしている。オブジェクトはただの4頂点の平面だ。ときどき z ソートが暴れて順序がおかしくなる様子なのだが原因が分からない。カメラは Orthographic にしていて、もとは iPhoneゲームから移行したもので、次に書かれるオブジェクトの z デプスを格納するグローバル変数を増加させて対応しているのだけれども何が原因か分かる?
回答
1. はじめに、カメラのSortModeを確認する:Camera.transparencySortMode
var transparencySortMode : TransparencySortMode
説明
透明オブジェクトでのソート モード
デフォルトでは Perspective カメラはオブジェクトをカメラ位置からの距離にもとづいてオブジェクトをソートする。そして Orthographic カメラは ビュー方向の距離にもとづいてソートする。
2D ゲームで Perspective カメラを使用している場合は TransparencySortMode を使用したほうが良い場合があり、オブジェクトがカメラのビューに沿った距離の順でソートした方が良い場合がある。2.次に、シェーダを確認する。
- シェーダでもレンダリング キュー値があり、z 値よりも優先されるので注意だ。低い値のキュー値の方が先にレンダリングされる。
3.最後に、ピボットの順序を確認する。
- 透明オブジェクトについてはピボットを用いてソートされる。この場合は頂点ではなくピボットが正しい順序でソートされているか確認する。
----------
Unity の知恵を貯めこんでいこうぜ!
0 件のコメント:
コメントを投稿