検索,
亀田能成,
美濃研,
総合情報メディアセンター
表を向いていて撮像領域に投影されるポリゴンをラスタライズして画素に変換 していっても、実際にどの部分が可視状態か(どの面のどの部分が視点に一番 近いか)を考慮しなくては、正常なコンピュータグラフィックスにならない。 描画する点が他のポリゴンによって隠蔽されていないかどうかを確認する処理 を隠面処理という。これを判定する方法については様々なアルゴリズムが考案 されている。ここではZバッファ法について説明する。
Zバッファ法は隠面処理アルゴリズムの中ではもっとも簡単な部類に属する。 まず、画素毎にnbitのZバッファを用意する。物体や投影パラメータ、ハー ドウェアにもよるが、10bitから32bit程度取られていることが多い。Zバッフ ァには、現在描画されている画素のもとの空間におけるz値が保存される。
本演習では、カメラを原点に設定し、奥行きのz座標は遠いほど負になるよう に座標系をとっていることに注意する。本演習では、z値が小さいほど遠くに ある物体である。
まず、処理の最初には最も小さな値(大きなマイナス値)をz値に代入してお く。あとは、ポリゴンごとにその内部の点を判定するとき、その点のz座標を 調べる。もし現在のz座標より大きければ、その点をその画素値に採用しZバッ ファの値を更新する。Zバッファの比較を高速化するためには透視投影の四角 錐に上底と下底を設け、その間の距離をnbitで表現できるように正規化して 整数比較するのが高速でよい(実数での大小比較より整数での大小比較のほう が計算量がかからない)が、本演習では高速性を重視しないので単純に実数値 比較してよい。
なお、Zバッファの値の比較は、ラスタライズと同時に行えば効率がよい(プ ログラムのループ構造は全く同一でよいから)。
Zバッファ法はポリゴンの処理順序(データの登場順序)を問わない良い 方法であるが、難点はメモリを大量に消費することである。ハードウェア化に 適した手法なので、現在のCGハードウェアのほとんどが本方式を採用してい る。