PART 7 · 강의 3/3

디버깅과 프로파일링

ShowDebug Animation, Rewind Debugger, Unreal Insights를 활용한 애니메이션 문제 진단과 성능 분석을 다룹니다.

SECTION 01

ShowDebug Animation

실시간 애니메이션 상태를 화면에 표시하는 디버그 명령어

ShowDebug Animation은 현재 재생 중인 애니메이션의 상세 정보를 게임 화면에 오버레이하는 콘솔 명령어입니다. AnimGraph 노드별 웨이트, 활성 Montage, State Machine 상태 등을 실시간으로 확인할 수 있습니다.

콘솔 명령어
// 기본 애니메이션 디버그 ShowDebug Animation // 표시 내용: // - 현재 AnimBP 클래스명 // - 활성 State Machine과 현재 상태 // - 활성 Montage와 재생 위치 // - AnimGraph 노드 트리와 각 노드의 웨이트 // - 블렌드 웨이트와 재생 속도 // - Sync Group 상태 // - Curve 값 // 추가 디버그 명령어 ShowDebug Bones // 본 스켈레톤 시각화 ShowDebug Physics // 물리 바디 시각화 // 특정 캐릭터의 디버그 (멀티플레이어) // 화면에서 캐릭터를 바라보고 명령 실행 // 골격 시각화 p.Chaos.DebugDraw.Enabled 1 a.AnimNode.DebugDraw 1
디버그 항목 표시 내용 주요 용도
AnimGraph Tree 노드별 웨이트, 활성/비활성 상태 블렌딩 문제 진단
State Machine 현재 상태, 전이 진행 상황 전이 규칙 디버깅
Active Montage 재생 중인 Montage, 섹션, 위치 Montage 타이밍 확인
Curves 활성 커브 이름과 값 모프/머티리얼 커브 확인
SECTION 02

Rewind Debugger

애니메이션 히스토리를 되감기하며 분석하는 에디터 도구

Rewind Debugger는 UE5.1+에서 도입된 강력한 애니메이션 디버깅 도구입니다. 게임플레이를 녹화하고, 타임라인을 앞뒤로 이동하며 각 프레임의 애니메이션 상태를 검사할 수 있습니다.

타임라인 스크러빙

녹화된 게임플레이를 프레임 단위로 앞/뒤로 이동하며, 각 시점의 AnimGraph 상태를 확인합니다.

AnimGraph 스냅샷

각 프레임에서 어떤 AnimGraph 노드가 활성이었는지, 웨이트가 얼마였는지 기록합니다.

Pose Watch

특정 노드의 출력 포즈를 시각적으로 표시. 각 노드의 기여를 시각적으로 비교할 수 있습니다.

Notify 이벤트 추적

어떤 Notify가 어느 프레임에서 발동되었는지 타임라인에 표시합니다.

사용 방법
// Rewind Debugger 활성화 순서: // 1. 에디터에서 Window → Animation → Rewind Debugger // 2. PIE(Play In Editor) 시작 // 3. 캐릭터를 선택하고 Record 버튼 클릭 // 4. 문제 상황을 재현 // 5. Record 중지 // 6. 타임라인에서 문제 구간으로 이동 // 7. AnimGraph Tree에서 각 노드 상태 검사 // Trace를 이용한 Rewind Debugger: // - -trace=animation 으로 실행 // - Trace 파일에 애니메이션 이벤트 기록 // - Unreal Insights에서 열어 분석 가능 // AnimBP 디버깅: // - AnimBP 에디터에서 "Debug" 탭 활성화 // - 실행 중 AnimGraph 노드에 마우스 오버 시 웨이트 표시 // - 브레이크포인트 설정 가능
SECTION 03

Unreal Insights 프로파일링

Unreal Insights를 활용한 애니메이션 성능 분석

Unreal Insights는 UE5의 성능 프로파일링 도구입니다. 애니메이션 관련 타이머를 추적하여 AnimGraph 평가, 본 트랜스폼, 스키닝 비용을 분석합니다.

프로파일링 방법
// Unreal Insights로 애니메이션 프로파일링 // 방법 1: 에디터에서 실행 // Tools → Trace → UnrealInsights // 또는 -tracehost=localhost 옵션으로 실행 // 방법 2: 콘솔 명령어 Trace.Start default,animation // 애니메이션 채널 포함 Trace.Stop // 주요 분석 타이머: // ├── TickAnimComponent ← 컴포넌트 전체 틱 // │ ├── UpdateAnimation ← AnimInstance 업데이트 // │ │ ├── NativeUpdate ← C++ 업데이트 // │ │ └── BlueprintUpdate ← BP EventGraph // │ ├── AnimGraph Evaluate ← 노드 트리 평가 // │ │ ├── StateMachine ← SM 평가 // │ │ ├── BlendSpace ← BlendSpace 보간 // │ │ └── ControlRig ← Control Rig 평가 // │ └── BoneTransform ← 본 CS 변환 // └── SkinningUpdate ← GPU 스키닝 데이터 전송
Stat 명령어 표시 내용
stat anim 전체 애니메이션 시스템 비용 요약
stat animdetailed AnimGraph 노드별 상세 비용
stat animbudget 애니메이션 버짓 매니저 상태
stat gpu GPU 스키닝 비용 (MeshDraw 포함)
SECTION 04

일반적인 문제와 해결 가이드

프로덕션에서 자주 발생하는 애니메이션 문제와 진단 방법

발 미끄러짐 (Foot Sliding)

원인: Root Motion 없이 이동하거나, BlendSpace 동기화 누락. 진단: ShowDebug Animation으로 Sync Group 확인. 해결: Sync Group 활성화, Root Motion 사용, Foot IK 적용.

T-Pose 플래시

원인: 애니메이션 로드 실패, AnimBP 컴파일 에러, 잘못된 스켈레톤. 진단: Output Log 확인, AnimBP 컴파일 상태 확인. 해결: 애셋 참조 수정, AnimBP 리컴파일.

애니메이션 끊김

원인: 게임 스레드 스파이크, 병렬 평가 비활성, GC 히칭. 진단: stat anim, Unreal Insights. 해결: 병렬 평가 활성화, URO 적용, GC 튜닝.

블렌딩 부자연스러움

원인: 전이 시간 부적절, Inertialization 미사용, 블렌드 커브 부재. 진단: Rewind Debugger로 전이 구간 분석. 해결: Inertialization 적용, 블렌드 시간 조정.

프로파일링 체크리스트

1. stat anim으로 전체 비용 확인 (목표: 캐릭터당 0.5ms 이하)
2. stat animdetailed로 비용 높은 노드 식별
3. Unreal Insights로 스레드 분포 확인 (병렬 평가 활용도)
4. URO/LOD 적용 후 재측정
5. 가장 비용 높은 캐릭터부터 최적화 적용

Animation Budget Allocator

UE5의 Animation Budget Allocator 플러그인은 전체 애니메이션 CPU 예산을 설정하고, SignificanceManager와 연동하여 중요도 순으로 예산을 할당합니다. 예산 초과 시 낮은 중요도 캐릭터부터 자동으로 URO를 높이거나 업데이트를 중지합니다.

SUMMARY

핵심 요약

  • ShowDebug Animation으로 AnimGraph 노드 웨이트, State Machine 상태, Montage를 실시간 확인한다.
  • Rewind Debugger로 게임플레이를 녹화하고 타임라인을 되감으며 프레임별 애니메이션 상태를 분석한다.
  • Unreal Insightsstat anim/animdetailed로 노드별 비용을 측정하여 병목을 식별한다.
  • Animation Budget Allocator로 전체 CPU 예산을 설정하고, 중요도 순 자동 할당으로 대규모 최적화를 달성한다.
  • 발 미끄러짐, T-Pose, 끊김, 블렌딩 문제는 각각의 진단-해결 패턴을 체계적으로 적용하여 해결한다.
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: ShowDebug Animation 활용

PIE에서 콘솔 명령 ShowDebug Animation을 입력하세요. 현재 재생 중인 애니메이션, 블렌드 웨이트, State Machine 상태, 활성 Montage 정보를 화면에서 확인하세요. ShowDebugToggleSubCategory로 세부 카테고리를 토글하세요.

실습 2: Rewind Debugger 사용

Animation Insights에서 Rewind Debugger를 활성화하세요. 캐릭터 동작을 녹화한 후 타임라인을 앞뒤로 스크러빙하며 각 프레임의 포즈, Notify 발생, State 전환을 분석하세요. 이상 동작이 발생하는 정확한 프레임을 찾아보세요.

심화 과제

Unreal Insights의 Animation Track에서 전체 프로젝트의 애니메이션 성능을 프로파일링하세요. stat anim, stat kinematic으로 본 트랜스폼 계산 비용을 분석하고, 가장 비용이 높은 캐릭터의 AnimGraph를 최적화하여 목표 프레임 레이트를 달성하세요.