본문 바로가기

컴퓨터 그래픽스

[파이썬을 이용한 Ray Tracing 구현] 1. Ray Tracing이란?

파이썬을 이용한 ray tracing 알고리즘과 구현에 대한 포스팅을 작성해보고자 합니다. 알고리즘에 대한 기본설명부터 파이참 설치, 코드 구현까지 단계적으로 작성할 계획입니다.

 

wire-box

먼저 제가 구현한 ray tracing 코드로 만들어 본 sphere와 box로 이루어진 도형입니다. 구현에 사용된 코드는 추후에 github에 올리겠습니다.

 

ray tracing algorithm, 광선 추적법은 광선이 물체의 표면에 반사되어, 다시 돌아오는 경로를 계산하여 나타나는 색깔을 픽셀별로 image plane에 나타내어 주는 알고리즘입니다. 

 

이미지 출처 위키피디아 Ray tracing (graphics)

위와 같은 그림을 통해 쉽게 이해할 수 있습니다. camera에서 image plane으로 픽셀별로 view ray를 만들어주고, object와 light source를 이용해 그 픽셀의 색깔을 정하는 과정이 이루어집니다. 느린 속도로 인해 게임처럼 빠른 렌더링이 필요한 프로그램보다는 영화와 같은 프로그램에 이용됩니다.

 

Shading 기법은 Phong shaing algorithm과 Lambertian shading algorithm을 사용하였습니다.

 

Phong shading, 퐁 쉐이딩 기법은 매끄러운 표면의 음영을 근사하는 기법으로 픽셀 당 계산 시간을 효율적으로 사용하기 때문에 널리 사용됩니다. 

Lambertian shading, 램버시안 모델은 램버시안 반사율을 사용한 모델입니다. 램버시안 반사율을 갖는 표면인 Lambertian surface는 각도에 구분없이 동일한 광량을 관찰자에게 보여줍니다.

공식에 대한 설명은 구현 단계에서 설명하겠지만, 공식의 원리에 대해서는 다음과 같은 글들을 참고하시면 되겠습니다.

 

https://en.wikipedia.org/wiki/Blinn%E2%80%93Phong_reflection_model

 

Blinn–Phong reflection model - Wikipedia

The Blinn–Phong reflection model, also called the modified Phong reflection model, is a modification developed by Jim Blinn to the Phong reflection model.[1] Blinn–Phong is the default shading model used in OpenGL and Direct3D's fixed-function pipeline (be

en.wikipedia.org

https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-shading/diffuse-lambertian-shading

 

Introduction to Shading (Diffuse and Lambertian Shading)

Introduction to ShadingDiffuse or Lambertian Shading Figure 1: a light beam illuminating a small surface \(dA\). Diffuse objects are easy to simulate in CG. Though in order to understand how it works, you first need to learn something about the way light i

www.scratchapixel.com

다음 포스팅은 파이참 설치 방법과 필요한 기본 설정에 대해 작성하겠습니다.