
게임에서 오브젝트와 상호작용하여 파괴하는 기능은 몰입감을 높혀주고 유저가 직접 상호작용을 하고 있다는 느낌을 들게 해준다
파괴가능한 오브젝트를 만드는 전통적인 방법은, 오브젝트를 모델링 할 때 온전한 오브젝트 모델 하나와 부숴져서 잘게 쪼개진 모델을 만든 후에, 게임에서 사용할 때는 온전한 오브젝트를 배치해두었다가 상호작용이 발생하면 잘게 쪼게진 오브젝트로 바꿔치기 해서 각각의 조각들에게 물리효과를 주는 방식으로 사용했다
하지만 이런 방법은 작업자의 역량에 따라서 부서지는 물체의 재질을 고려하여 더 자연스럽게 쪼갤수 있다는 장점도 있지만 작업 시간이 많이 소요된다는 단점을 가지고 있다
그래서 게임 개발자들은 이렇게 3D 모델을 일일이 수작업으로 쪼개지 않고 프로그래밍으로 자동으로 쪼개는 방법을 연구했다
그렇게 해서 나온 기능 중에 하나가 바로 온전한 메시를 자동으로 쪼개주는 '디스트럭터블 메시' 기능이다
디스트럭터블 메시 기능을 사용하기 위해 먼저 First Person으로 프로젝트를 생성한다
모드 변경창에서 Fracture로 바꾸고, 맵에서 디스트럭터블 메시로 만들 액터를 선택 후에 New 버튼을 누른다
그러면 Geometry Collection Asset을 생성할 경로를 지정하라는 창이 나오는데, 여기서 Chaos 폴더를 새로 생성하고
Create Geometry Collection 버튼을 클릭한다
그럼 이제 조각할 툴에 대해서 알아보자
왼쪽 Fracture 섹션을 보면 많은 방식의 모드가 있는데, 대표적으로 Uniform을 보도록하자
Uniform을 선택하면 이렇게 박스에 프랙쳐 된 조각들인 클러스터(Cluster)가 보이는데, 여기서 우선 설정을 건드리지 않고 파란색의 Fracture버튼을 클릭한다
그리고 Explode Amount를 조절하면 쪼개진 조각 사이의 거리가 멀어지면서 스태틱 메시가 어떻게 쪼개졌는지 확인할 수 있다
우선 Fracture Hierarchy 창을 보면 쪼개진 20개의 조각들이 보이고, 각각 조각들을 눌러보면 어떤 조각을 나타내는건지 알 수 있는데, 파란색으로 되어있는 0번은 전체 큰 틀의 클러스터를 의미하고 하위 1,2,3,''',20 번 조각들은 그 안의 각각 클러스터들을 의미한다
여기서 파란색으로 되어있는 0번 조각을 선택후 Fracture을 다시 눌러보면
처음 Fracture을 눌러서 나온 프랙쳐 조각들(1,2,3,''', 20)의 하위 조각들(21, 22,'''128)을 만들어 더 세분화 되어진다
마지막으로 한번더 0번 클러스터를 선택후 Fracture 버튼을 눌러 더 잘게 나누어 준다
그리고 Level Statistics를 보면 Level 단계를 볼 수 있는데, 간단하게 이야기하면 오브젝트가 부숴질때 레벨 순서대로 조각이 나눠진다는 것을 나타낸다
Level0은 처음에 0번 조각하나를 의미하고, Level1은 Fracture를 통해 나누어진 20개의 조각을 의미한다
[총 Fracture 버튼을 3번 눌렀으므로 처음 기본 조각인 0번을 제외하고 부숴질 때 Level1이 먼저 부숴진 후에 Level2,3 순서대로 쪼개어진다]
그러면 이제 이 디스트럭터블 메시가 게임 내에서 부서지는 모습을 확인해보자
Cluster탭에서 Auto를 선택 후 Cluster Sites를 200정도로 맞춰놓고 Auto Cluster 버튼을 눌러준다
[이것은 프랙쳐 된 조각들을 지정한 클러스터 수로 모아준다]
프랙쳐 뼈대를 없애주기 위해 Detail창에서 [Chaos Physics > General] 에서 Show Bone Colors를 체크 해제해준다
그리고 쉽게 부수기 위해서 [Chaos Physics > Damage > Damage Threshold] 에서 Index값들을 500으로 낮춰준다
- Index 0: 가장 낮은 레벨의 파괴 강도 임계값
- Index1: 중간 레벨의 파괴 강도 임계값
- Index2: 가장 높은 레벨의 파괴 강도 임계값
아까 Level Statistics의 Level 단계에서 봤듯이 디스트럭터블 메시는 부숴질때 순서를 가지고 부숴지는데, 이러한 배열을 사용하면 내가 원하는 강도로 파괴하는 효과를 구현할 수 있다.
예를들어, 높은 레벨의 파괴 강도 임계값을 높게 설정하면 해당 레벨의 디스트럭터블 메시는 더 강한 충돌이 필요하게 되어, 더 높은 레벨에서만 파괴되도록 제어할 수 있다
그리고 생성된 디스트럭터블 메시를 높게 배치하고 플레이버튼을 누르면
이런식으로 오브젝트가 떨어진 후 산산조각이 나면서 부숴지는 모습을 확인할 수 있다
자세한 것은 언리얼엔진 문서를 참고하도록 하자
https://docs.unrealengine.com/5.1/en-US/cluster-geometry-collections-user-guide-in-unreal-engine/
Cluster Geometry Collections User Guide
Overview of the various methods of clustering Geometry Collections.
docs.unrealengine.com
VR게임 개발을 위한 언리얼엔진/C++ 공부한 내용 끄적이기...
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!