RigidBody

RigidBody 노드와 애니메이션 블루프린트 안에서 이 노드를 가벼운 피직스 시뮬레이션으로 사용하는 방법에 대한 설명입니다.

Choose your operating system:

Windows

macOS

Linux

RigidBody 애니메이션 블루프린트 노드를 활용하면 캐릭터의 피직스 에셋으로 캐릭터의 보조 오브젝트에서 가볍게 시뮬레이션된 피직스 모션을 수행할 수 있습니다. 이 문서에서는 RigidBody 노드의 개요를 소개하고 RigidBody 노드 사용법을 예시 워크플로를 통해 알아봅니다.

rigidbody node animation blueprint node

전제조건

개요

RigidBody 노드는 Anim Dynamics 노드와 유사한 기능을 수행하지만, 시뮬레이션 컨트롤 향상을 위한 캐릭터의 피직스 에셋 통합을 지원함으로써 기능이 더 풍부한 피직스 시뮬레이션 솔루션을 제공합니다. RigidBody 노드를 피직스 에셋과 함께 사용하면 캐릭터의 나머지 부분과 레벨 내 다른 오브젝트의 콜리전도 시뮬레이션할 수 있습니다.

RigidBody 노드의 일반적인 사용 사례는 캐릭터의 스켈레탈 메시에 있는 포니테일, 체인 등 캐릭터의 메인 바디에 달려 있거나 바디의 연장이어서 나머지 스켈레탈 메시 또는 레벨과 콜리전 인터랙션이 필요한 보조 구조체의 모션을 시뮬레이션하는 것입니다. RigidBody 노드는 이러한 구조체에 대한 다이내믹 및 반응성 모션을 전체 피직스 시뮬레이션처럼 퍼포먼스를 많이 소요하는 기법에 비해 효율적인 프로세스로 시뮬레이션하는 데 사용됩니다.

본 복사 데모 비활성화

본 복사 데모 활성화

RigidBody 비활성화

RigidBody 활성화

구성

예시 워크플로는 피직스 에셋을 사용하여 캐릭터의 애니메이션 블루프린트에서 RigidBody 노드를 구성 및 구현함으로써 캐릭터의 스켈레탈 메시에 있는 보조 구조체의 다이내믹하고 반응적인 모션을 시뮬레이션하는 방법을 보여줍니다.

피직스 에셋 생성하기

RigidBody 노드를 사용하려면 우선 캐릭터의 피직스 에셋을 구성해야 합니다. 전체 구성 가이드는 새 피직스 애셋 생성 문서에서 볼 수 있습니다.

캐릭터에게 이미 연결된 피직스 에셋이 있다면 선택 사항으로 특수 피직스 에셋을 만들어서 RigidBody 노드로 모션 및 콜리전을 시뮬레이션하는 보조 구조체를 분리할 수 있습니다. 특수 피직스 에셋을 RigidBody 노드와 함께 사용하면 시뮬레이션 도중 구조체의 행동을 더 잘 제어하는 보다 최적화된 방식이 될 수 있습니다.

physics asset in the content browser

캐릭터에 피직스 에셋이 없거나 RigidBody 노드와 함께 사용할 특수 피직스 에셋을 생성하려면 콘텐츠 브라우저(Content Browser) 에서 스켈레탈 메시 에셋을 우클릭 하고 생성(Create) > 피직스 에셋(Physics Asset) > 생성(Create) 을 선택하여 새 피직스 에셋을 생성할 수 있습니다..

create a new physics asset by right clicking a skeletal mesh in the content browser

새 피직스 에셋(New Physics Asset) 창에서 에셋 생성(Create Asset) 을 선택하여 캐릭터를 위한 새 피직스 에셋을 생성합니다.

피직스 에셋 생성에 대한 자세한 내용은 새 피직스 애셋 생성 가이드를 참조하세요.

피직스 에셋 편집하기

피직스 에셋 에디터에서 캐릭터의 피직스 에셋을 열고 캐릭터의 피직스 에셋에 RigidBody 노드를 사용할 구조체에 피직스 바디가 있는지 확인합니다. 이 예시에서는 캐릭터의 머리 호스 및 머리 호스와 상호작용할 캐릭터의 머리, 등, 팔, 무기 등 오브젝트에 대해 피직스 바디가 생성되었습니다.

physics asset physics bodies represent collision and components

디폴트 세팅에서 콜리전은 모든 피직스 바디에서 비활성화됩니다. 피직스 모션을 시뮬레이션할 스켈레탈 메시의 일부로 구성된 바디에서 콜리전을 활성화하려면 스켈레톤 트리(Skeleton Tree) 에서 바디를 선택한 상태로 우클릭 하고 콜리전(Collision) > 모든 콜리전 활성화(Enable Collision All) 를 선택합니다.

enable collision on all

피직스 및 콜리전을 시뮬레이션할 스켈레탈 메시의 일부로 구성된 바디 전체를 선택한 상태에서 디테일(Details) 패널의 피직스 모드(Physics Mode)시뮬레이티드(Simulated) 로 설정합니다.

select the physics type as simulated for the hoses

나머지 피직스 바디를 선택하고 피직스 모드(Physics Mode)키네마틱(Kinematic) 으로 설정합니다.

set remainging physics bodies to kinematic

피직스 에셋 에디터툴바 에서 시뮬레이트(Simulate) 버튼을 눌러서 피직스 에셋의 기본 기능을 테스트할 수 있습니다.

Simulate.gif

시뮬레이션된 오브젝트의 떨림 또는 흔들림 현상은 이 단계에서 일반적입니다. 각 피직스 바디에서 질량(Mass)(kg) 프로퍼티를 활성화 및 테이퍼링하여 이 문제를 해결할 수 있습니다. 우선 부모 구조체에서 가장 가까운 바디를 가장 무거운 피직스 바디로 설정하고 체인에서 각 후속 바디의 질량을 반으로 줄입니다.

이 예시에서는 첫 번째 머리 호스 피직스 바디의 질량을 2kg 으로 설정하고 두 번째 머리 호스 피직스 바디의 질량을 1kg 으로 설정했습니다.

피직스 바디의 질량(kg) 프로퍼티

마지막으로 모션 및 콜리전을 시뮬레이션하는 모든 바디에서 선형 댐핑(Linear Damping)각 댐핑(Angular Damping) 프로퍼티의 값을 설정합니다. 값이 높으면 모션이 줄어들고 시뮬레이션된 바디의 흔들림을 제어합니다. 이 예시에서는 각 프로퍼티 값을 5.0 으로 설정했지만, 각 고유 구현마다 이 값을 미세조정하는 것이 이상적인 결과를 달성하는 데 필수적입니다.

damping settings

애니메이션 블루프린트

피직스 에셋을 사용하면 RigidBody 노드를 애님 그래프에서 캐릭터의 애니메이션 블루프린트에 추가할 수 있습니다.

RigidBody 노드는 컴포넌트 스페이스(Component Space) 내에서 작동하므로 캐릭터의 애니메이션 블루프린트 내에서 노드를 구현하려면 스페이스 변환이 일어나야 합니다.

기본적으로 RigidBody 노드는 캐릭터와 연결된 피직스 에셋을 활용합니다. 보조 피직스 에셋을 사용하는 경우, 디테일(Details) 패널에 있는 RigidBody 노드의 피직스 에셋 오버라이드(Override Physics Asset) 프로퍼티에서 특정 에셋을 정의할 수 있습니다.

override physics asset porperty in the rigidbody nodes details panel

조정 및 미세조정

스켈레톤의 조인트와 더 가깝게 정렬하기 위해 추가로 조정을 가하려면 RigidBody 노드의 프로퍼티(컴포넌트 선형 가속 스케일(Component Linear Acc Scale), 컴포넌트 선형 속도 스케일(Component Linear Vel Scale), 선형 가속 클램프가 적용된 컴포넌트(Component Applied Linear Acc Clamp), 시뮬레이션 스페이스 세팅(Sim Space Settings) 프로퍼티)에서 컨스트레인트를 사용하거나 피직스 에셋에서 피직스 바디의 위치를 조정합니다.

scale settings

피직스 에셋의 각 피직스 바디에서 질량 중심(Center of Mass) 프로퍼티를 조정하여 가장 가까운 스켈레탈 조인트에 더 가깝게 정렬함으로써 흔들림이나 과도한 모션을 줄일 수 있습니다.

adjust the physics bodies

결과

예시 워크플로에서 살펴본 간단한 RigidBody 노드 구현의 최종 결과입니다.

example demo of the rigidbody node

베이스 본 시뮬레이션 레퍼런스

RigidBody 노드의 디테일 패널에서 시뮬레이션 스페이스(Simulation Space)베이스 본 스페이스(Base Bone Space) 로 설정하고 베이스 본(Base Bone) 을 정의하면 어떤 조인트든지 시뮬레이션을 위한 레퍼런스 포인트로 사용할 수 있습니다.

전체 스켈레탈 메시를 움직이고 개별적으로 베이스 본 을 수정하는 것은 속도에 영향을 주지 않습니다. 그러므로 베이스 본 스페이스시뮬레이션 스페이스 로 사용하면 캐릭터 모션이 시뮬레이션에 영향을 주지 않습니다.

다이내믹스 리셋

RigidBody 노드는 애니메이션 블루프린트의 이벤트그래프(EventGraph) 에서 사용 가능한 Reset Dynamics 블루프린트 노드도 지원합니다. 함수 노드를 사용하려면 블루프린트에서 스켈레탈 메시로부터 애니메이션 인스턴스를 구하고 함수 호출인 Reset Dynamics 노드를 사용하여 시뮬레이션을 리셋합니다.

reset dynamics node aniamtion blueprint event graph

이 함수 노드는 캐릭터가 텔레포트하는 상황 등에 발생할 수 있는 시각적, 행동적 문제를 피하기 위해 시뮬레이션을 리셋할 때 특히 유용합니다.

프로퍼티 레퍼런스

rigid body node details panel

여기서 RigidBody 노드의 세팅(Settings) 프로퍼티를 참조할 수 있습니다.

프로퍼티

설명

피직스 에셋 오버라이드(Override Physics Asset)

사용할 피직스 에셋을 선택합니다. 비어 있는 경우 스켈레탈 메시의 디폴트 피직스 에셋을 사용합니다.

월드 중력 오버라이드(Override World Gravity)

활성화하면 월드 중력을 오버라이드하여 X, Y, Z 축에서 값을 설정합니다.

외부 포스(External Force)

월드 스페이스에서 균일한 외부 포스를 적용합니다. 컴포넌트 스페이스에서 시뮬레이션을 계속하면서 움직임의 관성을 쉽게 시뮬레이션할 수 있습니다. 기본적으로 이 프로퍼티는 애님 그래프 에서 노드의 핀으로서 표시됩니다.

컴포넌트 선형 가속 스케일(Component Linear Acc Scale)

월드 스페이스가 아닌 시뮬레이션을 사용할 때, 이 프로퍼티는 컴포넌트의 월드 스페이스 가속이 어느 정도 로컬 스페이스 시뮬레이션에 전달되는지 제어합니다.

컴포넌트 선형 속도 스케일(Component Linear Vel Scale)

월드 스페이스가 아닌 시뮬레이션을 사용할 때, 이 프로퍼티는 컴포넌트의 월드 스페이스 속도를 바탕으로 로컬 스페이스 시뮬레이션의 피직스 바디에 드래그를 적용합니다.

선형 가속 클램프가 적용된 컴포넌트(Component Applied Linear Acc Clamp)

월드 스페이스가 아닌 시뮬레이션을 사용할 때, 이 프로퍼티는 컴포넌트 선형 가속 스케일(Component Linear Acc Scale) 프로퍼티에서 파생된 가속이 너무 커지지 않게 하기 위한 전반적인 범위제한입니다.

캐시된 바운드 스케일(Cached Bounds Scale)

실제 바운드 대비 캐시된 바운드 스케일입니다. 이 값을 높이면 퍼포먼스가 향상될 수 있지만 오버랩이 정상 작동하지 않을 수 있습니다. 값이 1.0이면 캐시된 바운드가 비활성화됩니다.

베이스 본 레퍼런스(Base Bone Ref)

시뮬레이션 스페이스(Simulation Space)베이스 본(Base Bone) 으로 설정됐을 때 캐릭터의 스켈레톤에서 시뮬레이션의 레퍼런스 포인트 역할을 할 본을 선택합니다.

오버랩 채널(Overlap Channel)

충돌할 스태틱 지오메트리를 찾는 데 사용되는 채널입니다. 옵션은 다음과 같습니다.

월드 스태틱(World Static) 월드 다이내믹(World Dynamic) 폰(Pawn) 비저빌리티 카메라(Visibility Camera) 피직스 바디(Physics Body) 비히클(Vehicle) 디스트럭터블(Destructible)

시뮬레이션 스페이스(Simulation Space)

피직스 바디를 시뮬레이션할 스페이스입니다. 속도가 생성되는 방식에 영향을 미칩니다. 옵션은 다음과 같습니다.

컴포넌트 스페이스(Component Space) : 컴포넌트 스페이스에서 시뮬레이션합니다. 전체 스켈레탈 메시를 움직여도 것은 속도에 영향을 미치지 않습니다. 월드 스페이스(World Space) : 월드 스페이스에서 시뮬레이션합니다. 스켈레탈 메시를 움직이면 속도 변화가 생성됩니다. 베이스 본 스페이스(Base Bone Space) : 선택한 베이스 본(Base Bone) 의 본 스페이스에서 시뮬레이션합니다. 전체 스켈레탈 메시를 움직이고 개별적으로 베이스 본 을 수정해도 속도에 영향을 주지 않습니다.

컨스트레인트 바디 간 콜리전 비활성화 강제(Force Disable Collision Between Constraint Bodies)

컨스트레인트로 결합된 두 피직스 바디 간 콜리전을 허용할지 여부입니다.

본 속도 전송(Transfer Bone Velocities)

시뮬레이션이 시작되면 입력 포즈로부터 이전 본 속도를 전송하여 시뮬레이션으로 끊김없이 전환합니다.

시작 시 수신된 포즈 프리즈(Freeze Incoming Pose on Start)

시뮬레이션이 시작되면 수신된 포즈를 프리즈합니다. 시뮬레이션이 주도하게 하고 싶을 때 래그돌에 유용합니다. 시뮬레이션되지 않은 본이 애니메이팅되는 것을 방지합니다.

레퍼런스 포즈로 선형 이동 제한 범위제한(Clamp Linear Translation Limit to Ref Pose)

모든 축이 잠긴 바디에서 선형 티어링을 교정합니다. 모든 축 선형 이동이 잠긴 경우에만 작동합니다.

월드 스페이스 최소 스케일(World Space Minimum Scale)

월드 스페이스 시뮬레이션에서 컴포넌트의 3D 스케일이 월드 스페이스 최소 스케일보다 작은 경우 이 모드를 업데이트하지 않습니다.

평가 리셋 시간(Evaluation Reset Time)

더 낮은 LOD가 한동안 사용되었거나 컴포넌트가 보이지 않아서 이 시간(단위: 초) 동안 노드가 평가되지 않은 경우, 시뮬레이션을 다음 평가 시에 디폴트 포즈로 리셋합니다. 시간 기반 리셋을 비활성화하려면 0으로 설정합니다.

시뮬레이션 스페이스 세팅

RigidBody 노드의 시뮬레이션 스페이스 세팅은 시뮬레이션의 스페이스에서 시뮬레이션으로 전달되는 모션을 제어합니다. 이를 통해 시뮬레이션이 월드 스페이스 모션의 일부를 피직스 바디로 전달할 수 있습니다. 이는 본 스페이스(Bone Space)컴포넌트 스페이스(Component Space) 시뮬레이션이 월드 스페이스 움직임에 제어 가능한 방식으로 반응하는 것을 허용합니다.

이 시스템은 컴포넌트 선형 가속 스케일(Component Linear Acc Scale), 컴포넌트 선형 속도 스케일(Component Linear Vel Scale), 선형 가속 클램프가 적용된 컴포넌트(Component Applied Linear Acc Clamp) 에서 제공하는 함수 기능의 상위 세트입니다. 대부분의 경우 두 시스템을 모두 활성화해서는 안 됩니다.

SimSettings.png

여기서 RigidBody 노드의 시뮬레이션 스페이스 세팅 프로퍼티를 참조할 수 있습니다.

프로퍼티

설명

마스터 알파(Master Alpha)

시뮬레이션 스페이스 움직임의 이펙트에 대한 글로벌 배수입니다. 범위 [0, 1] 이내입니다. 마스터 알파가 0이면 시스템이 비활성화되고 시뮬레이션은 완전히 로컬이 되며 월드 스페이스 액터 움직임과 회전이 시뮬레이션에 영향을 주지 않습니다. 마스터 알파가 1인 경우 시뮬레이션이 사실상 월드 스페이스 시뮬레이션으로 작동하지만 다른 파라미터에 제한을 적용할 수 있습니다.

속도 스케일 Z(Velocity Scale Z)

시뮬레이션에 전달된 속도 및 가속의 Z 컴포넌트에 대한 배수입니다. 보통 시뮬레이션에서 점프 또는 앉기의 이펙트를 줄이기 위해 0.0에서 1.0 사이로 설정하지만, 이 모션을 과장하려면 1.0보다 큰 값으로 설정할 수 있습니다.

최대 선형 속도(Max Linear Velocity)

시뮬레이션에 전달된 유효 월드 스페이스 속도에 대한 범위제한입니다. 단위는 cm/s입니다. 디폴트값은 사실상 '무제한'을 뜻합니다. 보통은 이 값을 변경할 필요가 없지만 시뮬레이션의 피직스 바디에서 드래그의 이펙트를 제한하려면(피직스 에셋에서 선형 드래그가 0이 아닌 값으로 설정된 바디가 있는 경우) 이 값을 줄입니다. 이 경우 예상 값은 오브젝트의 일반적인 속도(보통 캐릭터의 경우 수백)보다 약간 낮습니다.

최대 각 속도(Max Angular Velocity)

시뮬레이션에 전달된 유효 월드 스페이스 각 속도에 대한 범위제한입니다. 단위는 라디안/s이므로 값이 약 6인 경우 초당 1회전을 뜻합니다. 디폴트값은 사실상 '무제한'을 뜻합니다. 액터가 제자리에서 회전할 때 바디가 튀어 나가는 정도를 제한하려면 이 값(그리고 최대 각 가속)을 줄입니다. 이는 캐릭터가 아주 빠르게 회전할 수 있는 경우 특히 유용하며, 이 경우 값을 10 이하로 하는 것이 좋습니다.

최대 선형 가속(Max Linear Acceleration)

시뮬레이션에 전달된 유효 월드 스페이스 가속에 대한 범위제한입니다. 단위는 cm/s/s입니다. 디폴트값은 사실상 '무제한'을 뜻합니다. 이 프로퍼티는 선형 속도가 갑자기 바뀔 때 시뮬레이션의 피직스 바디가 튀어 나가는 것을 막기 위해 사용됩니다. FPS에서처럼 가만히 서 있다가 아주 빠르게 달릴 수 있는 캐릭터가 있는 경우에 유용합니다. 캐릭터의 경우 일반적인 값은 수백입니다.

최대 각 가속(Max Angular Acceleration)

시뮬레이션에 전달된 유효 월드 스페이스 각 가속에 대한 범위제한입니다. 단위는 라디안/s/s입니다. 디폴트값은 사실상 '무제한'을 뜻합니다. 최대 각 속도와 효과가 비슷하지만, 회전 속도가 갑자기 변경될 때 바디가 튀어 나가는 것과 관련되어 있다는 점에서 다릅니다. 캐릭터의 경우 일반적인 제한은 100 정도입니다.

외부 선형 드래그 V(External Linear Drag V)

피직스 에셋에서 모든 바디에 지정된 선형 드래그 외에 추가적인 선형 드래그가 모든 바디에 적용됩니다. 외부 선형 속도와 결합되면 피직스 에셋의 모든 바디에서 선형 드래그를 미세조정하지 않고도 바람이 부는 이펙트 등을 일시적으로 추가하는 데 사용될 수 있습니다. 그 결과 각 바디에는 다른 모든 힘 외에도 (- 외부 선형 드래그 v * 외부 선형 속도)와 동일한 힘이 적용됩니다. 이 벡터는 시뮬레이션 로컬 스페이스에 있습니다.

외부 선형 속도(External Linear Velocity)

컴포넌트 속도에 추가 속도가 더해져서 액터가 가만히 있을 때에도 마치 빠르게 움직이는 것처럼 시뮬레이션이 작동합니다. 벡터는 월드 스페이스에 있습니다. 단위는 cm/s입니다. 바람 이펙트 등에 사용될 수 있습니다. 일반적인 값은 오브젝트 또는 이펙트의 속도와 유사하며, 보통 캐릭터/바람의 경우 1000 이하입니다.

외부 각 속도(External Angular Velocity)

컴포넌트의 각 속도에 더해지는 추가 각 속도입니다. 액터가 회전하지 않을 때에도 회전하는 것처럼 시뮬레이션을 작동하게 하는 데 사용됩니다. 예를 들어 시상대 위의 캐릭터가 서 있고 카메라가 그 주변을 회전할 때 이 캐릭터에 피직스를 적용하여 시상대 자체가 회전하는 것처럼 연출할 수 있습니다. 벡터는 월드 스페이스에 있습니다. 단위는 라디안/s입니다.