Camera 에니메이션 구현 방식에 대해 알아보자.
UnrealEngine3 의 Matinee 기능을 이용하여 키 프레임을 잡고 그것을 활용하는 방식의 에니메이션이다. Matinee 로 만들어진 카메라 에니메이션은 엔진 내부적으로 Camera Animation 이라는 리소스타입으로 분류된다.
이 방식은 기획자나 그래퍼가 에디터에서 원하는대로 키를 잡고 즉시 확인해 볼 수 있다는 장점이 있다. 만들어진 Camera Animation 은 다음과 같은 방식으로 활용이 가능하다.
AnimTree 에서 사용되는 AnimNodeSequence 에 Camera Animation 을 설정하는 방식이다. 해당 AnimNodeSequence 가 재생될 때에만 Camera Animation 이 재생되도록 할 수 있으며 이때에는 반드시 Loop 에니메이션만 가능하다.
AnimNodeSequence 의 속성에서 다음의 값을 채워넣어야 한다.
주의해야 할 점은 Skip Tick When Zero Weight 를 체크하지 말아야 한다는 점이다. 이것이 체크되면 UAnimNodeSequence::TickAnim 에서 종료신호를 받지 못하게 되고 Camera Animation 은 영원히 지속된다. (보통 이걸 원치는 않을 것이다.)
관련 코드를 보면 다음과 같다.
// UnAnimPlay.cpp void UAnimNodeSequence::TickAnim( FLOAT DeltaSeconds, FLOAT TotalWeight ) { ... if ( ActiveCameraAnimInstance != NULL ) { ACamera* const Cam = GetPlayerCamera(); if ( Cam && bPlaying && bRelevant ) { ... } else { StopCameraAnim(); // 이 부분에서 Camera Animation 종료, 만약 Skip Tick When Zero Weight 가 체크되어 있다면 이부분으로 들어오지 않게 된다. } } else if ( CameraAnim && bPlaying && bLoopCameraAnim && bRelevant ) { StartCameraAnim(); // 이 부분에서 Camera Animation 시작 } }