본문 바로가기

Ray Tracing

(2)
[파이썬을 이용한 Ray Tracing 구현] 5. shade와 그림자 생성 마지막으로 shade와 그림자를 생성하는 방법에 대해 작성하겠습니다. 먼저 그림자는 intersect point와 light source 사이에 다른 도형이 있다면 그 픽셀은 빛을 받지 못하므로 그 light source로 얻게되는 밝기를 더해주지 않았습니다. 미리 구현해놓았던 ray trace 함수를 사용하였습니다. 다만 전과 다른 점은 view point 대신 light의 중점을 넣어주었고 ray vector의 방향이 light의 중점에서 intersection point로 나아가는 vector가 되었다는 점입니다. shader는 phong과 lambertian이 각각 다른 방법을 사용하였습니다. 공통적으로 필요한 정보는 intersection point에서의 normal vector입니다. 구에서의..
[파이썬을 이용한 Ray Tracing 구현] 4. ray vector 구하기와 intersect 판정 ray vector는 half line을 사용하여 구현하였습니다. 시작점인 viewpoint를 p라고 하고, view direction을 d라고 하였을 때 ray vector r(t) = p + t*d로 나타낼 수 있습니다. 이 때 구해야 할 값은 t값이 됩니다. t값을 구하기에 앞서 먼저 각 픽셀별로 view direction을 구해주어야 합니다. view direction을 구하기 위해서는 pixel-to-image mapping 방법을 사용해 주었습니다. u = l + (r-l)(i+0.5)/n_x v = b + (t-b)(j+0.5)/n_y 위는 pixel-to-image mapping 방법에 대한 이해를 도와주는 그림입니다. 주어진 직사각형이 image plane이 되고 우리는 그 image p..