카오스 디스트럭션 - 필드 튜토리얼을 시청하면 에픽 디벨로퍼 커뮤니티 사이트에서 유사한 정보를 동영상 포맷으로 찾아보실 수 있습니다.
카오스 필드(Chaos Fields) 는 특정 공간 영역을 사용하여 피직스 시뮬레이션의 프로퍼티를 제어합니다. 필드에는 앵커 필드(Anchor Fields), 스트레인/포스 필드(Strain/Force Fields), 슬립/비활성화 필드(Sleep/Disable Fields)의 세 가지 주요 타입이 있습니다.
앵커 필드는 시뮬레이션 중에 지오메트리 컬렉션(Geometry Collection) 의 일부가 고정되도록 제한하는 컨스트럭션 블루프린트입니다. 앵커 필드를 사용하면 시뮬레이션 도중에 일어나는 일과는 관계없이 지오메트리 컬렉션의 특정 부분을 제자리에 고정할 수 있습니다.
슬립/비활성화 필드는 본(프랙처 조각) 속도가 특정 한계치 아래로 떨어지면 지오메트리 컬렉션을 휴식 상태로 만듭니다. 슬리핑 본은 시뮬레이션 중에 활성 오브젝트와 접촉하면 다시 깨어날 수 있습니다. 비활성화된 본은 다시 깨어날 수 없습니다.
스트레인/포스 필드는 시뮬레이션 중에 스트레인 또는 선형 속도를 지오메트리 컬렉션에 적용합니다.
언리얼 엔진에는 그대로 사용하거나 블루프린트 에디터(Blueprint Editor) 에서 열어서 수정할 수 있는 사전 빌드된 카오스 필드가 탑재되어 있습니다.
카오스 필드를 찾으려면 콘텐츠 브라우저(Content Browser) 에서 세팅(Settings) > 엔진 콘텐츠 표시(Show Engine Content) 를 클릭하면 됩니다.
엔진(Engine) > 콘텐츠(Content) > EditorResources > FieldNodes 로 이동하여 사용할 수 있는 카오스 필드를 찾습니다.
지오메트리 컬렉션 생성
이 섹션에서는 프랙처 시뮬레이션 중에 카오스 필드를 사용하는 방법을 배울 수 있도록 지오메트리 컬렉션을 생성합니다.
-
씬에서 스태틱 메시 액터(Static Mesh Actor) 를 선택하고 모드(Mode) 드롭다운을 클릭하여 프랙처(Fracture) 를 선택합니다.
이렇게 하면 메시 프랙처링에 필요한 모든 툴이 포함된 프랙처 모드(Fracture Mode) 패널이 열립니다.
-
Generate 섹션에서 신규(New) 를 클릭하여 새로운 지오메트리 컬렉션 을 생성합니다.
이 에셋 타입은 콘텐츠 브라우저 에 저장되며 프랙처 메시를 만드는 데 사용됩니다.
-
(1) 지오메트리 컬렉션을 저장할 디렉터리 위치 를 선택합니다.
-
(2) 지오메트리 컬렉션 에셋의 이름을 입력합니다.
-
(3) 지오메트리 컬렉션 생성(Create Geometry Collection) 을 클릭합니다.
- 콘텐츠 브라우저(Content Browser) 에서 모두 저장(Save All) 을 클릭하여 새로운 지오메트리 컬렉션 에셋을 저장합니다.
-
-
씬에서 선택한 액터는 레벨에서 지오메트리 컬렉션으로 대체됩니다.
지오메트리 컬렉션 생성에 대한 자세한 내용은 지오메트리 컬렉션 사용자 가이드를 참조하세요.
-
프랙처링 툴을 사용하여 지오메트리 컬렉션을 프랙처링합니다. 아래 예시에서는 슬라이스(Slice) 및 균등 보로노이(Uniform Voronoi) 툴을 사용하여 프랙처 계층구조(Fracture Hierarchy) 에 4개의 레벨을 생성했습니다.
지오메트리 컬렉션 프랙처링에 대한 자세한 내용은 지오메트리 컬렉션 프랙처링 사용자 가이드를 참조하세요.
앵커 필드
앵커 필드는 시뮬레이션 중에 해당 볼륨 내 모든 지오메트리 컬렉션 본을 스태틱(Static) 으로 설정합니다.
FS_AnchorField_Generic 을 레벨로 드래그하여 지오메트리 컬렉션의 모서리 부분에 오버랩합니다.
지오메트리 컬렉션을 선택하고 디테일(Details) 패널로 이동합니다. 카오스 피직스(Chaos Physics) 섹션으로 스크롤을 내려 초기화 필드(Initialization Fields) 배열을 펼칩니다. 인덱스(Index) [0] 드롭다운을 클릭하고 목록에서 FS_AnchorField_Generic 을 선택합니다.
클러스터링(Clustering) 섹션으로 이동하여 클러스터링 활성화(Enable Clustering) 체크 박스를 비활성화합니다. 이는 시연 목적으로, 이렇게 하면 지오메트리 컬렉션의 프랙처링이 더 잘 보입니다.
플레이 모드(Play Mode) 메뉴 버튼을 클릭하고 선택된 뷰포트(Selected Viewport) 또는 시뮬레이트(Simulate) 를 선택하여 결과를 확인합니다.
아래 단계를 따라 앵커 필드를 원하는 수만큼 추가할 수 있습니다. 아래 예시에서는 우측 상단에 앵커 필드를 추가했습니다.
여러 개의 지오메트리 컬렉션에 동일한 앵커 필드를 한 번에 사용할 수도 있습니다. 아래 예시에서는 두 개의 지오메트리 컬렉션에 한 개의 앵커 필드를 사용했습니다.
앵커 필드에는 박스(Box), 스피어(Sphere), 평면(Plane)의 세 가지 감쇠 셰이프(Falloff Shapes) 가 있습니다. 이러한 셰이프는 스태틱으로 설정된 본의 개수와 이펙트가 구현되는 방식에 영향을 미칩니다.
감쇠 셰이프를 변경하려면 앵커 필드를 선택하고 디테일 패널로 이동합니다. 디폴트(Default) 섹션으로 스크롤을 내려 앵커 감쇠 셰이프(Anchor Falloff Shape) 드롭다운을 클릭합니다. 원하는 감쇠 셰이프를 선택합니다.
아래 예시에서는 앵커 필드에 스피어 셰이프를 사용했습니다.
아래 예시에서는 앵커 필드에 평면 셰이프를 사용했습니다.
슬립 및 비활성화 필드
슬립 및 비활성화 필드는 리지드 바디의 속도가 주어진 한계치 아래로 떨어질 때 리지드 바디를 휴식 상태로 만듭니다. 한계치가 높을수록 오브젝트가 더 급격하게 멈춥니다.
이 필드는 시뮬레이션 퍼포먼스를 향상하고, 지오메트리 컬렉션의 여러 부분이 서로 충돌하면서 과도한 떨림이 발생하지 않도록 방지합니다. 또한 시뮬레이션에 포함되는 리지드 바디의 개수도 더 잘 제어할 수 있습니다.
슬리핑 바디는 활성 오브젝트와 충돌하면 다시 깨어납니다. 비활성화된 바디는 휴식 상태가 되면 시뮬레이션에서 완전히 제거됩니다. 비활성화된 바디는 다시 깨어날 수 없습니다.
이 타입의 필드에는 슬립, 비활성화뿐만 아니라 킬(Kill) 옵션도 있습니다. 이 옵션은 한계치를 무시하고 바디가 시뮬레이션되는 것을 즉시 멈추며 바디가 필드의 볼륨에 오버랩되면 이를 시뮬레이션에서 제거합니다.
FS_SleepDisable_Generic 을 레벨로 드래그하여 아래와 같이 배치합니다.
디테일 패널로 이동하여 디폴트 섹션으로 스크롤을 내립니다. 여기에서 필드가 이펙트를 적용하는 데 사용할 한계치 를 지정할 수 있습니다. 또한 필드 비헤이비어(Field Behavior), 감쇠 셰이프 및 디버그(Debug) 정보 표시 여부도 지정할 수 있습니다.
아래 예시에서는 디버그 옵션을 활성화하고 두 개의 지오메트리 컬렉션을 사용하여 슬립 필드의 이펙트를 표시했습니다. 왼쪽은 한계치 를 2 로, 오른쪽은 한계치를 50 으로 설정한 모습입니다.
첫 번째 오브젝트가 볼륨을 통과하면 슬립 상태가 되는 것을 볼 수 있습니다. 하지만 두 번째 오브젝트와 충돌하면 깨어납니다. 한계치가 높을수록 바디가 더 급격하게 슬립 상태가 됩니다.
아래 예시에서 비활성화 필드로 전환했습니다. 왼쪽 필드는 한계치 를 2 로, 오른쪽 필드는 한계치를 200 으로 설정했습니다.
오른쪽의 지오메트리 컬렉션이 비활성화된 후 서로 충돌하지 않는 것을 볼 수 있습니다. 한계치가 높을수록 이펙트가 더 눈에 띄게 보입니다.
마지막으로 킬 필드를 사용하여 리지드 바디의 시뮬레이션을 즉시 중지할 수 있습니다. 오른쪽은 피직스를 시뮬레이션하는 스태틱 메시를 표시한 것이고, 왼쪽은 지오메트리 컬렉션을 사용한 것입니다.
마스터 필드
소개
FS_MasterField 는 언리얼 엔진에 포함되어 있는 사전 빌드된 카오스 필드입니다. 엔진 > 콘텐츠 > EditorResources > FieldNodes 로 이동하여 찾을 수 있습니다.
이 필드에는 여러 개의 커스터마이징 옵션이 있으며, 주로 다음과 같은 목적으로 사용됩니다.
-
본 사이의 연결을 파괴하는 외부 스트레인을 적용하여 리지드 바디를 활성화합니다.
-
리지드 바디에 속도를 적용하여 사실적으로 움직이고 회전하게 합니다.
아래 예시에서는 디폴트 FS_MasterField 를 지오메트리 컬렉션과 오버랩되도록 배치했습니다.
기본적으로 마스터 필드는 지오메트리 컬렉션 프랙처링을 유발하는 대량의 외부 스트레인을 적용하도록 환경설정되어 있습니다. 그다음, 필드가 파괴된 부분에 방사상 및 각 속도를 추가하여 회전시킵니다. 마지막으로 필드가 노이즈를 적용하여 이펙트에 무작위성을 추가합니다.
결과는 다음과 같습니다.
필드 감쇠 셰이프(Field Falloff Shape) 드롭다운을 클릭하고 옵션을 선택하여 필드의 셰이프를 환경설정할 수 있습니다.
활성화 타입(Activation Type) 드롭다운을 클릭하고 옵션을 선택하여 필드가 적용되는 방식을 환경설정할 수 있습니다.
| 활성화 타입 | 설명 |
|---|---|
| 딜레이(Delay) | 딜레이량(Delay Amount) 만큼의 시간이 지난 후 필드가 활성화됩니다. |
| 틱 시(OnTick) | 틱마다 필드가 활성화됩니다. |
| 틱 시 딜레이를 두고(OnTickWithDelay) | 초기 딜레이량 만큼의 시간이 지난 후 틱마다 필드가 활성화됩니다. |
| 트리거(Trigger) | 필드가 블루프린트로 직접 활성화됩니다. |
디테일 패널에서 고급 필드 세팅 > 타이밍 및 수명 으로 이동하여 필드의 수명 을 설정할 수 있습니다. 이는 짧은 기간 동안 이펙트를 적용해야 하는 필드를 생성할 때 유용합니다.
이 세팅에 대한 자세한 내용은 다음 섹션에서 살펴보겠습니다.
외부 스트레인
외부 스트레인(External Strain) 은 프랙처링된 지오메트리 컬렉션에서 본 사이의 연결을 파괴합니다. 디테일 패널의 외부 스트레인을 적용해 노드 연결 끊기(Apply External Strain to Break Node Connections) 섹션으로 이동하여 필드의 외부 스트레인 옵션을 수정할 수 있습니다.
| 옵션 | 설명 |
|---|---|
| 외부 스트레인 사용(Use External Strain) | 이 옵션을 활성화하면 필드가 할당된 지오메트리 컬렉션에 외부 스트레인을 적용합니다. |
| 스트레인 세기(Strain Magnitude) | 적용되는 스트레인 포스의 세기입니다. 기본적으로 이 값은 적용된 스트레인 포스가 본을 파괴할 수 있도록 매우 높게 설정되어 있습니다. 스트레인 포스가 지오메트리 컬렉션의 대미지 한계치보다 낮으면 스트레인이 프랙처를 유발하지 못합니다. |
| 스트레인 감쇠 타입(Strain Falloff Type) | 볼륨 내 스트레인 포스에 감쇠를 적용합니다. 선형(Linear), 역(Inverse), 제곱(Square), 지수(Logarithmic) 감쇠 타입 중에서 선택할 수 있습니다. |
| 스트레인 감쇠 최소 최대(Strain Falloff Min Max) | 볼륨의 중앙(최소)부터 볼륨 가장자리(최대)까지의 감쇠 값을 설정합니다. 값이 0인 경우 감쇠가 없음을, 값이 1인 경우 감쇠가 100%라는 것을 의미합니다. |
| 스트레인 히트 수(Num Strain Hits) | 필드가 적용되는 횟수를 설정합니다. 이 필드는 히트당 1번 활성화되므로, 히트가 여러 번이면 포스가 적용되기 전에 사용자가 여러 개의 클러스터 레벨을 파괴할 수 있습니다. |
스트레인 세기
아래 예시에서는 필드가 지오메트리 컬렉션의 대미지 한계치보다 강한 스트레인을 적용하였고, 그 결과 본이 파괴됩니다.
이 예시에는 2가지의 서로 다른 지오메트리 컬렉션이 있습니다. 파란색 지오메트리 컬렉션의 대미지 한계치는 200,000이고, 주황색 지오메트리 컬렉션의 대미지 한계치는 500,000입니다. 필드에는 세기가 400,000인 내부 스트레인이 적용되어 있습니다. 그 결과 파란색 지오메트리 컬렉션은 파괴되고, 주황색 지오메트리 컬렉션은 손상 없이 유지됩니다.
스트레인 감쇠 타입 및 최소/최대
스트레인 감쇠 타입 드롭다운을 클릭하고 옵션을 선택하여 스트레인 감쇠(Strain Falloff) 를 조정할 수 있습니다. 또한 감쇠의 최솟값과 최댓값을 조정하여 원하는 결과를 얻을 수도 있습니다.
이 예시에서는 필드에 감쇠가 적용되지 않았습니다.
이 예시에서는 선형 감쇠(Linear falloff) 를 적용하고 최대(Max) 값을 2 로 설정했습니다.
퍼포먼스상의 이유로, 외부 스트레인에 감쇠를 사용하는 것은 권장하지 않습니다. 하지만 내부 스트레인과 함께 사용하여 특정한 이펙트를 구현하고자 하는 경우에는 외부 스트레인 감쇠가 유용할 수 있습니다.
내부 스트레인
감쇠(Decay)라고도 하는 내부 스트레인은 지오메트리 컬렉션의 내부 대미지 한계치를 변경합니다. 활성화된 감쇠 필드는 볼륨 내 본의 대미지 한계치를 감쇠량만큼 낮춥니다.
이를 활용하여 지오메트리 컬렉션이 외부 스트레인에 의해 파괴될 때까지 점차 약화할 수 있습니다.
아래 예시에서는 활성화 타입 을 틱 시 로 설정하고 딜레이량 을 1초 로 설정했습니다. 또한 감쇠 사용(Use Decay) 체크 박스를 활성화하고 감쇠량(Decay Amount) 을 100,000 으로, 감쇠 딜레이(Decay Delay) 를 1초 로 설정했습니다.
지오메트리 컬렉션의 대미지 한계치(Damage Threshold) 는 500,000 입니다.
이 옵션은 볼륨 내 본의 대미지 한계치를 매초 100,000만큼 줄이고, 감쇠가 가장자리를 향해 진행됩니다. 결과는 다음과 같습니다.
리지드 바디 활성화
스트레인을 사용하지 않고 키네마틱 리지드 바디를 활성화하고 싶은 경우도 있습니다.
이렇게 하려면 필드 세팅(Field Settings) 에서 고급 필드 세팅 > 강제 동적 변경(Force Dynamic Switching) 섹션으로 이동하여 강제 동적 변경(Force Dynamic Switch) 체크 박스를 활성화하면 됩니다.
아래 예시에서는 지오메트리 컬렉션을 키네마틱(Kinematic) 으로 설정하고, 필드가 스트레인이나 속도를 적용하지 않고 지오메트리 컬렉션을 활성화합니다.
태그된 스태틱 및 스켈레탈 활성화(Activate Tagged Static and Skeletal) 체크 박스를 활성화하여 스태틱 및 스켈레탈 메시(Skeletal Meshes) 도 활성화할 수 있습니다.
활성화하고자 하는 각 메시에서 모빌리티 를 무버블 로 설정하고 액터 태그 'SM_Rigids' 를 추가합니다. 또한 올바르게 시뮬레이션되도록 메시가 콜리전을 보유했는지 확인합니다.
속도
방사상 속도
방사상 속도는 공간 내 오브젝트를 한 지점에서 주어진 세기만큼 밀어냅니다. 이 지점은 기본적으로 볼륨의 중앙이지만, 사용자가 변경할 수 있습니다.
아래 예시에서는 방사상 속도를 스피어 볼륨 중간에 적용하였습니다.
속도 원점을 변경하려면 고급 필드 세팅 > 속도 제어(Velocity Controls) 섹션으로 이동하여 방사상 위치 오프셋(Radial Position Offset) 을 변경합니다. 이 예시에서 Y축 원점에 100유닛의 오프셋을 적용하였습니다. 그 결과, 아래 보이는 것처럼 스피어 볼륨의 가장자리부터 속도가 적용됩니다.
선형 및 각 속도 적용(Apply Linear and Angular Velocities) 섹션으로 이동하여 방향 벡터 사용(Use Directional Vector) 체크 박스를 활성화하면 특정 방향의 속도를 적용할 수 있습니다.
아래 예시에는 필드의 업 벡터에 800의 방향 세기를 적용하였습니다.
필드를 회전하여 속도 방향을 바꿀 수 있습니다. 이 예시에서는 필드를 회전하여 속도의 방향을 변경했습니다.
방향 벡터를 수동으로 입력하려면 고급 필드 세팅 > 속도 제어 섹션으로 이동하여 방향 벡터 오버라이드(Override Directional Vector) 체크 박스를 활성화하면 됩니다. 그다음 방향 벡터 오버라이드(Directional Vector Override) 값을 입력합니다.
각 속도
선형 및 각 속도 적용 섹션으로 이동하여 토크 사용(Use Torque) 체크 박스를 활성화하면 각 속도를 적용할 수 있습니다. 적용되는 속도의 세기는 토크 멀티플라이어(Torque Multiplier) 값을 설정하여 제어할 수 있습니다.
아래 예시는 토크 멀티플라이어 를 64 로 설정했습니다.
포스 vs 속도
FS_MasterField 에는 볼륨 내에 포스 또는 속도를 적용할 수 있는 옵션이 있습니다. 기본적으로 필드는 속도를 적용하며, 이는 질량이나 볼륨을 고려하지 않고 오브젝트의 속도를 주어진 값으로 명시적으로 설정하는 옵션입니다.
포스를 적용하면 시뮬레이션 중에 각 오브젝트의 질량을 고려하므로 보다 사실적인 결과를 얻을 수 있습니다. 지오메트리 컬렉션의 질량을 조정하려면 콘텐츠 브라우저 에서 지오메트리 컬렉션 에셋을 열고 콜리전 섹션으로 이동합니다. 원하는 질량(Mass) 값을 입력합니다.
지오메트리 컬렉션의 경우 피직스(Physics) 섹션의 질량 값이 필드에서 사용되지 않는다는 점에 유의하세요. 필드는 지오메트리 컬렉션 에셋 자체의 세팅만 고려합니다.
스태틱 메시나 스켈레탈 메시에 포스를 적용하는 경우 디테일 패널로 이동하여 피직스 섹션으로 스크롤을 내린 후 오브젝트의 질량을 설정합니다. 피직스 시뮬레이트(Simulate Physics) 를 활성화하고 질량 값을 입력합니다.
아래 예시의 왼쪽 필드에는 속도가, 오른쪽 필드에는 포스가 적용된 모습을 확인할 수 있습니다. 각 필드 내에는 질량이 500kg 및 1,000kg인 두 개의 오브젝트가 있습니다.
속도가 적용된 필드의 두 오브젝트는 질량이 다름에도 불구하고 동일하게 움직이는 것을 볼 수 있습니다. 하지만 포스가 적용된 필드의 경우 동일한 양의 포스가 적용될 때 두 오브젝트는 서로 다른 방식으로 영향을 받습니다.
감쇠
FS_MasterField 에는 볼륨 내 적용된 속도의 감쇠를 조절하는 다양한 옵션이 있습니다. 감쇠 타입을 변경하려면 선형 및 각 속도 적용 섹션으로 이동하여 속도 필드 감쇠 타입(Velocity Field Falloff Type) 드롭다운을 클릭하면 됩니다.
속도 필드 감쇠 타입
| 감쇠 타입 | 설명 |
|---|---|
| 없음(None) | 필드에 감쇠 함수가 적용되지 않습니다. |
| 선형(Linear) | 감쇠 함수가 X에 비례합니다. 이때 X는 볼륨 중앙과 가장자리 사이의 거리입니다. |
| 역(Inverse) | 감쇠 함수가 1/X에 비례합니다. 이때 X는 볼륨 중앙과 가장자리 사이의 거리입니다. |
| 제곱(Squared) | 감쇠 함수가 X*X에 비례합니다. 이때 X는 볼륨 중앙과 가장자리 사이의 거리입니다. |
| 지수(Logarithmic) | 감쇠 함수가 Log(X)에 비례합니다. 이때 X는 볼륨 중앙과 가장자리 사이의 거리입니다. |
선형 감쇠 타입을 사용하는 경우 필드 중앙에 최대 속도가 적용되며, 필드 가장자리에 도달하면 최솟값까지 페이드합니다.
아래 예시에서는 최소 속도 감쇠(Minimum Velocity Falloff) 를 0 으로, 최대 속도 감쇠(Maximum Velocity Falloff) 를 1 로 설정한 필드를 확인할 수 있습니다.
최소 및 최대 감쇠 값을 조정하여 다양한 이펙트를 만들 수 있습니다. 예를 들어, 아래 필드는 최소 감쇠(Minimum Falloff) 값을 -1 로, 최대 감쇠(Maximum Falloff) 값을 0 으로 사용하고 있습니다. 음수 값은 오브젝트를 밀어내는 대신 중앙으로 당깁니다. 이렇게 하면 다음과 같은 이펙트가 생성됩니다.
최소 감쇠 및 최대 감쇠 값을 더 큰 정수로 설정하여 볼륨 내에서 링 이펙트를 만들 수도 있습니다. 아래 예시에서는 최소 감쇠 값을 -1 로, 최대 감쇠 값을 1 로 설정했습니다.
노이즈
FS_MasterField 에는 볼륨 내에 적용된 속도와 포스에 노이즈를 추가하는 기능이 포함되어 있습니다. 노이즈는 필드 내 오브젝트에 적용된 예측 가능한 속도에 무작위성을 더합니다.
필드에 노이즈를 추가하려면 디테일 패널의 노이즈(Noise) 섹션으로 이동하여 노이즈 사용(Use Noise) 체크 박스를 활성화합니다. 필드 내 속도에 곱해지는 최소 및 최대 노이즈 값을 설정할 수 있습니다. 또한 무작위성을 생성하는 데 사용되는 펄린 노이즈를 조정하는 노이즈 스케일 배수(Noise Scale Multiplier) 도 설정할 수 있습니다.
아래 예시에는 박스 필드에 틱마다 노이즈 없이 속도를 적용했습니다.
아래 예시는 박스 필드에 틱마다 최소 노이즈(Minimum Noise) 값을 0.8 로, 최대 노이즈(Maximum Noise) 값을 1 로 설정하여 적용했습니다. 노이즈 스케일 배수 는 30 으로 설정되어 있습니다.
