| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- Unreal Engine 5
- dfs
- w3school
- Programming
- String
- Class
- 파이썬
- Tutorial
- UE5
- Basic
- 시작해요 언리얼 2022
- W3Schools
- loop
- c++
- python
- 백준
- 재귀
- guide
- github
- 프로그래밍
- parameter
- Unity
- dynamic
- DP
- C#
- Algorithm
- 오류
- 기초
- Material
- 문제풀이
- Today
- Total
행복한 개구리
Unreal Engine 5 Tutorial - 시작해요 언리얼 2023 (1) 본문
Unreal Engine 5 Tutorial - 시작해요 언리얼 2023 (1)
HappyFrog 2023. 6. 1. 02:17https://www.youtube.com/watch?v=IuEmzI2sbLo
해당 게시물은 'Unreal Engine KR 유튜브 채널의 시작해요 언리얼 2023 | 1주차 | 레벨 제작 준비하기'를 시청하며 따라한 내용입니다.
'시작해요 언리얼 2023' 영상들은 기초적인 부분들은 건너뛰고 진행할 것이기 때문에 만약 입문자나 엔진을 처음 접하는 등 기초지식이 부족하다면 'Unreal Engine KR 유튜브 채널의 [시작해요 언리얼 2022]'를 시청하고 오는 것을 권장한다.
1. 프로젝트 초기 설정
1) 프로젝트 생성
Unity나 UE를 사용하는 입장에서 프로젝트 이름이나 경로에 한글이 들어가지 않도록 설정하는 것을 권장한다. 프로젝트를 빌드할 때나 개발과정에서 자잘한 오류들이 발생할 가능성이 있기 때문에 영어로 설정하는 것을 권장한다. 나의 프로젝트 경로는 모두 영어이며, 프로젝트 이름 또한 영어로 생성했다. 이는 영상에서도 권장하는 방법이다. 프로젝트의 제목은 "StartUnreal2023"으로 했다. 프로젝트 생성 타입은 Game > 3rdPerson으로 생성했다.
2) 레이아웃 설정

UE5 프로젝트를 생성하고 창이 열리면 보이듯이, UE5의 레이아웃은 UE4와는 조금 다르다. 가장 큰 차이는 Viewport의 영역이 훨씬 넓다는 것이다. 레이아웃은 본인이 편한 것을 선택하되, 영상에서는 UE4 레이아웃을, 나는 UE5 레이아웃을 사용했다.

레이아웃은 Window > Load Layout 에서 원하는 레이아웃을 선택하면 된다. 본인이 커스텀하여 저장할 수도 있다. UE4 Classic Layout은 UE4의 레이아웃이며 Default Editor Layout은 UE5의 레이아웃을 의미한다.


위 사진을 보면, 가장 큰 차이점은 UE5 레이아웃엔 Contents Browser와 Place Actor패널이 보이지 않는다는 것이다. Contents Browser의 경우엔, Ctrl+Space를 누르면 하단에서 슬라이드 형식으로 올라오며, 해당 패널에 포커싱이 풀리면 스르륵 내려가며 사라진다. 이는 UE5의 좌하단에 Content Drawer로도 표기되는데, Content Browser와 Drawer의 차이는 포커싱이 아닐때 사라지는지, 그대로 자리에 보이는지의 차이다. Content Drawer에서 Dock in layout 버튼을 누르면 Content Browser창으로 바뀌며 포커싱이 풀려도 패널이 사라지지 않는다.
Place Actor패널의 경우는 단축키를 직접 지정해줘야 한다. 그렇지 않으면 매번 쓸 때마다 드롭다운 메뉴를 여러번 눌러가며 찾아야하기 때문에 매우 귀찮다.

단축키를 지정하는 방법은 다음과 같다. UE의 최상단에 존재하는 드롭다운 메뉴에서 Edit > Editor Preferences를 눌러 에디터 설정창을 켠다. 이후 General > Keyboard Shortcuts > Level Editor > Place Actors Panel을 찾아가면 되는데, 설정창 상단에 있는 검색창을 활용하면 빠르다. Place Actors 패널에 단축키를 지정해주면 되는데, 이미 다른 기능에 할당된 단축키면 표시해주니 걱정하지말고 원하는 단축키를 할당하자.

또한 에디터 설정 창에서 General > Region & Language를 보면 지역과 언어설정을 바꿀 수 있다. 나는 계속해서 영어설정으로 사용할 예정이다.
2. 레벨 생성
Unity를 사용했던 내 기준으로 설명하자면, UE에서의 Level은 Unity에서의 Scene개념과 같다고 생각된다. Level을 처음 생성하면 현재 보이는 Level과 달리 아무것도 없는, 심지어 빛설정 조차 없는 상태로 시작하게 된다. UE프로젝트를 Blank로 생성하는 것과 같다.

우선 Content Browser에서 Content 폴더 하위에 본인이 사용할 폴더와 그 하위에 Level들을 모아둘 'Level'폴더를 만들어주자. 본인이 사용할 폴더는 본인을 뜻하는 닉네임같은 것으로 지어도 좋다. 영상에서는 강의해주시는 분의 별칭인 'Russel'이고 나는 나의 별칭인 'seMo'로 만들었다.



그리고 생성한 폴더에 새로운 레벨을 하나 만들어주자. Ctrl + N을 누르거나 UE 좌상단에서 File > New Level을 선택하면 된다. 여기서 Empty Level을 골라주고, 해당 레벨을 저장할 때 이름을 지어주면 된다.

또는 Content Browser에서 우클릭을 한 후, Level 에셋을 생성하면 된다.
두 방법의 차이점은, Content Browser에서 바로 만들 경우엔 레벨파일의 이름을 지어주고 사용할 수 있다. 따라서 해당 레벨을 열어보면 Outliner에 보이는 World의 이름이 이미 파일이름과 동일하게 설정된 상태지만, Content Browser를 통하지 않고 레벨을 생성하게 된다면 파일이 저장된 상태가 아니기 때문에 World의 이름이 Untitled로 지정되지 않은 상태이다. 또한 Content Browser에서 생성하는 Level은 기본적으로 Empty Level로 생성되지만 단축키를 통해 Level을 생성할 땐 생성할 Level의 형식을 지정해줘야 한다.


UE 우상단쪽에 보이는 Settings 버튼을 눌러 Project Settings를 선택하여 창을 연다. 프로젝트 설정창에서 Maps & Mode > Default Maps > Editor Startup Map에 방금 생성한 Level을 Content Browser에서 드래그하여 할당해주면 앞으로 이 프로젝트를 열 때마다 우리가 생성한 레벨이 열린다.
3. 빛 생성
우리가 방금 생성한 레벨은 정말 아무것도 없는 공간이다. 그렇기 때문에 환경, 빛, 배경 모두 직접 만들어야하는데, 우선 빛부터 만들어보자.

UE 드롭다운 메뉴의 Window > Env. Light Mixer를 열자.

아무것도 없는 현재 상태에선 생성할 수 있는 빛의 종류가 모두 표시된다. "Create ..."라고 되어있는 것들 모두 다른 종류의 라이트이며 이것들을 모두 사용하면 만족스러운 빛 효과를 연출할 수 있다. 모두 클릭하여 생성해주자.

모두 생성하면 위 사진과 같이 Viewport에 빛과 하늘효과, 구름이 생긴 것을 확인할 수 있으며 Outliner에서도 해당 빛 Actor들을 확인할 수 있다. 이 라이트 Actor들을 모두 생성한 후에는 Env. Light Mixer 창에서 빛효과에 대한 각자의 설정을 수정할 수 있다. 마치 Details에서 각 라이트 Actor들의 내역을 모아둔 것 처럼 말이다.
4. Virtual Texture

그리고 다시 Project Settings로 가서 "Virtual Texture"를 검색한다. 그러면 "Virtual Texture 지원 활성하기"라는 체크박스가 표시되는데, 이것을 체크하여 켜주면 설정 적용을 위해 재시작해야한다고 뜬다. 엔진을 재시작해주자.

엔진을 재시작하며 꽤나 긴 로딩이 시작되는데, 엔진의 기본 설정을 바꾸고 적용하는 사항이라 오래 걸릴수 있다고 한다. 이 로딩은 최초 1회만 오래걸린다고 하니 걱정말고 기다리자.
언리얼 엔진의 버추얼 텍스처링 | 언리얼 엔진 5.1 문서 (unrealengine.com)
버추얼 텍스처링
언리얼 엔진에서 사용할 수 있는 버추얼 텍스처링 메서드 개요입니다.
docs.unrealengine.com
기다리는 동안 Virtual Texture에 대해 알아보자면, Texture계의 Nanite와 같은 기능으로, 현재 화면에서 보이는 Texture들을 유동적으로 해상도를 조절하여 스트리밍 하는 기법이라고 한다. 쉽게 말해, 고해상도, 고품질의 에셋들을 사용할 때 사용자 PC의 메모리 성능을 절약해주는 기능이라고 한다. 앞으로 고해상도, 고품질의 에셋을 사용할 예정이기때문에 활성해주는게 좋다고 한다.
문서를 보다가 Virtual Texture에 궁금해 더 찾아보았다. Virtual Texture를 사용하지 않는다면 월드의 텍스쳐들은 모두 해당 기술은 플레이어의 가시영역 텍스쳐의 퀄리티를 고품질로 재생하되, 비가시영역의 텍스쳐는 저품질로 유지하며 메모리 성능을 절약하는 방법이라고 한다.
Virtual Texture는 RVT(Runtime Virtual Texture), SVT(Streaming Virtual Texture)로 두가지가 있다.
RVT의 경우엔 플레이어의 가시영역에 포함되는 텍스쳐를 메모리에 할당하고 비가시영역의 텍스쳐는 메모리에 할당하지 않는 방식이고, SVT는 이미 메모리에 할당된 텍스쳐가 가시영역에 포함된다면 텍스쳐의 품질을 고품질로 할당하고, 비가시영역의 텍스쳐는 저품질로 할당하는 것이다. 따라서 처음 가는 지역의 텍스쳐는 RVT를 실행하며, 이미 한 번이라도 RVT가 실행됐던 지역에서 카메라를 돌려 비가시영역으로 만들었다가 가시영역으로 다시 포함시키는 행동을 하면 해당 텍스쳐는 SVT를 통해 고/저품질 설정을 한다. 그리고 플레이어가 해당 지역에서 아주 멀어진다면 더이상 가시영역이 될 수 없기 때문에 멀어진 지역의 텍스쳐를 메모리에서 해제하는 작업을 통한다고 한다.
개인적으로 느낀 바론 심리스 오픈월드가 이것과 비슷한 방식으로 진행되지 않을까... 싶기도 하다.
5. 바닥 생성
로딩이 완료되고 엔진이 켜졌다면, 방금 전에 생성한 레벨에선 빛효과밖에 없을 것이다. 바닥을 하나 만들어보자.

Place Actors 패널 > Shapes > Plane을 배치해주자.

배치한 바닥의 위치를 (0, 0, 0)으로 바꿔주자. Plane Actor를 선택하고 Details에서 Transform > Location을 (0, 0, 0)으로 지정해주면 된다.
방금 설치한 Plane을 선택하고 F키를 눌러주면 해당 액터에 포커스되며 가까이서 볼 수 있게 된다.

바닥치곤 작은 감이 있기 때문에 Scale의 X, Y값을 100으로 지정해주자. 마찬가지로 Details > Transform에서 보면 된다. UE에서의 크기는 실제 세계의 크기에 대응하도록 만들어졌다.

예를 들면 이 위치값으로 볼 때, 값이 100이면 1m(100cm)이므로, -440은 x축 음의 값으로 4.4m를 이동한 값이라고 볼 수 있다.

Plane Actor를 처음 배치하고 스케일이 (1, 1, 1)일 때, 해당 plane은 가로 세로 1m의 값을 가졌다고 할 수 있다. 따라서 작은 격자무늬 1칸 당 10cm의 값을 가진다고 볼 수 있다. 따라서 x, y값을 100으로 늘려둔 현재의 plane은 가로 세로 100m크기의 바닥이라고 볼 수 있다.

그리고 Play버튼을 누르면 W, A, S, D, SPACE, 마우스로 조절할 수 있는 내 캐릭터가 나온다. 앞서 Plane을 충분히 넓게 설정했기 때문에 달릴 수 있는 충분한 공간이 확보됐다.
6. Quixel Bridge 에셋 활용
1) Quixel Bridge 소개

Quixel Bridge의 에셋들을 사용할 것이다. UE 좌상단에 보이는 Quickly add to the project 버튼을 누르고 Quixel Bridge를 선택하자.

Quixel Bridge의 우상단에 보이는 사람모양 아이콘을 눌러 로그인해주자. 로그인은 에픽게임즈 계정으로 하면 된다.

Quixel의 에셋들은 Quixel Bridge의 설정에서 볼 수 있는 라이브러리 경로에 임시적으로 에셋을 저장한 후, 그것을 복제해서 해당 프로젝트로 가져오게 된다. 이 라이브러리 경로는 실시간으로 불러와지는 데이터가 아니다. 따라서 라이브러리 경로를 HDD같은 장치로 지정해둬도 된다.

Quixel에서 제공하는 에셋의 양은 방대한 수준이다. 소분류가 있긴 하지만 원하는 에셋을 처음부터 찾아보기엔 힘이 들기 때문에 Collections를 살펴보도록 하자. Collections는 어떠한 주제에 어울리는 에셋들을 모아둔 것이다.

Collections에서 Warehouse를 검색하자. 우리는 이 에셋들을 사용할 것이다.

폐공장같은 느낌을 줄 수 있도록 해당 에셋들을 사용할 것이며, 식생들을 많이 배치하여 포스트 아포칼립스의 폐공장 느낌이 나는 컨셉신을 만들 것이다. 식생들에는 Nanite가 적용되어 매우 고품질인 텍스쳐를 감상할 수 있고, 방대하게 많은 양의 에셋들에 루멘이 적용되어 실시간 라이팅이 적용되는 모습을 볼 수 있다는 것이 이번 컨셉신 선정의 이유라고 한다.
루멘은 UE5의 핵심 기술이며 실시간 글로벌 일루미네이션이 구현된 차세대 조명 시스템이다. 글로벌 일루미네이션이란, 빛이 직접적으로 닿지 않는 부분에 자연스러운 반사광을 추가해주는 것이다. 마치 현실세계에서 빛이 한줄기라도 들어오면 반사되어 주변 물체까지 어렴풋이 보이게되는 그러한 반사광을 구현했다고 보면 된다.
기존에는 글로벌 일루미네이션을 구현하기 상당히 어려웠다. 실시간으로 반사광을 모두 계산하는 것은 엄청난 연산이 필요했고, 그래서 보통은 반사광이 어디로 갈 지, 오랜 시간을 들여 미리 연산해두고 처리한 후 그것을 보여주는 식으로 구현했었다.
그런데 이러한 글로벌 일루미네이션을 UE5에서는 루멘이라는 기술로 실시간 글로벌 일루미네이션을 구현할 수 있다. 즉, 실시간으로 빛의 반사, 노출에 대한 연산이 이루어진다는 것이다. 더이상 연산을 기다릴 필요가 없다는 것이다.
그리고 이전부터 언급된 나나이트는 최적화때문에 기존엔 폴리곤 갯수를 절약하여 퀄리티를 타협해야했던 것에서 벗어나서 무수히 많은 폴리곤을 게임중에 실시간으로 연산할 수 있고 자동으로 최적화를 진행해주는 차세대 기술이다.
이렇듯 루멘, 나나이트는 UE5에서 게임개발의 퀄리티를 매우 크게 끌어올린 핵심기술이라고 할 수 있다. 이전과 다르게 매우 자연스러운 빛 효과와 고퀄리티의 에셋으로 말이다.
Quixel Bridge에서는 방대한 양의 고해상도 Photoreal 에셋이 준비 되어있다.
2) 에셋 다운로드



위 사진에 보이는 에셋들의 품질을 설정하여 다운받자. 품질설정은 다운로드버튼 왼편에 있으며, Nanite로 설정할 시 최상급 퀄리티의 에셋이 다운받아진다. Nanite로 받아보자. PC사양이 Nanite를 사용하기에 부족한 편이라면 품질을 낮춰도 괜찮다.


간혹 목록을 보면 다운로드가 완료되어 파란색 + 표시가 되는 에셋들이 있는 반면, 초록색 다운로드 표시가 남아있는 에셋들이 있는데 이것들은 내가 설정한 품질의 에셋이 없기 때문에 이렇게 보이는 것이다. Cardboard Box의 경우엔 Nanite 품질을 지원하지 않는 것이다. 이럴 땐 Nanite로 설정하고 Add버튼을 누른 뒤, High Quality로 설정하고 Add버튼을 다시 한 번 눌러주면 된다.
3) 에셋 배치

에셋을 모두 받았으면 Content Browser에 해당 에셋들이 Megascans하위에 들어온 것을 확인할 수 있다.

방금 받은 Quixel의 에셋, 특히 Nanite 품질로 받은 에셋은 실사 수준의 고퀄리티 에셋이다보니 차지하는 용량이 만만치 않다. 이 중에서 텍스처의 용량이 꽤나 높다. 텍스쳐 정보를 보면, 해상도는 8K이며, 용량이 135.585MiB나 되는 것을 볼 수 있다. 물론 PC사양에 따라 4K나 2K로 낮춰서 사용해도 괜찮다.

Content Browser에서 Megascans하위에 3D_Assets를 선택하고 검색창 왼편에 있는 필터로 Texture들을 골라내자. 모두 선택하여 Bulk Export를 하게되면 언리얼엔진에 추가된 이 파일들을 Window파일로 추출할 수 있다. 그렇게 추출한 텍스쳐 파일들을 포토샵같은 다른 프로그램을 이용해 해상도를 낮춘 뒤 UE에 파일 이름을 같게하여 각 폴더에 넣어주면 텍스쳐파일이 교체된다. 이런 방식으로 텍스쳐의 용량을 최적화할 수 있다.

이번엔 Content Browser에서 Static Mesh를 필터링하자. Static Mesh는 흔히 생각하는 3D 오브젝트 데이터다. 게임에서 볼 수 있는 사물은 Static Mesh와 Material, Texture로 완성이 된다. 에셋에서 실제로 배치할 수 있는 것은 Static Mesh다.

Material은 Static Mesh에 외형을 표현하는 재질이라고 할 수 있다. 그리고 Material은 Texture로 이루어져 있다.
이제 레벨에 Static Mesh를 배치할건데, 그 전에 조금 더 편하게 작업하는 팁을 알아보자.

특별한건 없고 배치할 Static Mesh들을 환경에 미리 가지런하게 배치해두면 나중에 복사해서 쓸 수도 있고 어떻게 생긴 에셋인지 바로 확인할 수 있어 편하다.

그리고 Metal Pallet 에셋은 배치해보면 서로 높이가 다르게 배치되는 것을 알 수 있는데, 이것은 모듈 유형의 에셋이다.

이런 모듈 유형의 에셋은 Static Mesh를 각각 하나씩 배치하면 위 사진과 같이 따로 배치되지만, 모듈 전체를 선택하여 한번에 배치한다면 위 사진과 같이 조립된 형태로 배치할 수 있다.

에셋들을 이렇게 한 곳에 배치하여 정리할 때, 땅에 파묻히는 에셋이 있을 수 있는데, Z축으로 들어올리고 End키를 눌러주면 땅에 붙을때까지 내려간다.

정리해두고 작업을 하다가 해당 에셋의 경로로 가고싶다면 에셋의 Actor를 선택하고 Ctrl+B를 누르면 Content Browser에서 해당 에셋의 경로가 열린다. 액터를 복사하여 배치하는 방법 말고도 이 단축키를 이용하여 원하는 에셋의 경로를 타고 들어가서 해당 에셋의 Static Mesh를 바로 Content Browser에서 배치하는 방식으로도 활용할 수 있다.
이제 본격적으로 환경을 꾸밀건데, 지금의 바닥은 기본 바닥으로 그냥 흰색을 띌 뿐이다. 그래서 재질을 입혀 사실적으로 연출해보도록 하겠다.
4) 머티리얼 편집

QuixelBridge에서 Home > Surfaces > Moss로 들어가자. 여기서 Mossy Forest Floor 머티리얼을 바닥에 입힐것이다. 품질을 선택한 후 다운받자.

다운받은 머티리얼을 Plane에 적용시키면 위와 같은 모습으로, 표현은 잘 됐는데 너무 크게 표현되는 것을 알 수 있다. 이를 해결하기 위해서 Mossy Forest Floor 머티리얼의 편집창을 연다. Viewport와 동시에 확인할 수 있도록 창크기를 조절한 뒤, 00-Global을 살펴보자.


Tiling/Offset에 체크하고 Tiling X, Y값을 수정할 것인데, 이 타일링 X, Y값들은 X축 또는 Y축에서 몇번이나 패턴이 반복되기 할 것인지에 대해 결정하는 영역이다. 따라서 초기 설정값인 1에 따르면 다운받은 Mossy Forest Floor라는 머티리얼의 패턴이 커다란 Plane에서 X, Y축으로 각 1번씩밖에 반복을 안했기 때문에(사실상 반복하지 않았기 때문에) 굉장히 커다랗게 표현됐으며, 이를 늘려주면 세밀한 표현이 가능해진다. 따라서 50, 50으로 설정했다.

훨씬 자연스러운 바닥을 표현할 수 있다.
이제 라이팅을 적합한 수준까지 다듬었으니 다음 단계로 넘어가겠다.
7. 레벨 인스턴스
1) 레벨 인스턴스 생성
다음 단계는 레벨 인스턴스다.
레벨 인스턴스는 UE5의 신기능이다. 이것을 이용하면 앞으로 레벨을 만들 때 엄청난 시간절약을 기대할 수 있다.

예시는 앞서 모듈형 에셋으로 살펴보았던 선반으로 들어보겠다.
이 모듈형 에셋은 하나의 선반으로 표현되는 사물이 서로 다른 액터로 이루어져있어, Outliner 또는 Viewport에서 각 액터들을 선택한 뒤 위치나 스케일을 수정해야 하나의 모듈이 온전하게 수정되는 것을 알 수 있으며, 실수로 하나의 액터라도 빠트린다면 빼놓은 액터를 알맞게 다시 수정해야하는 번거로움이 있다.
이것을 간편하게 해주는게 레벨 인스턴스 기능이며, 이는 Static Mesh들을 하나의 BluePrint로 묶어내는 기능이다.

우선 레벨 인스턴스로 만들 액터들을 모두 선택한 후에 우클릭 > Level > Create Packed Level Actor ... 를 선택한다.

그러면 이런 창이 뜨는데, 그냥 내용 수정없이 확인을 눌러주자.

확인을 누르면 그 다음엔 이렇게 에셋을 저장하는 창이 뜬다. 여기서 이전에 만들었던 내가 사용할 폴더 하위에 Level Instance 폴더를 생성해준다. 그리고 해당 폴더에 철제 선반에셋의 액터이름을 그대로 활용하여 MetalPalletRacking_1이라고 지어주고 저장했다. 저장을 눌러도 또 저장하는 창이 뜨는데, 그냥 그대로 저장한 번 더 해주면 된다.

모두 저장한 뒤에 Viewport에서 철제 선반을 선택하고 확인해보면 에셋의 모든 액터들이 합쳐진 모습으로 하나의 액터가 Blueprint 액터가 된 것을 알 수 있다. 또, Content Browser에서 Level Instance 폴더에 저장한 레벨 인스턴스를 배치해보면 알겠지만, 이제는 에셋형 모듈처럼 모든 Static Mesh를 선택하고 배치하는 것이 아니라 단순히 하나의 에셋을 배치해도 선반이 온전하게 배치되는 것을 볼 수 있다.
2) 레벨 인스턴스 수정


그리고 레벨 인스턴스로 합쳐졌다고 골조에 대한 수정을 못하는건 아니다. 레벨인스턴스 액터의 Details 패널에서 Level Edit > Edit을 누르면 주변이 흑백으로 변하고 내가 선택한 레벨 인스턴스만 제대로 보이며, 이 상태에서는 각 구성 Static Mesh를 수정할 수 있다.

변경사항은 Outliner에서 초록색으로 표시되는 레벨 인스턴스 액터를 선택하고 그 아래 Details 패널에 Commit Changes를 통해 저장할 수 있다. 또는 esc를 눌러 나가며 저장할 수 있다.

다만 이런 변경점은 레벨 인스턴스 자체에 변경을 주는 것이므로 이미 레벨에 존재했거나 앞으로 배치할 모든 같은 레벨 인스턴스에 변경사항이 적용된다.
레벨 인스턴스에서 Static Mesh가 아닌 다른 것들은 묶을 수 없다.
이제 이 레벨 인스턴스 기능을 활용하여 미리 배치해둔 상자와 팔레트들을 조합하여 하나의 묶음으로 만들어보도록 하겠다.

한 개씩 있는 이 에셋들은 에셋의 모양새 확인이나 경로 확인등으로 활용할 것이기 때문에 그대로 둘 것이다. 따라서 그대로 복사하여 사용할 에셋들을 마련해보자. 위와 같이 일정 범위 내에 있는 모든 에셋을 선택하려면 Shift+LM으로 하나하나 선택하는 방법도 있지만 Ctrl + Alt + Drag를 통해 모든 액터를 선택할 수 있다.

모든 액터를 선택할 때, 바닥인 Plane도 선택되니 복사하지 않도록 Ctrl+LM으로 Plane은 빼준다. 그리고 Alt + Drag를 통해 에셋들을 복사할 수 있다.
3) 레벨 인스턴스 생성 팁

가지고 있는 여러 상자들의 스케일과 위치, 각도를 조절해가며 팔레트 위에 상자들을 자연스럽게 배치해보자. 에셋 자체가 워낙 고퀄이라 버그급으로 어색하게 두는거 가이면 자연스러워 보인다. 상자인 덕분도 있고.

이것을 방금 소개한 Ctrl+Alt+Drag를 통해 모든 에셋을 선택한 뒤, Plane은 제외시키고 레벨 인스턴스로 만들어주자. 이름은 BoxPile_var1이라고 했다.
상자더미의 바리에이션을 더 만들어보자.

방금 만든 레벨 인스턴스의 편집모드로 들어가 Ctrl + A로 모든 액터를 선택한 뒤, Outliner에서 Pivot액터를 제외시키고 Ctrl + C로 복사하고 ESC로 빠져나와 Ctrl + V로 복사한 액터들을 생성한다.

복사한 액터를 옆으로 옮겨보면 레벨 인스턴스로 묶기 전의 상태로 액터들이 배치되어 있다. 이 상태에서 바리에이션을 만들 것이기 때문에 몇몇 상자의 스태틱 메시를 다른 상자로 교체해줄 것이다.

Details의 Static Mesh > Static Mesh에 다른 스태틱 메시를 할당해주면 간단하게 바뀐다.

완성됐으니 이것도 레벨 인스턴스로 만들어주자. 이름은 BoxPile_var2로 했다.

만들어둔 레벨 인스턴스들은 역시 에셋으로 쓰일 것이니 미리보기를 모아둔 샘플구역에 마찬가지로 배치해주자.

이번엔 선반과 레벨 인스턴스를 이용하여 또 다른 모습의 상자더미를 만들 것이다.
선반에 지금까지 만들었던 레벨 인스턴스를 적재한 모습으로 배치해주는데, 레벨 인스턴스의 폭이 좀 짧을 것이다. 스케일을 수정하여 배치하면 간단하니 걱정말자.

맨 윗층의 경우엔 1층 레벨 인스턴스를 그대로 쓰되, 180도 회전시켜 자연스럽게 연출했다고 한다. 이것 또한 레벨 인스턴스로 만들 수 있는데, 레벨 인스턴스로 만들 것에 레벨 인스턴스가 포함돼도 전혀 문제되지 않는다.
이것은 BoxRack_var1로 명명했다.

하지만 이번에 생성한 레벨 인스턴스는 Pivot의 좌표값이 의도와는 다르게 설정됐기 때문에 Edit에 들어가서 Pivot의 Z축 좌표를 손봐줄 것이다. 땅에는 붙어야하지 않겠는가.


선반의 Z축 좌표가 128.000005니까, Pivot도 그에 따라 맞췄다.

의도대로 수정됐다.
레벨 인스턴스를 이런식으로 만들고 수정하며 빠르고 효율적으로 환경요소들을 제작할 수 있다. 다음 영상에서도 이것을 활용할 계획이며 환경제작의 경우 시간을 투자할 수록 더욱 좋은 환경이 나온다. Quixel Bridge의 에셋을 내내 쓰며 개인적으로 크게 만족했다. 이정도의 퀄리티를 가진 에셋을 비슷한 분위기를 연출할 수 있게 준비돼있다는 것이 매우 큰 강점으로 작용할 수 있겠다.
8. UE5 콘솔 명령


그리고 UE5에는 명령어를 입력할 수 있는 콘솔이 존재한다. 여기에 "HighResShot [해상도]"를 입력하면 지정된 폴더로 Viewport 스크린샷이 바로 저장된다.
'Unreal Engine 5 > Tutorial Project: 시작해요 언리얼 2023' 카테고리의 다른 글
| Unreal Engine 5 Tutorial - 시작해요 언리얼 2023 (5) (0) | 2023.08.14 |
|---|---|
| Unreal Engine 5 Tutorial - 시작해요 언리얼 2023 (4) (0) | 2023.07.12 |
| Unreal Engine 5 Tutorial - 시작해요 언리얼 2023 (3) (0) | 2023.06.20 |
| Unreal Engine 5 Tutorial - 시작해요 언리얼 2023 (2) (0) | 2023.06.08 |