디스트럭션 개요

사용 가능한 카오스 디스트럭션 툴로는 무엇이 있으며, 언리얼 엔진에서 그러한 툴을 함께 사용하여 디스트럭션을 생성하는 방법을 개괄적으로 알아봅니다.

카오스 디스트럭션(Chaos Destruction) 시스템은 시네마틱 퀄리티 레벨의 디스트럭션을 실시간으로 구현하기 위해 사용되는 언리얼 엔진 4(UE4) 내 툴 컬렉션입니다. 이 시스템은 훌륭한 비주얼을 제공할 뿐 아니라 높은 퍼포먼스를 내도록 최적화되어 있으며, 아티스트와 디자이너가 콘텐츠 제작을 더 세밀하게 제어할 수 있게 해줍니다. 또한 이 시스템은 지오메트리 컬렉션(Geometry Collections) (파괴할 항목 정의), 프랙처링(Fracturing) (지오메트리 컬렉션의 파괴 방식 정의), 클러스터링(Clustering) (지오메트리 컬렉션을 분리할 다양한 레벨 정의)을 활용합니다. 지오메트리 컬렉션의 파괴 방식을 제어할 수 있는 추가 툴로는 연결 그래프(Connection Graph) (지오메트리 컬렉션의 프랙처 조각이 서로 연결되는 방식)와 필드(Fields) (직접적으로 프랙처 조각과 상호작용하고 프랙처 조각을 제어하는 메서드) 등이 있습니다.

프랙처 에디터

카오스 디스트럭션 기능에 액세스하려면 모드(Modes) 드롭다운 메뉴를 열고 프랙처(Fracture) 를 선택합니다.

FractureEditorSelect.png

프랙처 에디터(Fracture Editor)모드 툴바(Mode Toolbar) 가 표시됩니다.

FractureEditorEnabled.png

프랙처 에디터와 모드 툴바를 사용하면 지오메트리 컬렉션 을 생성할 수 있으며, 지오메트리 컬렉션을 프랙처링하고 클러스터링하는 방식을 제어할 수 있습니다.

지오메트리 컬렉션

카오스(Chaos) 시스템 내의 디스트럭션은 지오메트리 컬렉션이라는 새로운 종류의 에셋으로 시작됩니다. 지오메트리 컬렉션 에셋은 하나 이상의 스태틱 메시로 빌드될 수 있으며, 스태틱 메시에는 블루프린트나 중첩된 블루프린트에 수집된 스태틱 메시가 포함됩니다. 생성된 지오메트리 컬렉션은 프랙처 에디터를 사용하여 분리할 수 있으며, 분리 방식을 결정하는 세팅을 정의할 수 있습니다. 카오스 툴을 사용하여 프랙처링하고 분리하기 전에 분리 대상 및 지오메트리 컬렉션의 생성 방식을 계획해야 최고의 결과를 얻을 수 있습니다.

컨스트럭션 모범 사례

지오메트리 컬렉션을 생성할 때 이상적으로 콘텐츠는 서로 섞이지 않고 빈틈없는 모듈식으로 구성됩니다. 이렇게 되면 지오메트리 컬렉션을 더욱 유연하고 세밀하게 프랙처링할 수 있습니다. 한 가지 접근 방법은 아래 그림과 같이 블루프린트(Blueprint) 와 여러 개의 스태틱 메시 컴포넌트(Static Mesh Component) 를 사용하는 것입니다.

이 페이지에서 다루는 개념에 대한 실습을 원하는 경우 에픽 런처학습 탭(Learn Tab) 에 있는 카오스 디스트럭션 데모(Chaos Destruction Demo) 프로젝트 내에서 이 샘플을 비롯한 다양한 자료를 볼 수 있습니다.

위 비디오에서 지오메트리 컬렉션 에셋은 빌딩의 창 부분을 구성하는 모든 메시가 포함된 단일 블루프린트로 이루어집니다. 전에 디스트럭션 시스템을 사용해본 경우 서로 섞이지 않고 빈틈없는 상태의 중요성과 모듈 방식에 익숙하실 수도 있습니다. 그러나 디스트럭션 시스템을 처음 사용하는 경우 사실상 조각을 프랙처링할 수밖에 없습니다. 각 조각에는 질량을 지정해야 하며 프랙처링 호출 시 수행할 작업을 할당해야 합니다.

또한 모듈을 빌드할 때 피벗이 언리얼 그리딩 시스템을 따르도록 설정하는 것이 좋습니다. 복잡한 콘텐츠를 개발해 나갈 때는 그리드를 염두에 두고 너비와 높이를 표준화해야 작업이 수월해집니다.

고려해야 할 또 다른 개념은 머티리얼 할당입니다. 모듈이 같은 텍스처를 공유한다고 해도 머티리얼 유형에 따라 고유한 머티리얼 ID를 적용해야 합니다. 이렇게 하면 프랙처링 시 두 번째 머티리얼 ID가 생성되고 이 ID에 적절한 내부 머티리얼을 할당할 수 있습니다. 아래 비디오에서는 같은 텍스처를 공유하지만 두 가지 머티리얼 유형을 사용하는 두 메시로 이루어진 지오메트리 컬렉션이 나옵니다. 이처럼 두 개의 머티리얼을 사용하면 석조 부분과 콘크리트 모두 내부 면에 고유 머티리얼을 사용할 수 있지만, 한 개의 머티리얼을 사용하면 내부 면에 할당할 머티리얼 ID도 하나가 됩니다.

모듈이 준비되었다면 이제 지오메트리 컬렉션으로 변환할 차례입니다. 아래 예시에서 빌딩의 측면은 다섯 가지 모듈로 이루어져 있으며, 각 모듈에는 여러 개의 머티리얼 인스턴스가 적용되어 있습니다. 지오메트리 컬렉션으로 변환하면 공유된 모든 머티리얼은 단일 ID와 줄어든 드로 콜로 통합됩니다.

Construction_BuildingPack.png

메시는 어떤 조합으로든 지오메트리 컬렉션으로 변환될 수 있습니다. 작은 모듈은 더욱 유연하게 배치할 수 있지만, 구조 전체에 복제되었을 때는 많은 드로 콜, 눈에 띄는 이음새, 반복의 위험성이 있습니다. 결합된 큰 모듈은 유연성이 떨어지지만 프랙처링하고 클러스터링하여 이음새를 숨길 수 있습니다. 아래 이미지에서 왼쪽에 있는 네 개의 기둥은 개별 지오메트리 컬렉션 에셋이며, 오른쪽에 있는 큰 기둥은 단일 지오메트리 컬렉션입니다.

Construction_BuildingDetails.png

개별 조각을 프랙처링할 때는 유사하게 분리되거나 하드 에지가 발생할 위험성이 있습니다. 그러나 큰 조각의 경우 프랙처가 조각 전체로 퍼져 더 나은 결과를 얻을 수도 있습니다.

지오메트리 컬렉션 생성하기

콘텐츠를 생성할 때 권장되는 접근 방식을 일반적으로 이해하고 있다면, 아래 그림과 같이 모드 툴바(Mode Toolbar)프랙처(Fracture) 탭에 있는 추가(New) 버튼을 선택하여 콘텐츠를 지오메트리 컬렉션으로 변환할 수 있습니다.

GeoCollection_01.png

새로운 지오메트리 컬렉션 에셋의 이름과 저장 위치를 입력하면 메시가 뷰포트에서 업데이트되어 프랙처 유형 선택 시 프랙처가 표시되는 그리기 다이어그램이 나타나므로 어떻게 보일지 알 수 있게 됩니다.

GeoCollection_02a.png

GeoCollection_02.png

프랙처 유형 선택 전

프랙처 유형 선택 후

콘텐츠 브라우저(Content Browser) 내에서 지오메트리 컬렉션 에셋을 열면 머티리얼 엘리먼트 (아래 첫 번째 그림) 또는 콜리전 세팅 (아래 두 번째 그림)을 정의할 수 있습니다.

GeoColl_Materials.png

GeoColl_ChaosPhysics.png

머티리얼 엘리먼트

콜리전 세팅

위 이미지의 머티리얼(Material) 섹션을 보면 외부 머티리얼(엘리먼트 0), 내부 머티리얼(엘리먼트 1), 디버그 드로 머티리얼(엘리먼트 2)이 있고 각 머티리얼에 적용할 머티리얼 에셋을 선택할 수 있습니다.

콜리전 세팅 에서는 지오메트리 컬렉션의 콜리전 행동을 정의할 수 있습니다. 이 세팅에는 선택 가능한 몇 가지 옵션이 있으며 각 옵션에는 장단점이 있습니다. 콜리전 타입(Collision Type)파티클 묵시적(Particle-Implicit) 또는 묵시적 묵시적(Implicit-Implicit) 으로 정의됩니다.

다음으로 묵시적 타입(Implicit Type) 을 선택할 수 있으며 콜리전 구조를 초기화하는 방식을 지정합니다. 콜리전 구조는 주로 두 가지 형태로 나타나는데 분석 콜리전 볼륨(Analytic Collision Volumes) 또는 레벨 세트 볼륨(Level Set Volumes) 입니다.

  • 분석 콜리전 볼륨 - 리지드 바디를 간단하게 표현하며 박스, 구체 또는 캡슐로 구성됩니다. 박스는 바운딩 박스와 유사하게 바디를 감싸는 반면, 구체와 캡슐은 리지드 바디 안에 꼭 맞게 들어가도록 배치됩니다. 이렇게 되면 빠르게 계산할 수 있고 메모리 점유율을 낮게 유지할 수 있지만 시뮬레이션 중에 정확도가 떨어지게 됩니다. 분석 콜리전을 사용할 때의 또 다른 단점은 바디가 교차한 상태로 시뮬레이션되면서 바디가 서로 밀어내는 행동이 나타날 수도 있다는 것입니다. 콜리전 오브젝트 감소 퍼센티지(Collision Object Reduction Percentage) 프로퍼티를 조절하면 이 행동을 개선할 수 있습니다. 이때 원하는 결과를 얻기 위해 약간의 조정이 필요할 수도 있습니다.

현재 캡슐은 기능이 제한적이므로 사용하면 안 됩니다.

  • 레벨 세트 볼륨 - 이러한 유형의 볼륨은 복셀화된 그리드를 사용하여 리지드 바디를 샘플링하고, 지오메트리의 부호화된 디스턴스 필드를 생성합니다. 레벨 세트 볼륨의 해상도는 에셋의 최소 레벨 세트 해상도(Min Level Set Resolution) 또는 최대 레벨 세트 해상도(Max Level Set Resolution) 세팅을 사용하여 지정할 수 있습니다. 레벨 세트 볼륨은 매우 정확하고 퍼포먼스를 위해 조정 가능하지만, 메모리 점유율이 높습니다. 볼륨의 정확도는 메모리에서 3차원으로 스케일 조절됩니다.

레벨 세트를 사용할 때 콜리전 세팅파티클 묵시적(Particle-Implicit) 으로 설정되어야 합니다. 그러나 묵시적 묵시적(Implicit-Implicit) 으로 설정할 수도 있습니다. 이 경우 내부적으로는 여전히 묵시적 표면과 비교하여 콜리전 파티클을 확인하게 됩니다.

원하는 대로 지오메트리 컬렉션을 설정했다면 프랙처 에디터를 사용하여 메시를 프랙처링하고 클러스터링할 수 있습니다.

프랙처링 및 클러스터링

사용할 수 있는 프랙처 메서드에는 몇 가지 타입이 있습니다. 여러 가지 기법을 함께 사용하면 더욱 흥미로운 모습의 디스트럭션을 구현할 수도 있습니다. 원하는 결과를 얻으려면 다양한 옵션과 세팅을 적용해 봐야 합니다.

프랙처링

지오메트리 컬렉션을 생성했다면 모드 툴바(Mode Toolbar)의 프랙처(Fracture) 탭에서 수행할 프랙처 유형을 선택할 수 있으며, 프랙처 패널에서 프랙처를 수행하는 데 사용할 세팅을 선택할 수 있습니다.

FractureSettings.png

FracturePanel.png

프랙처 메서드

설명

균등 보로노이(Uniform Voronoi)

일반적인 균등 보로노이를 사용하면 프랙처링을 위한 셀 볼륨을 생성할 수 있는 최소 및 최대 사이트 수를 정의할 수 있습니다.

클러스터링된 보로노이(Clustered Voronoi)

클러스터링된 보로노이 프랙처는 베이스 보로노이 패턴 주위에 포인트를 추가적으로 생성하여 베리에이션을 더합니다.

방사상 보로노이(Radial Voronoi)

방사상 보로노이 프랙처는 중앙 지점에서 보로노이 셀을 방사상으로 퍼뜨립니다. 예를 들어 쇠구슬로 벽을 때리는 경우가 있습니다.

평면 보로노이(Planar Voronoi)

이 유형의 프랙처는 지오메트리 컬렉션에서 평면에 컷을 만들 때 사용할 수 있습니다. 평면 컷에 노이즈를 적용하면 더욱 자연스러운 결과를 얻을 수 있습니다.

슬라이스 보로노이(Slice Voronoi)

슬라이스 보로노이 프랙처 메서드를 사용하면 X, Y, Z 슬라이스 수를 정의할 수 있으며, 랜덤 각도와 오프셋 베리에이션을 적용할 수 있습니다.

브릭 보로노이(Brick Voronoi)

이 유형의 프랙처를 사용하면 프랙처를 수행할 패턴을 정의할 수 있으며, 프랙처링할 전방 및 상향 축도 함께 정의할 수 있습니다. 브릭의 길이, 높이 또는 깊이를 조절하여 다양한 결과를 연출할 수도 있습니다.

에픽 런처에 있는 카오스 디스트럭션 데모(Chaos Destruction Demo) 프로젝트 내의 ChaosExamples_02_Fracture 맵을 참조하면 클러스터링 기법과 함께 프랙처 유형의 다양한 예시를 볼 수 있습니다.

프랙처 유형과 세팅을 선택한 후에는 프랙처(Fracture) 버튼을 클릭하여 지오메트리 컬렉션을 프랙처링합니다.

GeoCollection_04.png

모드 툴바(Mode Toolbar)의 프랙처(Fracture) 탭에서 펼침(Explode) 툴을 사용하면 펼친 뷰 퍼센티지를 늘리거나 줄이면서 본(bone)을 볼 수 있습니다.

GeoCollection_05.png

본은 지오메트리 컬렉션에서 색상으로 구분되며, 이러한 색상 구분 기능은 Shift + B 를 누르거나 모드 툴바의 컬러(Colors) 툴을 클릭하여 켜거나 끌 수 있습니다. Shift + E 를 누르면 펼친 뷰 퍼센티지가 늘어나고 Shift + Q 를 누르면 펼친 뷰 퍼센티지가 줄어듭니다.

필요에 따라 개별 조각을 서브프랙처링하여 더욱 흥미로운 결과를 얻을 수도 있습니다.

Subfractured_Pillar.png

위 예시에서 기둥은 최소/최대 사이트 수를 8로 설정한 스파스 보로노이 프랙처를 사용하여 프랙처링했습니다. 그런 다음 중앙의 조각들을 더욱 작은 조각으로 리프랙처링했고, 위아래 부분은 큰 청크로 남겨두었습니다.

프랙처 에디터 내의 뷰(View) 섹션에서 레벨(Levels) 드롭다운을 클릭하면 다양한 디스트럭션 레벨을 볼 수 있습니다.

레벨 사이를 움직이려면 Shift + W (한 레벨 아래로 이동)와 Shift + S (한 레벨 위로 이동)를 누르면 됩니다.

클러스터링

모드 툴바(Mode Toolbar)의 클러스터(Cluster) 탭에 있는 클러스터링(Clustering) 옵션을 사용하면 프랙처 메시의 비주얼 퀄리티와 퍼포먼스를 제어할 수 있습니다.

ChaosClusterOptions.png

자동 클러스터(Auto Cluster) 옵션을 클릭하면 세팅에 따라 프랙처 메시 조각이 자동으로 그룹화되어 지오메트리 컬렉션 내의 프랙처 레벨(Fracture Level) 에 할당됩니다.

아래 예제 비디오에서는 지오메트리 컬렉션으로 변환된 두 개의 스태틱 메시를 사용하여 각 레벨을 단계적으로 처리합니다. 먼저 레벨 0은 엔티티 전체를 나타내고 레벨 1은 두 개의 개별 본(bone)을 나타냅니다. 지오메트리 컬렉션을 프랙처링하면 각 기둥에 별도의 조각 세트가 생기고, 각 기둥에서 분리된 조각을 나타내는 새로운 레벨 2가 생성됩니다. 그런 다음 모든 본을 레벨 1로 평탄화한 후 자동으로 클러스터링하도록 선택하면 아웃라이너(Outliner) 에서 본이 업데이트됩니다. 이제 레벨 1에는 두 개의 개별 조각 대신 약간 더 큰 청크가 포함된 베이스 프랙처가 적용되었으며 레벨 2는 더 작은 조각으로 되어 있습니다.

일반적으로 빌딩 같은 것을 파괴할 때는 레벨 1에 적은 수의 클러스터(또는 큰 조각)가 필요하고, 레벨이 올라가면서 더 작은 조각으로 분리됩니다. 최적화를 위해서는 처음에 분리할 때 수천 조각으로 만드는 대신, 빌딩이 무너지면서 개별 조각이 분리되도록 하는 것이 좋습니다. 또 다른 최적화 옵션은 프랙처링할 최대 클러스터 레벨(Max Cluster Level) 을 정의하는 기능입니다.

MaxClusterLevel.png

이 옵션은 레벨의 지오메트리 컬렉션에 설정할 수 있으며 분리 정도를 제한할 프랙처 레벨을 정의할 수 있습니다. 이 옵션을 설정하면 지오메트리 컬렉션은 정의된 레벨을 초과하지 않습니다.

클러스터링할 때는 각 클러스터 내의 조각 수를 확인하는 것이 유용할 수 있습니다. 지오메트리 컬렉션 에셋을 선택한 상태에서 다음 콘솔 명령을 사용하여 로그에 스태틱을 출력할 수 있습니다.

GeometryCollection.PrintDetailedStatistics

출력 로그(Output Log) 에는 선택한 지오메트리 컬렉션 에셋에 대한 정보가 표시됩니다.

PrintDetailedStats.png

각 계층구조 레벨에 포함된 리지드 바디 수에 초점을 맞춘 축소 버전을 가져오려면 다음 명령을 사용합니다.

GeometryCollection.PrintDetailedStatisticsSummary

또한 액터당 대미지 한계치(Damage Threshold) 를 정의하여 연속된 각 레벨이 분리되는 데 어느 정도의 스트레인이 필요한지 결정할 수 있습니다. 이 옵션은 디테일(Details) 패널의 클러스터링(Clustering) 섹션에서 찾을 수 있습니다.

DamageThresholds.png

위 예시에서는 각 레벨을 분리하는 데 필요한 대미지 한계치가 레벨이 올라갈 때마다 내려가도록 설정되어 있습니다. 즉, 레벨 4가 먼저 프랙처링되기 시작하며, 대미지가 커지면서 이전 레벨도 프랙처링되기 시작합니다. 아래 이미지에서는 레벨 1에서 조각들이 더 큰 청크로 클러스터링된 것을 볼 수 있습니다. Shift + B 를 누르면 색상 구분 기능을 켜거나 끌 수 있습니다.

DamageThresholds_01.png

아래 비디오에서는 실제 시뮬레이션이 수행되는 것을 볼 수 있습니다.

위 비디오에서는 큰 조각들이 떨어져 나가는 모습을 볼 수 있으며, 한계치에 따라 이러한 조각이 콜리전과 힘에 의해 얼마나 쉽게 더 분리될지 제어된다는 것을 알 수 있습니다. 일반적으로 클러스터가 무너질수록 콜리전 속도는 줄어듭니다. 즉, 작은 조각이 더욱더 분리되려면 한계치를 낮춰야 합니다.

클러스터 그룹 인덱스

지오메트리 컬렉션 그룹의 클러스터링을 제어하는 또 다른 방법은 개별 액터의 클러스터 그룹 인덱스(Cluster Group Index) 프로퍼티를 사용하는 것입니다.

ClusterGroupIndex.png

각 액터를 같은 클러스터 그룹에 할당할 때는 클러스터링된 액터 그룹이 레벨 0으로 행동합니다. 아래 예시에서는 디스트럭션 중 개별 기둥을 제어하는 데 다양한 대미지 한계치 세팅이 사용됩니다.

클러스터 그룹 인덱스를 사용할 때는 적용된 모든 필드 데이터가 같은 인덱스로 지오메트리 컬렉션 전체에 공유됩니다.

콜리전 파티클 프랙션

지오메트리 컬렉션 에셋 내의 카오스 피직스(Chaos Physics) 섹션에서는 콜리전 파티클 프랙션(Collision Particles Fraction) 프로퍼티를 올려 콜리전에 사용할 트라이앵글화된 표면의 파티클 수를 늘릴 수 있습니다.

CollisionParticlesFraction.png

이 프로퍼티는 특히 클러스터 그룹 인덱스 값을 공유할 때 중요합니다. 일반적으로 수치가 낮으면 잘못된 콜리전 행동(예: 바닥에 굴러감)이 발생하기 때문입니다.

필드

카오스 디스트럭션 툴 내의 필드(Fields) 시스템은 여러 파라미터로 공간 영역을 점유해 피직스 시뮬레이션에 직접적으로 영향을 주면서 다양한 행동이나 분리 이펙트를 생성할 수 있는 방법입니다. 필드는 콘텐츠 브라우저(Content Browser) 내에서 생성할 수 있으며, 순전히 데이터 컨테이너이고 에셋으로 열리지 않습니다.

FieldSystemCreation.png

필드를 생성한 다음에는 사용할 필드 시스템을 설정할 수 있는 필드 시스템 컴포넌트(Field System Component) 가 포함된 필드 시스템 액터(Field System Actor) 클래스의 블루프린트를 생성할 수 있습니다.

FieldSystemComponent.png

필드 시스템 블루프린트 내에서는 필드의 로직을 정의할 수 있습니다.

필드 시스템 액터 블루프린트를 생성할 때마다 고유한 필드 시스템 에셋이 필요합니다. 이 에셋에는 생성할 필드 시스템의 데이터가 포함됩니다.

블루프린트에서는 Add Field Command 또는 Apply Physics Field 노드를 사용하여 필드의 영향을 받는 어트리뷰트의 유형을 지정할 수 있습니다.

AddFieldCommand.png

Add Field Command 는 블루프린트의 컨스트럭션(Construction) 단계에서 사용됩니다. 이 노드는 시뮬레이션이 시작되기 전에 프로퍼티를 스택에 쌓습니다. 앵커(Anchors) 같은 초기화 필드가 좋은 예입니다. Apply Physics Field 는 시뮬레이션 중에 어트리뷰트를 지정하는 데 사용됩니다. 힘과 속도를 사용하는 외부 클러스터 스트레인 기반의 폭발이 좋은 예입니다.

아래 표에는 각 노드의 필드 유형이 요약되어 있습니다.

필드 유형

설명

다이내믹 스테이트(DynamicState)

지오메트리 컬렉션의 상태를 슬리핑, 키네마틱, 스태틱, 다이내믹 또는 사용자 정의 상태로 업데이트하는 데 사용할 수 있습니다.

선형 힘(LinearForce)

지오메트리 컬렉션 내에서 사용자 정의 위치 및 방향으로 힘을 적용하는 데 사용할 수 있습니다.

외부 클러스터 스트레인(ExternalClusterStrain)

지오메트리 컬렉션의 대미지 한계치(Damage Threshold) 보다 값이 크면 클러스터 조각을 방출하는 주어진 볼륨 내에 스트레인을 적용하는 데 사용할 수 있습니다.

킬(Kill)

지정된 볼륨에 들어가면 리지드 바디의 시뮬레이션을 중지하는 데 이 유형의 필드를 사용할 수 있습니다.

선형 속도(LinearVelocity)

시작점과 끝점에 임팩트 속도를 생성하는 데 사용할 수 있습니다.

각 속도(AngularVelocity)

주어진 반경 내에서 임팩트 속도를 생성하는 데 사용할 수 있습니다.

각 토크(AngularTorque)

지정되거나 랜덤화된 양의 토크를 리지드 바디에 적용하여 더욱 흥미로운 시뮬레이션을 연출하는 데 사용할 수 있습니다.

내부 클러스터 스트레인(InternalClusterStrain)

필드 내의 리지드 바디 전체에 스트레인 값을 설정하는 데 사용할 수 있습니다.

비활성화 한계치(DisableThreshold)

정의된 한계치를 넘어가면 리지드 바디의 시뮬레이션을 비활성화하는 데 사용할 수 있습니다. 비활성화된 리지드 바디는 시뮬레이션에서 완전히 제거됩니다. 제거된 리지드 바디는 콜리전이 아닌 필드를 통해 재활성화될 수 있습니다.

슬리핑 한계치(SleepingThreshold)

정의된 한계치를 넘어가면 리지드 바디를 슬립 상태로 전환하는 데 사용할 수 있습니다. 슬립 상태의 리지드 바디는 깨울 수 있으며 필드와 콜리전을 통해 시뮬레이션을 계속할 수 있습니다.

다이내믹 컨스트레인트(DynamicConstraint)

지오메트리 컬렉션의 일부를 제한하는 데 사용할 수 있습니다.

콜리전 그룹(CollisionGroup)

지정된 콜리전 그룹 내의 지오메트리 컬렉션에 영향을 주는 데 사용할 수 있습니다.

비활성화 활성화(ActivateDisabled)

비활성화된 파티클을 재활성화하는 데 사용할 수 있습니다.

다음 섹션에서는 보다 일반적인 필드에 대해 간략히 설명합니다. 그러나 여러 필드를 함께 사용하면 다양한 결과를 얻을 수 있습니다.

앵커 필드

앵커 필드(Anchor Fields) 는 지오메트리 컬렉션의 일부를 제자리에 잠가서 나머지 부분만 분리되도록 하는 데 사용됩니다. 앵커 필드는 컨스트럭션 단계에서 구성되어야 한다는 점에서 대부분의 필드 시스템 노드와는 다릅니다. 컨스트럭션 단계에서 구성되어야 하는 이유는 연결 그래프 역시 시뮬레이션 이전에 구성되어야 하기 때문입니다. 그러므로 앵커 필드의 로직은 필드 시스템 액터(Field System Actor) 블루프린트의 컨스트럭션 스크립트 내에서 정의되며 Add Field Command 노드를 사용하여 적용됩니다. 여기에서 Apply Physics Field 노드는 사용할 수 없습니다. 시뮬레이션 시 클러스터링(Clustering) 이 활성화되어 있으면 앵커링된 지오메트리 컬렉션은 스트레인 필드(Strain Field) 를 사용하여 스트레인 힘이 적용될 때까지 스태틱 상태로 유지됩니다.

아래 비디오에서는 카오스 디스트럭션 데모(Chaos Destruction Demo) 프로젝트에 나오는 예시를 보여줍니다.

클러스터 스트레인 필드

클러스터 스트레인 필드(Cluster Strain Field) 는 지오메트리 컬렉션의 대미지 한계치(Damage Threshold) 를 넘어가면 지오메트리 컬렉션의 특정 부분이 감쇠하고 분리되게 할 수 있습니다. 아래 비디오에서 앵커 필드(Anchor Field) (노란 박스)는 빌딩의 일부를 제자리에 잠그는 데 사용되며, 클러스터 스트레인 필드(Cluster Strain Field) (분홍 구체)는 스트레인을 적용할 위치를 나타내는 데 사용됩니다. 아래 샘플에서 볼 수 있듯이 결과적으로 빌딩의 일부는 분리되지만 나머지 부분은 그대로 유지되는 이펙트가 나타납니다.

힘 필드

힘 필드(Force Field) 는 주어진 볼륨 내에서 지정된 양의 힘을 리지드 바디에 적용합니다. 아래 비디오에서는 앵커 필드(Anchor Field) (노란 박스)와 힘 필드(Force Field) (파란 구체)를 함께 사용하여 적용된 힘에 따라 빌딩이 밖으로 폭발하도록 합니다. 이 특정 예시에도 감쇠가 발생하지 않기에 블루프린트가 트리거될 때마다 씬에 활성화된 모든 리지드 바디가 영향을 받습니다.

각 토크

앞서 살펴봤던 힘 필드(Force Field) 예시와 유사하게 아래 예시에서는 각 토크(Angular Torque) 와 구형 감쇠 볼륨을 함께 사용하여 적용되는 힘의 양을 제한합니다. 각 토크에 랜덤화된 벡터를 적용하여 예시의 빌딩은 밖으로 폭발하면서 더욱 다양하고 흥미로운 이펙트를 내게 됩니다.

노이즈 및 컬링 필드

노이즈 필드(NoiseField) 컴포넌트를 추가하고 노이즈 필드 설정(Set Noise Field) 기능으로 최소 및 최대 범위를 결정하여 어느 필드에나 노이즈를 적용할 수 있습니다. 컬링 필드도 이와 유사하게 추가할 수 있습니다. 컬링 필드(Culling Field) 컴포넌트를 추가하고 컬링을 적용할 감쇠를 지정하면 됩니다. 컬링 필드를 사용하면 주어진 볼륨 내에서 작업을 수행하여 효율적으로 퍼포먼스를 극대화하고 원치 않는 필드 누출을 방지할 수 있습니다.

슬립 필드 및 비활성화 필드

슬립 필드(Sleep Field)비활성화 필드(Disable Field) 는 둘 다 지정된 볼륨에 들어간 리지드 바디를 휴면 상태로 전환합니다. 비활성화 필드가 슬림 필드와 다른 점은 비활성화된 노드가 더 이상 콜리전으로 재활성화될 수 없으므로 시뮬레이션 중에 비용이 매우 적게 발생한다는 사실입니다. 그러나 비활성화된 노드를 다른 필드로 재활성화하는 것은 가능합니다.

비활성화 한계치, 슬립 한계치 또는 킬 필드를 사용할 때는 외부에 컬링을 적용하는 것이 매우 중요합니다. 컬링을 적용하지 못하면 맵에 있는 기타 이러한 필드가 모두 스톰프되어 사실상 현재 한계치 세트 이외의 다른 모든 한계치 세트를 무시하도록 필드에 명령할 수 있습니다.

아래 비디오의 왼쪽에서는 슬립 필드를 사용하여 리지드 바디를 휴면 상태로 전환하지만, 콜리전이 리지드 바디를 깨우므로 시뮬레이션을 계속합니다. 오른쪽에서는 비활성화 필드를 사용하여 시뮬레이션을 완전히 중지합니다.

내부 스트레인 필드

내부 클러스터 스트레인(Internal Cluster Strain) 을 사용하면 필드 내의 모든 리지드 바디 값에 영향을 줄 수 있으며, 시간이 지나면서 빌딩이 무너지는 것과 같은 이펙트를 낼 수 있습니다. 이러한 이펙트를 내기 위해 스트레인 값이 틱마다 업데이트되면서 이전 값은 노이즈 필드에서 빠지게 되며 스케일링을 위한 파라미터가 포함됩니다. 컬링 필드 역시 시뮬레이션 중에 이펙트를 포함하는 데 사용됩니다.

지오메트리 컬렉션 캐싱

대규모 시뮬레이션에서 퍼포먼스를 향상하려면 런타임 시뮬레이션에서 캐시된 시뮬레이션으로 변경하는 것이 좋습니다. 캐시된 시뮬레이션은 배경에서 일어나거나 플레이어 인터랙션이 없는 디스트럭션에 유용합니다. 향후 버전의 카오스에서는 일반 시뮬레이션과 캐시된 시뮬레이션 간에 동적으로 전환하는 옵션이 지원될 가능성이 큽니다. 캐시된 시뮬레이션을 재생하려면 먼저 녹화해야 합니다.

캐시된 시뮬레이션을 녹화하고 재생하려면 다음과 같이 합니다.

  1. 프랙처 지오메트리 컬렉션을 선택하고 디테일(Details) 패널에서 캐시 파라미터(Cache Parameters)캐시 모드(Cache Mode)녹화(Record) 로 변경합니다.

    GeoCache_01.png

    파라미터를 추가로 사용하여 녹화할 데이터를 정의할 수 있습니다.

  2. 지오메트리 컬렉션이 프랙처링되도록 시뮬레이션하거나 에디터에서 플레이합니다.

    위 비디오에서는 시뮬레이션이 진행되면서 퍼포먼스가 약간 저하됩니다. 세션을 중지하면 타깃 캐시(Target Cache) 가 저장된 데이터로 업데이트되며, 에셋도 생성되어 콘텐츠 브라우저(Content Browser) 에 추가됩니다.

  3. 지오메트리 컬렉션을 키네마틱(Kinematic) 으로 변경하고, 타깃 캐시(Target Cache) 를 할당하고, 캐시 모드(Cache Mode)재생(Play) 으로 설정한 다음, 에디터에서 플레이하거나 시뮬레이션 합니다.

    위 비디오에서 처음에는 완전한 다이내믹 시뮬레이션을 실행하며, 이때 퍼포먼스가 저하됩니다. 그런 후에 키네마틱(Kinematic) 으로 변경하고 선택한 타깃 캐시(Target Cache)재생 합니다. 더 이상 런타임에 계산을 수행하지 않고 캐시된 애니메이션을 재생하므로 퍼포먼스가 향상될 뿐 아니라 빌딩이 파괴될 때도 멈춤 현상이 더는 발생하지 않습니다.

캐시를 재생하도록 지오메트리 컬렉션을 설정하는 것 외에도 블루프린트 를 사용해 플레이 모드 또는 시퀀서 를 변경하여 재생 환경을 더욱 미세하게 제어할 수도 있습니다.

GeoCache_02.png

위 이미지에서는 레벨 시퀀스에 지오메트리 컬렉션 컴포넌트와 지오메트리 컬렉션과 함께 지오메트리 컬렉션 액터를 추가합니다. 프로퍼티(Properties) 에서는 시퀀스에서 재생할 지오메트리 컬렉션 캐시(Geometry Collection Cache) 를 할당할 수 있습니다. 또한 캐시가 재생되고 빌딩이 파괴된 후에 그 상태가 유지되도록 종료 시(When Finished) 상태를 상태 유지(Keep State) 로 설정합니다. 시퀀서를 사용하면 재생 속도를 제어하고 캐시된 애니메이션을 앞뒤로 스크럽할 수 있습니다.

카오스 솔버

기본적으로 카오스는 카오스 관련 계산을 처리하는 카오스 월드 솔버(Chaos World Solver) 를 자동으로 생성합니다. 로드를 줄이려면 레벨에 배치된 커스텀 카오스 솔버(Chaos Solver) 에 지오메트리 컬렉션을 할당하면 됩니다. 카오스 솔버 를 생성하려면 콘텐츠 브라우저(Content Browser) 에서 신규 추가(Add New) 버튼을 클릭하고 피직스(Physics) 에서 카오스 솔버(Chaos Solver) 를 선택합니다.

ChaosSolver.png

이 에셋을 직접 열 수는 없습니다. 관련 프로퍼티에 액세스하려면 레벨에 드롭합니다. 그러면 디테일(Details) 패널에서 프로퍼티에 액세스할 수 있습니다.

ChaosSolver_03.png

이 솔버를 사용하도록 설정할 지오메트리 컬렉션은 카오스 피직스(Chaos Physics) > 카오스 솔버(Chaos Solver) 옵션에서 개별 액터에 할당할 수 있습니다.

ChaosSolver_02.png

나이아가라 통합

ChaosNiagara.png

카오스 디스럭션 시스템 내의 카오스 솔버는 시뮬레이션이 실행되면서 발생하는 다양한 콜리전, 브레이킹, 트레일링 이벤트를 저장할 수 있습니다. 이러한 이벤트는 나이아가라 이펙트 시스템 내에서 카오스 데이터 인터페이스(Chaos Data Interface) 를 통해 수신됩니다. 기본적으로 카오스 데이터 인터페이스를 구현하는 나이아가라 시스템은 월드 카오스 솔버로 구동되는 모든 리지드 바디에 활성화됩니다. 그러나 나이아가라 시스템이 커스텀 카오스 솔버를 가리키도록 설정할 수도 있습니다.

나이아가라 시스템 내에서 콜리전, 브레이킹 또는 트레일링 이벤트를 위해 카오스 데이터 인터페이스를 구현하는 일반적인 방법은 다음과 같습니다.

  1. 원하는 나이아가라 이미터(Niagara Emitter) 를 생성합니다.

  2. 나이아가라 시스템(Niagara System) 을 생성하고 이미터를 가리키도록 설정합니다.

    Chaos_Niagara_01.png

  3. 나이아가라 시스템 내의 시스템 노출 파라미터(System Exposed Parameters) 에서 카오스 디스트럭션 데이터(Chaos Destruction Data) 파라미터를 추가합니다.

    Chaos_Niagara_02.png

    데이터 소스(Data Source) 프로퍼티를 사용하면 트래킹할 콜리전 데이터(Collision Data) , 브레이킹 데이터(Breaking Data) 또는 트레일 데이터(Trail Data) 를 정의할 수 있습니다.

    Chaos_Niagara_03.png

  4. 파티클 스폰(Particle Spawn) 에서 카오스 데이터 적용(Apply Chaos Data) 모듈을 추가합니다.

    Chaos_Niagara_04.png

  5. 나이아가라 시스템을 레벨에 드래그합니다. 그러면 시스템 액터에서 디테일(Details) 패널의 데이터 소스(Data Source) 를 오버라이드할 수 있습니다.

    Chaos_Niagara_05.png

    여러 버전의 나이아가라 시스템 액터를 생성하고 콜리전, 브레이팅, 트레일 데이터로 데이터 소스를 오버라이드할 수 있습니다.

카오스 디스트럭션 데모(Chaos Destruction Demo) 프로젝트와 ChaosExamples_04_Niagara 맵에서 예시를 참조하세요.

아래 비디오에서는 콜리전, 브레이킹, 트레일링 이벤트의 예시를 보여줍니다.

카오스 및 게임플레이

지오메트리 컬렉션에서는 게임플레이를 트리거하는 데 사용되는 콜리전 이벤트와 브레이크 이벤트를 보낼 수 있습니다. 지오메트리 컬렉션에서 이러한 이벤트를 보내려면 콜리전 노티파이(Notify Collisions) (콜리전 이벤트 알림) 또는 중단 노티파이(Notify Breaks) (브레이크 이벤트 알림) 이 지오메트리 컬렉션 액터에 활성화되어 있어야 합니다. 이 두 옵션은 선택한 지오메트리 컬렉션 액터의 디테일(Details) 패널 내 일반(General) 섹션에서 활성화할 수 있습니다.

Chaos_NotifySettings.png

SetNotifyBreaks 또는 SetNotifyCollisions 를 블루프린트로 호출하여 관련 프로퍼티를 활성화하거나 비활성화할 수도 있습니다.

지오메트리 컬렉션 액터와 그 안의 지오메트리 컬렉션 컴포넌트를 참조하면 지오메트리 컬렉션이 분리될 때 실행되는 OnChaosBreakEvent 에 바인딩할 수 있습니다.

Chaos_OnBreakEvent.png

카오스 브레이크 이벤트 구조체는 프리미티브 컴포넌트, 위치, 속도, 각 속도, 질량 등 지오메트리 컬렉션 분리와 관련된 모든 정보를 보고합니다.

각 브레이크는 고유한 브레이크 이벤트를 생성합니다.

브레이크 이벤트와 마찬가지로, 지오메트리 컬렉션이 다른 오브젝트와 충돌할 때 실행되는 OnChaosPhysicsCollision 을 사용하여 콜리전 이벤트에 바인딩할 수 있습니다.

Chaos_OnCollisionEvent.png

콜리전 정보(Collision Info) 구조체를 분리하면 콜리전과 관련된 컴포넌트(프리미티브 컴포넌트 포함), 위치, 노멀, 속도 값, 질량 등 콜리전에 대한 정보를 얻을 수 있습니다.

브레이크 이벤트와 콜리전 이벤트를 조합하여 필드와 함께 사용하면 무기를 발사하는 것과 같은 게임플레이 이벤트에서 디스트럭션을 유발할 수 있습니다. 콜리전 이벤트의 정보를 활용하면 임팩트 위치에서 필드를 스폰하여 아래 비디오에서처럼 기둥이 분리되게 할 수 있습니다.

카오스 관련 추가 학습

이 페이지에 있는 정보 외에도 아래의 카오스 기초(Chaos Fundamentals) 트위치(Twitch) 스트리밍 비디오에서 관련 내용을 자세히 알아볼 수 있습니다.

언리얼 엔진의 이전 버전을 위해 작성된 페이지입니다. 현재 언리얼 엔진 5.0 버전을 위해 업데이트되지 않았습니다.
언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소