일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- guide
- github
- c++
- Basic
- String
- 파이썬
- DP
- Unreal Engine 5
- Material
- Class
- w3school
- 기초
- C#
- Unity
- Tutorial
- dfs
- dynamic
- 시작해요 언리얼 2022
- 문제풀이
- 재귀
- 오류
- loop
- W3Schools
- 백준
- parameter
- python
- Algorithm
- Programming
- 프로그래밍
- UE5
- Today
- Total
행복한 개구리
Unreal Engine 5 Tutorial - 시작해요 언리얼 2022 (5) 본문
Unreal Engine 5 Tutorial - 시작해요 언리얼 2022 (5)
HappyFrog 2023. 5. 31. 01:56
1. Collision
여태까지 진행한 프로젝트를 에디터에서 Play해보면 Quixel의 Nanite 품질 에셋이 인게임에서도 잘 표현되며 캐릭터도 돌아다닐 수 있는 것을 볼 수 있다. 하지만 문제는 캐릭터가 모든 Actor들을 뚫고다닌다는 문제가 있다. 이것은 우리가 새로 배치한 Actor들에 Collision이라는 충돌판정 기능이 없어서 생긴 일인데, 충돌판정이 일어나도록 만들어주면 된다. 이런 Collision이 없어 발생하는 문제는 시네마틱 영상 제작과 같은 그저 보기위한 영상을 제작할 땐 문제가 되지 않을수도 있지만, 플레이어가 직접 인게임에서 상호작용을 하는 게임의 경우엔 심각한 문제가 될 수 있다.
Content Browser에서 해당 Actor의 Static Mesh Asset을 더블클릭하여 Static Mesh 편집기 창을 연다. 그리고 편집창의 상단에 보이는 Collision에서 Auto Convex Colllision을 눌러준다. 이 기능은 Static Mesh의 형태에 최적화된 Collision을 자동으로 생성시켜주는 굉장히 편리한 기능이다. 아마 Unity로 치면 Mesh Collider정도 되는 기능일 것이다.
Convex Collision작업이 수행되었다면 Apply를 눌러 Static Mesh에 적용시켜주자. 그러면 위 사진과 같이 초록 실선들이 보일텐데 이것이 충돌판정을 가진 영역을 나타내는 표시이다. 이제 다시 Play하여 캐릭터가 통과하지 않는지 확인해보자.
플레이하여 바위쪽으로 달려보면 이제는 통과할 수 없고 막히는 것을 확인할 수 있다.
위 사진을 보면 종종 어떤 에셋들은 convex collision을 적용할 때, 비어있는 공간이 Collision에 포함되고, 에셋은 조금씩 collision에 포함되지 않는 모습을 확인할 수 있다. 이것은 convex collision을 생성할 땐 에셋의 수치를 간소화하여 적용시키기 때문에 발생하는 문제인데, 이것들은 에셋의 Polygon을 그대로 collision 데이터로 활용하는 방법으로 이를 해결할 수 있다. 지금부터 알아보자.
Collision 오차가 발생한 Static Mesh의 Details 패널에서 Collision > Collision Complexity를 찾는다. 이것은 기본으로 Project Default라고 설정되어 있는데, Use Complex Collision As Simple로 바꿔준다.
다시 재생해보면 아까는 Collision의 영역이라 들어갈 수 없었던 공간에 들어가지는 것을 볼 수 있다.
2. Foliage(Plants)
Quixel Bridge에서 3D Plants 중 마음에 드는 것을 다운받아주자. 식생의 경우엔 그 수가 굉장히 많기 때문에 Medium ~ High 정도로 본인 PC 사양에 맞는 품질로 다운받아주면 된다.
3D Plants들은 이전 바위와는 또 다른 폴더 하위에 위치하게되며, 이 식생 에셋들은 Nanite를 활성화하면 안되는 에셋들이다.
또 다른 특징이라면, 앞서 바위 에셋들은 Static Mesh가 에셋 당 1개씩 다운받아졌는데, 식생 에셋들의 경우엔 Static Mesh가 굉장히 종류별로 다양하게 다운로드된다는 점이 있다. 식생은 반복하여 여러 개체를 배치해야하는데, 이 과정에서 자연스러운 모습을 연출하기위해 같은 종류여도 다양한 Static Mesh를 제공하는 듯하다. 이렇게 Static Mesh가 다른, 형태가 다르지만 같은 에셋을 Variation이라고 한다.
식물의 Material을 수정해보자. 주의할 점은 Billboard라고 되어있는 머티리얼이 아닌 것을 편집해야 한다는 것이다.
식생의 머티리얼은 앞선 바위들의 머티리얼과 조금은 다르다. 우선 Albedo에 Albedo Control같은 파트가 없다. 따라서 이 식생의 톤을 어둡게 만들고 싶다면 Albedo > Color Overlay에서 명도 조금 어둡게 수정하면 해당 팔레트의 색상값이 머티리얼의 색상값에 곱해져서 전체적으로 조금 어두워진다.
명도를 낮게 하면 색상조절 없이도 식물이 전체적으로 어두운 색을 띄게 되고, 명도를 높이면 그 반대가 된다.
이어서 Roughness는 바위때와 같다. Roughness가 낮으면 거친 표현이 적어지기때문에 물에 젖은 듯한 표현이 가능해진다. 식생의 경우엔 물에 젖은듯한 반짝임이 생동감을 살릴 수 있는 좋은 표현이 된다.
그리고 식생 머티리얼을 수정하며 개인적으로 신기했던 점인데, 머티리얼에서 바람효과를 on/off 할 수 있었다. Material 편집기에서 Wind 파트를 찾아 EnableGrassWind를 체크하고, 그 오른쪽에 있는 값까지 체크해주면 위 움짤과 같이 풀이 바람에 흔들리는 모습을 구현할 수 있다. 이렇듯 식생 또한 머티리얼 편집을 통해서 더욱 생동감있는 환경을 구현할 수 있다.
3. Foliage Mode
하지만 문제가 하나 더 남았다. 바위야 큼직하니 배치할 횟수가 비교적 적다고 해도, 식생은 엄청나게 작은데, 무수히 많이 깔아야 한다. 이것을 모두 드래그하려니 너무 힘들고, 복사 + 붙여넣기로 하자니 조금은 부자연스러워질 수 있을 것 같다. 이것을 해결할 방법이 바로 Foliage다.
Foliage란 다수의 Static Mesh를 아주 빠르게 배치할 수 있는 모드다.
우선 UE5 좌상단에 보이는 Select Mode를 Foliage로 모드를 변경해준다.
변경했다면 Viewport 좌측에 Foliage 패널이 나타난다. 아래쪽으로 드래그를 한다면 식생 에셋들이 등록되어있는 것을 볼 수 있는데, 만약 없다면 Content Browser에서 식생의 Static Mesh들을 드래그하여 추가하던가 '+Foliage'버튼을 눌러 추가하는 방법도 있다.
에셋에 마우스를 올리면 좌상단에 체크박스가 나타난다. 체크되어있다면 이 에셋을 배치하겠다는 것이고, 체크가 안돼있다면 에셋을 배치하지 않겠다는 뜻이다. 다중선택하여 체크하면 편하다.
배치시킬 에셋을 고른 상태에서 Viewport를 보면 파란색 구체가 나타나는데, 저 구체의 영역에 드래그를 하는 만큼 우리가 선택한 에셋이 무작위로 깔린다.
드래그를 하면 굉장히 빠르게 에셋들이 배치되는 것을 볼 수 있다.
그리고 이렇게 깔아둔 에셋들은 Foliage 패널에서 어떤 에셋이 얼마나 깔렸는지 확인할 수 있다.
Foliage 모드는 단순히 배치할 때만 사용되는 것은 아니다. 체크해둔 에셋들이라면 지울수도 있는데, 지우는 방법은 Shift를 누른채로 드래그하면 된다.
Foliage 모드를 이용하여 에셋들의 세부조정도 가능하다. 위 사진에선 체크된 에셋들의 크기를 키우기 위해서 Painting > Scale X 의 Max 값을 늘려줄 것이다. Scale X의 최소, 최댓값의 의미는 Foliage를 통해 배치되는 에셋들의 크기설정 범위를 뜻한다. 사진에선 1.0 ~ 1.0이라서 무조건 1.0 스케일의 에셋이 배치되지만, Max 를 2.0으로 변경한다면 Foliage를 통해 배치되는 각 에셋의 스케일이 1.0 ~ 2.0 사이의 스케일로 랜덤하게 배치된다.
이렇게 하면 드문드문 더 큰 에셋들이 등장하여 더욱 자연스러운 연출이 가능하다.
그 바로 윗부분의 Density / 1Kuu는 일정 범위 내의 밀도를 뜻한다. 이것을 낮춘다면 기존에 비해 상대적으로 듬성듬성 배치되며, 높인다면 더욱 촘촘히 배치된다.
Foliage 모드는 Actor또한 인식하여 에셋을 배치하기 때문에 이렇게 앞서 배치했던 바위 위에도 식생들을 배치할 수 있다.
그리고 Foliage의 페인트모드에서의 붓 크기는 Foliage 패널의 가장 위에 위치한 Brush Size를 통해 조절할 수 있다.
이렇게 '시작해요 언리얼 2022'를 처음부터 끝까지 쭉 따라해봤다. 이전에도 외국 개발자가 소개한 Tutorial을 진행한 적이 있지만, 해당 영상과 이번 영상에서 서로 다른 정보를 알려주는 부분이 꽤나 있어서 흥미로웠다. 실제로 활용할 수 있는 기능은 해당 영상에서 사용한 기능보다 훨씬 방대하게 많으니 궁금하면 이것저것 건드려가며 테스트해보는 것이 좋겠다.
'Unreal Engine 5 > Tutorial Project: 시작해요 언리얼 2022' 카테고리의 다른 글
Unreal Engine 5 Tutoral - 시작해요 언리얼 2022 (4) (0) | 2023.05.31 |
---|---|
Unreal Engine 5 Tutorial - 시작해요 언리얼 2022 (3) (0) | 2023.05.23 |
Unreal Engine 5 Tutorial - 시작해요 언리얼 2022 (2) (0) | 2023.05.23 |
Unreal Engine 5 Tutorial - 시작해요 언리얼 2022 (1) (0) | 2023.05.23 |