Skip to content

09. 스카이박스의 구현


목차

  • 스카이박스란?
  • 큐브맵 텍스쳐 정의하기
  • 스카이박스 렌더링 (xyww, CubemapSeamless, GL_LEQUAL)

스카이박스란?

먼저, 스카이박스가 무엇인지부터 알아봅시다.

스카이박스(Skybox)란, 가상의 3차원 세계에서

'눈(=카메라)으로부터 매우 멀리 떨어진 풍경'들을

마치 움직이지 않는, 세계를 감싸고 있는

하나의 포장지로써 생각하는 개념입니다.

예를 들어, 제가 멀리 있는 산을 바라본 상태로

앞으로 몇십 걸음을 가도

산은 여전히 멀리 있기 때문에,

눈에는 움직이지 않는 배경처럼 보일 겁니다.

혹시 <트루먼 쇼> 라는 영화를 아시나요?

이 영화의 주인공은 인공적으로 만들어진

영화 세트장에서 살아가게 됩니다.

이때, 그가 사는 도시(섬)로부터 매우 멀리 떨어져 있는 곳에는

밑 사진처럼 구름낀 하늘이 그려진 벽화가 있습니다.

9_0.png
출처 : <트루먼 쇼>

스카이박스는 위 영화 세트장의 벽화와 완전히 동일한 역할입니다.

어차피 매우 멀리 있으니까,

눈(=카메라)의 위치는 고려하지 않고

카메라의 회전에 따라서 이를 둘러싼 풍경을 그려주는 것이죠.

큐브맵 텍스쳐 정의하기

OpenGL을 포함한 모든 그래픽스 API에는

스카이박스를 그릴 때 사용되는

'큐브맵 텍스쳐' 라는 텍스쳐를 지원합니다.

이전에 2차원 텍스쳐로써 Texture2D라는 클래스를 구현했었죠?

큐브맵 텍스쳐에는, 그 2차원 텍스쳐가

6개가 들어가게 됩니다.

세계를 둘러싸고 있는 포장지를

정육면체로 생각하면 -

앞면, 뒷면, 오른쪽면, 왼쪽면,

윗면, 아랫면까지 총 6개의 텍스쳐가 필요하죠.

스카이박스 렌더링