650 likes | 884 Views
階層的境界ボリュームを用いた 陰関数曲面の高速なレイトレーシング法. 西田研究室 渡辺健人. 発表の流れ. 研究の背景・目的 関連研究 提案法 結果 まとめと今後の課題. 発表の流れ. 研究の背景・目的 関連研究 提案法 結果 まとめと今後の課題. 研究の背景. レイトレーシング 3次元シーン上での視線の経路を追跡することでリアルな画像が生成できる 欠点:計算コストが大きい. [Wald06]. 研究の背景(2). 陰関数曲面 少数のプリミティブでなめらかな曲面を表現できる 直接描画することで正確に曲面を表現可能 ここではメタボールを扱う.
E N D
階層的境界ボリュームを用いた陰関数曲面の高速なレイトレーシング法階層的境界ボリュームを用いた陰関数曲面の高速なレイトレーシング法 西田研究室 渡辺健人
発表の流れ • 研究の背景・目的 • 関連研究 • 提案法 • 結果 • まとめと今後の課題
発表の流れ • 研究の背景・目的 • 関連研究 • 提案法 • 結果 • まとめと今後の課題
研究の背景 • レイトレーシング • 3次元シーン上での視線の経路を追跡することでリアルな画像が生成できる • 欠点:計算コストが大きい [Wald06]
研究の背景(2) • 陰関数曲面 • 少数のプリミティブでなめらかな曲面を表現できる • 直接描画することで正確に曲面を表現可能 • ここではメタボールを扱う [Knoll07]
研究の目的 • 多数のメタボールに対する高速なレイトレーシング方法の開発 • 多数のメタボールに対するレイキャスティングはあるが、レイトレーシングはない • レイトレーシングは計算コストが高いので高速化が必要 屈折1回のみ 3回まで屈折を追跡
発表の流れ • 研究の背景・目的 • 関連研究 • 提案法 • 結果 • まとめと今後の課題
関連研究(1) • レイトレーシング • 再帰的にレイの経路を追跡することで、反射、屈折、影などの現象を扱う手法 [Whitted 1980] • 大規模なシーン向けの高速化 • Bounding Volume Hierarchy(BVH),kd-treeなどの空間データ構造を用いた手法 [Wald 2007] [Whitted80] [Wald07]
関連研究(2) • 陰関数曲面 • 任意の陰関数曲面のレイトレーシング [Knoll et al. 2007] • 長所:任意の陰関数曲面を扱える • 短所: 区間演算法を用いているので計算量が大きい • 多数の動的なメタボールのレイキャスティング をGPUで高速化 [Kanamori et al. 2008] • 長所:大量の動的なメタボールをリアルタイムで描画可能 • 短所:反射、屈折などは1回までしか扱えない [Knoll07] [Kanamori08]
メタボールとは • 空間上に配置された密度を持った球 • 各球の密度を足してできる密度場の等値面によって表現される陰関数曲面
メタボールとの交差判定 • [Nishita et al. 1994]の方法による • メタボールの曲面は球内にのみ存在する • 球との交差判定行い、球内でのみ曲面との交差判定(BezierClipping)を行う • さらに、曲面との正しい交点を効率よく求めるために球内でも交差判定を行う範囲を分ける
発表の流れ • 研究の背景・目的 • 関連研究 • 提案法 • 結果 • まとめと今後の課題
提案法 • メタボールの交差判定でのボトルネックは区間を求めるための球との交差判定部分 • 球との交差判定の高速化に2分木の空間データ構造であるBVHを用いる • 区間の求め方を2種類検討した • 1区間ずつを高速に求める • 1度に複数区間求めることで高速化
レイと球との交差判定 • レイと球との交差判定 • 空間データ構造なしの場合: レイとすべての球との交差判定を行い、最も近い交点を求める • BVHを用いれば高速化できる • プリミティブ(今回は球)の集合をつつむ領域による2分木構造
BVHを用いた球との交差判定 A B C D E F G Stack
BVHを用いた球との交差判定 A B C D E F G Stack
BVHを用いた球との交差判定 A B C D E F G Stack
BVHを用いた球との交差判定 A B C D E F G Stack
BVHを用いた球との交差判定 A B C D E F G Stack D
BVHを用いた球との交差判定 A B C D E F G Stack
球との交差判定(2回目) A B C D E F G Stack
球との交差判定(2回目) A B C D E F G Stack
球との交差判定(2回目) A B C D E F G Stack
球との交差判定(2回目) A B C D E F G Stack
曲面との交差判定 A B C D E F G 求まった交点間で曲面との交差判定を行う 交点が求まらなければ、球との交差判定をもう一度行う Stack
方法1 • 同じレイでBVHを複数回たどると余分な交差判定を繰り返すことになる • 2回目以降は交差判定が必要なノードから判定を開始 • 経路は基本的に同じなので、最初に球と交差したノードとスタック
BVHを用いた球との交差判定 A B C D E F G Stack
BVHを用いた球との交差判定 A B C D E F G Stack
BVHを用いた球との交差判定 A B C D E F G Stack
BVHを用いた球との交差判定 A B C D E F G Stack D
BVHを用いた球との交差判定 A B C D E F G Stack
球との交差判定(2回目) A B C D E F G Stack
球との交差判定(2回目) A B C D E F G Stack
球との交差判定(2回目) A B C D E F G Stack
球との交差判定(2回目) A B C D E F G Stack
球との交差判定(2回目) A B C D E F G Stack
方法2 • 複数の区間を1度に求める • 最も単純な方法 • 全交点を求め、ソートすれば全区間が求まる • BVHを用いれば、レイに近い順の交点を部分的に求められる • 交点を順次ソートしながらたどる • スタックに積む際にノードをソートしながら積む
BVHを用いた球との交差判定 A B C D E F G Stack
BVHを用いた球との交差判定 A B C D E F G Stack
BVHを用いた球との交差判定 A B C D E F G Stack B
BVHを用いた球との交差判定 A B C D E F G Stack B