포스트

[ Graphics ] 전역 조명과 텍스처링

1. 조명 모델


1. 지역 조명(local illumination)

조명 대상인 물체의 표면 재질과 광원의 속성만 이용해 해당 표면의 색상을 결정할 뿐, 같은 공간에 있는 다른 물체는 고려하지 않는다.(퐁 모델)

퐁 모델로 $S_1$, $S_2$, $S_3$ 라이팅 시 $S_2$의 앞에 $S_1$이 존재 하나, 이를 무시하고 빛을 받는다.

2. 전역 조명(global illumination)

1) 광선추적법(ray tracing)

뷰 프러스텀 : 카메라에 수렴하는 투영선(projection line)들의 집합

  • 투영선의 개수는 스크린의 해상도와 같다,
  • 하나의 투영선에 하나의 픽셀이 대응되어 픽셀의 색상을 결정한다.


  • 1차 광선(primary ray) : 투영선 역방향으로 발사하는 광선, 이를 추적하여 해당 투영선에 대응하는 픽셀의 색상을 계산한다.

  • 2차 광선(secondary ray) : 1차 광선이 어떤 물체와 부딪히면 그 교차점에서 각 광원을 향해 발사하는 광선, 그림자 여부를 판단하는 그림자 광선(shadow ray)이라고도 한다.



1차 광선은 $p_1$에서 교차, $p_1$에서 그림자 광선 $s_1$이 광원을 향해 발사되었다.

  • $s_1$이 광원으로 가는 도중 다른 물체와 부딪히면 $p_1$은 광원의 직접적인 영향권 X -> 그림자 영역
  • $s_1$이 광원에 도달 시 $p_1$에 입사하는 빛을 이용해 $p_1$의 직접 조명 색상을 결정(퐁 모델 사용 가능)



  • $r_1$ :반사 광선(reflection ray), 1차 광선 $I_1$이 $p_1$의 노멀 $n_1$을 중심으로 반사
    • $I_1$의 입사각과 $r_1$의 반사각이 같다는 성질에 의해, $r_1$의 방향 계산


  • $t_1$ : 굴절 광선(refraction ray 혹은 transmitted ray), 1차 광선이 반투명한 물체와 부딪힐 때 발생



광선 추적법은 재귀적인(recursive) 알고리즘으로, 광선 트리를 따라 반사/굴절 광선이 어떤 물체에도 부딪히지 않고 장면을 벗어날 때까지 또는 미리 정의된 재귀 단계에 도달할 때까지 확장된다.

광선 트리(ray tree)



3. 환경 매핑

  • 환경 매핑(environment mapping) : 주변 환경을 반사하는 매끄러운 물체를 렌더링하는 기법



  • 환경맵(environment map) : 주변 환경의 영상을 담은 텍스처


주로 쓰이는 환경맵은 큐브맵(cube map)으로, 여섯 개 면 각각을 향해서 수직과 수평 방향으로 모두 90˚의 시야각(field of view)을 설정, 렌더링 시 여섯 개의 정사각형 이미지를 얻을 수 있다.

  • 카메라로부터 p를 향해 광선 $I$를 발사하고 이를 추적.
  • $I$는 p의 표면 노멀 n을 기준으로 반사되어 $R$ 벡터를 결정



※ 환경 맵핑은 전역 조명 모델의 분위기를 만들어주나, 지역 조명 모델의 근본적 한계를 극복하지 못한다. (ex) 자기 자신을 반사하지 못한다)



출처: OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.