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

Ray Tracing in 5 minutes

yumcyawiz
September 07, 2017

Ray Tracing in 5 minutes

Slide for OSK 2017 Summer Lightning Talk.

yumcyawiz

September 07, 2017
Tweet

More Decks by yumcyawiz

Other Decks in Programming

Transcript

  1. Ray Tracing in 5 minutes

    View full-size slide

  2. レイトレーシング(Ray Tracing)とは?

    View full-size slide

  3. 超リアル!!!

    View full-size slide

  4. どうやって生成するのか

    View full-size slide

  5. 光が目に届くまで

    View full-size slide

  6. 光が目に届くまで

    View full-size slide

  7. 光が目に届くまで
    反射

    View full-size slide

  8. でも目に届く光はごくわずか

    View full-size slide

  9. 逆から追跡する

    View full-size slide

  10. 逆から追跡する
    レイ(Ray)

    View full-size slide

  11. 逆から追跡する
    レイ(Ray)
    レイ(Ray)

    View full-size slide

  12. 画像にする
    スクリーン

    View full-size slide

  13. 画像にする
    スクリーン

    View full-size slide

  14. 画像にする
    スクリーン

    View full-size slide

  15. 画像にする

    View full-size slide

  16. 必要なもの
    レイと物体の衝突判定

    View full-size slide

  17. レイの数学的表現
    始点
    方向

    View full-size slide

  18. Ԧ

    Ԧ

    レイの数学的表現

    View full-size slide

  19. Ԧ
    Ԧ

    レイの数学的表現

    View full-size slide

  20. Ԧ

    レイの数学的表現
    Ԧ
    + Ԧ

    View full-size slide

  21. 球のベクトル方程式
    Ԧ
    − Ԧ
    2 = 2
    Ԧ

    Ԧ


    View full-size slide

  22. レイが球面上にあるとき
    Ԧ
    = Ԧ
    + Ԧ

    View full-size slide

  23. レイが球面上にあるとき
    Ԧ
    = Ԧ
    + Ԧ

    Ԧ
    + Ԧ
    − Ԧ

    2
    = 2
    Ԧ
    + Ԧ
    − Ԧ
    ⋅ ( Ԧ
    + Ԧ
    − Ԧ
    ) = 2

    最終的にtに関する2次方程式

    View full-size slide

  24. 代数的な計算で衝突点が求まる

    View full-size slide

  25. ポリゴンの場合
    三角形の集合で表される

    View full-size slide

  26. ポリゴンの場合
    すべての三角形と衝突計算を行う

    View full-size slide

  27. 計算が重い!!!

    View full-size slide

  28. 最適化手法
    ・空間分割法
    ・BVH(Bounding Volume Hierarchy)

    View full-size slide

  29. もっと簡単な方法はないのか?

    View full-size slide

  30. レイマーチング

    View full-size slide

  31. レイマーチング

    View full-size slide

  32. レイマーチング

    View full-size slide

  33. レイマーチング

    View full-size slide

  34. レイマーチング

    View full-size slide

  35. レイマーチング
    衝突

    View full-size slide

  36. 計算量が増えるが、複雑な形状を
    簡単に扱える

    View full-size slide

  37. こんなことできます

    View full-size slide

  38. こんなことできます

    View full-size slide

  39. 興味のある方は→

    View full-size slide

  40. Physically Based Rendering

    View full-size slide

  41. 物理的に正しく光の強さを計算する

    View full-size slide

  42. 写真のようにリアルな画像が生成できる

    View full-size slide

  43. 光の強さとは?

    View full-size slide

  44. 光の強さ = 光子の数

    View full-size slide

  45. 放射束Φ
    Φ =


    ある領域を単位時間に通過する光子の数

    View full-size slide

  46. カメラのセンサー
    画素が受け取る光子
    = 放射束×露光時間

    View full-size slide

  47. カメラのセンサー
    画素に入ってくる放射束が分
    かればよい

    View full-size slide

  48. 放射束面密度
    =
    Φ

    ある一点を単位時間に通過する光子の数

    View full-size slide

  49. 放射輝度
    =

    cos
    ある一点にある方向から単位時間に来る
    光子の数


    View full-size slide

  50. カメラのセンサー
    半球に渡って放射輝度を積分して放射束面密
    度を得る
    = න
    Ω
    , cos


    View full-size slide

  51. カメラのセンサー
    一画素の全範囲に渡って放射束面密度を
    積分して放射束を得る
    Φ = න


    Ω
    (, ) cos


    View full-size slide

  52. めっちゃ数値積分する

    View full-size slide

  53. 数値積分
    I = ׬



    View full-size slide

  54. 数値積分 ()
    等間隔で点をサンプリングする

    View full-size slide

  55. 数値積分 ()
    短冊部分を足し合わせる

    View full-size slide

  56. 高次元だとサンプリング
    数が爆発的に増える

    View full-size slide

  57. モンテカルロ積分

    View full-size slide

  58. 確率的にサンプリング点
    を生成する

    View full-size slide

  59. モンテカルロ積分
    ()
    確率密度(
    )でサンプリング点を生成
    1
    2
    3 4
    5
    6

    View full-size slide

  60. モンテカルロ積分
    ()
    一様分布なら
    =

    1
    2
    3 4
    5
    6

    View full-size slide

  61. モンテカルロ積分
    ()
    =

    σ=
    ()
    ()
    で計算できる
    1
    2
    3 4
    5
    6

    View full-size slide

  62. カメラのセンサー
    確率密度

    で画素に点
    をサンプリング
    一画素の面積

    View full-size slide

  63. カメラのセンサー
    確率密度

    で方向をサンプ
    リング

    半球全体

    View full-size slide

  64. カメラのセンサー


    一画素を通過する放射束が計算できる
    =




    =


    (
    )

    =

    ,
    cos

    (
    )

    View full-size slide

  65. カメラのセンサー
    =




    =


    (
    )

    =

    ,
    cos

    (
    )


    サンプリング数を増やすと近似精度が上がる

    View full-size slide

  66. モンテカルロ積分の問題点

    View full-size slide

  67. モンテカルロ積分の問題点
    収束が遅い

    View full-size slide

  68. モンテカルロ積分の問題点
    サンプリング数をとすると に比例

    View full-size slide

  69. モンテカルロ積分の問題点
    サンプリング数を100倍にしても10倍の
    精度向上しか見込めない

    View full-size slide

  70. カメラのセンサー
    =




    =


    (
    )

    =

    ,
    cos

    (
    )


    (
    ,
    )を計算する必要がある

    View full-size slide

  71. 入射放射輝度の計算
    (
    ,
    )

    View full-size slide

  72. 入射放射輝度の計算
    (
    ,
    )
    どれだけの光が反射されるのか?

    View full-size slide

  73. 双方向反射率分布関数(BRDF)

    (,
    ,
    )



    View full-size slide

  74. 双方向反射率分布関数(BRDF)

    (,
    ,
    )



    入射光が出射方向にどれだけ反射されるかを表す

    View full-size slide

  75. 反射される放射輝度
    ,
    = න


    ,
    ,
    (,
    ) cos



    View full-size slide

  76. 反射される放射輝度
    ,
    = න


    ,
    ,
    (,
    ) cos



    が発光している場合も加えると

    View full-size slide

  77. レンダリング方程式(LTE)
    ,
    =
    ,
    + න


    ,
    ,
    (,
    ) cos



    Physically Based Renderingで最も重要な式
    発光 反射光

    View full-size slide

  78. レンダリング方程式(LTE)
    ,
    =
    ,
    + න


    ,
    ,
    (,
    ) cos



    この方程式をモンテカルロ積分でひたすら解く

    View full-size slide

  79. レンダリング方程式を解くことでリアルな画像が得られる

    View full-size slide

  80. この続きを知りたい方は

    View full-size slide

  81. #ρ-rayに入ろう!!!

    View full-size slide

  82. ありがとうございました

    View full-size slide