본문으로 건너뛰기

플러그인 사용 방법

이 가이드는 MetaHuman 캐릭터에 Runtime MetaHuman Lip Sync를 설정하는 과정을 안내합니다.

참고: Runtime MetaHuman Lip Sync는 MetaHuman커스텀 캐릭터 모두와 호환됩니다. 이 플러그인은 다음과 같은 다양한 캐릭터 유형을 지원합니다:

  • 인기 있는 상용 캐릭터 (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe 등)
  • FACS 기반 블렌드쉐이프가 있는 캐릭터
  • ARKit 블렌드쉐이프 표준을 사용하는 모델
  • Preston Blair 포네임 세트가 있는 캐릭터
  • 3ds Max 포네임 시스템
  • 얼굴 표정을 위한 커스텀 모프 타겟이 있는 모든 캐릭터

위의 모든 표준에 대한 비젼 매핑 참조를 포함한 커스텀 캐릭터 설정에 대한 자세한 지침은 커스텀 캐릭터 설정 가이드를 참조하세요.

필수 조건

시작하기 전에 다음 사항을 확인하세요:

  1. 프로젝트에서 MetaHuman 플러그인이 활성화되어 있어야 합니다 (참고: UE 5.6부터는 이 단계가 더 이상 필요하지 않으며 MetaHuman 기능이 엔진에 직접 통합됨)
  2. 프로젝트에 최소 한 명의 MetaHuman 캐릭터가 다운로드되어 있어야 합니다
  3. Runtime MetaHuman Lip Sync 플러그인이 설치되어 있어야 합니다

추가 플러그인:

  • 오디오 캡처 (예: 마이크 입력)를 사용할 계획이라면 Runtime Audio Importer 플러그인을 설치하세요.
  • 텍스트 음성 변환 기능을 사용할 계획이라면 Runtime Text To Speech 플러그인을 설치하세요.

플랫폼별 구성

Android / Meta Quest 구성

Android 또는 Meta Quest 플랫폼을 타겟팅하고 이 플러그인과 관련된 빌드 오류가 발생하는 경우 프로젝트 설정에서 x86_64 (x64) Android 아키텍처를 비활성화해야 합니다:

  1. 편집 > 프로젝트 설정으로 이동합니다
  2. 플랫폼 > Android로 이동합니다
  3. 플랫폼 - Android, 빌드 섹션에서 **Support x86_64 [aka x64]**를 찾아 비활성화되어 있는지 확인합니다

x64 Android 아키텍처 비활성화

이는 현재 플러그인이 Android / Meta Quest 플랫폼에 대해 arm64-v8a 및 armeabi-v7a 아키텍처만 지원하기 때문입니다.

설정 과정

1단계: 얼굴 애니메이션 Blueprint 찾기 및 수정

MetaHuman 캐릭터의 얼굴 애니메이션에 사용될 Animation Blueprint를 수정해야 합니다. 기본 MetaHuman 얼굴 Animation Blueprint는 다음 위치에 있습니다:

Content/MetaHumans/Common/Face/Face_AnimBP

페이스 애니메이션 블루프린트

립 싱크 기능을 구현하기 위한 몇 가지 옵션이 있습니다:

기본 Face_AnimBP를 직접 열어 수정합니다. 모든 변경 사항은 이 Animation Blueprint를 사용하는 모든 MetaHuman 캐릭터에 영향을 미칩니다.

참고: 이 접근 방식은 편리하지만 기본 Animation Blueprint를 사용하는 모든 캐릭터에 영향을 줍니다.

중요: Runtime MetaHuman Lip Sync 블렌딩은 기본 MetaHuman의 Face_Archetype_Skeleton에 존재하는 얼굴 뼈를 포함하는 포즈에 접근할 수 있는 모든 Animation Blueprint 에셋에서 구현될 수 있습니다. 위 옵션에 제한되지 않으며, 이들은 단지 일반적인 구현 접근 방식일 뿐입니다.

2단계: 이벤트 그래프 설정

Face Animation Blueprint를 열고 Event Graph로 전환합니다. 오디오 데이터를 처리하고 비셈을 생성할 Runtime Viseme Generator를 생성해야 합니다.

  1. 아직 존재하지 않으면 Event Blueprint Begin Play 노드를 추가합니다
  2. Create Runtime Viseme Generator 노드를 추가하고 Begin Play 이벤트에 연결합니다
  3. 출력을 변수(예: "VisemeGenerator")로 저장하여 그래프의 다른 부분에서 사용합니다

Runtime Viseme Generator 생성

3단계: 오디오 입력 처리 설정

오디오 입력을 처리할 방법을 설정해야 합니다. 오디오 소스에 따라 여러 방법이 있습니다.

이 접근 방식은 마이크에 말하는 동안 실시간으로 립 싱크를 수행합니다:

  1. Runtime Audio Importer를 사용하여 Capturable Sound Wave 생성
  2. 오디오 캡처 시작 전 OnPopulateAudioData 델리게이트에 바인딩
  3. 바인딩된 함수에서 Runtime Viseme Generator의 ProcessAudioData 호출
  4. 마이크에서 오디오 캡처 시작

복사 가능한 노드.

오디오 캡처 중 립 싱크

4단계: 애님 그래프 설정

이벤트 그래프 설정 후 Anim Graph로 전환하여 비셈 생성기를 캐릭터 애니메이션에 연결합니다:

립 싱크

  1. MetaHuman 얼굴이 포함된 포즈 찾기(일반적으로 Use cached pose 'Body Pose'에서)
  2. Blend Runtime MetaHuman Lip Sync 노드 추가
  3. 포즈를 Blend Runtime MetaHuman Lip Sync 노드의 Source Pose에 연결
  4. RuntimeVisemeGenerator 변수를 Viseme Generator 핀에 연결
  5. Blend Runtime MetaHuman Lip Sync 노드의 출력을 Output PoseResult 핀에 연결

Blend Runtime MetaHuman Lip Sync

오디오에서 립 싱크가 감지되면 캐릭터가 동적으로 애니메이션됩니다:

Lip Sync

웃음 애니메이션

오디오에서 감지된 웃음에 동적으로 반응하는 웃음 애니메이션도 추가할 수 있습니다:

  1. Blend Runtime MetaHuman Laughter 노드 추가
  2. RuntimeVisemeGenerator 변수를 Viseme Generator 핀에 연결
  3. 이미 립 싱크 사용 중인 경우:
    • Blend Runtime MetaHuman Lip Sync 노드의 출력을 Blend Runtime MetaHuman Laughter 노드의 Source Pose에 연결
    • Blend Runtime MetaHuman Laughter 노드의 출력을 Output PoseResult 핀에 연결
  4. 립 싱크 없이 웃음만 사용하는 경우:
    • 소스 포즈를 직접 Blend Runtime MetaHuman Laughter 노드의 Source Pose에 연결
    • 출력을 Result 핀에 연결

Blend Runtime MetaHuman Laughter

오디오에서 웃음이 감지되면 캐릭터가 동적으로 애니메이션됩니다:

Laughter

바디 애니메이션과 결합

기존 바디 애니메이션을 오버라이드하지 않고 립 싱크와 웃음을 적용하려면:

  1. 바디 애니메이션과 최종 출력 사이에 Layered blend per bone 노드 추가. Use Attached Parent가 true인지 확인.
  2. 레이어 설정 구성:
    • Layer Setup 배열에 1 항목 추가
    • 레이어에 대해 Branch Filters에 다음 Bone Name으로 3 항목 추가:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. 연결 생성:
    • 기존 애니메이션(예: BodyPose) → Base Pose 입력
    • 얼굴 애니메이션 출력(립 싱크 및/또는 웃음 노드에서) → Blend Poses 0 입력
    • Layered blend 노드 → 최종 Result 포즈

Layered Blend Per Bone

작동 원리: 분기 필터는 얼굴 애니메이션 뼈를 분리하여 립 싱크와 웃음이 원본 바디 애니메이션을 보존하면서 얼굴 움직임과만 블렌딩되도록 합니다. 이는 MetaHuman 얼굴 리그 구조와 일치하여 자연스러운 통합을 보장합니다.

참고: 립 싱크와 웃음 기능은 기존 애니메이션 설정과 비파괴적으로 작동하도록 설계되었습니다. 이들은 입 움직임에 필요한 특정 얼굴 뼈만 영향을 주며 다른 얼굴 애니메이션은 그대로 유지합니다. 이는 애니메이션 체인의 어느 지점에서든 안전하게 통합할 수 있음을 의미합니다 - 다른 얼굴 애니메이션 전(해당 애니메이션이 립 싱크/웃음을 오버라이드하도록 허용) 또는 후(기존 애니메이션 위에 립 싱크/웃음이 블렌딩되도록)에 통합할 수 있습니다. 이러한 유연성은 눈 깜빡임, 눈썹 움직임, 감정 표현 및 기타 얼굴 애니메이션과 충돌 없이 립 싱크와 웃음을 결합할 수 있게 합니다.

구성

립 싱크 구성

Blend Runtime MetaHuman Lip Sync 노드에는 속성 패널에 구성 옵션이 있습니다:

속성기본값설명
Interpolation Speed25비셈 간 전환 속도를 제어합니다. 값이 높을수록 더 빠르고 급격한 전환이 발생합니다.
Reset Time0.2오디오가 중지된 후 립 싱크가 재설정되는 시간(초)입니다. 오디오 중지 후 립 싱크가 계속되는 것을 방지하는 데 유용합니다.

웃음 구성

Blend Runtime MetaHuman Laughter 노드에는 자체 구성 옵션이 있습니다:

속성기본값설명
Interpolation Speed25웃음 애니메이션 간 전환 속도를 제어합니다. 값이 높을수록 더 빠르고 급격한 전환이 발생합니다.
Reset Time0.2오디오가 중지된 후 웃음이 재설정되는 시간(초)입니다. 오디오 중지 후 웃음이 계속되는 것을 방지하는 데 유용합니다.
Max Laughter Weight0.7웃음 애니메이션의 최대 강도를 조정합니다(0.0 - 1.0).