隠面消去

hidden-surface-removal.png

普通に描くと、前後関係に関係なく、(描く順番的に)後から描いたものに、前描いた物が塗りつぶされる
これをどうにかするには、
「手前のもので隠されて見えないはずのものを、ちゃんと見えないようにする処理」が必要。
これを隠面消去という。
隠面消去の手法には

  • zソート
  • zバッファ

2つの方法がある。

zソート

zソートはそのポリゴンのz値を基準に、z値の大きい順に並び替え、その順番に描画するもの。
これの欠点は、ポリゴンの各頂点のz値が異なる場合、ポリゴン同士が交差するような場合、何を基準にソートしていいのかわからなくなってしまうことである。
交差する線で更に三角形分割するか?それはとても面倒くさい。
zソートは特別な場合では使用されるらしい。

zバッファ

結局画素より細かい絵は描けないのだから、画素ごとに「今描かれた点のz座標はいくつ」というのを全部覚えておいて、後から描きに来た点のz座標がそれよりも大きければ、無視すればいい。
こうすれば三角形単位よりもずっと細かい単位で手前かどうかの判断が出来、手前と奥の問題は完全に解決する。
この画素ごとにz座標を記録する領域zバッファという。
手前か奥か、判定するテストのことをzテストまたはデプステストという。


culling

サポートサイト Wikidot.com culling