8 , 隠面消去法( hidden surface algorithms)
DESCRIPTION
8 , 隠面消去法( Hidden Surface Algorithms). インタラクティブCG05S 蔡 東生. 参考文献. CG テキスト 4−2 Angel 5.6,9.10.3 Foley, et al, Chapter 15. はじめに. さきの講義で、z項を落とすことによってどのようにして相対的なサイズを正しく形状変換するか学んだ。 しかし、実際にどの形状をピクセルとして描くか? これは、 隠面消去問題とか、 visible surface determination 問題 と呼ばれている 現在まで数多くの隠面消去アルゴリズムが提案されている - PowerPoint PPT PresentationTRANSCRIPT
1
8 , 隠面消去法( Hidden Surface Algorithm
s)
インタラクティブCG05S
蔡 東生
2
参考文献
• CG テキスト 4 2−• Angel 5.6,9.10.3
• Foley, et al, Chapter 15
3
はじめに• さきの講義で、z項を落とすこと
によってどのようにして相対的なサイズを正しく形状変換するか学んだ。
• しかし、実際にどの形状をピクセルとして描くか?
• これは、隠面消去問題とか、 visible surface determination 問題と呼ばれている
• 現在まで数多くの隠面消去アルゴリズムが提案されている
• これらは3つの方法に特徴化される– Object-precision vs. image-precisi
on (object-space vs. image-space)– -Object order vs. image order– Sort first vs. sort last
4
Object-precision Algorithm
• 基本的考え:– 幾何学的プリミティブそのものを操作 ( 我々は”オ
ブジェクト”と”プリミティブ”を交互に使う)– オブジェクトはお互いに交差する– テストは非常に高い精度で行われる– Visible Obj. の最終リストはどのような解像度でも
描かれる
• 複雑性– どのような Obj でも O(n2) オーダの可視判断計算を
行う– mxm のディスプレイで、mの2乗の色を埋めない
と行けない– 全ての複雑性は、
• 実装– 困難– 問題も多い
5
Sort First vs. sort last
• Sort First:– カメラに対するある相対的深さ
ベースの Obj の順番を決め、表面に書き込む
– 順番を決めるデータ構造をきめて、計算が重複しないようにする
• Sort Last:– それぞれのピクセルから観測され
る深さ( Depth) をきめその最も近い Depth に対応する色を描く
– 全ての Depth を考慮に入れられる。”怠けながら” Depth 関係をトラックできる
6
Image-Precision Algorithm
• 基本的考え– それぞれのピクセルから最も近い点を
見つける– 解像度で計算が決まる– 高精度計算が要求されない
• 複雑性– 全てのピクセルで n Obj 全部チェッ
クすれば計算量は – よりよい方法は、それぞれのピクセル
から見える Obj だけチェックする。例えば、見える Obj は平均でdコ(これは Depth Complexity として知られている)。そうすると、
• 実装• とっても簡単• 実世界で多く使われている
7
Object order vs image order
• Obj order– それぞれ Obj は一度だけ考慮し、
そのピクセルを描く、次の Obj を描く
– 一つのピクセルを何度も描くことになるかもしれない
• Image order– 各ピクセルは一度だけ考慮する、
次に、そのピクセルに一番近い Objをさがす。次のピクセルにうつる
– Obj の関係を何度も計算し直すことになる
8
3つの隠面処理アルゴリズム
• Z-buffer
• Ray casting
• Binary space partitioning (BSP) ツリー
9
Z-buffer• Z-buffer あるいは depth-buffer ア
ルゴリズム [Catmull, 1974] はもっともシンプルで広く使われている
• Q:FAR はなににセットされるべきか?
10
ラスター化( Rasterization)
• ポリゴンの中のピクセルを埋めていく作業をラスター化( rasterization )と呼んでいる。
• ラスタ化注:z値とシェード値sは逐次計算できる(高速である!)
• おもにハードウエア化されている
11
Z-buffer• 分類?• 実装簡単?• ハードウエア実装簡単?• 逐次追加描画計算(コヒーレンス)?• オンライン(全てのオブジェクトを最
初から必要としない)?• もし、 Obj が動いたら、普通のフレー
ム描写より時間がかかる?• 視線が動いたら、普通のフレーム描写
より時間がかかる?• ポリゴンベース?• 効果的シェーディング(隠面の色は計
算しない)• 透明性を扱える?• 反射を扱える?
12
Ray casting
• アイデア: Pij を中心とするピクセルを考える– 視点 (COP) 、Cから Pij を通して
シーンに例を送る– 各 Obj との交差点を計算– 最も近い交差点を選択
13
Ray casting, cont.
• 実装:– それぞれのレイをパラメータ化
– それぞれの Obj Ok はレイとの最初の交差点 を示す を返す
• Q : を与えられたときどの点を描く面としてきめるか?
• 注意:これらの計算は World Coordinate( 世界座標系)で行う。投影変換行列は使わない
14
Ray Casting: 解析• 分類?• 実装簡単?• ハードウエア実装簡単?• 逐次追加描画計算(コヒーレンス)?• オンライン(全てのオブジェクトを最
初から必要としない)?• もし、 Obj が動いたら、普通のフレー
ム描写より時間がかかる?• 視線が動いたら、普通のフレーム描写
より時間がかかる?• ポリゴンベース?• 効果的シェーディング(隠面の色は計
算しない)• 透明性を扱える?• 反射を扱える?
15
BSP
• アイデア:– どの視点からでも速く表示できる余
分な preprocessing (事前処理)を行っておく
• 重点:ポリゴン A はもし:– A の遠いサイドのポリゴンが最初に
描かれる– つぎに A が描かれる– A の前のポリゴンが次に描かれる
なら、ポリゴン A は描かれる
16
BSPツリー生成
17
BSP ツリー続き
• 注:少ないポリゴンを分割すれば性能は改善される
• 注: world coordinate で計算。Projective 行列は使わない
18
BSP ツリーの表示
19
BSPツリー : 解析• 分類?• 実装簡単?• ハードウエア実装簡単?• 逐次追加描画計算(コヒーレンス)?• オンライン(全てのオブジェクトを最
初から必要としない)?• もし、 Obj が動いたら、普通のフレー
ム描写より時間がかかる?• 視線が動いたら、普通のフレーム描写
より時間がかかる?• ポリゴンベース?• 効果的シェーディング(隠面の色は計
算しない)• 透明性を扱える?• 反射を扱える?
20
Z-buffer のコスト
• Z-buffer はハードウエアレンダリングにむいている
• Z-buffer アルゴリズムで含まれる手順– 三角をグラフィックスハードに送る– 三角形の各辺をモデル行列で変換– それぞれの辺をシェードする– 投影変換行列を用いてい変換する– 逐次ラスタ化計算のセットアップを
行う– ラスタ化し、 z-buffer に従いフレー
ムバッファーを更新する• Q:Z-buffer の全てのコストはいく
らか?
21
Z-buffer コスト続き
• 以下のようにコストを見積もる
22
Z-buffer の可視トリック
• コスト関数が与えられたとして
なにが z-buffer を加速させるか?
23
まとめ
• この章で何を学んだか?–太文字の用語– 隠面消去アルゴリズムの分類– Z-buffer, ray casting, BSP tree
法の理解– Z-buffer における高速化