본문 바로가기

볼봇의 코딩 생활/언리얼한 엔진

UE4 우주 배경 (스카이박스) 만들기

게임 제작에 필요한 스카이 박스를 만들어본다.

 

스카이 박스를 한국어로 하면 하늘 상자, 즉 이번에는 하늘을 만들어보는 것 이다.

 

참 이해 안되는데, 초심자든 숙련자든 한번씩은 써봤을 엔진 컨텐츠의 BP_Skybox 를 의미 한다.

물론, 언리얼에서 기본 제공하는 스카이박스는 여러가지 기능을 지원하지만, 이 글에서 만들 스카이박스는

 

말 그대로 그냥 스카이박스. 아무 기능도 없는 간단한 스카이박스다.

 

필요에 따라 여러가지 기능을 추가 할 수 있지만, 현재 진행중인 프로젝트는 기어 VR 에서 돌아가기 때문에

괜히 복잡해졌다간 프레임 떨어지고 멀미가 심해질수도 있고.. 여튼 가장 단순한 스카이 박스를 만들어본다.

 

큐브맵?

먼저 큐브맵에 대해 이해가 필요하다.

이것을 이해하면 스카이박스가 어떤건지도 알 수 있게 된다.

 

http://api.unrealengine.com/KOR/Engine/Content/Types/Textures/Cubemaps/

 

큐브맵

언리얼 엔진 4 에서의 큐브맵 생성, 익스포트, 임포트, 사용법 관련 홈페이지입니다.

api.unrealengine.com

 

설명이 잘 나와있는데, 이해가 안되면 실생활에서 접할 수 있는 로드뷰 정도로 이해 해보자.

저 입체 사진은 큐브맵이었다.

 

4글자로 줄이면 입체 사진이라는것.

 

이제 저 입체 사진을 어떻게 만들까?

 

엔비디아에서 제공하는 포토샵 플러그인을 사용하여 만들수도 있지만, 그것은 너무 복잡하기도 하고, 업데이트도 안되서

작동할지도 미지수 이다. (cc 2018, UE4 4.21 버전 작동 확인했다.)

 

만약 필요한 독자는 아래 언리얼 문서를 읽고 한번 해보자.

 

http://api.unrealengine.com/KOR/Engine/Content/Types/Textures/Cubemaps/CreatingCubemaps/index.html

 

큐브맵 만들기

큐브맵 제작에 대한 개요, 포토샵에서 큐브맵 조합시 고려할 사항에 대한 문서입니다.

api.unrealengine.com

 

여기서는, 언리얼 문서에 나와있지 않은 간단하고 쉬운 프로그램을 사용하기로 했다.

spacescape 를 사용할것인데, 완전 무료이기 때문에 저작권 걱정 없이 편하게 사용할 수 있다.

다운로드는 소스포지에서 할 수 있다. 다운로드 후 압축을 미리 풀어두자.

 

다운로드

https://sourceforge.net/projects/spacescape/

불러오는 중입니다...

소스포지가 접속이 안되요!

필자도 안된다. 몇달 전부터 안되던데 계속 안된다. (짜증)

VPN 을 사용하면 접속 할 수 있지만 귀찮은 독자가 많으므로, 이 블로그에서는 그냥 파일을 올려둔다.

 

https://ufile.io/9m5jatex

 

Uploadfiles.io - Download spacescape-0.5.1.zip for free

Upload files, for free, securely, anonymously, without limits. @UploadFilesFree

uploadfiles.io

 

큐브맵 만들기

프로그램을 실행하면 단순한 UI 가 보일것이다.

 

이것으로 괜찮은 우주 큐브맵도 만들 수 있겠지만, 아직 필자가 다 파악하지 못했으므로 간단하게 별찍기만 해보자.

 

 

새로운 레이어를 만든다.

레이어 설정을 바꾸어 별을 완성해보자.

 

 

벌써부터 우주가 조금씩 만들어지기 시작했다.

몇가지 옵션을 설명하고 설정을 바꾼후에 언리얼로 임포트 해보겠다.

 

LayerName 레이어 이름
Layer Type 별인지, 노이즈인지, 성운인지 설정
Far Color 멀리 있는 별의 색상
Near Color 가까이 있는 별의 색상
Number of Points 별 갯수

 

이것 말고도 많은 설정 값들이 있다. 이것저것 만져보면서 연구해보자.

별로 어렵지 않다.

 

필자가 추구했던 우주가 완성됬다.

File -> Export Skybox 를 클릭하여 스카이박스를 익스포트 하자.

 

*.dds 파일이 만들어진 것을 확인 할 수 있다. 이를 언리얼 엔진으로 임포트 한다.

 

참고로, 오래걸린다.

필자는 잠시 커피 한잔 하고 돌아오니 임포트가 다 되어있었다. (용량이 20~30MB 정도 하더라.)

 

이제 텍스쳐 설정을 몇가지 바꿔야 한다.

 

텍스쳐 설정 바꾸기

임포트를 완료 했다면, 해당 텍스쳐 파일을 열어 몇가지 설정을 바꾸도록 한다.

아래와 같이 따라한다.

 

Compression Settings -> UserInterface2D 으로 변경

 

 

sRGB -> False 으로 변경

 

 

Mip Gen Settings -> NoMipmaps 으로 변경

Texture Group -> Skybox 으로 변경

 

 

아래와 같이 변경되어있는지 확인해본다.

Compression Settings UserInterface2D
sRGB False
Mip Gen Settings NoMipmaps
Texture Group Skybox

 

 

왼쪽 프리뷰 화면이 꽤 깔끔한 우주로 보일것이다.

 

머티리얼 설정 하기

이제 엑터에서 사용 할 수 있도록 머티리얼을 만들어 줘야 한다.

동시에 일부 설정도 진행해본다.

 

못만드면 안되요..

이를 기반한 머티리얼을 하나 만든다. (텍스쳐 우클릭 -> 머티리얼 생성)

 

머티리얼 파일을 열어보면, 컴파일 오류가 터지는데 고쳐줘야 한다.

 

 

ReflectionVectorWS 노드를 생성한다.

그리고 TextureSample 노드의 UVs 와 연결 시킨다.

 

우측 하단의 머티리얼 설정을 아래 표와 같이 설정한다.

Shading Model Unlit
Two Sided True

 

마지막으로 텍스처 샘플의 출력 노드를 이미시브 컬러로 바꾼다.

 

기존에 베이스 컬러에 있었는데, Unlit 으로 셰이딩 모델을 바꿈으로 써 노드가 비활성화 됬기 때문에

저곳으로 옮겨줘야 한다.

 

설정을 마치면 프리뷰 화면에 이러한 화면이 반기고 있을것이다.

 

저장하고 창을 닫는다.

 

스카이박스 블루프린트 만들기

마지막 작업이다. 이 머티리얼을 적용할 엑터를 만들겠다.

 

Actor 클래스를 상속받는 블루프린트 하나를 만들자.

이름은 BP_SpaceSkybox 으로 정했다. (원하면 다른것으로 바꾸자.)

 

구체 컴포넌트를 추가 한다.

 

이것은 머티리얼을 적용 함으로 써 하늘을 그리는 하나의 엑터가 될 것이다.

 

이 구체에 대한 설정을 몇가지 바꾼다.

 

방금 만들었던 머티리얼로 값을 바꾼다.

 

콜리전을 끈다. (하늘에 부딪치는건 현실적이지 않다.)

 

Generate Overlap Events 옵션을 끈다.

 

일부 퍼포먼스를 위해 몇가지 설정을 더 바꿀수도 있지만 여기까지만 설정하고 마친다.

마지막으로, 이 구체의 크기를 굉장히 크게 키운다.

 

경험상 1000 까지만 키우면 충분하다. 이것으로 부족하면 더 키워보자.

너무 커지면 퍼포먼스 문제가 발생하므로 상황에 따라 적절이 조절할 것.

 

멋진 우주가 완성되었다. 이를 월드에 적용해보자.

 

월드로 돌아가, 방금 만든 블루프린트를 월드에 넣는다.

 

 

우주배경이 완성되었다.

 

 

마치며

이렇게 만든 우주배경은 어떤 월드에서든 다시 가져다 쓸 수 있지만, 상황에 따라 단조로움이 있을 수 있다.

 

시간이 된다면, 위에서 소개해준 spacescape 프로그램 말고 엔비디아에서 제공하는 포토샵 플러그인을 사용해보자.

그것을 사용하면 더 멋지고 화려한 우주를 만들 수 있게 된다.

 

우주 뿐만 아니라, 실제 세계를 사진으로 찍어 위와 같이 적용할 수 있다.