키프레임 애니메이션
커브 에디터와 보간 방식을 마스터하고, 시간 관리 시스템과 Easing 기법을 학습합니다
키프레임 기초
시간과 값의 쌍으로 애니메이션 정의하기
키프레임은 특정 시간(Time)에서의 목표 값(Value)을 정의합니다. 시퀀서는 두 키프레임 사이를 보간(Interpolation)하여 매끄러운 애니메이션을 생성합니다.
FFrameNumber와 FFrameTime
UE5 시퀀서는 틱 기반(Tick-based) 시간 시스템을 사용합니다.
내부적으로 모든 시간은 FFrameNumber(정수 틱)로 저장되며,
보간 시에만 FFrameTime(틱 + 서브프레임)으로 확장됩니다.
// 틱 해상도 (Tick Resolution) - 기본값: 24000 ticks/sec
FFrameRate TickResolution = MovieScene->GetTickResolution();
// 디스플레이 레이트 (Display Rate) - 에디터에서 보이는 프레임 레이트
FFrameRate DisplayRate = MovieScene->GetDisplayRate();
// 예: 30fps, 24fps, 60fps 등
// 프레임 번호를 시간(초)으로 변환
FFrameNumber Frame(720000); // 24000 * 30 = 720000 ticks = 30초
double TimeInSeconds = Frame.Value / TickResolution.AsDecimal();
// 시간(초)을 프레임으로 변환
FFrameNumber TargetFrame = (TimeInSeconds * TickResolution.AsDecimal());
틱 해상도(24,000 ticks/sec)는 내부 정밀도이고, 디스플레이 레이트는 에디터 UI에서 보이는 프레임 단위입니다. 높은 틱 해상도 덕분에 어떤 프레임 레이트에서도 정확한 키프레임 배치가 가능합니다.
보간 모드 (Interpolation)
키프레임 사이의 값 계산 방식
ERichCurveInterpMode
| 모드 | 설명 | 특징 |
|---|---|---|
| RCIM_Linear | 선형 보간 | 일정한 속도, 꺾이는 모션 |
| RCIM_Cubic | 큐빅 보간 (기본값) | 부드러운 커브, 탄젠트 조절 가능 |
| RCIM_Constant | 상수 (스텝) | 키프레임까지 이전 값 유지, 즉시 전환 |
| RCIM_None | 보간 없음 | 키프레임에서만 값 존재 |
탄젠트 (Tangent) 타입
큐빅 보간 시 키프레임의 탄젠트가 커브의 형태를 결정합니다.
| 탄젠트 | 설명 | 사용 시나리오 |
|---|---|---|
| Auto | 자동 계산, 인접 키 기반 | 일반적인 애니메이션 |
| User | 사용자 직접 조절 | 정밀한 커브 제어 |
| Break | 입/출 탄젠트 분리 | 비대칭 커브 (예: 급정지) |
| Weighted | 가중치 기반 탄젠트 | S-커브, 복잡한 이징 |
| SmartAuto | 개선된 자동 (UE5 기본) | 오버슈트 방지 자동 커브 |
Weighted Tangent를 사용하면 베지어 커브의 제어점 거리를 조절하여 S-커브나 비대칭 가속/감속을 정밀하게 제어할 수 있습니다. 커브 에디터에서 키프레임 우클릭 후 "Weighted Tangents"를 활성화합니다.
커브 에디터 활용
시각적 커브 편집 도구 마스터하기
커브 에디터는 시퀀서 내장 도구로, 키프레임의 시간-값 관계를 시각적으로 편집합니다. 시퀀서 하단의 커브 아이콘을 클릭하여 열 수 있습니다.
핵심 조작법
| 조작 | 단축키 | 설명 |
|---|---|---|
| 키프레임 추가 | Enter / 우클릭 메뉴 | 현재 시간에 키 삽입 |
| 키프레임 삭제 | Delete | 선택한 키 제거 |
| 보간 변경 | 1 (Linear) / 2 (Cubic) / 3 (Constant) | 선택한 키의 보간 모드 변경 |
| 커브 전체 보기 | F | 선택된 커브를 화면에 맞춤 |
| 탄젠트 핸들 | 드래그 | 커브 형태 조절 |
| 다중 선택 | Ctrl + 클릭 | 여러 키프레임 동시 편집 |
| 스냅 | 커브 에디터 툴바 | 프레임/값 그리드에 스냅 |
Pre/Post Infinity
시퀀스 범위 바깥에서 커브가 어떻게 확장되는지 결정합니다.
| 모드 | 동작 |
|---|---|
| Constant | 첫/마지막 키값 유지 |
| Cycle | 커브를 반복 재생 |
| CycleWithOffset | 반복하되 마지막 값에서 이어감 |
| Oscillate | 핑퐁 반복 (앞뒤 왕복) |
| Linear | 마지막 탄젠트 방향으로 무한 연장 |
시간 관리와 재생 설정
시퀀서의 시간 범위, 재생 속도, 루핑
Playback Range
시퀀서의 Playback Range는 실제 재생되는 시간 범위입니다. Working Range와 구분되며, 초록색 마커로 표시됩니다.
// FMovieSceneSequencePlaybackSettings
FMovieSceneSequencePlaybackSettings Settings;
Settings.bAutoPlay = true; // 자동 재생
Settings.bPauseAtEnd = false; // 끝에서 일시정지
Settings.LoopCount.Value = 3; // 3회 반복 (0 = 무한)
Settings.PlayRate = 1.0f; // 재생 속도
Settings.StartTime = 0.0f; // 시작 시간(초)
Settings.bRestoreState = true; // 종료 시 원래 상태 복원
Settings.bDisableMovementInput = true; // 재생 중 입력 차단
Settings.bHidePlayer = true; // 플레이어 캐릭터 숨김
Settings.bHideHud = true; // HUD 숨김
Time Dilation (시간 확장)
Play Rate 트랙을 사용하면 시퀀스 재생 중 특정 구간의 속도를 키프레임으로 제어할 수 있습니다. 슬로우 모션이나 타임랩스 효과에 활용됩니다.
bRestoreState = true로 설정하면 시퀀스 종료 후 모든 오브젝트가 시퀀스 시작 전 상태로 복원됩니다.
컷씬에서는 보통 false로 설정하여 최종 상태를 유지하고,
게임플레이 연출에서는 true로 설정하여 원래 상태를 복구합니다.
핵심 요약
- UE5 시퀀서는 틱 기반(24,000 ticks/sec) 시간 시스템을 사용하여 높은 정밀도를 보장한다
- 보간 모드는 Linear, Cubic, Constant, None 4가지이며, 큐빅이 기본값이다
- 탄젠트 타입에는 Auto, User, Break, Weighted, SmartAuto가 있으며, UE5에서는 SmartAuto가 기본이다
- 커브 에디터에서 Pre/Post Infinity를 설정하여 시퀀스 범위 밖의 커브 동작을 제어할 수 있다
- bRestoreState 설정으로 시퀀스 종료 후 오브젝트 상태 복원 여부를 결정한다
- Play Rate 트랙으로 구간별 재생 속도를 키프레임 제어할 수 있다
도전 과제
배운 내용을 직접 실습해보세요
Transform Track에 4개의 위치 키프레임을 설정하고, 보간 모드를 Linear, Cubic, Constant로 변경하세요. 움직임 차이를 관찰하고 적합한 사용 사례를 정리하세요.
Curve Editor를 열어 키프레임의 Tangent를 직접 수정하세요. Ease In/Out 커브를 만들고, Auto/Manual Tangent의 차이를 비교하여 자연스러운 가감속 모션을 만드세요.
카메라 이동 + 조명 변화 + 머티리얼 전환 + 파티클 활성화를 동기화하여 30초 분량의 인트로 시네마틱을 제작하세요. 타이밍 동기화와 시각적 연출에 집중하세요.