지난 글에서 "우리 눈이 사물을 보게 되는 것은, 광원으로부터 나온 빛이 물체의 표면에서 반사해서 우리 눈으로 들어오기 때문"이라고 말씀드렸지요. 컴퓨터그래픽스에서는 카메라가 눈의 역할을 합니다. 광원으로부터 나온 빛이 물체의 표면에서 반사해서 카메라로 들어오는 것을 그리는 것이라고 생각하시면 될 것 같아요. 그런데, 이렇게 빛의 이동을 어떻게 계산할까요? 바로 벡터(vector)를 이용해서입니다.
중학교 시절에 벡터와 스칼라(scalar)에 대해 배우신 것이 기억나시나요? 스칼라는 크기만 나타내고, 벡터는 크기와 "방향"을 나타내는 개념이지요. 그래서 직진하는 빛의 방향을 벡터를 통해서 계산할 수 있는 것입니다.
"3D 컴퓨터그래픽스 #3 - 렌더링"에서 말씀드렸던 3차원 데카르트 좌표계에서 벡터 역시 x, y, z 위치값으로 표현됩니다. 원점에서 시작해서 x축 방향으로 크기가 2인 벡터는 (2, 0, 0) 이런 식이지요. 이렇게 빛의 방향을 벡터로 표현할 때 광선(Ray)라고 부릅니다. 이 Ray가 어떻게 움직이는지 추적(tracing)해서 렌더링하는 기법을 레이 트레이싱(Ray Tracing)이라고 부르죠.
앞에서 광원으로부터 나온 빛이 물체의 표면에 반사해서 카메라로 들어오는 것을 그린다고 했잖아요? 실제로는, 이렇게 광원에서부터 시작해서 카메라까지 추적하는 것은 너무나 비효율적이기 때문에 반대로 계산합니다. 위의 그림처럼 카메라로부터 시작해서 물체의 표면에 반사해서 광원까지 가는 역방향으로 추적하는 것이죠.
다음 글에서는 이 물체의 표면의 색깔은 어떻게 계산하는지에 대해 살펴 보겠습니다.
- 지난 글:
3D 컴퓨터그래픽스 #1 - 그 3D말고 이 3D
3D 컴퓨터그래픽스 #2 - 애니메이션
3D 컴퓨터그래픽스 #3 - 렌더링
3D 컴퓨터그래픽스 #4 - 폴리곤
3D 컴퓨터그래픽스 #5 - 매트릭스
©2018 @gyedo