안동민 개발노트

본문 시작

프로시저럴 애니메이션 구현

IK와 물리 기반 애니메이션으로 지형·충돌에 실시간 반응하는 포즈를 만들고 적용 범위와 한계를 이해합니다.

지금까지는 애니메이션 시퀀스, 블렌드 스페이스, 애님 몽타주처럼 미리 제작된 자산을 중심으로 캐릭터를 움직였습니다.

하지만 실제 게임에서는 지형, 충돌, 물리 반응처럼 런타임 상황에 맞춰 즉시 움직임이 바뀌어야 할 때가 많습니다.

이럴 때 사용하는 접근이 프로시저럴 애니메이션(Procedural Animation)입니다.

이번 절에서는 프로시저럴 애니메이션 개념과 언리얼 엔진에서의 기본 구현 방법을 정리합니다.


프로시저럴 애니메이션이란 무엇인가?

프로시저럴 애니메이션(Procedural Animation)은 미리 제작된 애니메이션에 더하거나 대신하여, 알고리즘이나 수학적 계산을 통해 런타임(게임 플레이 중)에 실시간으로 생성되는 애니메이션을 의미합니다.

이는 캐릭터의 뼈대(Bone)를 직접 제어하거나, 물리 시뮬레이션을 적용하여 동작을 만들어내는 방식입니다.

프로시저럴 애니메이션이 필요한 이유:

  • 실시간 반응성: 캐릭터가 지형의 경사에 따라 발의 각도를 맞추거나, 사물과 충돌 시 팔다리가 자연스럽게 움직이는 등, 예측 불가능한 게임플레이 상황에 실시간으로 반응하는 애니메이션을 만들 수 있습니다.
  • 다양성과 변화: 동일한 기본 애니메이션에 프로시저럴 요소를 추가하여 매번 조금씩 다른, 반복되지 않는 움직임을 생성할 수 있습니다. (예: 걷기 애니메이션에 미세한 흔들림 추가)
  • 제작 효율성: 모든 세부 동작을 애니메이터가 만들 필요 없이, 일부 로직을 통해 자동으로 생성되므로 제작 비용을 절감할 수 있습니다.
  • 현실감 증가: 물리 법칙을 따르는 듯한 자연스러운 움직임은 캐릭터의 현실감을 높여줍니다. (예: IK를 이용한 발 맞춤)

언리얼 엔진의 주요 프로시저럴 애니메이션 기법

언리얼 엔진의 애님 그래프에서는 다양한 프로시저럴 애니메이션 노드를 제공합니다.

가장 대표적인 것은 IK (Inverse Kinematics)와 물리 기반 시뮬레이션입니다.

IK (Inverse Kinematics) - 역운동학

IK (Inverse Kinematics)는 프로시저럴 애니메이션에서 가장 자주 쓰이는 핵심 기법입니다.

일반 애니메이션은 정운동학(Forward Kinematics, FK)처럼 부모 뼈대부터 자식 뼈대 순서로 회전을 적용해 포즈를 만듭니다.

반대로 IK는 발이나 손 같은 자식 뼈대의 목표 위치/회전을 먼저 정하고, 시스템이 부모 뼈대 회전을 역으로 계산해 목표를 맞춥니다.

활용 예시
  • 발 IK (Foot IK): 경사진 지형을 걷거나 계단을 오를 때 캐릭터의 발이 땅에 딱 붙도록 자동으로 조절합니다.
  • 손 IK: 캐릭터의 손이 문손잡이나 벽에 있는 스위치 등 특정 오브젝트에 정확하게 닿도록 합니다.
  • 조준 IK: 총을 든 캐릭터가 조준 방향에 따라 손과 팔의 자세를 자연스럽게 변경합니다.
IK 구현의 기본 개념 (Foot IK 예시)
애님 그래프에 IK 노드 추가
  • 애님 블루프린트의 애님 그래프 탭으로 이동합니다.
  • 기존의 Output Pose (혹은 Slot 노드)와 Final Animation Pose 사이에 Two Bone IK 노드 또는 Fabrik 노드(더 유연한 IK 솔루션)를 추가합니다. Two Bone IK는 끝 뼈대와 부모 두 개로 이루어진 3관절 체인을 제어합니다. Local to Component 변환 뒤 IK를 적용하고 Component to Local로 최종 포즈에 돌려줍니다. Fabrik은 더 많은 뼈대에 적용 가능합니다.
IK 노드 설정 (예: Two Bone IK for Foot IK)
  • IK Bone: IK를 적용할 최종 자식 뼈대 (예: foot_l, foot_r)
  • Effector Location: 끝 뼈대의 목표 Vector. 이 예제는 Effector Location Space를 World Space로 설정해 월드 트레이스 좌표와 맞춥니다. Joint Target도 별도로 선택한 공간과 좌표를 맞춥니다.
  • Joint Target Location: 중간 뼈대(무릎)가 꺾이는 방향을 결정하는 위치 (무릎이 바깥쪽으로 꺾이게 유도)
  • Alpha: IK의 영향력 (0.0은 IK 적용 안 함, 1.0은 IK 100% 적용). 보통 캐릭터가 땅에 발이 닿을 때만 IK를 적용하므로 이 값을 동적으로 제어해야 합니다.
이벤트 그래프에서 IK 목표 위치 계산
  • 이벤트 그래프 탭으로 이동합니다.
  • Event Blueprint Update Animation에서 캐릭터의 발이 닿아야 할 지면의 위치를 계산합니다. 이는 주로 라인 트레이스(Line Trace)를 사용하여 구현됩니다.
    • 캐릭터의 발 뼈대 위치에서 아래로 라인 트레이스를 쏘아 지면과의 교차점을 찾습니다.
    • 트레이스 성공 때 Impact Point의 전체 Vector를 발바닥 오프셋과 함께 목표 위치로 저장합니다(예: IK_Foot_L_Location). Z 스칼라만 Vector 입력에 넣지 않습니다. 실패·공중 상태에서는 Alpha를 낮춰 이전 지점에 발이 고정되지 않게 합니다.
    • 발이 땅에 닿았는지 여부(라인 트레이스 히트 여부)를 기반으로 IK_Foot_L_Alpha와 같은 Float 변수를 0.0 ~ 1.0 사이로 업데이트합니다. 이 변수를 Two Bone IK 노드의 Alpha 핀에 연결합니다.
  • 컴파일 및 저장합니다.

Physics Based Animation

언리얼 엔진의 피직스 에셋(Physics Asset)은 캐릭터의 뼈대에 물리 시뮬레이션(Ragdoll Physics)을 적용할 수 있게 해줍니다.

이를 통해 캐릭터가 외부 충격에 의해 쓰러지거나, 팔다리가 중력에 따라 자연스럽게 늘어지는 등의 효과를 구현할 수 있습니다.

활용 예시
  • 래그돌(Ragdoll) 효과: 캐릭터가 죽거나 큰 충격을 받았을 때, 애니메이션을 중단하고 물리 시뮬레이션으로 전환하여 자연스럽게 쓰러지도록 합니다.
  • 부분 물리 시뮬레이션: 옷자락, 머리카락, 작은 장신구 등에만 물리 시뮬레이션을 적용하여 미세한 흔들림을 만듭니다. (UE5의 Chaos Cloth, AnimGraph의 보조 물리, Cable Component 등은 용도에 맞게 구분합니다.)
  • Procedural Aiming (부분적인 IK와 Physics 혼합): 조준 시 어깨나 팔의 움직임에 미세한 물리적 관성을 추가하여 좀 더 현실적인 느낌을 줍니다.
피직스 에셋 기본 사용법 (래그돌 전환)

피직스 에셋 생성: 콘텐츠 브라우저에서 캐릭터의 Skeletal Mesh를 우클릭하고 Create > Physics Asset으로 생성합니다.

피직스 에셋 에디터에서 각 뼈대에 콜리전 메시와 조인트 제한을 설정할 수 있습니다.

캐릭터 Mesh의 전신 래그돌 준비
  • 캐릭터의 Skeletal Mesh에 Physics Asset을 지정하고, 시뮬레이션에 맞는 충돌 프로파일(예: Ragdoll)을 설정합니다.
  • 전신 래그돌은 AnimGraph의 RigidBody 보조 시뮬레이션과 다른 경로입니다. RigidBody에 Simulate Physics 불리언 핀을 연결하는 방식이 아닙니다.
캐릭터 이벤트 그래프에서 트리거
  • 사망 조건이 충족되면 이동을 중단하고 Mesh를 대상으로 Set Simulate Physics(true)를 호출합니다. 캡슐 충돌도 게임의 사망 정책에 맞게 조정합니다.
  • 애니메이션 복귀는 시뮬레이션 해제만으로 끝나지 않으며 메시·캡슐 위치 정렬과 일어나기 동작을 별도로 구현합니다.
  • 보조 구조의 흔들림이 목적이면 AnimGraph의 RigidBody를 Component Space에서 사용하고 Override Physics Asset·Alpha 등을 조정합니다.
  • 컴파일 및 저장합니다.

프로시저럴 애니메이션의 장점과 한계

이 Foot IK 예제는 기준 포즈 위에 필요한 보정을 섞습니다. 관절 도달 범위·보정 거리·Alpha를 제한하고 트레이스 실패와 LOD 조건에서 비활성화하는 경로를 둡니다.

장점
  • 높은 유연성: 게임플레이 상황에 따라 실시간으로 변화하는 애니메이션을 구현할 수 있습니다.
  • 제작 비용 절감: 특정 유형의 애니메이션을 수작업으로 만들 필요가 줄어듭니다.
  • 사실감 증대: 물리 법칙을 따르는 듯한 자연스러운 움직임은 캐릭터의 현실감을 높입니다.
한계
  • 복잡한 구현: 수학적 계산과 물리 시뮬레이션에 대한 이해가 필요하며, 로직 구현이 까다로울 수 있습니다.
  • 예측 불가능성: 물리 시뮬레이션은 때때로 의도치 않은 결과를 초래할 수 있어 세밀한 제어가 어려울 수 있습니다.
  • 성능 부하: 복잡한 물리 시뮬레이션은 런타임 성능에 부담을 줄 수 있습니다.

따라서 프로시저럴 애니메이션은 기존 키프레임 애니메이션을 완전히 대체하기보다는, 키프레임 애니메이션의 부족한 부분을 보완하거나 특별한 효과를 구현하는 데 활용됩니다. (예: 기본 걷기 애니메이션에 Foot IK를 추가하여 지형에 발을 맞추는 등)

이 둘을 적절히 혼합하여 사용하는 것이 가장 효과적인 애니메이션 구현 전략입니다.