8 , 隠面消去法( hidden surface algorithms)

23
1 , 隠隠隠隠隠Hidden Surface Algorith ms) 隠隠隠隠隠隠隠隠CG05S 隠 隠隠

Upload: rinah-foreman

Post on 03-Jan-2016

45 views

Category:

Documents


1 download

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 Presentation

TRANSCRIPT

Page 1: 8 , 隠面消去法( Hidden Surface Algorithms)

1

8 , 隠面消去法( Hidden Surface Algorithm

s)

インタラクティブCG05S

蔡 東生

Page 2: 8 , 隠面消去法( Hidden Surface Algorithms)

2

参考文献

• CG テキスト 4 2−• Angel 5.6,9.10.3

• Foley, et al, Chapter 15

Page 3: 8 , 隠面消去法( Hidden Surface Algorithms)

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

Page 4: 8 , 隠面消去法( Hidden Surface Algorithms)

4

Object-precision Algorithm

• 基本的考え:– 幾何学的プリミティブそのものを操作 ( 我々は”オ

ブジェクト”と”プリミティブ”を交互に使う)– オブジェクトはお互いに交差する– テストは非常に高い精度で行われる– Visible Obj. の最終リストはどのような解像度でも

描かれる

• 複雑性– どのような Obj でも O(n2) オーダの可視判断計算を

行う– mxm のディスプレイで、mの2乗の色を埋めない

と行けない– 全ての複雑性は、

• 実装– 困難– 問題も多い

Page 5: 8 , 隠面消去法( Hidden Surface Algorithms)

5

Sort First vs. sort last

• Sort First:– カメラに対するある相対的深さ

ベースの Obj の順番を決め、表面に書き込む

– 順番を決めるデータ構造をきめて、計算が重複しないようにする

• Sort Last:– それぞれのピクセルから観測され

る深さ( Depth) をきめその最も近い Depth に対応する色を描く

– 全ての Depth を考慮に入れられる。”怠けながら” Depth 関係をトラックできる

Page 6: 8 , 隠面消去法( Hidden Surface Algorithms)

6

Image-Precision Algorithm

• 基本的考え– それぞれのピクセルから最も近い点を

見つける– 解像度で計算が決まる– 高精度計算が要求されない

• 複雑性– 全てのピクセルで n Obj 全部チェッ

クすれば計算量は   – よりよい方法は、それぞれのピクセル

から見える Obj だけチェックする。例えば、見える Obj は平均でdコ(これは Depth Complexity として知られている)。そうすると、    

• 実装• とっても簡単• 実世界で多く使われている

Page 7: 8 , 隠面消去法( Hidden Surface Algorithms)

7

Object order vs image order

• Obj order– それぞれ Obj は一度だけ考慮し、

そのピクセルを描く、次の Obj を描く

– 一つのピクセルを何度も描くことになるかもしれない

• Image order– 各ピクセルは一度だけ考慮する、

次に、そのピクセルに一番近い Objをさがす。次のピクセルにうつる

– Obj の関係を何度も計算し直すことになる

Page 8: 8 , 隠面消去法( Hidden Surface Algorithms)

8

3つの隠面処理アルゴリズム

• Z-buffer

• Ray casting

• Binary space partitioning (BSP) ツリー

Page 9: 8 , 隠面消去法( Hidden Surface Algorithms)

9

Z-buffer• Z-buffer あるいは depth-buffer ア

ルゴリズム [Catmull, 1974] はもっともシンプルで広く使われている

• Q:FAR はなににセットされるべきか?

Page 10: 8 , 隠面消去法( Hidden Surface Algorithms)

10

ラスター化( Rasterization)

• ポリゴンの中のピクセルを埋めていく作業をラスター化( rasterization )と呼んでいる。

• ラスタ化注:z値とシェード値sは逐次計算できる(高速である!)

• おもにハードウエア化されている

Page 11: 8 , 隠面消去法( Hidden Surface Algorithms)

11

Z-buffer• 分類?• 実装簡単?• ハードウエア実装簡単?• 逐次追加描画計算(コヒーレンス)?• オンライン(全てのオブジェクトを最

初から必要としない)?• もし、 Obj が動いたら、普通のフレー

ム描写より時間がかかる?• 視線が動いたら、普通のフレーム描写

より時間がかかる?• ポリゴンベース?• 効果的シェーディング(隠面の色は計

算しない)• 透明性を扱える?• 反射を扱える?

Page 12: 8 , 隠面消去法( Hidden Surface Algorithms)

12

Ray casting

• アイデア: Pij を中心とするピクセルを考える– 視点 (COP) 、Cから Pij を通して

シーンに例を送る– 各 Obj との交差点を計算– 最も近い交差点を選択

Page 13: 8 , 隠面消去法( Hidden Surface Algorithms)

13

Ray casting, cont.

• 実装:– それぞれのレイをパラメータ化

– それぞれの Obj   Ok はレイとの最初の交差点 を示す    を返す

• Q :  を与えられたときどの点を描く面としてきめるか?

• 注意:これらの計算は World Coordinate( 世界座標系)で行う。投影変換行列は使わない

Page 14: 8 , 隠面消去法( Hidden Surface Algorithms)

14

Ray Casting: 解析• 分類?• 実装簡単?• ハードウエア実装簡単?• 逐次追加描画計算(コヒーレンス)?• オンライン(全てのオブジェクトを最

初から必要としない)?• もし、 Obj が動いたら、普通のフレー

ム描写より時間がかかる?• 視線が動いたら、普通のフレーム描写

より時間がかかる?• ポリゴンベース?• 効果的シェーディング(隠面の色は計

算しない)• 透明性を扱える?• 反射を扱える?

Page 15: 8 , 隠面消去法( Hidden Surface Algorithms)

15

BSP

• アイデア:– どの視点からでも速く表示できる余

分な preprocessing (事前処理)を行っておく

• 重点:ポリゴン A はもし:– A の遠いサイドのポリゴンが最初に

描かれる– つぎに A が描かれる– A の前のポリゴンが次に描かれる

なら、ポリゴン A は描かれる

Page 16: 8 , 隠面消去法( Hidden Surface Algorithms)

16

BSPツリー生成

Page 17: 8 , 隠面消去法( Hidden Surface Algorithms)

17

BSP ツリー続き

• 注:少ないポリゴンを分割すれば性能は改善される

• 注: world coordinate で計算。Projective 行列は使わない

Page 18: 8 , 隠面消去法( Hidden Surface Algorithms)

18

BSP ツリーの表示

Page 19: 8 , 隠面消去法( Hidden Surface Algorithms)

19

BSPツリー : 解析• 分類?• 実装簡単?• ハードウエア実装簡単?• 逐次追加描画計算(コヒーレンス)?• オンライン(全てのオブジェクトを最

初から必要としない)?• もし、 Obj が動いたら、普通のフレー

ム描写より時間がかかる?• 視線が動いたら、普通のフレーム描写

より時間がかかる?• ポリゴンベース?• 効果的シェーディング(隠面の色は計

算しない)• 透明性を扱える?• 反射を扱える?

Page 20: 8 , 隠面消去法( Hidden Surface Algorithms)

20

Z-buffer のコスト

• Z-buffer はハードウエアレンダリングにむいている

• Z-buffer アルゴリズムで含まれる手順– 三角をグラフィックスハードに送る– 三角形の各辺をモデル行列で変換– それぞれの辺をシェードする– 投影変換行列を用いてい変換する– 逐次ラスタ化計算のセットアップを

行う– ラスタ化し、 z-buffer に従いフレー

ムバッファーを更新する• Q:Z-buffer の全てのコストはいく

らか?

Page 21: 8 , 隠面消去法( Hidden Surface Algorithms)

21

Z-buffer コスト続き

• 以下のようにコストを見積もる

Page 22: 8 , 隠面消去法( Hidden Surface Algorithms)

22

Z-buffer の可視トリック

• コスト関数が与えられたとして

なにが z-buffer を加速させるか?

Page 23: 8 , 隠面消去法( Hidden Surface Algorithms)

23

まとめ

• この章で何を学んだか?–太文字の用語– 隠面消去アルゴリズムの分類– Z-buffer, ray casting, BSP tree

法の理解– Z-buffer における高速化