Advertisement

曲面レイトレ入門

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