Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ACCELERATE YOUR RAY TRACER 効率の良い衝突計算の方法
Slide 2
Slide 2 text
衝突計算の効率化 • 現在の実装は全ての物体と衝突するかを一つ一つ調べている(線形探索)
Slide 3
Slide 3 text
線形探索 このような場合でも物体一つ一つと衝突計算が行われる
Slide 4
Slide 4 text
衝突計算の効率化 • 現在の実装は全ての物体と衝突するかを一つ一つ調べている(線形探索) 圧倒的に無駄が多い
Slide 5
Slide 5 text
衝突計算の効率化 • 現在の実装は全ての物体と衝突するかを一つ一つ調べている(線形探索) 大量のポリゴンに対応することができない
Slide 6
Slide 6 text
効率化手法 • Bounding Volume Hierarchy(BVH) • Kd-Tree
Slide 7
Slide 7 text
BVH • 物体をBounding Volumeと呼ばれる枠で囲む • 衝突計算を行うときは、まず枠と衝突するか試す
Slide 8
Slide 8 text
BVH 枠と衝突しないので中の物体は見ない
Slide 9
Slide 9 text
BVH • 物体をBounding Volumeと呼ばれる枠で囲む • 衝突計算を行うときは、まず枠と衝突するか試す • さらにBounding VolumeをBounding Volumeで囲んで木構造にする
Slide 10
Slide 10 text
BVH まず全体の枠と衝突計算をする
Slide 11
Slide 11 text
BVH 中の枠と衝突計算をする
Slide 12
Slide 12 text
BVH 最終的に枠の中で線形探索して衝突物体を得る
Slide 13
Slide 13 text
BVHの木構造
Slide 14
Slide 14 text
枠の生成方法 • Axis Aligned Bounding Box(AABB)と呼ばれる長方形を枠として使うことが一 般的 • AABBとは各軸に平行な長方形のこと • 中の物体の合計の大きさに合わせるようにする
Slide 15
Slide 15 text
AABB
Slide 16
Slide 16 text
BVHによる衝突計算の流れ 1. 物体集合からBVHを生成 2. まず全体の枠と衝突計算 3. 当たったら中の要素を衝突計算 4. 当たったらさらに中の要素を衝突計算 … 5. 最終的な衝突物体を得る 再帰的な処理
Slide 17
Slide 17 text
BVHの生成方法 • 中央分割法(Median Split) • 等数分割法(Equal Size Split) • Surface Area Heuristics(SAH) いずれも全体の枠の長さが最大となる軸を分割軸として選ぶ
Slide 18
Slide 18 text
Median Split 中央値の位置で分割する
Slide 19
Slide 19 text
左右で物体の数が等しくなるところで分割する Equal Size Split
Slide 20
Slide 20 text
SAHのコストが最も低くなるところで分割する SAH 50 10 40 30 45
Slide 21
Slide 21 text
SAHコストの計算方法 = + + : 木の走査のコスト : 親の枠の表面積 , : 子の枠の表面積 , : 子の枠に入っている物体数 :物体との衝突計算のコスト このコストが最小となる分割位置を選ぶ
Slide 22
Slide 22 text
比較 Equal Size Median SAH SAHが最も優れたBVHを生成できる