Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Accelerate your Ray Tracer

A7a5efde86e0137d32a93d8609b7a022?s=47 yumcyawiz
September 07, 2018

Accelerate your Ray Tracer

A7a5efde86e0137d32a93d8609b7a022?s=128

yumcyawiz

September 07, 2018
Tweet

Transcript

  1. ACCELERATE YOUR RAY TRACER 効率の良い衝突計算の方法

  2. 衝突計算の効率化 • 現在の実装は全ての物体と衝突するかを一つ一つ調べている(線形探索)

  3. 線形探索 このような場合でも物体一つ一つと衝突計算が行われる

  4. 衝突計算の効率化 • 現在の実装は全ての物体と衝突するかを一つ一つ調べている(線形探索) 圧倒的に無駄が多い

  5. 衝突計算の効率化 • 現在の実装は全ての物体と衝突するかを一つ一つ調べている(線形探索) 大量のポリゴンに対応することができない

  6. 効率化手法 • Bounding Volume Hierarchy(BVH) • Kd-Tree

  7. BVH • 物体をBounding Volumeと呼ばれる枠で囲む • 衝突計算を行うときは、まず枠と衝突するか試す

  8. BVH 枠と衝突しないので中の物体は見ない

  9. BVH • 物体をBounding Volumeと呼ばれる枠で囲む • 衝突計算を行うときは、まず枠と衝突するか試す • さらにBounding VolumeをBounding Volumeで囲んで木構造にする

  10. BVH まず全体の枠と衝突計算をする

  11. BVH 中の枠と衝突計算をする

  12. BVH 最終的に枠の中で線形探索して衝突物体を得る

  13. BVHの木構造

  14. 枠の生成方法 • Axis Aligned Bounding Box(AABB)と呼ばれる長方形を枠として使うことが一 般的 • AABBとは各軸に平行な長方形のこと •

    中の物体の合計の大きさに合わせるようにする
  15. AABB

  16. BVHによる衝突計算の流れ 1. 物体集合からBVHを生成 2. まず全体の枠と衝突計算 3. 当たったら中の要素を衝突計算 4. 当たったらさらに中の要素を衝突計算 …

    5. 最終的な衝突物体を得る 再帰的な処理
  17. BVHの生成方法 • 中央分割法(Median Split) • 等数分割法(Equal Size Split) • Surface

    Area Heuristics(SAH) いずれも全体の枠の長さが最大となる軸を分割軸として選ぶ
  18. Median Split 中央値の位置で分割する

  19. 左右で物体の数が等しくなるところで分割する Equal Size Split

  20. SAHのコストが最も低くなるところで分割する SAH 50 10 40 30 45

  21. SAHコストの計算方法 = + + : 木の走査のコスト : 親の枠の表面積 , :

    子の枠の表面積 , : 子の枠に入っている物体数 :物体との衝突計算のコスト このコストが最小となる分割位置を選ぶ
  22. 比較 Equal Size Median SAH SAHが最も優れたBVHを生成できる