Zオーダー

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オーダー法が使われることがある。

脚注

[脚注の使い方]
  1. ^ Window Management - Windows applications | Microsoft Docs
  2. ^ ウィンドウの管理 - MSDN, Internet Archive
  3. ^ Z インデックス順序付け - MSDN
  4. ^ Z ソート描画法
  5. ^ DirectX の構成要素 - Direct2D 効果を使用して Z の限界を突破する MSDNマガジン

関連項目

3Dレンダリング
レンダリング手法
レイトレーシング
  • レイトレーシング
  • パストレーシング(英語版)
  • 不偏レンダリング
  • ボリュームレイキャスティング(英語版)
  • ボリューメトリックパストレーシング(英語版)
  • フォトンマッピング
  • スペクトルレンダリング(英語版)
  • ビームトレーシング(英語版)
  • コーントレーシング(英語版)
  • 分散レイトレーシング(英語版)
  • メトロポリス光輸送法(英語版)
  • Bezier clipping
ラスタライズ
その他
ライティング/
シャドウイング
  • ピクセル単位ライティング(英語版)
  • イメージベースドライティング
  • 球面調和ライティング(英語版)
  • シャドウマッピング(英語版)
  • シャドウボリューム(英語版)
  • ボリュームライティング(英語版)
  • セルフシャドウ(英語版)
シェーディング
サンプリング及び
アンチエイリアス
  • マルチサンプルアンチエイリアシング(英語版)(MSAA)
  • スーパーサンプリング
  • 超一様分布列(英語版)(LDS)
  • 時間的アンチエイリアシング(英語版)(TAA)
  • 高速近似アンチエイリアシング(英語版)(FXAA)
レンダリングAPI
ハイブリッド
  • Vulkan
  • Direct3D
    • DirectX Raytracing(英語版)
  • Metal
ラスタライズ
レイトレース
  • OpenRL(英語版)
  • OptiX(英語版)
レンダリング
ソフトウェア
  • 表示
  • 編集