728x90
반응형
16.3 환경 매핑
16.3.1 큐브 매핑
- 다음 그림과 같이 주변 환경을 반사하는 매끄러운 물체를 렌더링하는 기법이 환경 매핑(environment mapping)이다.
- 이를 위해 첫 번째로 해야 할 일은 환경맵(environment map)이라고 불리는 텍스처에 주변 환경의 영상을 담는 것이다.
- 가장 많이 쓰이는 환경맵은 큐브맵(cube map)이다.
- 이 정육면체의 여섯 개 면 각각을 향해서 수직과 수평 방향으로 모두 90˚의 시야각(field of view)을 설정해 사진을 찍거나 렌더링을 수행하면 여섯 개의 정사각형 이미지를 얻을 수 있다.
- 물체 표면의 점 p가 주변 환경을 반사하도록 만들기 위해서, 카메라로부터 p를 향해 광선 $I$를 발사하고 이를 추적한다. $I$는 p의 표면 노멀 n을 기준으로 반사되어 $R$이라는 벡터를 결정한다.
- 이는 전역 조명을 위한 광선 추적법에서 소개된 식과 동일하다. $R$은 큐브맵의 한 면과 교차하는데, 이 교차점을 이용해 해당 면의 이미지 텍스처를 필터링한다.
- 예를 들면, 교차점 주변의 네 개 텍셀을 겹선형보간하는 것이다. 이 결과가 바로 p에서 반사되는 색상을 결정한다.
- 이러한 큐브 매핑은 간략화된 광선 추적법이라 부를 수 있는데, 2차 광선 중 반사 광선만 추적이 되고 재귀적인 과정도 거치지 않기 때문
16.3.2 큐브 매핑을 위한 GL 프로그램과 쉐이더
- 큐브맵도 텍스처의 한 종류이기 때문에, 모든 텍스처 오브젝트 생성에 필요한 glGenTextures와 glBindTexture가 호출된다.
- 큐브맵의 면에 GL은 GL_TEXTURE_CUBE_MAP_* 형식의 기호 상수를 할당한다. 여기서 *는 POSITIVE_X, NEGATIVE_X, POSITIVE_Y, NEGATIVE_Y, POSITIVE_Z, NEGATIVE_Z 중 하나이다.
- 환경 매핑 구현 방법은 매우 간단하지만 그 결과는 훌륭하다. 지역 조명 모델로 렌더링된 영상에 더해져서 전역 조명 모델의 분위기를 만들어준다.
- 하지만, 지역 조명 모델의 근본적 한계를 극복하지 못한다. 예를 들어, 물체는 자기 자신을 반사하지 못한다. 주전자 그림에서 보듯이 주전자 손잡이가 주전자 몸체에 반사되지 않는 모습을 볼 수 있다.
출처
[OpenGL ES를 이용한 3차원 컴퓨터 그래픽스 입문]을 보고 공부하고 정리한 내용입니다.
728x90
'공부 > Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문' 카테고리의 다른 글
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 16 - 전역 조명과 텍스처링 [1/2] (0) | 2022.06.25 |
---|---|
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 15 - 쉐도우 매핑 (0) | 2022.06.18 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 14 - 노멀 매핑 [2/2] (0) | 2022.06.11 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 14 - 노멀 매핑 [1/2] (0) | 2022.06.11 |
[Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [4/4] (0) | 2022.06.06 |