Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

CLASSICAL RAY TRACER構造図

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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