陰面消去について
これまでお話してきたように、物体のモデルはポリゴンの集まりでその形状を表現しており、
線画の透視図になっていました。
この状態では本来裏に隠れるはずの線分まで表示しているため、立体感がはききりとは掴めません。
★ したがって、視点から見て裏側にある部分や、
表面にあっても他の物体あるいは自分自身の裏側になる部分を隠す処理が必要であり、
これが陰面消去処理になります。
この陰面消去およびその次のシェーディングは、
透視変換したスクリーン座標系で行います。
★ この陰面消去方法には、Zバッファ法、スキャンライン法、レイ・トレーシング(光線追跡)法などがあります。
(1)Zバッファ法:
物体を3次元空間で表現するときのZ軸、つまり視点から物体までの距離(Z値)を、
物体を構成する画素ごとに記憶しておきます。
このZバッファは物体表面の色(R、G、B)と視点から物体までの距離(Z値)を格納したテーブルにしておきます。
したがってポリゴンの各点に色づけするときは、i番目のラインYiに注目したとき、
その中の各画素に対応する点のZ値を調べて、
ZバッファのZ値より小さい場合に該当画素に色を塗る、と云った具合の簡単な方法で処理しています。
このようにして、視点から見て遠くにある物体は近くの物体によって塗り替えられていき、
立体感のある絵として見えるようになる訳です。
図はある視点から見たときの物体への色の塗り方を示しており、
視点を変えればZ値も変わり物体への色の塗り方も変わってきます。
この方法では基本的にアンチエイリアッシング処理ができないので他の方法で代用することになります。
また透明物体の表現ができないのも難点の一つとなります。
(2)スキャンライン法:
テレビの走査と同じように、走査線と視点の位置関係を含むスキャンライン平面で処理する方法です。
ある走査線(Y軸)上でXZ軸平面に注目して、視点からその平面上にある各画素を直線で結んだとき、
その直線と各ポリゴンとの交点を調べて視点に近い交点を持つポリゴン上の画素に色を塗ります。
そして、色を塗るべき点が透明ならその次に近いポリゴンを調べる、と云った具合の処理方法です。
(3)レイ・トレーシング法:
これを陰面消去方法とは云えないかもしれませんが、
その昔に3DCGと云えばレイ・トレーシングといった感じで流行ったことを思い出します。
それほどポピュラーな方法ですが、これは視点から物体の各画素へ視線をのばしていき、
最初にぶつかった物体の画素に色を塗る方法です。 通常は物体からの反射光を目で見ているのですが、
ここでは視点から光線を逆に辿っていく方法です。
この方法では陰面消去はなく、ぶつかった点から反射・屈折方向に光線を延長しながら更に別物体にぶつかる点とその画素の色を決めていきます。
この方法は光学的に正確であり、陰影や透明物体の表現、金属物体への映り込みなどリアルに表現できますが、
交点の探索に、すべての物体と視点が交差する式を解いていくことになり、
きわめて膨大な処理になってしまうという問題があります。
★ どの方法にも一長一短はありますが、パソコン上ではZバッファ法がよく使われているようです。
− 2000.1.16. −
|