메타휴먼 코어 데이터 애니메이션 mhc_mh002_fmn_b_facialloop_sad_m_s001 의 Head 관련 애니메이션 커브 질문

1. 맥락 (Context)

메타휴먼 크리에이터 코어 데이터에 포함된 애니메이션

mhc_mh002_fmn_b_facialloop_sad_m_s001 (바디 애니메이션) 관련하여 질문이 있습니다.

현재 캐릭터는 Idle ↔ Talk 상태 머신을 사용하고 있으며,

상태에 따라 해당 애니메이션을 재생하도록 구성되어 있습니다.

기존에는 Idle과 Talk 애니메이션 모두 모션 캡처 애니메이션을 사용했고

Idle ↔ Talk 전환 시 블렌딩이 자연스럽게 동작했습니다.

(사용한 모션 캡처 애니메이션: https://www.fab.com/ko/listings/3c24140c-fbc1-422e-991d-715c2845aae9)

<br/>

2. 문제 (Problem)

Idle 애니메이션을

mhc_mh002_fmn_f_facialloop_sad_m_s001 (페이셜 애니메이션)으로 변경한 이후 문제가 발생했습니다.

해당 페이셜 애니메이션에는 다음과 같은 Head 관련 애니메이션 커브가 존재하지 않습니다.

  • Head Translation X / Y / Z
  • Head Roll / Pitch / Yaw
  • Head Control Switch

반면 Talk 애니메이션(모션 캡처)에는 위 커브들이 존재합니다.

이로 인해 Idle ↔ Talk 상태 전환 시

블렌딩이 정상적으로 되지 않고 히컵(hiccup) 현상이 발생합니다.

<br/>

3. 시도한 내용 (What I Tried)

  1. mhc_mh002_fmn_f_facialloop_sad_m_s001(페이셜 애니메이션)에 임의로 Head 관련 애니메이션 커브를 추가해 보았습니다.
  2. 그 결과 Idle ↔ Talk 전환 시 블렌딩 자체는 정상적으로 동작했습니다.
  3. 하지만 임의로 만든 커브이다 보니 원래의 mhc_mh002_fmn_f_facialloop_sad_m_s001(페이셜 애니메이션) 애니메이션과 자연스럽게 어울리지 않았습니다.

<br/>

그래서

mhc_mh002_fmn_b_facialloop_sad_m_s001 (바디 애니메이션) 에 포함된

Head 관련 애니메이션 커브를 추출하여

mhc_mh002_fmn_f_facialloop_sad_m_s001(페이셜 애니메이션)에 붙여넣는 방식이 가장 자연스러울 것이라고 판단했습니다.

<br/>

하지만 문제는,

  • mhc_mh002_fmn_b_facialloop_sad_m_s001 **(바디 애니메이션)**을 열어보면
  • 애니메이션 커브가 하나도 보이지 않습니다.
  • 그럼에도 불구하고 실제로는 애니메이션이 정상적으로 움직입니다.

<br/>

4. 질문 (Questions)

  1. mhc_mh002_fmn_b_facialloop_sad_m_s001 (바디 애니메이션) 에서 Head 관련 애니메이션 커브 (Head Translation X/Y/Z, Head Roll/Pitch/Yaw, Head Control Switch)를 추출할 수 있는 방법이 있습니까?
  2. 애니메이션 커브가 전혀 보이지 않는데도 움직이는 이유는 무엇인가요? 해당 애니메이션은 어떤 방식으로 동작하고 있는지 궁금합니다.
  3. 만약 위와 같이 바디 애니메이션에서 Head 커브를 추출하여 페이셜 애니메이션에 붙여넣는 방식이 불가능하다면, Idle ↔ Talk 전환 시 블렌딩 문제를 해결할 수 있는 다른 권장 방법이 있을까요?

<br/>

[Attachment Removed]

안녕하세요.

문의 주신 Head Translation X / Y / Z, Head Roll / Pitch / Yaw, Head Control Switch 애니메이션 커브와 관련하여,

해당 커브들의 역할과 커브 유무에 따른 차이, 그리고 Idle ↔ Talk 상태 전환 시 발생하는 블렌딩 히컵 현상에 대해

메타휴먼 크리에이터 코어 데이터의 설계 기준을 바탕으로 아래와 같이 안내드립니다.

먼저,

Head Translation X / Y / Z, Head Roll / Pitch / Yaw, Head Control Switch 커브는 모두 Head Bone의 트랜스폼을 제어하기 위한 애니메이션 커브입니다.

Head Control Switch 값이 1일 경우, Head Translation 커브의 값을 이용하여 위치(Location)를 조정하고,

Head Roll / Pitch / Yaw 커브의 값을 이용하여 회전을 적용하게 됩니다.

이러한 커브 기반 제어는 Control Rig를 통해 이루어지며,

메타휴먼 크리에이터 코어 데이터 내의 CR_MetaHuman_HeadMovement_IK_Proc를 포함한 여러 Control Rig에서

해당 커브들이 공통적으로 사용되고 있음을 확인하실 수 있습니다.

한편, 메타휴먼 크리에이터 코어 데이터에서는 Live Link 등 실시간 입력 시스템과의 원활한 연계를 포함한

다양한 파이프라인상의 이유로, Face 전용 애니메이션에는 Head Bone을 직접 제어하는 커브나 본 트랜스폼 애니메이션을 포함하지 않도록 설계되어 있습니다.

이에 따라 Face 애니메이션에서는 Head Bone에 대한 움직임이 존재하지 않습니다.

따라서, 해당 애니메이션에서 Head Translation X / Y / Z, Head Roll / Pitch / Yaw, Head Control Switch 커브를 통해 Head Bone이 제어되고 있는 Talk 애니메이션으로 블렌딩이 이루어질 경우,

Head Bone의 트랜스폼 제어 방식 및 값의 차이가 크게 발생하게 되며,

이로 인해 상태 전환 과정에서 블렌딩 히컵 현상이 발생할 수 있습니다.

mhc_mh002_fmn_b_facialloop_sad_m_s001 (바디 애니메이션)의 경우에는

Head Bone의 움직임이 다른 Bone들의 움직임과 동일하게 AnimSequence 내부에 본 트랜스폼 애니메이션으로 베이킹되어 있으며,

Head SkeletalMeshComponent에서 해당 애니메이션이 재생될 경우 Head Bone이 정상적으로 움직이게 됩니다.

바디 애니메이션에서 표현되는 Head Bone의 움직임을 Face 애니메이션에서도 동일하게 적용하고자 하실 경우,

바디 애니메이션의 각 키프레임에 따른 Head Bone의 로컬 트랜스폼 값을 기준으로 애니메이션 커브를 직접 생성하여 추가하는 방법을 고려하실 수 있습니다.

감사합니다.

[Attachment Removed]