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

Classical Ray Tracing

Classical Ray Tracing

A7a5efde86e0137d32a93d8609b7a022?s=128

yumcyawiz

June 03, 2018
Tweet

Transcript

  1. RAY TRACING 古典的レイトレーサーからはじめるレイトレーシング

  2. 古典的レイトレーシング(CLASSICAL RAY TRACING) • コンピューターグラフィクス黎明期に流行ったもの

  3. 古典的レイトレーシング(CLASSICAL RAY TRACING) • コンピューターグラフィクス黎明期に流行ったもの • 物理的に正しくはないが、陰影計算ができる

  4. None
  5. CG感半端ないけどちゃんと影ついてる

  6. 古典的レイトレーシング(CLASSICAL RAY TRACING) • コンピューターグラフィクス黎明期に流行ったもの • 物理的に正しくはないが、陰影計算ができる • はじめてのレイトレに最適

  7. 古典的レイトレーシング(CLASSICAL RAY TRACING) • コンピューターグラフィクス黎明期に流行ったもの • 物理的に正しくはないが、陰影計算ができる • はじめてのレイトレに最適 これからみんなに作ってもらいます

  8. CLASSICAL RAY TRACER構造図

  9. VEC3クラス • 3次元ベクトルを表すクラス • 四則演算、内積、外積なども定義されている Ԧ +

  10. RAYクラス • Rayを表す Ԧ Ԧ Ԧ + Ԧ

  11. HITクラス • 衝突情報を格納するクラス • 衝突距離、衝突位置、法線などの情報を持つ Sphere Ray

  12. IMAGEクラス • 画像データを格納し、PPM画像として出力する機能を持つ • 指定した画素に色を書き込む機能を持つ

  13. (, ) 画像の座標系(10*8の場合) (0, 0) (10, 8) 10 8

  14. CAMERAクラス • 画素 , に対応するRayを返す機能を持つ (, ) Ray

  15. ピンホールカメラ ピンホール カメラセンサー

  16. SHAPEクラス • 物体の形を表すクラス • 与えられたRayとの衝突計算を行う Sphere Ray

  17. MATERIALクラス • 物体の材質を表すクラス • Diffuse(マットな面), Mirror(鏡面), Glass(ガラス)の3つを用意する • 受け取ったRayを反射させる機能を持つ Sphere

    Ray
  18. PRIMITIVEクラス • ShapeとMaterialをデータとして持つクラス • シーンの中の物体はすべてPrimitiveで記述される

  19. ACCELクラス • 物体集合を管理するクラス • すべての物体と衝突計算を行う機能を持つ

  20. ray = cam->getRay(i, j) accel->intersect(ray, hit) hitの中身によって画素に色を書き 込む Ray Tracingの流れ