프로그래밍/언리얼엔진

[언리얼5] 카오스 파괴 시스템 튜토리얼 -1- Geometry Collection, Damage Threshold, Anchor Field

하바사 2024. 2. 4. 03:07

https://youtu.be/JbuuEmMCKdQ?si=ySNc3PzGp16_v5IJ

참고 영상

 

부서지는 메시 그룹 Geometry Collection 설정

① Fracture Mode로 변경

② 파괴할 Static Mesh를 선택한 후

③ 이 메시를 파괴모드로 만들어줄 콜렉션을 새로이 New합니다. 

 

Geometry Collection을 생성하면 이제 기존에 선택했던 Static Mesh가 조각(Boronite)으로 나눠지는, 피직스를 가지는 덩어리로 나뉘게 됩니다. 

 

Geometry Collection을 통해 부서진 물체를 만들 수 있습니다. 언리얼 엔진 내에서 제공하는 다양한 Property들에 값을 입력하여 조각들을 나누는 모양과 정도, 방식들을 조절할 수 있습니다.

 

카오스 Fracture는 계층 구조입니다. 한 단위를 Fracture하여 나눠진 Boronite들을 또 다시 개별적으로 다시 Fracture할 수 있습니다. 그러면 해당 Boronite들은 하위 레벨이 됩니다.

 

나눠진 조각들 중 몇개를 골라 다시 'Fracture'합니다. 

 

원하는 부위의 더 작은 단위의 조각들을 만들어냈습니다. Level1에 있던 조각들 중 일부를 골라 재조각화 하였으니 이것들은 Level2가 됩니다.

 

어떻게 자르는지 정한 다음에는 이 Fracture들의 Physics를 설정해줘야 합니다. 

Damage Threshold는 오브젝트의 데미지 저항정도입니다. 얼마만큼의 데미지를 받아야 부서지는지를 수치로 나타냅니다. 높은 값을 가질수록 오브젝트는 데미지에 대한 저항이 커져 잘 안 부서지게 됩니다.  

Use Size Specific Damage Threshold를 체크하면 적당한 값으로 임의조정됩니다.

 

잘린 평면의 텍스쳐(UV) 또한 정해줘야 합니다. 기본 머티리얼로 설정돼 있던 UV를 다른 것으로 바꿉니다.

그리고 AutoUV 기능을 이용하여 UV 텍스쳐를 자동으로 생성합니다. 기본으로 설정돼 있던 평면에 텍스쳐가 생깁니다.

 

 

앵커필드

이제 카오스 툴의 또 하나 중요한 요소인 앵커 필드(Anchor Field)에 대해 알아봅시다. 앵커 필드는 부서지는 부위를 조절해주는 기능입니다. 

앵커 필드 샘플은 에픽게임즈 마켓플레이스 '카오스 디스트럭션 데모' 프로젝트에서 다운받을 수 있습니다. 

 

 

데모 프로젝트를 다운 받고, 폴더 안에서 Blueprints와 Materials 폴더 내용물만 따로 빼서 작업중인 프로젝트로 복사해옵니다. 

 

종류

1. Anchor Field - 지정한 범위는 부서지지 않게 설정

AnchorField는 부서지는 Geometry Collection 오브젝트의 범위를 지정하여 해당 범위는 부서지지 않게끔 합니다.

다운받은 앵커필드를 이용해 범위를 감싸 부서지지 않을 부분을 지정합니다. 

 

그런 다음, Geometry Collection 액터의 Component 디테일 탭에 들어가, Initialization Fields항목에 해당 앵커 필드를 선택해 설정합니다.

 

그러면 선택한 영역은 부서지지 않게 됩니다.

 

 

2. SleepField - SimulatePhysics된 오브젝트 조각들을 정지시킴  

다운받은 슬립필드로 영역을 지정하면, 해당 영역에 들어간 부서진 Fracture 조각들이 이윽고 움직임을 멈추게 됩니다.

Threshold 값을 통해 멈추는 정도를 조절할 수 있습니다. 값이 클수록 즉시 움직임을 멈춥니다.

 

 

3. DisableField - 오브젝트 조각들의 콜리전을 Disable함

DisableField도 SleepField와 유사하게 오브젝트 조각들의 Destruction Simulation을 멈춥니다. 나아가, Collision을 없애 캡처와 같은 식으로 플레이어 캐릭터가 통과할 수 있습니다. Simulation이 더 이상 필요없을 때 최적화를 위해 사용할 만합니다. Magnitude 프로퍼티로 정도를 조절합니다.