내일배움캠프 125일차 - 최종프로젝트 15일차: SkyBox를 제작하는 방법

SkyBox를 제작해보자

이전 TIL에서 씬 캡쳐를 활용해 포트레이트를 제작할 때 SkyBox를 사용한 바가 있다. 하지만 언리얼 엔진에서 제공해주는 SkyBox는 많은 종류를 제공해주지 않고 지향하는 환경그래픽이 다를 수 있다.

대신 직접 프로젝트 환경에 맞는 SkyBox를 만들어보기에 앞서, SkyBox는 어떤 존재인지 다시 한번 짚어보도록 하자.

SkyBox란?

밖에서 본 SkyBox와 안에서 본 SkyBox

언리얼 엔진에서는 SkyAtmosphere와 VolumetricCloud를 통해 하늘을 표현하고 있지만, 과거에는 하늘을 담은 커다란 구를 직접 배치해 하늘을 표현하였으며, 이는 현재까지도 활용되고 있는 방법이다.

구 모양인데 왜 SkyBox?


SkyBox의 6면 텍스처
(큐브맵이라고도 불린다)

월드에 배치된 것은 분명 구 모양인데 왜 SkyBox?라고 하면, 과거 게임에서 하늘을 표현할 때 6면의 전개도 형태를 감싸 만들어진 큐브(Cube)를 사용했기 때문인데, 현대에 들어서는 구(Sphere)모양이나 돔(Dome), 파노라마 형태로 발전했음에도 맵을 둘러싼 공간이라는 의미의 SkyBox라는 명칭이 관습적으로 사용되어온 것이다. 물론 박스와 구분하기 위해 SkySphere, SkyDome으로 부르기도 한다.

DirectX 환경에서 사용된 SkyBox.
과거 내가 제작한 DirectX 포트폴리오에서 큐브맵을 활용해 하늘을 표현하였다.

언리얼에서 SkyBox 제작법

우선 촬영하고자 하는 배경의 환경을 조성한 후에 SceneCaptureCube를 배치하면 카메라 형태의 액터가 배치되는데, 순수하게 하늘만 찍고자 한다면 메시를 표시 플래그에서 제외시킨다. (만약 도시나 마천루가 보이는 하늘을 표현하고 싶다면 플래그를 포함시켜도 무방하다.)

그리고 캡쳐한 하늘을 담아줄 큐브 렌더 타겟을 추가하여 SceneCaptureCube의 텍스처 타깃에 담아준다.


SceneCaptrueCube를 통해 큐브 렌더 타겟에 담겨진 하늘.
큐브맵 형태로 저장되어있다.

타깃으로 지정된 렌더 타겟은 씬 캡쳐가 촬영한 하늘의 모습을 담아주는데, 여기서 큐브의 X크기 값을 조절해 해상도를 변경할 수 있다. 텍스처 사이즈는 X크기에 비례한다.

큐브 렌더 타겟에 하늘이 제대로 잡혀진다면, 큐브 렌더 타겟 에셋을 우클릭하여 [스태틱 텍스처 생성]을 하면 큐브 렌더 타겟 옆에 생성된 텍스처 큐브를 확인할 수 있을 것이다.

새로운 SkyBox 적용

촬영된 풍경이 영구적으로 유지되는 텍스처 큐브를 만들었으니 이를 SkyBox에 적용해볼 차례다.

언리얼 엔진에서는 기본적으로 [엔진]-[콘텐츠] 경로 내에 SkyBox를 구성하는 스태틱메시(SM_SkySphere)와 머티리얼(M_SkyBox)이 있다. 위의 두 에셋을 복제해 내 프로젝트 폴더로 옮겨주자.

M_SkyBox의 구조

복제한 머티리얼 M_SkyBox의 구조를 살펴보면, 텍스처큐브를 담아내는 SkyBox라는 파라미터를 가진 TextureSampleParameterCube 노드가 있을 것이다. 이 노드에 담고 있는 텍스처 큐브값을 이전에 제작한 텍스처 큐브로 변경해주자.

일련의 과정을 모두 마치고 복제한 스태틱 메시 SM_SkySphere의 머티리얼값을 복제한 머티리얼 M_SkyBox로 변경해주면 다음과 같은 결과를 얻을 수 있다.

만약 SkyBox가 표현하는 하늘의 해상도가 낮다면 렌더타겟의 X크기값을 늘리고 텍스처 큐브를 재생성해주면 된다.

※ 만약 SkyBox를 월드의 배경으로 적용하고자 한다면, SkyAtmosphere와 VolumetricCloud 등은 박스에 가려지게 되므로 제거해두자.

마치며

언리얼 엔진에서는 이미 SkyBox를 대체하는 환경액터가 있기 때문에 일반적으로 사용할 일은 없다.

하지만 환경 액터는 월드 내에서 중복적용이 어렵기 때문에 씬 캡쳐 등으로 다른 환경을 가진 배경을 실시간 촬영하고 싶다면 SkyBox를 활용하는 것은 좋은 선택이 될 수 있다.

또한 디자이너가 만들어낸 SkyBox는 기본 환경액터가 따라가지 못할 정도로 예술적일때도 있다. 만약 독창적인 SkyBox를 월드에 적용하고 싶다면 Fab 등의 에셋스토어에서 SkyBox를 구해보도록 하자.

댓글

이 블로그의 인기 게시물

내일배움캠프 사전캠프 - 사전캠프설 연휴 커피 파밍 이벤트 작품 [ EXTREMITY ]

내일배움캠프 29일차 - 커리어데이 2일차 : 클라이언트 프로그래머로서 포트폴리오, 입사준비팁