모션 매칭

김혁·2025년 5월 21일

기술연구

목록 보기
1/10

: 기존에는 캐릭터를 state machine에서 상황에 따라 애니메이션을 직접 전환 및 블렌딩해줘야 한다. 하지만 모션 매칭은 DB에 애니메이션을 넣어놓으면 쿼리 정보를 바탕으로 매 프레임마다 상황에 맞는 애니메이션을 찾아서 재생 및 블렌딩시켜주는 시스템이다.

기본 구성 요소

  • 포즈 서치 스키마 : DB와 쿼리를 모션 매칭 노드에 연결시키기 위해 사용함. 쿼리에 대한 정보를 저장해 놓는 에셋.
  • 포즈 서치 데이터베이스 : 각 포즈에 대한 정보를 스키마에 기반하여 쿼리 데이터를 저장하는 에셋. 루트모션이 작업된 애니메이션을 사용해야 한다.
  • 모션 매칭 노드 : 포즈 서치 데이터베이스랑 연결하는 노드.
  • 포즈 히스토리 노드 : 실시간 매칭할 쿼리 정보를 반환하는 노드.

메커니즘

  • DB에서의 모든 모션과 현재 모션과 차이를 비용으로 계산해서 가장 비용이 적은 모션을 재생한다.
  • 지속 포즈(Continuing Pose) : 모션 매칭 시스템이 불필요한 애니메이션 변경을 피하고 더 자연스러운 움직임을 만들 수 있게 해주는 메커니즘. 현재 활성화 포즈가 다음 프레임에도 재생했을 때 올바른지 검사한 후에 일정 바이오스 값을 넘어갔을 때만 애니메이션을 변경한다. 이를 통해 자연스러운 움직임 및 쓸모 없는 비용 계산을 안 해도 되게끔 한다.
  • 애니메이션 블루프린트 : 캐릭터가 현재 점프 상태인지, 뛰는 상태인지를 체크해서 값을 가지고 있으면 선택기 테이블에서 조건에 맞는 DB를 고를 수 있게 해준다.
  • 선택기 테이블 : 상태에 따라 애니메이션을 재생할 DB를 선택하고 DB 내에서 조건에 맞는 애니메이션을 고른다.
  • 인터럽트 모드 : 모션 매칭이 데이터베이스를 변경하더라도 인터럽트 모드에 따라 자동으로 전환시기를 상황에 따라 조절한다.

모션 매칭 예시 프로젝트

: 게임 애니메이션 샘플 프로젝트
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/game-animation-sample-project-in-unreal-engine

리와인드 디버거

: 모션 매칭을 디버깅하는데 유용한 툴
모션 매칭을 통해 재생되는 애니메이션이 무엇인지 알 수 있다.

- 참고 영상 : https://youtu.be/MIhnv29csSQ?si=QmjmgD1kGYPf7JHH

profile
게임 개발자를 향해..

0개의 댓글