Unreal Engine 5/Tutorial Project: 시작해요 언리얼 2023

Unreal Engine 5 Tutorial - 시작해요 언리얼 2023 (3)

HappyFrog 2023. 6. 20. 01:17

 

(6) 시작해요 언리얼 2023 | 3주차 | 레벨 제작하기 II - YouTube

 

해당 게시물은 'Unreal Engine KR 유튜브 채널의 시작해요 언리얼 2023 | 3주차 | 레벨 제작하기 Ⅱ'를 시청하며 따라한 내용입니다.

 


0. 공장 출입구 만들기

지난 영상 과제로는 문을 만드는 것이 나왔다고 한다. 나도 급히 한 면의 일부 타일을 제거하여 벽 옆면에 사용했던 타일로 살짝 막아 문을 연출했다.

 

 

1. 빛 처리

지난번엔 위 사진에서 보이는 듯이 갑자기 어두워지거나 밝아지는 등의 빛효과가 작업에 방해가 되기에 Unlit으로 설정하고 작업하는 방법을 소개했다.

 

UE5.1버전에선 이런 현상을 독특한 방법으로 해결할 수 있는 기능이 추가됐다. 이번에 소개할 기능은 작업할 때 뿐만 아니라 현재 작업하고 있는 환경과 같이 밀폐된 공간에서의 빛 제어를  능동적으로 할 수 있게끔 해주는 기능이다.

 

Place Actors 패널에서 post를 검색하여 PostProcessVolume을 찾아 환경에 배치해주자.

 

포스트 프로세스 볼륨의 Details 패널에서 Infinite Extent(무한 규모)를 검색하여 체크해주자. 이것이 활성돼야 앞으로 적용시키는 변화들이 월드 전체에 적용된다.

 

다시 Details 패널에서 Skylight를 검색하여 Skylight leaking을 조절하자. 이것은 빛이 밀폐된 공간에 비치는 정도를 설정하는 수치인데, 보다시피 최대로 올려도 0.02정도로 굉장히 낮은 수치이다. 하지만 이 설정을 통해 어둡던 공장 내부를 밝게 연출할 수 있으니 적당히 조절하자. 나는 지난 시간에 어두워서 더 뚫었던 천장의 구멍들을 메꾸고 Skylight를 조절했다.

 

Post Process에는 굉장히 많은 기능이 있는데, 이것들은 5회차 강의에서 다룰 예정이라고 한다. 

 

2. 식생 배치(Foliage)

1) 에셋 다운로드

자, 이제부터는 꾸며놓은 공장 내부에 식생들을 배치하며 환경의 디테일을 한껏 끌어올려 자연스러운 환경을 연출할 것이다. 이것을 배치하기 위해 UE5.1버전의 Nanite Foliage 기능을 이용할 것이다.

 

식생을 다운받자. Quixel Bridge로 이동하여 3D Plants > Grass 로 들어가 Thatching Grass, Kikuyu Grass, Grass, Wheat Grass, Speargrass 를 다운받았다. 식생의 종류는 본인이 원하는 것으로 다운받아도 괜찮다.

 

식생은 Highest > High > Medium > Low 로 품질이 좋은데, 식생의 경우엔 8k로 표현되는 Highest4k로 표현되는 High, 2k인 Medium 의 육안으로 봤을 때 차이가 크게 나지 않아 용량을 줄이고 싶다면 High 또는 Medium을 다운받아 사용하면 된다. 영상에서는 High를 사용한다.

 

그리고 3D Plants > Shrub 에서 Black Locust, Bog Bilberry, Acacia 를 받아주자.

 

그리고 어울릴법한 꽃 식생도 몇가지 더 받았다.

 

2) Foliage Mode(Shift + 3)

이제 환경으로 돌아와 Foliage들을 배치해보자.

 

식생들 또한 Static Mesh를 가지므로 상위 폴더에서 Static Mesh 필터를 통해 모든 식생을 한번에 볼 수 있다. 하지만 이런식으로 하나씩 배치하면 너무 오랜 시간이 든다. 이것을 훨씬 빠르고 자연스럽게 배치할 수 있도록 해주는 것이 UE5에 존재한다. 바로 Foliage Mode다.

 

Viewport 좌상단의 Selection 모드에서 Foliage 모드로 변경하자. 기본 단축키로는 Shift + 3이다.

 

Foliage 모드를 선택하면 Foliage 패널이 나타나는데 여기에서 아랫쪽을 보면 방금 전에 다운받은 식생들이 목록에 올라와 있는 것을 볼 수 있다. 이것들은 그대로 그냥 쓸 수 있는 것은 아니고 모두 선택해줘야 사용할 수 있다.

 

Click one Foliage > Ctrl + A > Click check box

모두 선택하는 방법은 간단하다. 폴리지 패널의 폴리지들 중 아무거나 하나를 선택하고 Ctrl + A를 누르면 전체 선택이 된다. 그리고 폴리지 에셋에 마우스를 올려 체크박스가 나타나면 체크해주자. 그럼 모든 에셋이 다 체크가 될 것이다. 여기서 선택된 에셋은 Foliage 모드에서 배치가 될 것이며 만약 따로 배치를 하고싶거나 배치를 원하지 않는 에셋이라면 체크를 해제하자.

 

선택을 마쳤다면 Foliage 모드에서 Viewport에 마우스는 무언가 범위를 표시하는 구형태로 바뀔텐데, 빈 공간에 드래그를 해보면 식생들이 빼곡하게 깔리는 것을 볼 수 있다.

 

3) Nanite 설정 및 가시범위제한 해제

LOD

하지만 배치된 식생은 멀리서 볼 때와 가까이서 볼 때 모습이 달라진다. 이것은 LOD라는 기술인데, UE에서 사용하는 나나이트는 이 LOD의 완벽한 상위호환이다.

 

* LODLevel of Detail의 약어로, 매우 빠르게 이동하거나 멀어지는 등 가시환경에 변화가 생길 때, 화면에 표현되는 에셋들을 세부사항이 떨어지는 등 저품질의 모델로 교체하여 표현하는 방식이다. 표현 결과는 UE5의 Nanite(나나이트)와 비슷하지만, 나나이트는 하나의 모델로 가시환경에 따라 알맞게 렌더링하는 기술이다. 따라서 Nanite의 메모리 사용량이 LOD에 비해 적다고 할 수 있다.

 

이렇게 나나이트가 활성되지 않고 LOD가 표현되는 식생들에 나나이트를 적용시켜주자. Content Browser에서 Megascans > 3D Plants 하위의 모든 Static Mesh를 선택하여 나나이트를 적용하자.

 

Nanite

하지만 나나이트로 변경 후에도 거리가 멀어짐에 따라 식물의 표현이 LOD와는 다른 방식으로 좀 듬성듬성 표현되는 현상을 볼 수 있다.

 

나나이트로 표현되는 것이 LOD와는 다르기도 하고 상위호환 기술에 메모리사용도 적긴 하지만, 멀리서도 나나이트 에셋들이 원래대로 표현되게 하고 싶다.

 

Asset Actions > Bulk Edit via Property Matrix

Content Browser에서 에셋의 Static Mesh들을 선택한 뒤, 우클릭 > Asset Actions > Bulk Edit via Property Matrix(프로퍼티 매트릭스를 통한 대량 편집)를 선택하자.

 

Property Matrix

프로퍼티 매트릭스가 떴다면, 우측에 있는 Display 패널에서 NaniteSettings > Nanite Settings > Preserve Area(영역 보존)을 체크해주자. 이 옵션은 거리에 관계없이 에셋의 외형을 그대로 표현할 것인지, 기존 nanite처럼 멀어지면 저품질의 렌더링을 통해 메모리를 아낄것인지 결정할 수 있게 해준다. 체크를 했으니 거리에 관계없이 에셋의 외형을 그대로 표현하게 된다. 체크 후에 잠시 동안의 로딩이 필요하다.

 

로딩 후에 살펴보면 이젠 먼 거리에서도 식물들이 원래 품질대로 렌더링되어 수북히 표현된다.

 

4) Foliage Mode: Fill

이제 테스트삼아 깔았던 이 식물들을 지워주자. 이것들은 Foliage Mode 에서 Shift + Drag를 통해 지울 수 있다. 지우는 객체들은 Foliage Mode에서 체크된 에셋들만 지워지니 지울 에셋들을 잘 확인하여 체크하고 지우자.

 

이제 공장 내부에 폴리지를 깔아보면, 배치한 Static Mesh들 위에도 깔리는 것을 볼 수 있다. 하지만 만약 바닥에만 깔리는 것을 원한다면, 설정을 수정하여 원하는 바를 구현할 수 있다.

 

설정에서 수정할 것은 다음과 같다. Foliage Mode에서 Paint로 되어있던 설정을 Fill로 변경하고 Viewport 에서 보이는 바닥에 한번 클릭해주자.

 

Foliage Mode > Fill

 

그렇다면 공장 내부뿐만 아니라 바닥(Plane) 전체에 식물들이 깔리는 것을 볼 수 있다. 

 

이 상태에서 일부 풍성한 식물들의 밀도를 변경하여 조금 더 자연스러운 연출을 할 것이다.

 

Remove Foliages

우선 배치된 식생을 모두 제거하자. Foliage 패널에서 에셋부분에 Ctrl + A로 모두선택한 후 우클릭 > Remove로 식생을 지우자.

 

Yes

맵 전체에 깔린 에셋의 수가 나오며 정말 지울거냐고 물어본다.

 

그리고 건초 종류부터 배치해보려한다. 따라서 Grass라는 이름이 포함된 에셋들의 Static Mesh를 비어있는 Foliage 패널의 에셋부분에 추가한다. (사진에선 제외됐지만 Kikuyu grass도 함께 배치했다.)

 

만약 Fill을 활용하여 바닥에 건초를 까는데 식생의 밀도를 조절하고 싶다면 Foliage 에셋 아래쪽에 보이는 Painting > Density값을 조절해주면 된다. 이것은 처음엔 100으로 설정돼있다.

 

click once vs twice

Fill을 사용하여 식생을 배치하는 방법은 Viewport의 바닥을 클릭할 때마다 식생이 배치된다. 위 사진에서 왼쪽은 밀도10을 기준으로 1번 클릭햇을 때, 오른쪽은 2번 클릭했을 때의 모습이다.

 

또한 위 사진과 같이 Foliage 에셋을 원하는 것만 선택하여 배치하게 할 수 있다. 키가 너무 큰 식생은 너무 자주배치되는 것이 개인적으론 별로 예쁘지 않다고 생각하영 키가 큰 식생은 빼두고 바닥에 깔리는 식생들을 우선적으로 배치한 후, 키가 큰 식생을 다시 배치할 것이다.

 

그리고 Painting > Scale X를 조절하면 지정한 범위 내에서 에셋의 크기가 무작위로 설정되어 배치된다. Min 1, Max 1일 때 보단 훨씬 자연스러운 모습이 될 수 있다.  

 

Grass류의 에셋 배치를 마쳤다면 이제 남은 식생에셋들을 배치하자. 마찬가지로 Foliage패널에 에셋을 추가하고 아직 배치를 안한 에셋들은 수량이 0으로 표시될테니 이것들을 Shift + 클릭으로 선택하여 체크하여 마찬가지로 배치해주자.

 

5) Foliage Material

이제 배치된 식생들을 조금 수정할 것이다. 배치된 폴리지들 또한 스태틱 메시와 머티리얼로 이루어진 에셋이므로, 머티리얼을 수정한다면 맵에 배치된 폴리지 또한 일괄 수정된다.

 

3D Plants 에셋은 2가지 머티리얼로 구성돼있다. 간단하게 보자면, Billboard라고 적힌것과 그렇지 않은 것인데, 여기서 Billboard 머티리얼은 Nanite를 적용시키지 않은 에셋에 활용되는 머티리얼로, 나나이트가 없던 시절에 사용하던 머티리얼이라고 보면 되겠다. 현재 우리는 모든 에셋을 Nanite로 사용중이므로 Billboard 머티리얼이 전혀 필요없는 상태다. 따라서 지워도 무관하다.

 

Roughness 1 vs 0.5

식생의 머티리얼에서 Roughness를 살펴볼건데, Roughness란 거친 질감이 표현되는 정도를 정하는 영역이며, 이것이 낮으면 매끈한 표면이 표현되어 물에 젖거나 빛반사를 잘 하는 모습을 연출할 수 있다. 위 사진에서는 Roughness 1과 Roughness 0.5를 비교하는 모습이다.

 

이것을 적당히 조절하여 원하는 모습을 연출하자. 식물들의 표면질감이 매끈하고 물에 젖어있는 듯이 빛 반사가 잘 되는 것을 선호한다면 Roughness 값을 낮추고, 그렇지 않다면 Roughness값을 올리면 된다.

 

Wind - Enable Grass Wind

이어서 식생 머티리얼에서 07 - Wind에서 EnableGrassWind를 켜준다면 해당 머티리얼을 사용하는 식물 에셋들이 바람에 흔들리는 효과를 연출할 수 있다. 바람의 세기조절이 필요하다면 Wind Intensity를 조절하자. 영상에서는 0.03으로 수정했다. 바람의 세기나 바람이 통하는 높이도 조절이 가능하니 원하는대로 조절하자. 영상에서는 적당히 조절하라고 했고, 나의 설정값은 Wind Intensity = 0.03, Wind Height = 0.35, Wind Speed = 0.25로 조절했다.

 

Wind Height 0.5, Wind Speed 0.5, Wind Intensity 1.5, Enable Grass Wind

적용하면 Viewport에서 바로 확인할 수 있다.

 

GIF임

나의 설정값대로 적용한 식생이며, 아주 자세히 봐야만 흔들리는 모습이 보인다. 개인적으론 너무 흔들리는 모습은 오히려 멀리서 봤을 때 어색하고 산만한 느낌이라 멀리서 봤을땐 모르지만, 가까이서 자세히 살펴보면 흔들리는 느낌을 주고싶어 위와 같이 설정했다. 더 흔들리는 모습을 연출하고 싶다면 Wind Speed나 Wind Intensity쪽을 수정하면 될 것이다.

 

여기까지 설명한 Wind 기능은 Nanite와 함께 사용하게 된다면 높은 사양을 요구하게 되므로 작업에 렉이 걸리는 등 부작용이 나타날 수 있는데, 그렇다면 굳이 킬 필요는 없다. 

 

바닥에 풀만 자라고 있으면 조금 밋밋하기도 하고, 폐공장인데 벽돌과 흙정도는 굴러다녀야 자연스러울 것 같아 추가적인 에셋을 다운받아 배치해보자. 

Quixel Bridge - 3D Assets - Cement, Rubble

위 사진에 나와있는 에셋들을 다운받았으며 사진에는 High Quality로 설정되어있지만 Nanite로 변경하여 다운받았다.

 

다운로드가 끝났다면 Add를 눌러 프로젝트에 추가하자.

 

Rubbles

이렇게 생긴 에셋들이다.

 

식생뿐만 아니라 이러한 에셋들도 Foliage Mode를 활용하여 간편하게 배치할 수 있다.

 

Add Static Meshes to Foliage Mode

Rubble 에셋들의 Static Mesh를 Foliage Mode에 드래그하여 추가해준다. 그리고 Rubble을 배치할 것이므로 다른 식생이 추가로 배치되는 것을 보고싶지 않다면 체크를 해제해주자.

 

Foliage Mode에 추가할 때 이런 창이 에셋 갯수만큼 뜨는 것을 볼 수 있는데, 이것은 Foliage용 Static Mesh를 자동생성 하는 것이며, 자동으로 생성된 Static Mesh Foliage를 어느 위치에 저장할 것이냐를 묻는 것이다. 기본 설정으로 각 Static Mesh의 폴더가 지정되어 있으니 Save하여 계속 넘겨도 좋다.

 

Foliage Mode - Fill > Rubble Details / Excluded Rubble Asset

맵 전체를 볼때는 모르겠지만 적어도 폐공장 내부엔 흙이 가득히 어질러진 모습이 보기 좋을듯하여 Density(밀도)를 10으로 설정했다.(영상에서는 15) 그리고 Scale X의 최솟값을 0.8, 최댓값을 1.6으로 설정하여 배치되는 흙의 크기를 불규칙하게 설정했다.

 

이 과정에서 왼쪽 사진을 보면 가장 왼쪽 Rubble 에셋이 체크해제 되어있는데, 이것은 오른쪽 사진에서 볼 수 있듯이, 벽에 붙여놓아야만 자연스러운 연출이 되는 Rubble 에셋이었다. 그렇기에 무작위로 배치되는 Fill 모드에서는 우선 제외하고, 후에 따로 직접 배치를 하는 식으로 활용하는게 좋을 듯하여 임의로 제외하고 진행했다.

 

현재까지의 배치상황을 Fog를 꺼놓은 상태에서 살펴보았다. 바닥도 충분히 입체감이 살았고, 식생과 햇빛, 여러 오브젝트가 조화롭게 어우러져 아름다운 환경이 연출되고 있다.

 

다만 아쉬운 점은, Plane에 적용한 Material과 톤이 달라 방금 배치한 Rubble Foliage들이 너무 밝다는 것이다. 물론 이 부분은 앞서 식생배치를 하며 수정했듯이, Rubble의 Material을 수정하여 톤을 맞춰줄 수 있다.

 

머티리얼 수정을 하니 이젠 바닥과 크게 색차이가 나지 않으며 더욱 자연스러워졌다. 

 

3. Decal

Quixel Bridge > Decals

이번엔 Decal이란 것을 활용할 것이다. Decal은 위 사진에서 보이듯이 그라피티나 생채기 같은것을 표현하는 것으로 보이는데, 이것들은 우리가 배치한 환경의 표면에 붙이는 스티커와 같은 에셋이라고 이해하면 쉽다.

 

Leak

여기서 Leak을 검색하여 하나를 받아보자. 이것은 녹슨 표현을 하는 데칼이며, 용량 절약을 위해 한단계 낮춘 품질로 받았다. (데칼의 경우 품질이 낮아도 다른 에셋에 비해 크게 티나지 않는다)

 

다운이 완료되고 프로젝트에 추가하면 이 에셋의 내용물이 보일텐데, Surface와 같이 스태틱 메시는 없고 머티리얼과 텍스쳐만 있는 것을 볼 수 있다.

 

Decal Material(Green box)

하지만 이 머티리얼이 굉장히 독특한데, 앞선 내용에서 언급했듯이 오브젝트는 Static Mesh + Material로 이루어져있다. 따라서 머티리얼을 스태틱 메시에 적용시키면 해당 스태틱 메시에서 머티리얼이 표현되는 것을 볼 수 있는데, 이 데칼 머티리얼은 Static Mesh에 구애받지 않고 데칼이 적용되는 공간에 있는 Static Mesh들에 영향을 준다. 위 사진에서 보면, 지붕과 공장의 벽은 여러개의 스태틱 메시와 머티리얼로 구성되어 있는데, Static Mesh의 갯수나 Material의 유무에 관계없이 그저 Decal이 표현하는 영역에 있는 Static Mesh라면 Decal이 여러개의 Static Mesh에 이어져서 해당 메시의 머티리얼 위에 덮어씌우는 형식으로 표현된다. 위 사진에서 초록색 Gizmo가 Decal의 영역이다.

 

Decal's Gizmo

데칼의 Gizmo는 위와 같이 생겼다. X, Y, Z축을 나타내는 기즈모 외에 1개가 더 있는데, 이것은 데칼이 적용되는 방향을 나타낸다. 따라서 위 사진에서는 보이는 희색 주름진 벽에 데칼이 적용되는 것이다. 이것은 Gizmo를 통해 회전시키고 이동하여 적용할 수 있으며, 마찬가지로 Scale의 변경이 가능하다.

 

따라서 데칼은 해당 영역에 있는 모든 메시에 적용되기 때문에 영역의 위치와 스케일을 적절히 수정하여 배치하는 것도 중요하다. 그렇지 않으면 녹슨 표연을 하는데 위 사진처럼 드럼의 윗부분까지 포함되어 이상하게 보일 수 있기 때문이다.

 

Receives Decals

만약 데칼의 영역수정으로 제외시키기 어려운 액터가 데칼의 영역내에 존재한다면, 해당 액터를 선택한 후 Details > Decal 검색 또는 Advanced > Receives Decals 설정을 풀어버리면 데칼의 영향을 받지 않는다.

 

Opacity Intensity 1 vs 2

그리고 Decal 역시 머티리얼이기 때문에 편집기를 통해 여러 속성을 조절할 수 있는데, 이 중 Opacity Intensity(불투명도)는 데칼을 얼마나 진하게 표현할 것인지에 대한 변수라고 볼 수 있다. 이것이 높을수록 표현은 짙어진다.

 

Opacity Intensity 1 vs 2 in Viewport

위는 불투명도 1, 2일때 각 실제 적용된 데칼의 모습이며, 1보다 올리는 것은 개인적인 시각에선 너무 진하다고 생각되어 1로 진행했다.

 

이런 데칼은 반복적인 느낌을 주는 배치를 환기시킬 수 있는 요소로, 적절한 곳에 알맞게 잘 배치한다면 반복되는 환경이더라도 색다른 느낌을 줄 수 있다.

 

Filter > Material Instance

추가로 Quixel에서 다양한 데칼을 받아 공장을 꾸며보자. 

 

Decal 에셋을 한번에 모아서 보는 방법은 Content Browser에서 Decal 폴더를 선택한 뒤, Material Instance를 필터링해주면 한 눈에 데칼을 볼 수 있다.

 

Concrete Decal = -1, No Guns = 0, Hopeless = 1

데칼이 겹치는 경우엔 노출 순서를 정하여 원하는 데칼을 가장 위에 덮어씌울 수 있다. 이 순서는 데칼의 Details 패널에서 Decal > Sort Order를 수정하면 되며, 이것의 수가 높은 것이 가장 마지막에 덮어씌우는 데칼이라 할 수 있다. 위 사진에서 콘크리트가 파괴된 것을 표현하는 데칼은 -1, No Guns라고 씌여진 흰색 그라피티 데칼은 0, 연보라색 Hopeless는 1로 설정했다.

 

오늘 영상은 그라피티 장식으로 마무리하며 여기서 끝난다. 위 사진들은 모두 Fog를 제거한 상태이다.