게임 애니메이션 샘플 프로젝트(Game Animation Sample Project) 는 언리얼 엔진의 최신 고퀄리티 애니메이션 시스템을 배우고 관찰하는 데 사용할 수 있는 프로젝트입니다. 이 시스템은 모션 매칭처럼 애니메이션 기능으로 구동되는 모션 캡처된 애니메이션 툴세트를 사용하여 휴먼 캐릭터의 장애물 통과 시스템을 위한 고퀄리티 반응형 애니메이션 시스템을 제공합니다. 이 시스템은 로코모션, 턱 스케일 조절, 뛰어넘기 같은 일반적인 애니메이션 요구 사항을 지원합니다. 이 샘플 프로젝트는 프로젝트 내에 포함된 여러 캐릭터로 탐색 가능한 여러 개의 장애물 코스로 나뉩니다.
또한, 애니메이션 샘플 프로젝트는 확장 가능하도록 빌드되어 있습니다. 따라서 자체 캐릭터를 임포트하여 다양한 캐릭터에 대해 애니메이션 시스템이 어떻게 작동하는지 확인할 수 있으며, 심지어 애니메이션 에셋과 시스템을 자체 프로젝트에 이주하여 사용하고 빌드할 수 있습니다.

게임 애니메이션 샘플 프로젝트는 엔진 및 기능의 개발에 맞춰 빌드되도록 설계되었으므로, 향후 출시되는 업데이트에 맞춰 계속 업데이트하는 것을 권장합니다.
프로젝트 설치하기
프로젝트를 설치하려면 언리얼 엔진 마켓플레이스 에서 게임 애니메이션 샘플 프로젝트 를 다운로드합니다.

프로젝트를 열려면 언리얼 엔진 런처(Unreal Engine Launcher) 라이브러리(Library) 패널의 보관함(Vault) 섹션에서 다운로드한 샘플 프로젝트를 찾아 프로젝트 생성(Create Project) 버튼을 선택합니다.
프로젝트를 생성하고 연 다음에는 에디터에서 플레이(Play In Editor, PIE) 컨트롤을 사용하여 프로젝트를 실행할 수 있습니다.
읽어보기
DefaultLevel
에서 읽어보기(Read Me) 버튼을 밟으면 프로젝트 소개 다이얼로그를 확인할 수 있습니다.

여기서 읽어보기 파일의 사본을 읽을 수 있습니다.
읽어보기 |
---|
이 프로젝트의 목표는 사용자가 사용하고 파헤쳐 보며 학습할 수 있는 다양한 게임플레이 애니메이션 기능 및 에셋의 포괄적인 세트를 선보이는 것입니다. 현재는 게임플레이 시스템보다 애니메이션 기능에 주로 초점을 맞추고 있습니다. 따라서 이 프로젝트 내에서 확인할 수 있는 게임플레이 기능은 장애물 통과 시스템과 같이 단순하며, 애니메이션 시스템이 게임플레이 시스템과 상호작용하는 방식에 대한 예시 역할만 할 뿐입니다. 이 첫 번째 릴리즈는 새로운 모션 매칭(Motion Matching) 툴세트를 중심으로 하며 캡슐 기반 무브먼트 모델과 함께 모션 매칭을 사용하는 모범 사례를 통해 기본 삼인칭 캐릭터 로코모션을 설정하는 방법을 보여줍니다. 또한 모션 매칭을 사용하여 게임플레이 액션의 몽타주 및 엔트리 프레임을 선택하는 방법도 보여줍니다. 게다가 이 프로젝트는 최근 추가된 기능인 선택기(Choosers)에 크게 의존하고 있습니다. 선택기는 게임플레이 컨텍스트에 따라 선택될 수 있는 데이터베이스를 필터링하여 모션 매칭을 제어하는 데 도움을 줍니다. 이 프로젝트는 주요 엔진 버전마다 계속해서 업데이트되고 향상될 것입니다. 시간이 지남에 따라 성장하여 애니메이션과 기능이 점차 추가되며, 다양한 유형의 게임에 관한 아이디어를 탐색하는 살아 있는 프로젝트라고 생각하면 됩니다. 이 프로젝트는 이제 시작일 뿐이니 계속 확인 부탁드립니다. 그리고 이 프로젝트에서 제공하는 수많은 콘텐츠를 즐겁게 탐색하시기를 바랍니다! |
플레이어 컨트롤
DefaultLevel
의 컨트롤 보기(View Controls) 버튼을 밟으면 플레이어 컨트롤 목록을 참조할 수 있습니다.

여기서 키보드 및 마우스 입력과 게임패드 입력에 대한 플레이어 컨트롤 목록을 참조할 수 있습니다.
키보드 | 컨트롤러 | 액션 |
---|---|---|
W, A, S, 및 D | 왼쪽 아날로그 스틱 | 플레이어 캐릭터를 움직입니다. |
마우스(X 및 Y) | 오른쪽 아날로그 스틱 | 카메라를 회전합니다. |
왼쪽 CTRL | 오른쪽 숄더 버튼 | 플레이어의 달리기 및 걷기 스테이트를 토글합니다. |
스페이스 | 전면 하단 버튼 | 캐릭터가 점프하며 턱을 올라가거나 내려가고 장애물 코스를 뛰어넘습니다. |
휠 버튼 | 오른쪽 아날로그 스틱 버튼 | 캐릭터 회전 모드를 자유 회전과 횡이동 간에 토글합니다. |
오른쪽 마우스 버튼 | 왼쪽 트리거 | 액션 게임의 에임 기능과 비슷하게 카메라의 포커스를 맞춥니다. |
숫자 키 |
![]() |
게임 애니메이션 위젯
게임 애니메이션 위젯(Game Animation Widget) 은 유용한 툴과 프로퍼티가 있는 패널로 애니메이션 샘플 프로젝트와 인터페이싱하는 데 사용할 수 있습니다. PIE 중에 뷰포트에서 캐릭터를 제어하여 DefaultLevel
에서 게임 애니메이션 위젯 버튼을 밟으면 게임 애니메이션 위젯을 열 수 있습니다.

게임 애니메이션 위젯을 열면 다음과 같은 프로퍼티와 세팅에 액세스할 수 있습니다.

프로퍼티 | 설명 |
---|---|
유용한 버튼(Helpful Buttons)(PIE 전용) | 다음 옵션은 게임을 에디터에서 플레이(PIE)할 때 프로젝트의 프로퍼티를 변경하는 데 사용됩니다. |
최대 FPS(Max FPS) | 프로젝트가 렌더링될 최대 프레임 수를 설정할 수 있습니다. 또한, PIE 중에 FPS 표시(Show FPS) 버튼을 사용하여 뷰포트에서 프레임 수를 토글할 수 있습니다. FPS 옵션 중 하나를 선택하면 게임에서 렌더링되는 프레임 레이트를 특정 값으로 제한할 수 있습니다. 이 옵션을 이용하여 다양한 프로젝트 프레임 레이트에서 애니메이션이 어떻게 작동하는지 관찰할 수 있습니다. 또한, 오른쪽의 프로퍼티 필드를 사용하여 커스텀 프레임 레이트를 설정할 수도 있습니다. |
시간 스케일(Timescale) | 프로젝트의 시간 스케일을 설정할 수 있습니다. 디폴트 옵션인 1 로 설정하면 프로젝트가 의도한 속도로 실행됩니다. 더 작은 값을 선택하면 프로젝트 실행 속도가 느려져서 애니메이션을 더 쉽게 관찰할 수 있으며, 큰 값을 선택하면 프로젝트 실행 속도가 빨라지므로 빠른 게임플레이 중에 애니메이션 시스템이 어떻게 작동하는지 관찰할 수 있습니다. |
사운드(Sound) | 오른쪽의 프로퍼티 필드를 사용하여 프로젝트의 사운드 볼륨을 설정할 수도 있고 음소거(Mute) 버튼을 사용하여 오디오를 완전히 음소거할 수도 있습니다. |
스틸 캠(Still Cam) | PIE 중에 프로젝트의 카메라 모드를 설정할 수 있습니다. 다음 버튼을 토글하여 다양한 효과를 연출할 수 있습니다.
|
드로(Draw) | 다음 플레이어 캐릭터 컴포넌트의 뷰포트에서 디버그 드로잉을 토글할 수 있습니다.
|
애님 노드(Anim Nodes) | 다음 프로퍼티 세트에서는 베이스 모션 매칭 시스템에 다양한 애디티브 컴포넌트를 토글하여 이러한 각 추가 기능에 따라 애니메이션 시스템의 퀄리티와 적용 범위가 어떻게 향상되는지 관찰할 수 있습니다. 각 기능에는 해당 기능을 활성화하거나 비활성화하는 버튼과, 그 기능에 따라 런타임 시 사용하는 최종 포즈가 어떻게 바뀌는지 더 잘 관찰할 수 있는 디버그 렌더가 포함되어 있습니다. |
루트 오프셋(Root Offset) | ABP_SandboxCharacter 애니메이션 블루프린트에서 실험단계에 있는 오프셋 루트 본(Offset Root Bone) 노드를 토글할 수 있습니다. 이 노드는 애니메이션 재생 중 캡슐에서 메시의 편차를 수정하기 위한 노드입니다. 이 노드가 활성화되면 캐릭터가 이동을 멈출 때 시스템이 캡슐 중앙 방향으로 메시의 위치를 다시 블렌딩합니다. 이 프로퍼티를 토글하여 노드의 효과를 테스트할 수 있으며, 디버그(Debug) 드로잉을 활성화하여 게임플레이 중에 캡슐과 메시의 편차를 관찰할 수 있습니다. |
오리엔테이션 워핑(Orientation Warping) | 오리엔테이션 워핑은 특정 목표 및 정렬에 맞게 캐릭터 무브먼트를 워핑하는 애니메이션 기능입니다. 오리엔테이션 워핑은 프로젝트에서 원하는 애니메이션 커버리지를 달성하여 애니메이션 데이터가 없는 부분을 채우는 데 도움이 될 수 있습니다. 이 프로퍼티를 사용하여 오리엔테이션 워핑 노드의 활성화 여부를 토글하며 효과를 비교해 볼 수 있습니다. 또한, 디버그 옵션을 활성화하여 런타임 중에 오리엔테이션 워핑이 캐릭터에 미치는 영향을 시각적으로 렌더링할 수도 있습니다. 오리엔테이션 워핑에 대한 자세한 내용은 오리엔테이션 워핑 문서를 참조하세요. |
레그 IK(Leg IK) | 인버스 키네마틱(Inverse Kinematics, IK)은 캐릭터의 환경에 더 자연스럽게 반응할 수 있는 본 체인을 생성하는 방법입니다. 레그 IK 시스템은 캐릭터가 고르지 않은 표면에 서 있을 때 더 자연스러운 포즈를 생성합니다. 이 프로퍼티를 사용하여 ABP_SandboxCharacter 애니메이션 블루프린트에 레그 IK(Leg IK) 노드를 런타임 시 활성화할지 여부를 토글할 수 있습니다. 또한, 디버그 옵션을 사용하여 프로퍼티가 활성화되어 있을 때 레그 IK 노드의 효과를 확인할 수도 있습니다. |
모션 매칭 데이터베이스 LOD(Motion Matching Database LOD) | 모션 매칭 시스템이 애니메이션을 선택하는 포즈 서치 데이터베이스(Pose Search Database)의 레벨 오브 디테일(Level of Detail, LOD) 을 설정할 수 있습니다. 모션 매칭 데이터베이스 LOD 프로퍼티를 사용하면 더 밀도가 높거나 낮은 애니메이션 데이터로 포즈 서치 데이터베이스를 사용할 때 애니메이션 데이터가 어떻게 스케일 조절되는지 관찰할 수 있습니다. |
캐릭터 오버라이드(Character Override) | 여기서 같은 애니메이션 데이터 세트와 로직에서 다른 캐릭터가 어떻게 작동하는지 관찰하기 위해 플레이어 캐릭터의 블루프린트를 오버라이드할 수 있습니다. 다른 캐릭터를 선택하면 프로젝트의 게임 모드 폰 클래스(Game Mode Pawn Class)를 오버라이드합니다. |
컨트롤러(Controller) | 런타임 시 게임에 피딩하는 입력의 디버그 렌더를 관찰할 수 있습니다. 게임에 입력을 피딩함에 따라 컨트롤러가 업데이트되면서 해당 입력을 나타내는 버튼이 강조 표시됩니다. |
읽어보기, 컨트롤 보기 또는 게임 애니메이션 위젯을 처음으로 연 다음에는 메뉴 바(Menu Bar) 의 툴(Tools) > 에디터 유틸리티 위젯(Editor Utility Widgets) 으로 이동한 뒤 열고 싶은 창을 선택하여 이러한 창을 다시 열 수 있습니다.

프로젝트 재생하기
프로젝트에는 레벨(DefaultLevel
)이 포함되어 있으며, 이 레벨에는 뛰어넘기, 등반, 낙하를 통해 상호작용할 수 있는 일련의 장애물이 포함되어 있습니다. 처음으로 프로젝트를 열면 DefaultLevel
이 열립니다. 애니메이션 시스템의 작동 방식을 관찰할 목적으로 프로젝트와 상호작용을 시작하려면 언리얼 에디터 툴바의 PIE 섹션에서 재생(Play) 버튼을 누르세요.

프로젝트에는 프로토타입 스타일의 벽과 턱, 플랫폼 여러 개가 포함되어 있으며, 키보드 및 마우스나 게임패드 입력으로 탐색할 수 있습니다.
다양한 크기의 각 장애물과 상호작용하며 모든 종류의 상호작용에 맞춰 스케일 조절되는 다이내믹 애니메이션 재생을 확인해 보세요.
레벨의 지면에는 버튼이 몇 개 있습니다. 버튼의 기능은 각각 다르며, 캐릭터로 버튼을 밟으면 활성화됩니다.
레벨 컬러 배합
첫 번째 그룹은 플레이어 스폰 지점 근처에 있습니다. 이 세 개의 버튼 중 하나를 밟으면 버튼 이름에 맞게 레벨 외형이 변경됩니다.

프로젝트 정보 및 세팅
다음 버튼 세트를 밟으면 프로젝트 정보 및 프로퍼티 세팅이 열립니다.

장애물 코스의 특정 섹션으로 플레이어를 텔레포트하는 일련의 '목적지로'(To Destination) 버튼도 있습니다.

고유 캐릭터 임포트하기
애니메이션 샘플 프로젝트를 자체 프로젝트에서 유사한 시스템을 빌드하기 위한 시작점으로 사용할 수 있습니다. 애니메이션 샘플 프로젝트에서 자체 캐릭터를 임포트한 뒤, 다음 단계를 따라 스켈레탈 메시와 애니메이션 시스템이 어떻게 작동하는지 관찰할 수 있습니다.
전제조건
-
게임 애니메이션 샘플 프로젝트에 스켈레탈 메시 캐릭터를 임포트해야 합니다. 스켈레탈 메시 캐릭터 임포트에 대한 자세한 내용은 FBX 콘텐츠 파이프라인 문서를 참조하세요.
-
임포트한 캐릭터의 IK 릭(IK Rig) 에셋을 생성하고 설정해야 합니다. IK 릭 에셋 생성에 대한 자세한 내용은 IK 릭 문서를 참조하세요.
캐릭터 구현하기
캐릭터를 임포트하고 IK 릭 에셋을 설정한 다음에는 IK 릭 리타기터(IK Rig Retargeter) 에셋을 생성하고 UEFN_Mannequin 스켈레탈 메시 캐릭터를 자체 스켈레탈 메시 캐릭터에 리타깃할 수 있습니다. IK 리타기터 에셋 생성에 대한 자세한 내용은 IK 릭 리타기팅 문서를 참조하세요.
UEFN_Mannequin을 소스(Source)로, 자체 캐릭터를 타깃으로 사용하여 IK 리타기터 에셋을 설정한 다음에는 콘텐츠 브라우저(Content Browser)에서 콘텐츠(Content) > 블루프린트(Blueprints) > 리타깃된 캐릭터(Retargeted Characters) 로 이동하고 ABP_GenericRetarget 애니메이션 블루프린트 에셋을 엽니다.

내 블루프린트 패널에서 IKRetargeter_Map 변수를 선택하고 디폴트 값(Default Value) 배열을 펼칩니다. (+) 추가 버튼을 눌러 배열에 새 요소를 추가하고 새 요소 프로퍼티 필드에서 자체 IK 리타기터 에셋을 선택합니다. 그런 다음, 배열 요소의 이름(Name) 필드에 RTG_UEFN_to_{자체 에셋 이름}
을 입력합니다.

다음으로 콘텐츠 브라우저에서 콘텐츠 > 블루프린트 로 이동한 다음, 에셋을 우클릭하고 자손 블루프린트 클래스 생성(Create Child Blueprint Class) 옵션을 선택하여 CBP_Sandbox_Character 캐릭터 블루프린트(Character Blueprint)의 새로운 자손 블루프린트를 생성합니다. 에셋 이름을 CBP_Sandbox_{자체 캐릭터 이름} 으로 변경합니다.

컴포넌트(Component) 패널에서 메시(Mesh) (CharacterMesh) 컴포넌트를 선택하고 디테일(Details) 패널에서 표시(Visible) 프로퍼티를 비활성화합니다.

그런 다음, 메시 컴포넌트가 선택된 상태에서 (+) 추가 버튼을 눌러 새 스켈레탈 메시 컴포넌트를 자손 컴포넌트로 생성합니다. 이 자손 메시 컴포넌트 이름은 캐릭터 이름을 따라 지정할 수 있습니다.

새 자손 메시 컴포넌트를 선택하고 디테일 패널의 스켈레탈 메시 에셋(Skeletal Mesh Asset) 프로퍼티를 캐릭터의 스켈레탈 메시로 설정합니다.

트랜스폼 툴을 사용하여 뷰포트에서 캐릭터의 배치를 조정해야 할 수도 있습니다.
새 자손 메시 컴포넌트를 선택하고 드롭다운 메뉴를 사용하여 애니메이션 블루프린트를 ABP_SandboxCharacter로 설정합니다.

그런 다음, 컴포넌트 태그(Component Tags) 프로퍼티로 이동한 뒤 (+) 추가 버튼을 눌러 새 배열 요소를 추가합니다. 그리고 해당 엘리먼트 필드에 RTG_UEFN_to_{자체 에셋 이름}
을 입력합니다.

게임 애니메이션 위젯에 캐릭터 추가하기
게임 애니메이션 샘플 프로젝트에서 자체 캐릭터가 작동하도록 설정한 다음, 게임 애니메이션 위젯에 캐릭터의 블루프린트 인스턴스를 추가하면 런타임 시 프로젝트에서 해당 캐릭터를 선택하고 재생할 수 있습니다. 그렇게 하려면 먼저 콘텐츠 브라우저 에서 콘텐츠 > 위젯(Widgets) 으로 이동하여 게임 애니메이션 위젯 에셋을 엽니다.

해당 위젯 에디터(Widget Editor)의 디자이너(Designer) 패널에서 캐릭터 아이콘 중 하나를 복사 하고 붙여넣어 새 버튼을 추가합니다.

그런 다음, 뷰포트에서 새 아이콘을 선택하고 디테일 패널을 엽니다. 오브젝트(Object) 프로퍼티에서 드롭다운 메뉴를 사용하여 자체 캐릭터의 블루프린트를 선택합니다.

이제 에디터에서 플레이할 때 게임 애니메이션 위젯에서 이 버튼에 액세스할 수 있습니다.
메타휴먼 임포트하기
정확하며 고퀄리티의 메타휴먼 캐릭터를 생성하려면 몇 가지 추가 단계가 필요합니다. 커스텀 메타휴먼 캐릭터를 애니메이션 샘플 프로젝트에 임포트하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.
애니메이션 익스포트하기
애니메이션 샘플 프로젝트에는 자체 프로젝트에서 사용할 수 있는 강력한 로코모션 및 등반 애니메이션 에셋 툴세트가 포함되어 있습니다. 애니메이션 시퀀스 에셋은 Content/Characters/UEFN_Mannequin/Animations
에 있으며, 원하는 에셋을 선택한 다음 우클릭 컨텍스트 메뉴에서 이주(Migrate) 옵션을 선택하여 익스포트할 수 있습니다. 이주를 선택하면 프로젝트를 선택하고 저장 위치를 선택하라는 메시지가 표시됩니다.

언리얼 엔진 프로젝트 간 에셋 이주에 대한 자세한 내용은 에셋 이주하기 문서를 참조하세요.
또한, 익스포트(Export) 옵션을 사용하여 언리얼 엔진 프로젝트 외부의 내 컴퓨터에 애니메이션 시퀀스 에셋을 저장할 수도 있습니다.
애니메이션 블루프린트
플레이어 캐릭터의 애니메이션 시스템 구동에 사용되는 프라이머리 애니메이션 블루프린트는 콘텐츠 브라우저 에서 콘텐츠 > 블루프린트 > ABP_SandboxCharacter 로 이동하여 액세스할 수 있습니다. 이 블루프린트는 선택 가능한 모든 캐릭터 메시 구동에 사용되며, 에셋을 더블클릭하여 열 수 있습니다.
애님 그래프
애님 그래프(AnimGraph)는 프라이머리 그래프로 런타임 시 플레이어 캐릭터의 포즈를 제어합니다. 이 그래프에는 모션 매칭 노드와 더불어 캐릭터 애니메이션 구동에 사용되는 추가 애니메이션 노드가 포함되어 있습니다. 애님 그래프 사용에 대한 자세한 내용은 애님 그래프 문서를, 디버그 및 관찰 툴에 대한 자세한 내용은 애니메이션 디버깅 문서를 참조하세요.

모션 매칭
애니메이션 샘플 프로젝트에 포함된 애니메이션 시스템은 애니메이션 에셋 데이터베이스에서 애니메이션 포즈를 선택하도록 시스템(여기서는 캐릭터 무브먼트 모델)을 쿼리하여 캐릭터의 지정된 위치와 운동량(momentum)에 가장 적합한 포즈를 선택하는 애니메이션 시스템인 모션 매칭을 중심으로 빌드되었습니다. 모션 매칭 시스템은 캐릭터의 애니메이션 블루프린트에서 모션 매칭 노드를 사용하여 런타임 시 포즈를 선택합니다.

모션 매칭 노드는 AnimNode 함수(Function)를 사용하여 애니메이션 선택에 필요한 로직을 수행합니다. AnimNode 함수 그래프는 노드를 선택하고 디테일 패널에서 Update_MotionMatching
라벨이 붙은 업데이트 함수(Update Function) 옆의 돋보기 버튼을 누르거나 업데이트 시(On Update) 필드에 있는 노드에서 열 수 있습니다.

업데이트 함수를 보면 선택기 평가(Evaluate Chooser) 노드가 먼저 사용되어 모션 매칭 노드가 애니메이션 포즈 선택에 사용할 활성 포즈 서치 데이터베이스 에셋을 선택하는 방법을 관찰할 수 있습니다. 이는 노드가 검색해야 하는 데이터를 제한하여 노드가 선택 가능한 결과를 제어하는 동시에 시스템 퍼포먼스를 개선하기 위한 것입니다.
선택기 평가 노드를 선택하고 선택기 테이블(Chooser Table) 프로퍼티에서 할당된 에셋을 더블클릭하거나 콘텐츠 브라우저에서 Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/CHT_PoseSearchDatabases
위치로 이동하여 선택기 테이블 에셋에 액세스할 수 있습니다.
또한, 노드는 선택 이후 Update_MotionMatchingPostSelection 함수를 실행하여 선택된 포즈 서치 데이터베이스 에셋을 CurrentDatabase의 활성 데이터베이스로 설정합니다.
콘텐츠 브라우저에서 다음 위치로 이동하여 포즈 서치 데이터베이스에 액세스할 수 있습니다.
Content/Characters/UEFN_Mannequin/Animations/MotionMatchingData/Databases
또한, 이 노드는 float 변수 입력을 사용하여 이전 포즈와 선택된 애니메이션 포즈 간의 트랜지션에 사용할 블렌드 시간을 설정합니다.
포즈 히스토리 노드
포즈 히스토리(Pose History) 노드는 모션 매칭이 작동하는 데 중요한 두 번째 모션 매칭 관련 애님 그래프 노드입니다. 이 노드에는 궤적에 대한 레퍼런스가 포함되어 있습니다. 또는 필요에 따라 애니메이션 데이터를 일치시키기 위해 필요한 궤적 자체와 모션 매칭 쿼리에서도 사용되는 이전 포즈 데이터의 캐시를 생성할 수 있습니다.

이 노드에는 포즈 수집 빈도, 저장할 수 있는 이전 포즈 수 및 샘플링할 본 목록에 대한 세팅이 포함되어 있습니다.
모션 매칭 노드와 포즈 히스토리 노드에 대한 자세한 내용은 다음 문서를 참조하세요.
애님 그래프 코멘트
여기에서 애니메이션 블루프린트의 애님 그래프에 포함된 코멘트의 사본을 참조할 수 있습니다.
노드 | 코멘트 |
---|---|
모션 매칭(Motion Matching) 노드 | 모션 매칭 노드: 모션 매칭의 메인 노드입니다. 포즈 서치 스키마(Pose Search Schema)를 사용하는 포즈 서치 데이터베이스를 가져오고 포즈 히스토리 노드의 궤적 쿼리를 사용하여 쿼리에 따라 프레임을 선택합니다. 이 구성에는 주목할 만한 몇 가지 추가 기능이 있습니다. 블렌드 시간(Blend Time) 프로퍼티는 함수에 바인딩되어 있으므로 스테이트와 게임플레이 조건에 따라 동적으로 블렌드 시간을 변경할 수 있습니다. 아울러 모션 매칭 노드에 적용되는 '애님 노드 함수'가 2개 있습니다. Update_MotionMatching은 이 노드가 업데이트되는 프레임마다 호출되며, Update_MotionMatching_PostSelection은 모션 매칭이 선택을 한 뒤 프레임마다 호출됩니다. Update_MotionMatching은 선택기를 평가하고 모션 매칭 노드에 피딩되는 포즈 서치 데이터베이스의 배열을 출력합니다. 이를 통해 데이터를 여러 데이터베이스로 분리하고 선택기를 사용하여 모션 매칭이 선택할 수 있는 데이터베이스에 필터를 적용할 수 있습니다. Update_MotionMatching_PostSelection을 사용하면 모션 매칭의 선택에 따라 추가 로직을 수행할 수 있습니다. 현재는 선택된 데이터베이스만 캐싱하므로 여기서만 태그를 가져올 수 있지만(추가 선택에 사용됨), 향후에는 이 함수를 통해 선택된 애니메이션에 따라 블렌드 시간이나 블렌드 프로파일을 업데이트할 수 있도록 할 계획입니다. 모션 매칭 노드를 더블클릭하면 각 애니메이션에 적용되는 내부 그래프인 블렌드 스택 그래프(Blend Stack Graph)를 열 수 있습니다. 이 그래프에서는 오리엔테이션 워핑과 스티어링을 처리합니다. |
블렌드 스페이스(BlendSpace) 노드 | 단순 애디티브 기대기: 이 노드는 캐릭터의 횡방향 가속에 따라 캐릭터를 왼쪽이나 오른쪽으로 기울입니다. 이 노드는 모든 로코모션 애니메이션에 적용됩니다. 데이터베이스에 호가 추가되면, 캐릭터를 과도하게 기울이지 않도록 이 노드를 조정해야 합니다. |
단순 에임 오프셋(Simple Aim Offset) | 단순 에임 오프셋: 이 구성은 'Enable_AO' 함수에서 설정한 한계치 내에 카메라와 캐릭터가 정렬되면 캐릭터가 해당 카메라 방향을 바라보도록 합니다. 블렌드 커브를 지원하는 더 나은 관성화 타입인 데드 블렌딩(Dead Blending)을 사용하면 에임 오프셋이 블렌딩될 때마다 튀어나오지 않고 재설정되어 항상 부드러운 블렌딩을 유지할 수 있습니다. 그렇지 않으면 블렌딩하는 동안 오프셋에 블렌딩하는 경우, 블렌드 문제가 발생할 수 있습니다. |
디폴트 슬롯(Default Slot) 노드 | 디폴트 슬롯 노드: 장애물 통과 몽타주가 그래프에 주입되는 노드입니다. |
오프셋 루트 본(Offset Root Bone) 노드 | 오프셋 루트 본(실험단계!): 이 노드는 캡슐 무브먼트와 애니메이션 데이터가 일치하지 않을 때, 메시를 더 플랜팅된 상태로 유지하기 위해 루트 본에 오프셋을 동적으로 적용합니다. 이동(Translation)의 경우, 루트는 로코모션 중에 고정된 반경 내에서 캡슐에서 벗어날 수 있으며, 이 현상은 시작과 피벗 중에 가장 두드러집니다. 정지 시에는 오프셋이 '릴리즈(Release)', 즉 블렌드 아웃되므로 캐릭터가 유휴 상태일 때는 캡슐 중앙에 머물러 있습니다. 회전(Rotation)의 경우 루트 본은 캡슐과 독립적으로 회전할 수 있으므로 회전은 전적으로 루트 모션으로 제어되며, 모션 매칭 노드 내에서 항상 타깃을 향해 정렬되도록 스티어링됩니다. 따라서 제자리 턴, 턴 시작, 턴 피벗과 같은 복잡한 회전 애니메이션을 더 쉽게 수행할 수 있습니다. 알려진 문제(향후 릴리스에서 수정 예정):
|
다리 IK(Leg IK) 노드 | 단순 다리 IK 프로세스: 이 노드는 종종 포즈 워핑 노드를 통해 워핑되는 IK 발 본 위치에 발을 고정합니다. 또한, 다리에 블렌드 프로파일을 사용할 때 블렌딩을 개선할 수도 있습니다. |
포즈 히스토리(Pose History) 노드 | 포즈 히스토리 노드: 모션 매칭에 필요한 두 번째 주요 노드입니다. 이 노드에는 데이터를 쿼리하는 궤적이 포함됩니다(이 경우에는 궤적 생성 함수(Generate Trajectory Function)에서 궤적을 가져옵니다). 또한, 쿼리 샘플링 빈도 세팅과 샘플링하고자 하는 본 목록도 포함되어 있습니다. |
애니메이션 블루프린트 이벤트 그래프
ABP_SandboxCharacter
블루프린트는 이벤트 그래프(Event Graph)를 사용하여 애님 그래프가 애니메이션 포즈 출력 생성에 사용하는 변수를 설정하는 등의 로직을 수행합니다.

애니메이션 블루프린트 함수
여기에서 플레이어 캐릭터의 애니메이션 블루프린트 내에 포함된 함수 목록을 참조할 수 있습니다.
함수 | 설명 |
---|---|
SetReferences |
이 함수는 애니메이션 블루프린트 전반에 사용할 캐릭터 무브먼트 컴포넌트 및 CBP_SandboxCharacter 블루프린트에 대한 레퍼런스를 캐시합니다. 또한, 스레드 세이프 프로퍼티 액세스(Thread Safe Property Access) 호출도 사용할 수 있게 합니다. |
UpdateEssentialValues |
이 함수는 캐릭터의 트랜스폼, 무브먼트 속도 및 방향과 더불어 게임플레이 스테이트를 분류하는 태그와 같은 프로젝트의 애니메이션 시스템 전반에 걸쳐 사용되는 필수 변수 및 게임플레이 데이터를 캐시합니다. |
GenerateTrajectory |
이 함수는 모션 매칭 시스템이 애니메이션 포즈 선택을 일치시키기 위해 쿼리하는 주요 컴포넌트인 캐릭터의 무브먼트 궤적을 생성합니다. |
UpdateStates |
이 함수는 캐릭터의 현재 모든 중요 게임플레이 관련 스테이트를 캐시할 뿐 아니라 값이 변경된 시점을 결정할 수 있도록 마지막 프레임의 값을 저장합니다. 값은 편의를 위해 읽기 쉬운 열거형(Enums)으로 저장하며, 이렇게 저장된 값은 모션 매칭 선택기에서 현재 게임플레이 스테이트의 모션만 선택할 수 있도록 모션 매칭 데이터베이스를 필터로 걸러내는 데 주로 사용됩니다. |
IsMoving |
이 함수는 궤적 생성에 의해 결정되는 캐릭터의 현재 속도와 미래 속도를 보고 캐릭터가 움직이려고 하는지, 곧 움직일 것인지, 멈추려고 하는지, 곧 멈출 것인지를 판단하여 무브먼트 스테이트 열거형(Movement State Enum)을 설정하는 데 사용됩니다. |
IsStarting |
이 함수는 미래 속도가 현재 속도보다 더 빠를지 확인하여 캐릭터가 이동을 시작하는지 결정하는 데 사용됩니다. 현재 데이터베이스 에셋이 피벗 데이터베이스면, 이 함수는 IsStarting 변수를 false로 설정합니다. 이렇게 하면 피벗의 후반부가 시작과 매우 비슷하기 때문에 모션 매칭 시스템이 피벗을 중단하지 않습니다. |
IsPivoting |
이 함수는 캐릭터의 미래 궤적이 캐릭터의 현재 궤적과 크게 다른 방향으로 이동하는지 확인하여 캐릭터의 피벗 여부를 결정하는 데 사용됩니다. 방향 변경이 설정된 한계치보다 큰지 확인하는 방식으로 작동합니다. 회전 모드의 한계치는 다릅니다. 횡이동 중에 45도 피벗은 잘 작동하지만, 무브먼트 방향(Orient to Movement)으로 조정할 필요는 없기 때문입니다. |
ShouldTurnInPlace |
이 함수는 캐릭터의 루트 본 회전이 캐릭터의 캡슐 회전과 다른지 확인하여 캐릭터의 제자리 턴 여부를 결정합니다. 이 예시 프로젝트에서는 회전 각도가 50도보다 크고 현재 에이밍 중이라면 해당 캐릭터는 제자리에서 턴을 하고 있어야 합니다. 또한, 캐릭터가 방금 멈춘 경우 '스틱 튕기기(Stick Flick)' 행동을 통해 제자리 턴이 플레이될 수 있게 했습니다. 에이밍 스테이트에서의 제자리 턴 행동은 여전히 작업 중(Work in Progress, WIP)입니다. 또한, 캐릭터가 너무 뒤처지는 것을 방지하기 위해 스티어링 노드나 루트 오프셋 노드에 추가 제한을 적용해야 합니다. |
JustLandedLight |
캐릭터가 방금 착지했고 착지 속도가 무거운 착지 속도 한계치보다 작으면 가벼운 착지 애니메이션을 재생합니다. |
JustLandedHeavy |
캐릭터가 방금 착지했고 착지 속도가 무거운 착지 속도 한계치보다 크면 무거운 착지 애니메이션을 재생합니다. |
JustTraversed |
이 함수는 로코모션으로 다시 블렌딩할 때 장애물 통과 애니메이션의 끝 부분을 선택하는 데 사용됩니다. 예를 들어, MovingTraversal 애님 커브 값이 1보다 크고 디폴트 슬롯이 활성화되지 않은 경우(블렌딩 아웃 시 슬롯이 활성화되지 않음), 캐릭터는 이동 장애물 통과 액션에서 블렌딩 아웃되어야 하므로 이 함수는 true를 반환하여 모션 매칭 시스템이 장애물 통과 애니메이션의 끝 부분을 선택하게 하여 블렌딩을 더 부드럽게 만들어 줍니다. |
ShouldSpinTransition |
루트 본 회전과 캐릭터 캡슐 회전의 차이가 크면, 이 함수를 사용하여 스핀 트랜지션 애니메이션을 재생할 수 있습니다. 스핀 트랜지션은 고정된 월드 방향으로 움직이는 동안 캐릭터를 회전시키는 로코모션 애니메이션이며, 회전 모드 전환 시 유용합니다. 예를 들어, 캐릭터가 무브먼트 방향 모드를 사용하여 카메라를 향해 달리다가 횡이동으로 전환하면, 캐릭터가 매우 빠르게 180도로 스핀해야 합니다. 스핀 트랜지션 애니메이션은 이러한 게임플레이 시나리오에 이상적인 트랜지션일 것입니다. 현재는 스핀 트랜지션 대신 리페이싱 시작을 사용하고 있습니다. |
Get_OffsetRootRotationMode |
이 함수는 오프셋 루트 회전(Offset Root Rotation) 모드를 결정하는 데 사용됩니다. 이 모드는 디폴트 슬롯에 현재 몽타주가 재생되고 있는지 여부에 따라 설정되는 2개의 열거형으로 제어됩니다. 디폴트 슬롯에 몽타주가 설정되어 있으면 그 어떤 회전 오프셋도 유지되면 안 됩니다. 릴리즈 열거형(Release Enum)은 기본적으로 모든 오프셋을 블렌딩하며, 그 이후에는 루트 오프셋 노드가 없을 때와 마찬가지로 캡슐 회전에 고정됩니다. 누적 열거형(Accumulate Enum)은 루트가 캡슐 회전에 대한 모든 변경사항을 역회전하여 캡슐과 독립적으로 회전하는 것처럼 보이게 한다는 의미입니다. 이렇게 하면 루트 모션과 스티어링이 캡슐의 회전을 완전히 제어할 수 있게 됩니다. |
Get_OffsetRootTranslationMode |
이 함수는 오프셋 루트 이동(Offset Root Translation) 모드를 결정하는 데 사용됩니다. 이 모드는 몇 가지 캐릭터 스테이트에 따라 설정되는 3개의 열거형으로 제어됩니다. 현재 디폴트 슬롯에서 몽타주를 재생하고 있고 캐릭터가 공중에 있거나 이동 중이 아니라면, 그 어떤 이동 오프셋도 유지되면 안 됩니다. 릴리즈 열거형은 기본적으로 모든 오프셋을 블렌딩하며, 그 이후에는 루트 오프셋 노드가 없을 때와 마찬가지로 캡슐 위치에 고정됩니다. 보간 열거형(Interpolate Enum)은 루트 모션에 따라 루트가 캡슐 위치에서 약간 벗어날 수 있지만, 항상 중앙으로 다시 보간하려 한다는 의미입니다. 시작이나 피벗, 기타 복잡한 무브먼트처럼 애니메이션 데이터와 캡슐 무브먼트가 완벽하게 일치하지 않는 경우에 유용합니다. |
Get_OffsetRootTranslationHalfLife |
이 함수는 루트 오프셋 노드가 루트 본의 이동을 보간할 수 있는 속도를 제어합니다. 정지할 때는 항상 캡슐의 중앙에서 정지되도록 매우 빠르게 보간해야 하지만, 이동할 때는 약간 더 부드럽게 보간할 수 있게 합니다. |
Enable_AO |
이 함수는 캐릭터가 횡이동 모드 중이며 현재 설정된 한계치 내에서 카메라와 정렬되어 있는 경우에 에임 오프셋을 활성화하지만, 디폴트 슬롯에서 몽타주를 재생할 때는 활성화되지 않습니다. |
Get_AOValue |
이 함수는 캐릭터의 루트 본과 카메라의 컨트롤 회전 간의 회전 차이를 계산합니다. 이 차이는 에임 오프셋 블렌드 스페이스에 출력됩니다. |
CalculateRelativeAccelerationAmount |
이 함수는 캐릭터의 상대 가속량(Relative Acceleration Amount)을 계산합니다. 이 값은 액터 회전을 기준으로 현재 가속량 또는 감속량을 나타냅니다. 이 값은 -1에서 1의 범위로 정규화됩니다. -1은 캐릭터 무브먼트 컴포넌트의 최대 제동 감속(Max Braking Deceleration)과 같고, 1은 최대 가속(Max Acceleration)과 같습니다. |
GetLeanAmount |
이 함수는 CalculateRelativeAcceleractionAmount 함수로 계산된 캐릭터의 상대 가속량을 사용하며 현재 속도에 따라 값의 스케일을 조절하여 애디티브 기대기 블렌드 스페이스를 통해 캐릭터의 기대기 정도를 결정합니다. |
Update_MotionMatching |
이 애님 노드 함수는 모션 매칭 노드가 업데이트될 때마다 호출됩니다. 이 함수는 현재 게임플레이 컨텍스트에 따라 포즈 서치 데이터베이스 에셋 배열을 반환하는 선택기 에셋을 평가합니다. 이 함수를 사용하면 더 높은 수준의 필터링을 통해 모션 매칭 시스템이 선택할 수 있는 애니메이션을 더 잘 제어할 수 있습니다. 예를 들어, 캐릭터가 걷고 있을 때는(플레이어의 입력을 통해 제어됨) 걷기 데이터베이스에서만 검색하여 캐릭터가 걸으려 할 때 모션 매칭 시스템이 달리기를 선택하지 않도록 합니다. |
Update_MotionMatching_PostSelection |
이 함수는 모션 매칭 노드가 애니메이션을 선택한 후에 호출됩니다. 이러한 경우, 스레드 세이프 문제 때문에 이벤트 그래프에서 태그를 가져오도록 선택된 애니메이션이 있는 데이터베이스를 캐시합니다. 시스템이 이 데이터를 캐시하는 방법에 대한 자세한 내용은 CurrentDatabaseTags 함수를 참조하세요. 향후에는 선택된 애니메이션을 기반으로 블렌드 시간 및 블렌드 프로파일과 같은 추가 사항을 제어하는 데 이 함수를 사용할 계획입니다. |
Get_MMBlendTime |
이 함수는 현재 스테이트와 이전 스테이트에 따라 모션 매칭 노드의 블렌드 시간을 변경하는 데 사용됩니다. 향후에는 선택한 데이터베이스에서 더 직접적으로 블렌드 시간을 설정할 수 있도록 할 계획입니다. |
Get_MMInterruptMode |
이 함수는 선택 가능한 데이터베이스가 변경된 경우 새 데이터베이스로 강제 블렌딩할지, 아니면 현재 재생하는 애니메이션보다 비용이 저렴한 일치하는 애니메이션을 찾을 때까지 기다릴지 결정하는 식으로 모션 매칭 노드의 중단 모드(Interrupt Mode)를 제어합니다. 기본적으로는 중단하지 않지만, 코어 스테이트가 변경될 때마다 새 애니메이션 재생을 시작해야 한다는 것을 알기 때문에 강제로 중단하도록 시스템이 빌드되어 있습니다. 이렇게 하면 캐릭터가 이동을 시작할 때 모션 매칭 시스템이 계속 유휴 애니메이션을 재생하거나, 캐릭터가 멈춰야 할 때 순환 애니메이션을 유지하는 등, 지속 포즈 바이어스(Continuing Pose Bias) 튜닝에 따라 발생할 수 있는 문제를 방지할 수 있습니다. 기본적으로 이 함수는 모션 매칭이 코어 스테이트의 변경사항에 따라 반응하게 합니다. |
Enable Steering |
이 함수는 캐릭터가 이동 중인지, 아니면 공중에 있는지 확인하여 캐릭터의 스티어링 여부를 결정합니다. 이렇게 하면 슬라이딩을 유발할 수 있는 유휴 애니메이션 스티어링을 방지할 수 있습니다. |
GetDesiredFacing |
이 함수는 스티어링 블렌드 스페이스 노드의 회전 타깃을 계산합니다. 이 타깃은 예상 궤적에서 향하는 미래 방향을 사용하여 계산됩니다. 이렇게 하면 스티어링 노드가 항상 현재 액터 방향으로 회전(회전이 너무 뒤처질 수 있음)하는 대신 미래 방향으로 회전할 수 있습니다. |
캐릭터 블루프린트
캐릭터 블루프린트는 나머지 플레이어 캐릭터의 로직과 함수를 제어하기 위한 프라이머리 블루프린트입니다.

캐릭터 블루프린트에는 캐릭터의 무브먼트와 게임플레이 액션을 제어하는 로직은 물론, 애니메이션 블루프린트가 포즈 서치 데이터베이스를 선택할 수 있도록 캐릭터가 점프하고 있는지, 착지하는지, 장애물 통과 액션을 수행 중인지와 같은 캐릭터의 현재 게임 스테이트에 대한 중요 데이터를 전달하는 로직이 포함되어 있습니다.

언리얼 엔진의 향상된 입력(Enhanced Input) 시스템을 사용하여 입력을 설정하는 방법에 대한 자세한 내용은 향상된 입력 문서를 참조하세요.