Zオーダー (英 : Z-order )あるいはZインデックス (英 : Z-index )とは、3次元コンピュータグラフィックス において、視点からの距離(深度もしくはZ値)を順序(オーダー)すなわち整数で表現するものである。通例、視点からの距離をもとに複数のオブジェクトの順序を並べ替えること(Zソート )により、物体ごとのZオーダーが決定される。Zバッファ 法と組み合わせて、視点から近い順に描画することで物体の描画処理を省略し高速化したり、あるいは視点から遠い順に描画することで半透明の物体の重なりを正確に表現したりするために使われることもある。2次元コンピュータグラフィックス において、オブジェクトの重なりを表現する場合にもZオーダーが使われる[ 1] [ 2] [ 3] 。
概要
Zバッファ 法では描画される画面のピクセルごとに、オブジェクトの深度情報を比較して優先順位を付けるのに対し、Zオーダー法では描画する対象である3D空間におけるオブジェクトごとに、オブジェクトの深度情報を比較して優先順位を付け、オブジェクトが重なり合った場合には最も優先順位の高いオブジェクトがピクセルとして描画される。オブジェクト内の任意の一点(ポリゴンの重心 あるいはオブジェクトの境界ボックスや境界球の中心など)の深度をもって、オブジェクト全体の深度とみなし、その比較によって描画の優先順位の順序付けを行う。
基本的には、2D平面に配置された2次元のオブジェクト同士の前後判定に使われる。例えば、GUI のウィンドウシステム ではウィンドウマネージャ によって、ウィンドウ同士の前後判定がZオーダー法で行われており、それによって画面に描画する順番を決めている。
Zバッファ法よりも必要リソースが少なくて済むので、3D空間における3Dオブジェクト同士の前後判定でも使われることがあるが、複雑な形のオブジェクト同士の前後判定、あるいはオブジェクトの食い合いなどがまともに描けず、後ろにあるオブジェクトが前に描画されることがあるため、普通はZバッファ法が使われる。しかし、Zバッファ法だけでは半透明のオブジェクトが重なる場合に対処できないため、視点からの距離をもとにあらかじめおおまかにZソートしておいてから、不透明物体のみを視点から近い順に描画した後、半透明物体のみを視点から遠い順に描画する混合手法が採用されることがある[ 4] 。
Zオーダー法では、互いに重なり合ったオブジェクトを正確に描画することが難しい
2Dのオブジェクト同士の前後判定でも、Zオーダー法では互いに重なり合ったオブジェクトを正確に描画することができないため、オブジェクトを分割してそれぞれにインデックスを割り振ってレンダリングするなどの手法を取る必要がある。通例、2DグラフィックスAPI でZバッファを直接サポートすることはまれだが、Microsoft Windows 8 以降に実装されているDirect2D 1.1では、エフェクト機能によりDirect3D を経由してZバッファを間接的に利用することで、複雑に重なり合った三角形を正しくレンダリングすることができる[ 5] 。
3Dベースのゲームでもカードゲーム ではZオーダー法が使われることがある。
脚注
関連項目
レンダリング手法
ライティング/ シャドウイング シェーディング
サンプリング及び アンチエイリアス レンダリングAPI
レンダリング ソフトウェア