可視面・不可視面の判定方法と隠れ面(不可視面)の消去法について述べる. 7章 隠れ面の消去を行う 可視面・不可視面の判定方法と隠れ面(不可視面)の消去法について述べる.
7.1 ベクトルの内積と外積 省略
7.2 空間における平面の決定(その1) 平面上の点P1(x1,y1,z1)とP1における法線ベクトルから決定する方法 7.2 空間における平面の決定(その1) 平面上の点P1(x1,y1,z1)とP1における法線ベクトルから決定する方法 法線ベクトルをN=(a,b,c),平面上の任意の点Q(x,y,z) x y z P1(x1,y1,z1) Q(x,y,z) N=(a,b,c) 平面の式 の形に書き直すことができる.
7.2 空間における平面の決定(その2) y P3(x3,y3,z3) N P1(x1,y1,z1) x P2(x2,y2,z2) z
7.2 空間における平面の決定(その3) ax+by+cz=1 y 1/b 1/c 1/a x z 単位法線ベクトルnは3次元CGにお 7.2 空間における平面の決定(その3) y ax+by+cz=1 1/b 1/c 1/a x z 単位法線ベクトルnは3次元CGにお いて,陰影づけなどの処理で重要な 役割を果たす.
7.3 隠面消去 単位法線ベクトルnとベクトルvの内積値n・vが ≧0 ならば, 多角形は表の面(見える) 7.3 隠面消去 単位法線 ベクトル:n 単位法線ベクトルnとベクトルvの内積値n・vが ≧0 ならば, 多角形は表の面(見える) <0 ならば, 多角形は裏の面(見えない) となる. 可視の(見える)多角形のみを表示すると, 多角形で構成された凸多面体の隠面消去 された表示を得る. ベクトル:v 視点 単位法線 ベクトル:n 視点(表面が見える) 多面体の表面 視点(表面が見えない)
7.4 Zバッファ法 隠面処理とデプスバッファ 射影を行うとき,射影中心から放射する直線上にあるすべての点は,同じ場所に射影される. y 射影を行うとき,射影中心から放射する直線上にあるすべての点は,同じ場所に射影される. この場合P1はP2に隠されているので,P1は描画する必要はない. 問題は,P1がP2に隠されているのをどのようにして判断するか? 同じ射影の場合,遠い点が近い点に隠される. 遠さが計算できれば問題の判断ができる. x z P1 P2
7.4 Zバッファ法 デプス 錐台のことをビューボリュームという. 6つの面はクリップ面とよばれ,投影変換で 後面 near far 後面 far plane 前面 near plane 投影面 錐台のことをビューボリュームという. 6つの面はクリップ面とよばれ,投影変換で ビューボリューム以外のものが除去される. 透視射影の場合,後面(far plane) と前面(near plane)を定義すれば, 射影方式は一義的に決まる.
7.4 Zバッファ法 デプス 距離を表現するために,デプス(depth)という指標を使う. デプスは頂点の遠さを[-1,1]の範囲で正規化した指標である. デプスを投影点の第3の座標として次のように定義する. 頂点はnear planeにあるときはz=-1,far planeにあるときはz=1になるように, a,bを決める. Nは視点とnear plane間の距離 Fは視点とfar plane間の距離 が射影変換によって新たな3次元空間の点 にマッピングされる.
7.4 Zバッファ法 デプスバッファ 3Dオブジェクトが投影面に投影され,必ず一部の面(線)が重なる.重なる面を意識し,描画しなしないように処理することを隠面(線)処理という. 隠面処理はCGの現実感の大いに関係する.また,CGの処理高率にも大きく影響する. このアルゴリズムにはいくつかあるが,デプスバッファまたはz-bufferという方法を使う. フレームバッファはピクセルごとに輝度または色を記憶している.デプスバッファはピクセルごとにデプス値を記憶している.
7.4 Zバッファ法 手順 初期化時にデプスバッファの値はすべて1で初期化される(一番遠くに設定する). ピクセルに新たに投影されるとき,フレームバッファのそのピクセルにある輝度または色を更新するかどうかテストを行う.(デプステストという.) デプス値が現在値より小さければ(視点に近ければ),そのバッファ(フレームバッファとデプスバッファ)の値を更新する. 処理が終わるときに,デプスバッファの値は一番近い点のデプス値が保存される. その結果,隠面が除去され,見える部分だけが描画される.
7.5 スキャンライン法 x y z 面1 面2 スキャンライン面 面1を 表示 面2を 表示 スキャンライン z x スクリーン平面