언리얼 엔진의 모션 매칭(Motion Matching) 은 쿼리 기반 애니메이션 포즈 선택 시스템입니다. 포즈 서치(Pose Search) 플러그인에 포함된 모션 매칭 애니메이션 블루프린트 노드를 스테이트 머신 또는 블렌드 스페이스의 동적인 대안으로 사용할 수 있습니다. 기존 애니메이션 시스템과 달리 모션 매칭은 애니메이션 데이터 세트에서 정보에 기반한 애니메이션 포즈를 선택하여 애니메이션 시퀀스 간에 트랜지션 또는 블렌딩 로직을 구성하지 않고도 반응형 애니메이션 시스템을 생성할 수 있습니다.
Motion Matching 노드는 본의 위치 및 속도 같은 스키마를 통해 캐릭터로부터 채널을 쿼리하고 데이터베이스(Database) 에셋에 저장된 애니메이션 데이터 세트에서 정보를 기반으로 쿼리에 맞는 애니메이션 포즈를 선택합니다. 모션 매칭 캐릭터 애니메이션 결과는 기존 스테이트 머신이나 블렌드 로직보다 게임플레이 시스템에 더 반응적입니다.
모션 매칭을 사용하면 데이터베이스 에셋에 더 많은 애니메이션 데이터를 추가하는 것만으로 캐릭터의 애니메이션 충실도를 향상할 수 있습니다. 애니메이션 데이터가 많을수록 Motion Matching 노드는 추가 트랜지션 로직을 변경하거나 구현할 필요 없이 더 많은 데이터 중에서 선택할 수 있습니다.
언리얼 엔진의 모션 매칭 시스템에는 프로젝트의 목표에 맞춰 애니메이션 시스템을 조정하는 데 사용할 수 있는 세팅 및 디버깅 툴세트도 포함되어 있습니다. 이러한 툴을 사용하여 선택을 관찰하고 쿼리 프로세스를 편집하고 선택 기준 가중치를 설정할 수 있습니다.
이 문서에서는 언리얼 엔진의 모션 매칭과 모션 매칭을 사용하여 캐릭터의 로코모션 애니메이션 시스템을 구성하는 방법에 대한 워크플로 예시를 간략하게 살펴봅니다.
전제조건
- 포즈 서치(Pose Search) 플러그인을 활성화합니다. 메뉴 바(Menu Bar) 의 편집(Edit) > 플러그인(Plugins) 으로 이동하여 애니메이션(Animation) 섹션에서 플러그인을 찾거나 검색창(Search Bar) 을 사용합니다. 플러그인을 활성화하고 에디터를 재시작합니다.
- 프로젝트에는 걷기, 달리기, 돌기 같은 로코모션 애니메이션 세트가 있는 캐릭터가 포함되어 있습니다. 이러한 캐릭터가 없다면 언리얼 엔진 마켓플레이스에서 게임 애니메이션 샘플 프로젝트를 다운로드하면 됩니다. 이 게임 애니메이션 샘플 프로젝트에 대한 자세한 내용은 게임 애니메이션 샘플 프로젝트 문서를 참조하세요.
모션 매칭 구성
이 섹션에서는 프로젝트에서 모션 매칭 시스템을 기반으로 간단한 로코모션을 구성하는 방법에 대한 워크플로 예시를 따라가 볼 수 있습니다. 보다 세부적인 고급 구성에 대해서는 게임 애니메이션 샘플 프로젝트 문서를 참조하세요.
포즈 서치 스키마 에셋 생성하기
포즈 서치 스키마 에셋에는 모션 매칭 환경설정 및 쿼리 세팅이 저장됩니다. 이 에셋은 애니메이션 데이터베이스와 쿼리 시스템을 Motion Matching 노드에 연결하는 데 사용되며, 애니메이션을 선택하기 위한 쿼리에 사용될 데이터를 정의합니다.
포즈 서치 스키마 에셋을 생성하려면 콘텐츠 브라우저(Content Browser) 에서 우클릭 하고 (+) 추가(Add) 를 클릭한 다음 애니메이션(Animation) > 모션 매칭(Animation) > 포즈 서치 스키마(Pose Search Schema) 를 선택합니다.
새 포즈 서치 스키마 에셋을 생성하면 모션 매칭 시스템을 빌드할 캐릭터의 스켈레톤을 선택하라는 메시지가 표시됩니다.
새 포즈 서치 스키마 에셋은 궤적 채널 및 포즈 채널, 이렇게 두 개의 채널로 로코모션 구성이 사전 환경설정된 상태로 제공됩니다. 궤적 채널을 사용하여 모션 궤적 컴포넌트에서 포즈를 선택하기 위해 샘플링할 포인트를 설정할 수 있습니다. 이 예시 워크플로에서는 디폴트 세팅이 사용되지만, 샘플(Samples) 프로퍼티에서 (+) 추가(Add) 를 사용하여 샘플을 추가하면 모션 매칭 시스템이 선택할 수 있는 더 유용한 데이터를 제공할 수 있습니다.
최대한 적은 샘플을 사용하는 것이 좋습니다. 샘플이 많을수록 Motion Matching 노드에 더 정확한 데이터를 제공할 수 있지만, 시스템의 결과가 왜곡될 수 있습니다.
궤적 채널
궤적 채널 내에 있는 각 인덱스에 플래그를 할당하여 모션 궤적 채널을 쿼리할 때 샘플 포인트가 찾을 데이터 타입을 결정할 수 있습니다. 이 워크플로 예시에서는 디폴트 값이 사용됩니다. 궤적 채널의 세팅 및 플래그에 대한 자세한 내용은 궤적 채널 레퍼런스 섹션을 참조하세요.
포즈 채널
포즈 채널(Pose Channel) 을 사용하면 모션 매칭 시스템에 대한 본 정의를 설정하여 포즈를 쿼리 시스템과 매칭할 수 있습니다. 디폴트 에셋에는 마네킹 스켈레톤(Mannequin Skeleton)의 발 본인 foot_l 및 foot_r 에 대한 본 정의가 사전 환경설정되어 있습니다. 다른 스켈레톤을 사용하면 이러한 본 정의가 해당 스켈레톤 에셋의 왼발 및 오른발 본으로 대체됩니다.
또한, 샘플링된 각 본에 대한 플래그를 설정하여 모션 매칭 시스템이 샘플링된 본에서 선택을 위해 찾을 데이터 타입을 결정할 수도 있습니다. 포즈 채널의 세팅 및 다양한 플래그에 대한 자세한 내용은 포즈 채널 섹션을 참조하세요.
포즈 채널은 어떠한 본이든 레퍼런스 포인트로 사용할 수 있습니다. 로코모션 모션 매칭 애니메이션 시스템에서는 캐릭터의 발과 같이 모션과 관련된 모션 데이터 트래킹에 유용한 한 쌍의 본을 선택해야 합니다. 등반 시스템 같은 대체 시스템에서는 캐릭터의 손 본과 같이 중요한 데이터를 담는 데 더 적합한 본을 선택해야 합니다.
모션 데이터베이스 환경설정 에셋에 더 많은 채널을 추가할 수는 있지만, 채널 내에 채널과 샘플이 많을수록 실행에 퍼포먼스가 더 많이 필요합니다.
이 워크플로 예시의 경우, 디폴트 값으로도 좋은 로코모션 결과가 생성됩니다.
포즈 서치 스키마 에셋 레퍼런스
아래에서 포즈 서치 에셋의 프로퍼티 및 세팅 목록을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 스켈레톤(Skeleton) | Motion Matching 노드를 사용할 캐릭터의 스켈레톤 에셋을 정의할 수 있습니다. |
| 미러 데이터 테이블(Mirror Data Table) | 미러 데이터 테이블 에셋을 설정하여 Motion Matching 노드에서 애니메이션 선택 시 사용할 미러링된 애니메이션 시퀀스를 제공할 수 있습니다. |
| 데이터 프리프로세서(Data Preprocessor) | 전체 포즈 기능 데이터세트에 대해 수행되는 연산의 타입을 설정합니다. 다음 옵션 중에서 선택할 수 있습니다.
|
| 샘플 레이트(Sample Rate) | 데이터베이스에서 애니메이션 데이터를 샘플링하는 업데이트 속도를 설정합니다. 샘플 레이트가 높을수록 애니메이션 포즈를 더 세밀하게 검색하지만, 시스템의 메모리 비용이 증가합니다. |
| 채널(Channels) | 런타임 시 애니메이션 포즈를 쿼리하고 검색하고 매칭할 때 사용할 모션 매칭 시스템용 채널을 추가하고 설정할 수 있습니다. 채널은 포즈 서치 스키마 에셋의 비용 분석을 샘플 본의 위치나 속도, 사지의 페이즈 같이 더 단순한 부분으로 항목화합니다. 인덱싱된 데이터베이스 포즈에 대한 총 쿼리 비용은 결합된 채널 비용의 합이 됩니다. (+) 추가를 사용해 드롭다운 메뉴에서 채널을 선택하여 채널을 추가할 수 있습니다. 채널을 추가하면 모션 매칭 시스템이 더 세밀하게 검색할 수 있지만, 메모리와 퍼포먼스 비용이 증가합니다. 애니메이션 시스템의 목표를 달성하는 데 필요한 만큼의 채널만 사용하는 것이 좋습니다. 개별 채널 및 각 채널의 프로퍼티에 대한 자세한 내용은 채널 섹션을 참조하세요. |
| 순열 수(Number of Permutations) | 선택 시 관련 데이터베이스에서 애니메이션 에셋을 인덱싱할 횟수를 설정합니다. |
| 순열 시간 오프셋(Permutation Time Offset) | 첫 번째 순열의 샘플링 시간(Sampling Time) 으로부터 PermutationTime 의 시작 오프셋을 나타낼 값을 설정합니다. 후속 순열은 다음 공식을 사용하여 순열 시간 오프셋을 결정합니다. PermutationTime = SamplingTime + PermutationTimeOffset + PermutationIndex / PermutationSampleRate. |
| 데이터 패딩 추가(Add Data Padding) | 활성화하면 모션 데이터베이스 환경설정 에셋에 패딩 채널을 추가하여 데이터가 16바이트로 정렬되고 패딩되도록 해 최종 추가 메모리 비용으로 퍼포먼스가 개선됩니다. |
| 추가 디버그 채널 삽입(Inject Additional Debug Channels) | 활성화하면 이 스키마에 추가 채널을 삽입하라고 채널에 요청됩니다. 본래의 의도는 UPoseSearchFeatureChannel_postions(s)를 추가하여 디버그 드로잉의 복잡도 개선에 도움을 주기 위한 것입니다. 데이터베이스는 올바른 위치와 시간에 선을 그리는 데 필요한 위치를 모두 가집니다. |
채널
여기서는 모션 데이터베이스 스키마 에셋에 대해 사용할 수 있는 채널 목록을 참조할 수 있습니다.
그룹
그룹 채널(Group Channel) 을 사용하여 다른 포즈 서치 스키마 에셋 채널을 그룹으로 묶어 함께 작업을 실행할 수 있습니다. 그룹 채널을 생성한 다음에는 (+) 추가 를 사용하여 서브 채널(Sub-Channel) 프로퍼티 내에 추가 채널을 생성할 수 있습니다.
헤딩
헤딩(Heading) 채널을 사용하여 시스템의 헤딩 방향을 쿼리할 수 있습니다. 이는 본의 가로 또는 세로 무브먼트처럼 헤딩 축으로 표현되는 특정 본의 오리엔테이션 컴포넌트를 매칭하려는 경우에 유용합니다.
아래에서 헤딩 채널의 프로퍼티 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 디버그 컬러(Debug Color) | 모션 매칭 시스템 디버깅을 지원하기 위해 뷰포트에 렌더링할 디버그 드로잉 컬러를 설정할 수 있습니다. |
| 본(Bone) | 캐릭터의 스켈레톤에서 포즈 선택 쿼리에 사용할 본을 할당할 수 있습니다. 드롭다운 메뉴를 사용하여 스켈레톤의 계층구조에서 본을 선택할 수 있습니다. |
| 원점 본(Origin Bone) | 스켈레톤에서 헤딩 방향을 결정하는 원점 본 역할을 할 본을 설정합니다. 드롭다운 계층구조 메뉴를 사용하여 캐릭터의 스켈레톤에서 본을 선택할 수 있습니다. |
| 가중치(Weight) | 모션 데이터베이스 환경설정 에셋의 다른 채널과 대비하여 이 채널이 출력 포즈에 미치는 영향력에 가중치를 부여하는 데 사용할 가중치 값을 설정합니다. |
| 샘플 어트리뷰트 ID(Sample Attribute ID) | 샘플 어트리뷰트 ID로 사용할 값을 설정합니다. 이 값이 0.0 보다 크면 이 채널에 포함된, 이 포즈 서치 스키마 에셋과 관련된 포즈 서치 데이터베이스에 포함된 모든 애니메이션에는 포즈 서치: 샘플링 어트리뷰트 ID 노티파이 스테이트(Pose Search: Sampling Attribute ID Notify State)가 있고 샘플링 어트리뷰트 프로퍼티가 정의되어 있을 것으로 예상됩니다. 이 프로퍼티에 설정된 값은 본 채널 대신 데이터 소스로 사용됩니다. 샘플링 어트리뷰트 프로퍼티의 값은 원점 본 스페이스로 변환됩니다. |
| 샘플 시간 오프셋(Sample Time Offset) | 샘플 시간에 대한 오프셋으로 사용할 값을 설정할 수 있습니다. |
| 원점 시간 오프셋(Origin Time Offset) | 원점 시간을 오프셋하는 데 사용할 값을 설정할 수 있습니다. 이 채널의 원점 본(루트 또는 궤적 본)과 관련된 샘플링 시간을 기준으로 하는 데이터는 이 프로퍼티의 값(초)만큼 오프셋됩니다. 예를 들어 원점 본이 캐릭터의 머리 본으로 설정되어 있고, 샘플 시간 오프셋이 0.5, 원점 시간 오프셋이 0.5 로 설정된 경우, 이 채널은 캐릭터 머리 본의 미래 방향을 동시에 미래 루트 본을 기준으로 0.5 초 미래 방향에 일치시키려 시도합니다. |
| 헤딩 축(Heading Axis) | 샘플링된 본(Bone) 프로퍼티의 모션 쿼리에 사용할 축(X, Y 또는 Z) 을 설정합니다. |
| 쿼리 포즈 입력(Input Query Pose) | 쿼리된 포즈 입력에 사용되는 메서드를 설정할 수 있습니다. 다음 메서드 중에서 선택할 수 있습니다.
|
| 컴포넌트 스트리핑(Component Stripping) | 쿼리된 데이터에서 스트리핑할 특정 모션 축을 선택할 수 있습니다. 없음(None) 을 선택하면 컴포넌트 스트리핑이 수행되지 않고, XY 스트립(Strip XY) 을 선택하면 가로 평면을 따라 일치하는 X 및 Y 축의 모션만 관찰되며, Z 스트립(Strip Z) 을 선택하면 쿼리의 높이 모션을 따라 일치하는 Z 축의 모션만 관찰됩니다. |
| 순열 시간 타입(Permutation Time Type) | 애니메이션 샘플링 시 사용할 순열 시간의 타입을 선택할 수 있습니다. 다음 옵션 중에서 선택할 수 있습니다.
|
| 정규화 그룹(Normalization Group) | 다른 헤딩 채널에 대해 채널의 쿼리를 정규화하기 위한 정규화 그룹을 설정할 수 있습니다. 정규화 그룹을 설정하면 카디널리티가 같고 정규화 그룹이 같은 동일한 클래스의 모든 채널이 함께 정규화됩니다. 예를 들어, 무기를 들고 있는 캐릭터의 로코모션 데이터베이스에서 미러링할 수 없는 애니메이션이 포함되어 있어도 왼발과 오른발의 위치 및 속도를 정규화해야 할 수 있습니다. |
패딩
패딩(Padding) 채널은 모션 매칭 데이터베이스에 패딩 데이터를 더 추가하여 최종 추가 메모리 비용으로 퍼포먼스를 개선하는 데 사용됩니다. 데이터 패딩 추가(Add Data Padding) 프로퍼티가 활성화되어 있고 16 바이트로 설정된 경우, 이 채널이 자동으로 포즈 서치 스키마에 주입됩니다. 패딩 크기(Padding Size) 프로퍼티를 사용하여 채널이 데이터를 패딩하는 순열 수를 설정할 수 있습니다.
페이즈
아래에서 페이즈 채널의 프로퍼티와 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 디버그 컬러(Debug Color) | 모션 매칭 시스템 디버깅을 지원하기 위해 뷰포트에 렌더링할 디버그 드로잉 컬러를 설정할 수 있습니다. |
| 본(Bone) | 캐릭터의 스켈레톤에서 포즈 선택 쿼리에 사용할 본을 할당할 수 있습니다. 드롭다운 메뉴를 사용하여 스켈레톤의 계층구조에서 본을 선택할 수 있습니다. |
| 가중치(Weight) | 모션 데이터베이스 환경설정 에셋의 다른 채널과 대비하여 이 채널이 출력 포즈에 미치는 영향력에 가중치를 부여하는 데 사용할 가중치 값을 설정합니다. |
| 쿼리 포즈 입력(Input Query Pose) | 쿼리된 포즈 입력에 사용되는 메서드를 설정할 수 있습니다. 다음 메서드 중에서 선택할 수 있습니다.
|
포즈
포즈(Pose) 채널을 사용하여 글로벌 스페이스가 아닌 캐릭터 스페이스에서 캐릭터의 위치를 계산할 수 있습니다. 이 채널은 쿼리하려는 무브먼트가 글로벌 무브먼트가 아닌 해당 캐릭터의 위치에만 국한된 경우에 유용합니다.
아래에서 포즈 채널의 프로퍼티와 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 가중치(Weight) | 모션 데이터베이스 환경설정 에셋의 다른 채널과 대비하여 이 채널이 출력 포즈에 미치는 영향력에 가중치를 부여하는 데 사용할 가중치 값을 설정합니다. |
| 샘플링된 본(Sampled Bones) | 연결된 플래그에 따라 포즈 채널이 샘플링할 본 목록을 정의하여 쿼리 시스템과 포즈를 매칭할 수 있습니다. (+) 추가를 사용하여 샘플링된 본 정의를 추가할 수 있습니다. 인덱스를 추가한 다음에는 다음과 같은 프로퍼티를 설정할 수 있습니다.
|
| 쿼리 포즈 입력(Input Query Pose) | 쿼리된 포즈 입력에 사용되는 메서드를 설정할 수 있습니다. 다음 메서드 중에서 선택할 수 있습니다.
|
| 캐릭터 스페이스 속도 사용(Use Character Space Velocities) | 활성화하면 속도가 캐릭터 스페이스의 위치에서 계산되며, 비활성화하면 글로벌 스페이스 위치를 사용하여 계산됩니다. |
위치
위치(Position) 채널을 사용하여 캐릭터 스켈레톤의 다른 본을 기준으로 본의 위치를 쿼리할 수 있습니다. 이는 본의 디스플레이스먼트 또는 다른 본을 기준으로 한 위치에 따라 포즈를 선택하려고 할 때 유용할 수 있습니다.
아래에서 위치 채널의 프로퍼티 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 디버그 컬러(Debug Color) | 모션 매칭 시스템 디버깅을 지원하기 위해 뷰포트에 렌더링할 디버그 드로잉 컬러를 설정할 수 있습니다. |
| 본(Bone) | 캐릭터의 스켈레톤에서 포즈 선택 쿼리에 사용할 본을 할당할 수 있습니다. 드롭다운 메뉴를 사용하여 스켈레톤의 계층구조에서 본을 선택할 수 있습니다. |
| 원점 본(Origin Bone) | 캐릭터의 스켈레톤에서 기준점으로 사용할 본을 할당하여 본(Bone) 의 위치 변화를 계산할 수 있습니다. 드롭다운 메뉴를 사용하여 스켈레톤의 계층구조에서 본을 선택할 수 있습니다. |
| 가중치(Weight) | 모션 데이터베이스 환경설정 에셋의 다른 채널과 대비하여 이 채널이 출력 포즈에 미치는 영향력에 가중치를 부여하는 데 사용할 가중치 값을 설정합니다. |
| 샘플 시간 오프셋(Sample Time Offset) | 샘플 시간에 대한 오프셋으로 사용할 값을 설정할 수 있습니다. |
| 쿼리 포즈 입력(Input Query Pose) | 쿼리된 포즈 입력에 사용되는 메서드를 설정할 수 있습니다. 다음 메서드 중에서 선택할 수 있습니다.
|
| 컴포넌트 스트리핑(Component Stripping) | 쿼리된 데이터에서 스트리핑할 특정 모션 축을 선택할 수 있습니다. 없음(None) 을 선택하면 컴포넌트 스트리핑이 수행되지 않고, XY 스트립(Strip XY) 을 선택하면 가로 평면을 따라 일치하는 X 및 Y 축의 모션만 관찰되며, Z 스트립(Strip Z) 을 선택하면 쿼리의 높이 모션을 따라 일치하는 Z 축의 모션만 관찰됩니다. |
| 순열 시간 오프셋(Permutation Time Offset) | 첫 번째 순열의 샘플링 시간(Sampling Time) 으로부터 PermutationTime 의 시작 오프셋을 나타낼 값을 설정합니다. 후속 순열은 다음 공식을 사용하여 순열 시간 오프셋을 결정합니다. PermutationTime = SamplingTime + PermutationTimeOffset + PermutationIndex / PermutationSampleRate. |
샘플링 시간
샘플링 시간(Sampling Time) 채널은 디버깅 목적으로 사용되며, 샘플링 시간으로 기능 데이터를 보강합니다. 기본적으로 이 채널의 가중치(Weight) 는 0.0 으로 설정되므로 검색 중에 고려되지 않습니다.
궤적
궤적(Trajectory) 채널은 캐릭터의 무브먼트 궤적 샘플링에 사용되며 캐릭터 궤적(Character Trajectory) 블루프린트 컴포넌트와 함께 사용하도록 설계되었습니다. 가중치(Weight) 프로퍼티를 사용하여 궤적 채널이 최종 출력 포즈에 미치는 영향력의 정도를 설정할 수 있습니다. 샘플(Samples) 프로퍼티를 통해서는 캐릭터 무브먼트 모델을 샘플링할 캐릭터 궤적 컴포넌트의 특정 시점에서 샘플을 추가할 수 있습니다.
아래에서 샘플의 프로퍼티 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 디버그 컬러(Debug Color) | 모션 매칭 시스템 디버깅을 지원하기 위해 뷰포트에 렌더링할 디버그 드로잉 컬러를 설정할 수 있습니다. |
| 오프셋(Offset) | 캐릭터의 무브먼트 샘플을 캐릭터 궤적 컴포넌트에서 가져와야 할 시점을 설정할 수 있습니다. 양수 값으로 설정하면 앞쪽 시점으로 설정되고, 음수 값으로 설정하면 뒤쪽 시점으로 설정됩니다. |
| 플래그(Flags) | 오프셋(Offset) 프로퍼티로 지정된 캐릭터 궤적 컴포넌트에 따라 위치에서 가져와야 하는 캐릭터 무브먼트의 값을 토글할 수 있습니다. 드롭다운 목록에서 원하는 만큼의 값을 토글할 수 있습니다. |
| 가중치(Weight) | 최종 출력 포즈 선택에 미치는 샘플의 영향력에 가중치를 부여하는 데 사용할 값을 설정합니다. 이 값은 인덱스의 다른 샘플 대비 가중치를 부여하는 데만 사용되며 다른 채널 대비 가중치를 부여하는 데는 사용되지 않습니다. |
속도
속도(Velocity) 채널을 사용하여 캐릭터 스페이스 또는 글로벌 스페이스에서 캐릭터의 속도에 따라 포즈를 쿼리할 수 있습니다.
아래에서 속도 채널의 프로퍼티 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 디버그 컬러(Debug Color) | 모션 매칭 시스템 디버깅을 지원하기 위해 뷰포트에 렌더링할 디버그 드로잉 컬러를 설정할 수 있습니다. |
| 본(Bone) | 캐릭터의 스켈레톤에서 포즈 선택 쿼리에 사용할 본을 할당할 수 있습니다. 드롭다운 메뉴를 사용하여 스켈레톤의 계층구조에서 본을 선택할 수 있습니다. |
| 가중치(Weight) | 모션 데이터베이스 환경설정 에셋의 다른 채널과 대비하여 이 채널이 출력 포즈에 미치는 영향력에 가중치를 부여하는 데 사용할 가중치 값을 설정합니다. |
| 샘플 시간 오프셋(Sample Time Offset) | 샘플 시간에 대한 오프셋으로 사용할 값을 설정할 수 있습니다. |
| 쿼리 포즈 입력(Input Query Pose) | 쿼리된 포즈 입력에 사용되는 메서드를 설정할 수 있습니다. 다음 메서드 중에서 선택할 수 있습니다.
|
| 캐릭터 스페이스 속도 사용(Use Character Space Velocities) | 활성화하면 지정된 본(Bone) 의 속도가 글로벌 스페이스가 아닌 캐릭터 스페이스에서 계산됩니다. 월드 스페이스에서의 캐릭터 무브먼트가 아니라 로컬 무브먼트를 쿼리할 때 유용합니다. |
| 정규화(Normalize) | 활성화하면 속도 값이 최댓값 1 로 정규화됩니다. 이 프로퍼티는 모션의 심각도보다는 본이 모션 상태에 있는 때를 쿼리하려고 할 때 유용합니다. |
| 컴포넌트 스트리핑(Component Stripping) | 쿼리된 데이터에서 스트리핑할 특정 모션 축을 선택할 수 있습니다. 없음(None) 을 선택하면 컴포넌트 스트리핑이 수행되지 않고, XY 스트립(Strip XY) 을 선택하면 가로 평면을 따라 일치하는 X 및 Y 축의 모션만 관찰되며, Z 스트립(Strip Z) 을 선택하면 쿼리의 높이 모션을 따라 일치하는 Z 축의 모션만 관찰됩니다. |
실험단계 채널
아래에서 실험단계인 포즈 서치 스키마 채널 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
다음 채널은 실험단계이므로, 프로덕션에서 이 기능에 의존해서는 안 됩니다.
크래싱 레그(실험단계)
크래싱 레그(Crashing Legs) 채널은 사지가 설정된 거리를 유지하는 포즈를 선택하여 캐릭터 동작 시 캐릭터의 다리 간 오버랩을 방지하는 데 사용됩니다. 이는 LeftThigh 위치에서 RightThigh 위치까지의 방향과 LeftFoot 위치에서 RightFoot 위치까지의 방향 사이의 각도를 사용하여 계산한 다음, 이를 PI로 나누어 -1.0 에서 1.0 의 설정 범위 내 값이 되도록 합니다. 순열 수 프로퍼티가 1.0 보다 크면, 이 채널이 자동으로 포즈 서치 스키마에 주입됩니다. 이 채널은 실험단계 기능인 모션 매치 스티치(Motion Matched Stitching) 와 함께 사용하도록 설계되었습니다.
아래에서 크래싱 레그 채널의 세팅 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 왼쪽 허벅지(LeftThigh) | 캐릭터의 왼쪽 허벅지를 나타내는 본을 설정합니다. |
| 오른쪽 허벅지(Right Thigh) | 캐릭터의 오른쪽 허벅지를 나타내는 본을 설정합니다. |
| 왼발(Left Foot) | 캐릭터의 왼발을 나타내는 본을 설정합니다. |
| 오른발(Right Foot) | 캐릭터의 오른발을 나타내는 본을 설정합니다. |
| 가중치(Weight) | 모션 데이터베이스 환경설정 에셋의 다른 활성 채널과 대비하여 이 채널의 결과에 가중치를 부여할 가중치 값을 설정합니다. |
| 쿼리 포즈 입력(Input Query Pose) | 쿼리된 포즈 입력에 사용되는 메서드를 설정할 수 있습니다. 다음 메서드 중에서 선택할 수 있습니다.
|
| 허용치(Allowed Tolerance) | 이 채널을 사용하여 선택 시의 허용치를 설정합니다. |
순열 시간(실험단계)
순열 시간(Permutation Time) 채널을 사용하면 추가 채널에 가중치를 부여하여 각 채널이 최종 출력 포즈에 미치는 영향력의 정도를 설정할 수 있습니다.
가중치(Weight) 프로퍼티를 사용해 다른 채널과 대비하여 이 채널의 영향력에 대한 가중치를 설정할 수 있습니다.
포즈 서치 데이터베이스 에셋 생성하기
캐릭터의 애니메이션 데이터를 Motion Matching 노드가 선택할 수 있는 포맷으로 저장하려면 포즈 서치 데이터베이스 에셋을 생성해야 합니다. 모션 데이터베이스 에셋을 생성하려면 콘텐츠 브라우저(Content Browser) 에서 (+) 추가 를 클릭한 다음 애니메이션(Animation) > 모션 매칭(Animation) > 포즈 서치 데이터베이스(Pose Search Database) 를 선택합니다.
포즈 서치 데이터베이스 에셋을 생성한 다음에는 에셋 선택기에서 포즈 서치 스키마 에셋을 선택하여 포즈 서치 스키마 에셋을 정의해야 합니다. 콘텐츠 브라우저에서 해당 에셋을 더블클릭하여 에셋 에디터를 열 수 있습니다.
포즈 서치 데이터베이스에서는 모션 매칭에서 선택할 수 있는 애니메이션 에셋 목록을 추가하거나 편집할 수 있습니다. 에셋을 생성한 다음에는 콘텐츠 브라우저 에서 에셋을 더블클릭 하여 포즈 서치 데이터베이스 에셋 에디터를 열 수 있습니다.
이제 모션 데이터베이스 에셋에 애니메이션 에셋을 추가할 수 있습니다. 이 워크플로 예시에서는 루프, 피벗, 정지 같은 로코모션 에셋 세트를 사용합니다.
로코모션에 대한 모션 매칭 구성에 사용되는 애니메이션에는 루트 모션이 포함되어 있어야 하며, 애니메이션 시퀀스에는 루트 모션 프로퍼티가 활성화되어 있어야 합니다.
원하는 퀄리티를 달성하는 데 필요한 만큼의 애니메이션 에셋을 사용할 수 있으며, 제공하는 애니메이션 에셋이 많을수록 Motion Matching 노드가 선택해야 할 데이터도 늘어납니다.
애니메이션 에셋을 추가하려면 에셋 목록(Asset List) 패널에서 (+) 추가 를 사용하거나, 콘텐츠 브라우저 또는 에셋 브라우저 패널을 사용하여 에셋을 드래그 앤 드롭하면 됩니다.
포즈 서치 데이터베이스 에셋은 다양한 애니메이션 에셋 타입을 지원하며, 애니메이션 시퀀스 에셋을 디폴트 에셋으로 사용할 수 있고, 필요에 따라 애니메이션 컴포짓, 블렌드 스페이스를 사용할 수 있습니다.

애니메이션 몽타주는 애니메이션 블루프린트에서 지원하지 않으므로 Motion Matching 노드와 함께 사용할 수 없지만, 몽타주 에셋은 실험단계인 캐릭터 블루프린트의 모션 매칭 함수를 사용하여 모션 매칭 구성에서 사용하고 재생할 수 있습니다.
포즈 서치 데이터베이스에 애니메이션을 추가한 다음에는 에셋 목록(Asset List) 패널에서 하나 이상의 애니메이션 시퀀스 에셋을 선택하여 뷰포트(Viewport) 에서 재생하여 확인하거나 선택 디테일(Selection Details) 패널에서 프로퍼티를 편집할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 스키마(Schema) | 이 포즈 서치 데이터베이스 에셋이 매칭에 사용할 채널을 설정하는 포즈 서치 스키마 에셋을 설정하거나 참조할 수 있습니다. 이 프로퍼티는 데이터베이스 에셋 생성 시 선택한 스키마로 자동으로 채워집니다. 프로퍼티의 에셋 선택 드롭다운 메뉴를 사용하여 연결된 스키마를 변경할 수 있습니다. |
| 지속 포즈 비용 바이어스(Continuing Pose Cost Bias) | 현재 선택된 포즈에 바이어스를 추가할 값을 설정할 수 있습니다. 이 프로퍼티를 사용하여 포즈에 양의 비용 바이어스 또는 음의 비용 바이어스를 적용해 다음 포즈 선택 시 평가 방식에 영향을 줄 수 있습니다. 이는 설정한 값에 따라 시스템이 하나의 애니메이션 세그먼트를 더 길게 또는 더 짧게 유지하도록 하는 데 유용합니다. 음수 값으로 설정하면 애니메이션이 계속 선택될 확률이 증가하여 더 오래 재생되며, 양수 값으로 설정하면 다시 선택될 확률이 감소하여 애니메이션이 더 짧게 재생됩니다. |
| 루핑 비용 바이어스(Looping Cost Bias) | 데이터베이스의 모든 루핑 애니메이션 에셋에 추가할 값을 설정할 수 있습니다. 이 프로퍼티를 사용하여 시스템이 루핑 애니메이션을 선택할 확률을 제어할 수 있습니다. 음수 값으로 설정하면 시스템이 루핑 애니메이션을 선택하고 루핑 애니메이션을 유지할 확률이 증가하고, 양수 값으로 설정하면 루핑 애니메이션이 연속으로 선택되거나 재생될 확률이 감소합니다. |
| 데이터베이스 파라미터에서 제외(Exclude from Database Parameters) | 애니메이션의 첫 번째 프레임과 마지막 프레임 앞뒤로 어느 범위까지 평가할지 설정할 수 있습니다. 이 프로퍼티를 사용하면 데이터베이스에서 애니메이션의 시작 프레임과 종료 프레임을 트리밍하여 현재 선택된 애니메이션과 다음 선택된 애니메이션을 블렌딩할 때 애니메이션의 마지막 프레임이 블렌딩되지 않도록 하는 등, 트랜지션 포즈를 유지할 수 있습니다. 값이 0.0 이면 트리밍을 수행하지 않으며, 음수 프레임이면 사용된 프로퍼티에 따라 양쪽 끝에서 애니메이션을 트리밍합니다. |
| 추가 보외 시간(Additional Extrapolation Time) | 애니메이션을 블렌딩 인 또는 블렌딩 아웃할 때 사용할 추가 보외 시간을 결정할 값을 설정할 수 있습니다. 각 애니메이션의 보외 시간 범위제한에 사용되는 다음 공식에서 사용할 최솟값 또는 최댓값을 설정할 수 있습니다.
|
| 태그(Tags) | 포즈 서치 데이터베이스 에셋에 대한 메타데이터로 사용할 수 있는 태그의 배열을 설정할 수 있습니다. (+) 추가 를 사용하여 태그 배열에 새 엘리먼트를 추가할 수 있습니다. 배열 엘리먼트를 추가한 다음에는 인덱스 엘리먼트에 텍스트 값을 추가할 수 있습니다. |
| 정규화 세트(Normalization Set) | 선택 항목을 정규화할 포즈 서치 데이터베이스 에셋 목록을 정의할 포즈 서치 정규화 세트 에셋을 설정할 수 있습니다. 기능적인 모션 매칭 구성을 위해 정규화 세트를 설정할 필요는 없지만, 애니메이션 세트를 타입별로 분할하고 정규화 세트를 사용하여 세트를 서로 비교하면 더 정확하고 효율적인 결과를 얻을 수 있습니다. 정규화 세트 사용에 대한 자세한 내용은 이 문서의 포즈 서치 정규화 세트 섹션을 참조하세요. |
| 프리뷰 메시(Preview Mesh) | 애니메이션 재생 시 뷰포트에서 사용할 스켈레탈 메시 에셋을 설정할 수 있습니다. 이 프로퍼티를 정의하지 않은 채 남겨두면 에디터는 사용자가 추가한 애니메이션 에셋에 연결된 스켈레탈 메시를 사용합니다. 새 프리뷰 스켈레탈 메시를 선택하려면, 이 프로퍼티의 에셋 선택 드롭다운 메뉴에서 데이터베이스의 애니메이션 에셋과 호환되는 스켈레톤을 선택하면 됩니다. |
| 포즈 서치 모드(Pose Search Mode) | 데이터베이스가 애니메이션 데이터 검색을 수행할 모드를 설정합니다. 드롭다운 메뉴를 사용하여 다음과 같은 옵션을 선택할 수 있습니다.
이 모드는 실험단계이므로 프로덕션에서 이 모드의 기능에 의존하면 안 됩니다. |
| 포즈 정리 유사성 한계치(Pose Pruning Similarity Threshold) | 같은 인덱스 아래에 유사한 포즈를 저장하기 위한 한계치를 결정하는 값을 설정할 수 있습니다. 예를 들어, 스키마 카디널리티가 있는 다차원 포인트가 비슷한 경우처럼 두 포즈의 선택 값이 같고 이러한 값이 포즈 정리 유사성 한계치 프로퍼티에 설정된 값보다 가까운 경우, 데이터베이스에 하나만 저장되고 두 개의 다른 포즈 인덱스에서 액세스됩니다. 이 프로퍼티는 메모리를 절약하기 위해 지정된 값에 대해 여러 포즈를 선택할 수 있는 한계치를 설정하는 데 유용합니다. 이 프로퍼티는 포즈 서치 모드(Pose Search Mode) 프로퍼티가 PCAKDTree 로 설정된 경우에만 액세스할 수 있습니다. |
| 주요 컴포넌트 수(Number Of Principal Components) | 포즈 서치 모드(Pose Search Mode) 프로퍼티가 PCAKDTree 로 설정된 경우, KDTree 생성에 사용되는 차원 수를 설정합니다. 값이 클수록 차원 수가 많아져서 데이터 세트의 편차를 더 잘 설명할 수 있습니다. 보통 차원 수가 많을수록 검색 결과가 좋아지지만, 프로젝트의 메모리 사용량도 많아져서 퍼포먼스가 나빠집니다. 이 프로퍼티는 포즈 서치 모드(Pose Search Mode) 프로퍼티가 PCAKDTree 로 설정된 경우에만 액세스할 수 있습니다. |
| KDTree 최대 리프 크기(KDTree Max Leaf Size) | KDTree의 각 가지에 달릴 수 있는 최대 나뭇잎 수를 설정합니다. 이 프로퍼티는 포즈 서치 모드(Pose Search Mode) 프로퍼티가 PCAKDTree 로 설정된 경우에만 액세스할 수 있습니다. |
| KNN 쿼리 이웃 수(KNNQueryNumNeighbors) | KDTree 검색을 사용하면 대략적인 비용만 결과로 얻을 수 있으므로, 데이터베이스 검색에서 몇 개의 포즈를 선택하여 전체 비용 분석을 수행하여 최고의 포즈를 선택할 수 있습니다. 이 프로퍼티에서 값을 설정하여 KDTree 검색에서 전체 비용 분석을 위해 선택할 포즈 수를 선택합니다. 이 프로퍼티는 VPTree 포즈 서치 모드(VPTree Pose Search Mode) 사용 시 전체 비용 분석을 수행하기 위해 VPTree 검색의 포즈 수를 설정하는 데에도 사용할 수 있습니다. |
가장 단순한 구성 생성하기: Motion Matching 노드 및 Pose History 노드
캐릭터의 애니메이션 블루프린트에서 그래프를 우클릭하고 포즈 서치(Pose Search) 카테고리 아래에서 모션 매칭을 선택하여 Motion Matching 노드를 생성합니다.
그래프에서 Motion Matching 노드의 검색 가능(Searchable) 핀 드롭다운 메뉴를 사용하여 데이터베이스 에셋을 선택합니다.
다음으로, Motion Matching 노드의 Output 핀을 드래그하고 포즈 서치(Pose Search) 섹션 아래에서 Pose History 노드를 선택하거나 검색창 을 사용하여 Pose History 노드를 추가합니다. 이어서 Pose History 노드의 Output 핀을 Output Pose 노드에 연결합니다.
애님 그래프(AnimGraph)에서 Pose History 노드를 선택하여 디테일(Details) 패널에서 해당 프로퍼티를 펼칩니다. 궤적 생성(Generate Trajectory) 프로퍼티를 활성화합니다.
그런 다음, 수집된 본(Collected Bones) 프로퍼티를 펼치고 (+) 추가 를 사용하여 샘플링하려는 캐릭터 스켈레톤의 각 본에 대해 배열 엘리먼트를 추가합니다. 이 프로퍼티에 정의된 본은 Pose History 및 Motion Matching 노드가 애니메이션 선택 시 궤적을 쿼리할 때 샘플링됩니다.
애니메이션 블루프린트를 저장 및 컴파일 합니다. 이제 캐릭터가 모션 매칭을 사용하여 런타임 시 로코모션 애니메이션 포즈를 선택합니다.
Motion Matching 노드
아래에서 Motion Matching 노드의 세팅 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 프로퍼티 | 설명 |
|---|---|
| 데이터베이스(Database) | 선택에 사용할 데이터베이스 에셋을 설정할 수 있습니다. |
| 블렌드 시간(Blend Time) | 새 애니메이션 시퀀스 세그먼트 선택 시 블렌드 기간 결정에 사용할 값을 설정합니다. 모션 매칭에는 블렌드 타입, 블렌드 퀄리티 및 블렌드 프로파일에 대해 더 많은 옵션을 사용할 수 있게 해주는 블렌드 트리(Blend Tree)가 내장되어 있습니다. 예를 들어, 원한다면 상반신을 하반신보다 오래 블렌드하는 등의 설정이 가능합니다. 향후 더 많은 옵션이 추가될 예정입니다. |
| 블렌드 프로파일(Blend Profile) | 모션 매칭과 함께 사용할 캐릭터의 블렌드 프로파일 중 하나를 설정할 수 있습니다. |
| 모드(Mode) | 본에 시간 경과에 따라 블렌드가 적용되는 블렌드 방식을 결정하는 데 사용할 커브를 설정할 수 있습니다. 일반적으로 선형(Linear), 이지 인(Ease In), 이지 아웃(Ease Out) 및 이지 인/아웃(Ease In and Out) 을 선택합니다. 블렌드 프로파일 프로퍼티 확장 아래 접혀 있는 드롭다운 메뉴를 사용하여 이 프로퍼티에 액세스할 수 있습니다. |
| 포즈 점프 한계치 시간(Pose Jump Threshold Time) | 타임프레임을 초 단위로 설정할 수 있습니다. 현재 프레임에서 이 시간만큼 떨어져 있지 않으면 시스템이 같은 에셋에서 여기 설정한 범위 내의 포즈로 점프하지 않습니다. 이를 통해 시스템이 애니메이션 섹션을 같은 클립에서 반복 선택하는 것을 방지하고 애니메이션을 재생하거나 새 애니메이션을 선택하도록 유도할 수 있습니다. |
| 포즈 다시 선택 히스토리(Pose Reselect History) | 시스템에서 설정한 과거의 시간 범위 내에서 이전에 선택한 포즈로 점프하지 못하는 시간 범위를 초 단위로 설정할 수 있습니다. |
| 검색 스로틀 시간(Search Throttle Time) | 시스템이 새 포즈를 검색하는 빈도를 설정합니다. |
| 재생 속도(Play Rate) | 선택한 애니메이션의 재생 속도를 설정할 수 있습니다. |
| 관성 블렌드 사용(Use Inertial Blend) | 활성화하면 애니메이션 블렌드에 관성 블렌드가 적용됩니다. |
| 연관성 확보 시 리셋(Reset On Becoming Relevant) | 이 프로퍼티를 활성화하면 Motion Matching 노드가 이전 프레임에서 틱되지 않다가 그래프와의 연관성 확보 시 모션 매칭 상태가 리셋됩니다. |
| 검색 필요(Should Search) | 활성화하면 모션 매칭 노드가 연결된 데이터베이스 에셋에서 쿼리 시스템과 매칭할 애니메이션을 검색합니다. |
| 캐시된 채널 데이터 사용 필요(Should Use Cached Channel Data) | 활성화하면 스키마가 다른 여러 데이터베이스 검색 시 쿼리 빌드 중에 계산된 포즈 기능 데이터를 공유하려 시도합니다. 이는 서로 다른 스키마에 걸쳐 지속 포즈 기능 벡터를 최대한 많이 공유할 수 있도록 하여 퍼포먼스를 개선하기 위함입니다. 기본적으로 이 프로퍼티는 기존 모션 매칭 시스템과의 하위 호환성을 보존하기 위해 비활성화되어 있습니다. |
| 노티파이 필터링 필요(Should FIlter Notifies) | 활성화하면 애님 플레이어 샘플에서 발생하는 모든 노티파이가 필터링됩니다. {in seconds} |
| 최대 활성 블렌드(Max Active Blends) | 블렌드 스택의 최대 활성 블렌딩 애니메이션 수를 설정합니다. 이 프로퍼티가 0 이면 블렌드 스택이 비활성화됩니다. |
| 블렌딩된 포즈 저장(Store Blended Pose) | 이 옵션을 활성화하고 요청된 블렌드 수가 최대 활성 블렌드 프로퍼티에 설정된 값보다 많으면, 블렌드 스택이 블렌딩되어 모든 오버플로 애니메이션과 함께 저장된 포즈에 누적됩니다. 비활성화하면 포즈를 저장할 메모리가 절약되지만, 최대 활성 블렌드 프로퍼티 값에 도달하면 블렌드 스택이 애니메이션을 버리기 시작하므로 애니메이션 팝핑이 발생할 수 있습니다. |
| 최근 타임아웃 알림(Notify Recency Time Out) | 노티파이를 발동한 후 동일한 노티파이의 인스턴스가 필터링되는 시간을 설정합니다. |
| 애니메이션을 오버라이드하기 위한 최대 블렌드 인 시간(Max Blend in Time to Override Animation) | 가장 최근에 추가된 애니메이션이 이 프로퍼티 값으로 설정된 범위 내에 있으면, 새로 요청된 블렌드가 그 자리를 차지합니다. 그렇지 않으면 새 블렌드는 블렌드 스택에 추가됩니다. |
| 플레이어 뎁스 블렌드 시간 배수(Player Depth Blend Time Multiplier) | 애니메이션 플레이어의 블렌드 인 타이머에 곱할 값을 설정합니다. 이 값을 높이면 더 심층적인 블렌드에서 블렌드 시간을 단축하는 데 유용할 수 있습니다. |
애님 노티파이 필터링
모션 매칭 시스템을 사용하다 보면 시스템이 선택한 각 포즈가 걷거나 달리는 애니메이션 중에 발소리 이펙트와 같은 특정한 애님 노티파이를 트리거하는 문제가 발생할 수 있습니다. 그러면 하나가 아닌 두 개 이상의 발소리 이펙트가 인접 프레임에서 재생됩니다. 애님 노티파이 필터링(Anim Notify Filtering) 을 사용하여 이 문제를 해결할 수 있습니다.
여기서 같은 캐릭터 게임플레이 상황에 대한 두 개의 리와인드 디버거(Rewind Debugger) 레코딩을 볼 수 있는데, 왼쪽 예시는 애님 노티파이 필터링을 사용하지 않고 있으며, 애님 포즈 선택으로 인해 시퀀스에서 같은 애님 노티파이가 두 번 이상 발동되고 있습니다. 오른쪽 예시에서는 애님 노티파이 필터링을 사용하여 설정된 시간 내에 같은 노티파이가 트리거되지 않도록 하고 있으므로, 설정된 시간 동안 애님 노티파이가 한 번만 트리거됩니다.
| 애님 노티파이 필터링 미사용 | 애님 노티파이 필터링 사용 |
|---|---|
![]() |
![]() |
애님 노티파이 필터링을 구현하려면 캐릭터의 애니메이션 블루프린트에서 Motion Matching 노드를 선택하고 디테일(Details) 패널에서 노티파이 필터링 필요(Should Filter Notifies) 프로퍼티를 활성화합니다. 그런 다음, 최근 타임아웃 알림(Notify Recency Time Out) 프로퍼티를 사용하여 노티파이를 필터링할 기간을 초단위로 설정하면 됩니다.
디폴트 값인 0.2 는 바이페드 로코모션에 가장 유용하도록 설계되었으므로 기준값으로 사용할 수 있지만, 프로젝트에 따라서 원하는 결과를 얻기 위해 다른 값으로 설정해야 할 수도 있습니다.
노티파이 필터링 필요(Should Filter Notifies) 프로퍼티를 활성화하면, 모든 애님 노티파이를 똑같이 처리하고 최근 노티파이 필터링 시간(Notify Recency Time Out) 프로퍼티에 설정된 설정값에 대해 같은 노티파이의 반복 인스턴스를 필터링합니다. 애니메이션에 필터링하고 싶지 않은 노티파이가 포함되어 있으면, 애니메이션 시퀀스 또는 몽타주에서 그 노티파이를 선택하고 해당 노티파이의 디테일(Details) 패널에서 요청을 통해 필터링 가능(Can Be Filtered Via Request) 프로퍼티를 비활성화합니다. 기본적으로 이 프로퍼티는 모든 애님 노티파이에 대해 활성화되어 있습니다.
애님 노티파이 필터링은 애님 노티파이에만 적용되며, 애님 노티파이 스테이트에 대해서는 작동하지 않습니다.
포즈 서치 스키마 채널 가중치
포즈 서치 스키마 에셋 내에 있는 각 채널의 가중치 프로퍼티를 사용하여 각 채널이 선택 프로세스에 미치는 영향력을 제어할 수 있습니다.
포즈 서치 스키마 에셋의 각 채널에 대한 가중치 프로퍼티를 통해 모션 매칭 시스템이 데이터베이스에서 애니메이션 프레임을 선택할 때 각 채널이 얼마나 영향을 미치는지 확인할 수 있습니다.
위의 워크플로 예시에서는 포즈 채널 가중치를 1.0 으로, 궤적 채널 가중치를 3.0 으로 설정했습니다. 따라서 시스템은 포즈 차이보다 궤적 차이에 3배 더 영향을 받게 됩니다.
각 채널 내에 있는 개별 프로퍼티에도 가중치를 부여하여 애니메이션 선택에 영향을 주는 요소를 더 정밀하게 조정할 수 있습니다. 예를 들어, 히스토리(History) 및 예측 범위(Prediction Horizon) 프로퍼티에도 가중치를 부여하여 과거나 미래로 점수를 편향시킬 수 있습니다. 이를 통해 포즈 서치 스키마에서 채널의 영향력을 결정하는 데 사용되는 채널의 엘리먼트를 다른 채널에 분산할 수 있습니다.
이러한 다양한 가중치에 어떤 값을 설정하든 상관없이 시스템은 자동으로 가중치를 정규화합니다. 가중치를 정규화하지 않으려면 데이터 프로세서(Data Processor) 프로퍼티를 없음(None) 으로 설정합니다.
하지만, 가중치가 항상 잘못된 포즈 선택을 해결해 주는 것은 아닙니다. 예를 들어, 무브먼트 모델이 초당 5미터를 이동하지만, 데이터의 평균은 초당 4미터 정도라면, 모션 매칭 시스템이 거듭해서 최댓값 애니메이션 포즈를 선택할 수 있습니다. 가중치 값을 조정하여 애니메이션 포즈의 최댓값을 낮추면 이런 반복적인 선택이 수정될 수 있지만, 일부 채널 기준이 완전히 무시되어 애니메이션 시스템에 간극이 발생할 수 있습니다.
채널의 가중치를 조정할 때는 프로젝트의 시스템을 고려하여 시스템을 조정하는 것이 아니라 시스템이 애니메이션 포즈를 선택하는 방식을 조정하는 것입니다. 전체 애니메이션 시스템을 보존하기 위해 포즈 서치 데이터베이스 세트를 사용하는 등의 다른 메서드를 사용하여 모든 게임플레이 시나리오를 고려할 수 있습니다.
포즈 서치 정규화 세트
포즈 서치 정규화 세트(Pose Search Normalization Sets)는 일련의 정의된 포즈 서치 데이터베이스 에셋으로, 각 에셋에는 특정 사용 사례에 적용할 수 있는 애니메이션 그룹이 포함되어 있습니다. 예를 들어, 어떤 데이터베이스에는 캐릭터의 걷기 애니메이션이 포함되어 있고, 다른 데이터베이스에는 캐릭터의 달리기 애니메이션이 포함되어 있을 수 있습니다. 포즈 서치 정규화 세트 에셋에 여러 포즈 서치 데이터베이스 에셋을 설정하면, 애니메이션 세트를 구분하고 특정 기준이 충족될 때 모션 매칭 시스템에 선호되도록 각각에 가중치를 설정할 수 있습니다.
포즈 서치 정규화 세트는 특정 게임플레이 이벤트 트리거 시 동적으로 교체될 수 있습니다. 이를 통해 Motion Matching 노드가 선택할 수 있는 애니메이션 데이터 풀이 제한되어 애니메이션 시스템의 애니메이션 포즈 출력을 더 잘 제어할 수 있습니다. 이렇게 하려면 포즈 서치 정규화 세트 에셋에 일련의 포즈 서치 데이터베이스 에셋을 정의하고 선택기 시스템을 사용하여 런타임 시 활성화할 데이터베이스를 동적으로 설정하면 됩니다.
모션 매칭 노티파이
모션 매칭 노티파이(Motion Matching Notifies) 세트를 사용하여 구성을 지원할 수도 있습니다. 아래에서 사용 가능한 모션 매칭 노티파이 목록과 그 기능에 대한 설명을 참조할 수 있습니다.
| 노티파이 | 설명 |
|---|---|
| 포즈 서치: 전환 블로킹(Pose Search: Block Transition) | 이 노티파이 스테이트를 사용하면 시스템이 태그가 지정된 영역으로 점프할 수 없지만, 이전 섹션에서 이 태그가 지정되지 않은 해당 영역으로 재생할 수 있는 애니메이션 영역을 설정할 수 있습니다. 이는 중간으로 점프하면 안 되는 애니메이션 섹션이 있을 때 유용합니다. 캐릭터가 중간에 머리를 긁는 유휴 애니메이션이 있는 경우, 머리를 긁는 중간 부분으로 점프하면 안 될 것입니다. 해당 영역에 태그를 지정하면 이 태그가 지정되지 않은 애니메이션의 모든 섹션으로 점프할 수 있습니다. |
| 포즈 서치: 데이터베이스에서 제외(Pose Search: Exclude From Database) | 이 노티파이 스테이트를 사용하면 애니메이션 시퀀스에서 애니메이션 데이터 섹션을 완전히 제외할 수 있습니다. 이 노티파이가 설정된 모든 섹션은 빌드되거나 검색되지 않습니다. |
| 포즈 서치: 모션 매칭 분기 입력(Pose Search: Motion Matched Branch In) | 이 노티파이 스테이트를 사용하여 모션 매칭 시스템에서 애니메이션이 선택될 때 분기할 위치를 구분할 수 있습니다. |
| 포즈 서치: 베이스 비용 바이어스 오버라이드(Pose Search: Override Base Cost Bias) | 이 노티파이 스테이트를 사용하여 애니메이션 시퀀스의 특정 섹션 선택 시 보너스나 페널티를 줄 수 있습니다. 음수 값으로 설정하면 보너스를, 양수 값으로 설정하면 페널티를 줍니다. 이는 원하는 것보다 시스템이 시작 애니메이션을 일찍 종료하는 상황에서 유용하므로, 이상적으로 종료할 때까지 계속 유지하고 싶은 섹션에 이 노티파이를 배치하고 작은 보너스를 제공하여 해당 영역에서 더 오래 유지되도록 할 수 있습니다. |
| 포즈 서치: 지속 포즈 비용 바이어스 오버라이드(Override Continuing Pose Cost Bias) | 이 노티파이 스테이트를 사용하면 지속 포즈에 대한 포즈 서치 비용을 설정하여 노티파이 파라미터에 따라 지속 재생을 위해 애니메이션 세그먼트가 다시 선택될 가능성을 높이거나 낮출 수 있습니다. |
| 포즈 서치: 샘플링 어트리뷰트(Sampling Attribute) | 포즈 서치 스키마 채널은 채널의 샘플링 어트리뷰트 ID(Sampling Attribute ID) 프로퍼티를 노티파이 스테이트의 샘플링 어트리뷰트 ID 프로퍼티와 일치하도록 지정하여 데이터베이스 인덱싱 중에 이 노티파이 스테이트를 애니메이션 스페이스 위치, 회전 및 선형 속도 제공자로 사용할 수 있습니다. |
| 포즈 서치 샘플링 이펙트(Pose Search Sampling Effect) | 포즈 서치 스키마 채널은 채널의 샘플링 어트리뷰트 ID 프로퍼티를 노티파이 스테이트의 샘플링 어트리뷰트 ID 프로퍼티와 일치하도록 지정하여 데이터베이스 인덱싱 중에 이 노티파이 스테이트를 사용하여 샘플링 어트리뷰트 ID 프로퍼티로 식별되는 이벤트의 경계를 구분할 수 있습니다. |
애니메이션 워핑
모션 매칭과 함께 애니메이션 워핑 노드를 구현하면 런타임 시 캐릭터의 포즈를 절차적으로 수정하여 커버리지 부족을 완화할 수 있습니다.
애니메이션 워핑에 대한 자세한 내용은 다음 문서를 참조하세요.
모션 매칭 디버깅
모션 매칭 애니메이션 시스템 디버깅 및 최적화에 대한 자세한 내용은 모션 매칭 디버깅 문서를 참조하세요.
추가 정보
언리얼 엔진의 모션 매칭에 대한 자세한 내용은 모션 매칭 | GDC 2024(https://www.youtube.com/watch?v=u9Z8CK561_Y&t=1532s) 프레젠테이션을 참조하세요.
샘플 콘텐츠
게임 애니메이션 샘플 프로젝트를 다운로드하고 탐색하여 고퀄리티 애니메이션 에셋 모음과 캐릭터 로코모션을 위해 완전히 빌드된 모션 매칭 구성에 액세스할 수 있습니다.
모션 매칭 샘플 프로젝트에 대한 자세한 내용은 다음 문서를 참조하세요.

