Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
曲面レイトレ入門
2013/08/24
Toru Matsuoka
曲面をレンダリング
●
曲面
– Bezier, B-Spline, NURBS
●
曲面をレンダリング
– Reyes
●
ピクセル精度で分割
– テッセレーション
●
事前にテッセレーションレベルを指定
問題点
●
問題点
– Reyes
●
レイトレーシングでないので鏡面反射などが表現でき
ない
– テッセレーション
●
事前にテッセレーションレベルを指定する。
●
適切なレベルは絵を見ないとわからない。
レイトレで曲面をレンダリ
ング
●
テッセレーションなし
– 調整が必要ない
●
レイトレーシング
– 鏡面反射や GI が可能
曲面
●
曲面:
– ”テンソル積曲面:曲線と曲線の“積 として構成さ
れるもの
曲線
●
パラメトリック曲線
– パラメータによって定義
●
表現方法
– Bezier
– B-Spline
– NURBS
曲線の互換性
●
パラメトリック曲線は次数(階数)が同じな
ら変換可能
●
表現能力
– Bezier < B-Spline < NURBS
曲面レイトレの手法
●
直接曲面と光線の接触位置を求めるのはむず
かしい
– 高次の方程式を解く必要がある
●
数値的な手法
– 2分法
– Bezier Clipping 法
曲面レイトレの計算方法
●
Bezier に変換
– B-Spline, NURBS などの曲線は Bezier に変換す
る
●
Bezier Clipping 法
– 速く収束
Bezier 曲線
●
凸包性
– CP (コントロールポイント)の凸包はその曲
線を内側に含む
→CP の AABB に曲線は必ず含まれる。
Bezier Clipping
●
Bezier Clipping[Nishita et al. 1990]
●
線分とベジェ曲線の交差を高速に求める方法
Bezier Clipping
●
CP ( Control Points )から凸包を作る
●
凸包の辺と直線の交差位置の最小値最大値を
求める
●
最小値最大値の範囲が大きければ曲線を半分
に分割する。小さければその範囲で曲線を切
り取る。...
Bezier Clipping
光線 vsBezier 曲面
1. 光線を Z 軸の座標系に曲面を変形する
2. 曲面に2次元の回転をして Bezier Clipping
しやすくする
3.U 方向、 V 方向それぞれ交互に Bezier
Clipping 法を繰り返す
4....
光線を Z 軸に
●
光線を Z 軸にする座標系を定義する。
T = -Ray.org
R = [dot(Upper,Ray.dir),Upper,Ray.dir]^t
M = R*T
●
曲面のすべての CP を座標系に変換
– Bezier...
Bezier Clipping しやすくする
●
2次元の回転を加える
光線と Bilinear 曲面を交差
●
Bezier 曲面の4すみの CP から Bilinear 曲面
を作り、これと光線との交差テストを行う。
●
BiLinear 曲面は解析的に解くことができる。
結果
カーブのレイトレース
●
カーブのレイトレース
– Ribbon 状にレンダリング
●
非常に幅の狭い曲面だと過程する。
カーブのレイトレース
●
結果
100000 hair
応用
●
サブディビジョンサーフェス
– Catmull-Clerk
●
4*4 の接続された面に注目すると B-Spline パッチと同
様となる。
●
B-Spline パッチの取り出しは Opensudiv を用いれば
可能(たぶん!)
...
まとめ
●
レイトレで Bezier 曲面をほぼ直接レンダリン
グすることは可能
●
Bezier 以外の曲面も事前に Bezier に変換す
ることでレイトレ可能
Upcoming SlideShare
Loading in …5
×

曲面レイトレ入門

3,599 views

Published on

  • Be the first to comment

曲面レイトレ入門

  1. 1. 曲面レイトレ入門 2013/08/24 Toru Matsuoka
  2. 2. 曲面をレンダリング ● 曲面 – Bezier, B-Spline, NURBS ● 曲面をレンダリング – Reyes ● ピクセル精度で分割 – テッセレーション ● 事前にテッセレーションレベルを指定
  3. 3. 問題点 ● 問題点 – Reyes ● レイトレーシングでないので鏡面反射などが表現でき ない – テッセレーション ● 事前にテッセレーションレベルを指定する。 ● 適切なレベルは絵を見ないとわからない。
  4. 4. レイトレで曲面をレンダリ ング ● テッセレーションなし – 調整が必要ない ● レイトレーシング – 鏡面反射や GI が可能
  5. 5. 曲面 ● 曲面: – ”テンソル積曲面:曲線と曲線の“積 として構成さ れるもの
  6. 6. 曲線 ● パラメトリック曲線 – パラメータによって定義 ● 表現方法 – Bezier – B-Spline – NURBS
  7. 7. 曲線の互換性 ● パラメトリック曲線は次数(階数)が同じな ら変換可能 ● 表現能力 – Bezier < B-Spline < NURBS
  8. 8. 曲面レイトレの手法 ● 直接曲面と光線の接触位置を求めるのはむず かしい – 高次の方程式を解く必要がある ● 数値的な手法 – 2分法 – Bezier Clipping 法
  9. 9. 曲面レイトレの計算方法 ● Bezier に変換 – B-Spline, NURBS などの曲線は Bezier に変換す る ● Bezier Clipping 法 – 速く収束
  10. 10. Bezier 曲線 ● 凸包性 – CP (コントロールポイント)の凸包はその曲 線を内側に含む →CP の AABB に曲線は必ず含まれる。
  11. 11. Bezier Clipping ● Bezier Clipping[Nishita et al. 1990] ● 線分とベジェ曲線の交差を高速に求める方法
  12. 12. Bezier Clipping ● CP ( Control Points )から凸包を作る ● 凸包の辺と直線の交差位置の最小値最大値を 求める ● 最小値最大値の範囲が大きければ曲線を半分 に分割する。小さければその範囲で曲線を切 り取る。 ● 十分に小さくなるまで繰り返す。
  13. 13. Bezier Clipping
  14. 14. 光線 vsBezier 曲面 1. 光線を Z 軸の座標系に曲面を変形する 2. 曲面に2次元の回転をして Bezier Clipping しやすくする 3.U 方向、 V 方向それぞれ交互に Bezier Clipping 法を繰り返す 4. 十分に範囲が小さくなるまで 2, 3 を繰り返 し、最後に Bilinear 曲面と交差を求める。
  15. 15. 光線を Z 軸に ● 光線を Z 軸にする座標系を定義する。 T = -Ray.org R = [dot(Upper,Ray.dir),Upper,Ray.dir]^t M = R*T ● 曲面のすべての CP を座標系に変換 – Bezier は affine 保存性があるため CP を affine 変 換すればその曲面も affine 変換される
  16. 16. Bezier Clipping しやすくする ● 2次元の回転を加える
  17. 17. 光線と Bilinear 曲面を交差 ● Bezier 曲面の4すみの CP から Bilinear 曲面 を作り、これと光線との交差テストを行う。 ● BiLinear 曲面は解析的に解くことができる。
  18. 18. 結果
  19. 19. カーブのレイトレース ● カーブのレイトレース – Ribbon 状にレンダリング ● 非常に幅の狭い曲面だと過程する。
  20. 20. カーブのレイトレース ● 結果 100000 hair
  21. 21. 応用 ● サブディビジョンサーフェス – Catmull-Clerk ● 4*4 の接続された面に注目すると B-Spline パッチと同 様となる。 ● B-Spline パッチの取り出しは Opensudiv を用いれば 可能(たぶん!) ● B-Spline パッチは Bezier パッチに変換可能 ● ゆえに Catmull-Clerk は直接レイトレ可能
  22. 22. まとめ ● レイトレで Bezier 曲面をほぼ直接レンダリン グすることは可能 ● Bezier 以外の曲面も事前に Bezier に変換す ることでレイトレ可能

×