Chaos Destruction에 대한 간단한 튜토리얼을 작성하고 제가 겪은 버그에 대해 공유하려고 합니다.
틀린 점이 있다면 댓글로 가르침을 전수해주세요
디스트럭션 퀵스타트
언리얼 엔진 디스트럭션 시스템 퀵스타트 가이드
docs.unrealengine.com
한글로 된 튜토리얼도 있어서 먼저 보고 오면 더 수월할 것 같습니다.
사용법
1. 부서짐 효과를 주고 싶은 메시를 레벨에 불러온다.
2. 프랙쳐모드로 들어간다. (Shift + 6)
3. 생성탭의 신규를 눌러 Geometry Collection을 생성해주자
생성을 하면 아래 사진처럼 바뀌는데 이제 물체를 원하는 모양 or 랜덤으로 조각낼 수 있는 준비가 된 것이다.
이제 프랙쳐 탭에서 원하는 것을 선택하면 되는데 일반적으로 사용하는 균등(Uniform)과 폭발 효과에 사용하면 좋은 클래스터, 얼음을 발로 밟았을 때처럼 피격당한 위치를 기준으로 쪼개지는 방사상(Radial)
새로 생성되는 기즈모를 기준으로 말 그대로 평면으로 자르는 평면
큐브처럼 자르는 슬라이스,
벽돌처럼 자르는 브릭 (슬라이스랑 비슷함)
특정 액터의 모양대로 본떠서 부수는 메시 등이 있다.
나는 가장 만만한 균등(Uniform)을 적용해서 테스트 해볼 것이다.
아는대로 옵션들에 대해서 설명하자면,
파열값 : 해당 옵션을 조절해 물체가 부서졌을 때 어떤 모양을 갖게 되는지 미리 볼 수 있다. (0~1)
최소, 최대 보로노이 사이트 : 물체를 몇등분으로 쪼갤 것인가? (레벨마다 적용 가능)
랜덤 시드 : -1로 설정하면 알아서 쪼개줌, 항상 동일한 패턴으로 쪼개고 싶다면 특정 값을 입력
진폭 : 값이 0에 가까울 수록 단면이 깔끔하게 쪼개진다. cm단위
주파수 : 마찬가지로 단면에 노이즈를 주느냐 마느냐를 결정하는 값이다. 진폭과 함께 섞어서 쓰면 자연스러운 질감을 표현할 수 있을 것 같다.
노이즈 관련 항목들은 개인 취향이니 직접 쪼개보면서 느껴보는게 좋을 듯...
4. 쪼개기
원하는대로 옵션을 설정하고 레벨에 배치된 GC를 클릭 후 (노란색과 쪼개지는 기즈모가 나옴) 프랙처를 누르면
이렇게 쪼개지게 된다. 그런데 랜덤으로 쪼개지다보니 아주 조각으로 깨지는 경우도 있는데 저렇게 깨지는건 자원만 잡아먹고 쓸모가 없기 때문에 이 경우에는
작은 조각을 병합하는 기능을 사용하면 된다.
일정 크기 이하의 조각들은 인접한 조각으로 합칠 수 있다.
오른쪽 hierarchy 창에 상대 크기가 나온다.
또한 조각이 너무 클 경우 해당 조각만 쪼갤 수 있다.
쪼개고 싶은 조각을 선택한 후 위의 과정을 입맛대로 반복해주면
더 작은 조각들로 나누어진다.
카오스 디스트럭션 델리게이트 & 이벤트
돌이 박살났는지 아닌지 확인하려면 해당 Geometry Collection의 옵션에서 notify를 설정해주어야한다.
중단 노티파이 (Notify Break) : 해당 물체가 부서졌을 때 이벤트를 발생시킴
콜리전 노티파이 (Notify Collision) : 해당 물체가 무언가와 부딪혔을때 이벤트를 발생시킴
해당 Boolean 옵션을 체크해주고 각각 On Chaos Break Event와 On Chaos Physics Collision을 이용해 원하는 기능을 구현해주면 된다.
이슈 및 해결 방법
여기서부터는 내가 한참 고생한 이슈에 대해 써보겠다.......
원래는 Chaos Destruction을 이용해서 곡괭이로 바위를 부술 때 효과를 주려고 했다.
튜토리얼을 보고 깨지는건 구현하였지만 계속 물체를 가만히 놔둬도 그냥 깨져버려서 문제점을 찾느라 눈물을 흘리고 있었다.
그러던 중 해결책을 발견하였다.
생성한 GC의 질량이 너무 크게 설정되어 있어서 그렇다고 한다... 내부 조각들끼리 부딪히는건가? 잘 몰루...
암튼 이렇게 하니까 바닥에 놔둬도 그대로 있게 된다......
정확한 이유를 아시는 분은 알려주시면 감사하겠습니다 ㅠ
'Unreal' 카테고리의 다른 글
[UE5] 언리얼엔진 하위 위젯에서 부모 위젯 참조하는 방법 /C++ (0) | 2024.03.11 |
---|---|
[UE5/언리얼엔진5] Chaos Destruction Exporting geometry with too many verticies 경고 (0) | 2024.02.22 |
[UE5/언리얼엔진5] TSubClassOf, TSoftClassPtr 캐스팅 방법 (2) | 2024.01.24 |
[UE5/언리얼엔진5] 블렌더를 이용해서 믹사모 애니메이션 루트 본 추가 (0) | 2023.12.01 |
언리얼 엔진 멀티플레이 RPC관련 디버깅 (0) | 2023.10.28 |