본문으로 건너뛰기

플러그인 사용 방법

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

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

  • 인기 있는 상용 캐릭터 (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe 등)
  • FACS 기반 blendshapes를 가진 캐릭터
  • ARKit blendshape 표준을 사용하는 모델
  • Preston Blair 음소 세트를 가진 캐릭터
  • 3ds Max 음소 시스템
  • 얼굴 표정을 위한 커스텀 morph targets를 가진 모든 캐릭터

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

필수 조건

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

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

표준 모델 확장 플러그인

표준 (더 빠른) 모델을 사용할 계획이라면 확장 플러그인을 설치해야 합니다:

  1. Google Drive에서 표준 Lip Sync 확장 플러그인을 다운로드하세요
  2. 다운로드한 아카이브에서 폴더를 추출하여 프로젝트의 Plugins 폴더에 넣으세요 (해당 폴더가 없으면 생성하세요)
  3. 프로젝트가 C++ 프로젝트로 설정되어 있는지 확인하세요 (C++ 코드가 없더라도)
  4. 프로젝트를 재빌드하세요
노트
  • 이 확장은 표준 모델을 사용하려는 경우에만 필요합니다. 리얼리스틱 모델만 필요하다면 이 단계를 건너뛸 수 있습니다.
  • 플러그인을 수동으로 빌드하는 방법에 대한 자세한 정보는 플러그인 빌딩 튜토리얼을 참조하세요

추가 플러그인

  • 오디오 캡처(예: 마이크 입력)를 사용할 계획이라면 Runtime Audio Importer 플러그인을 설치하세요.
  • 내 플러그인과 함께 텍스트 음성 변환 기능을 사용할 계획이라면(자체 맞춤형 TTS나 다른 오디오 입력이 있을 수 있음), Runtime Audio Importer 플러그인 외에 다음도 설치하세요:

설정 과정

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로 전환합니다. 오디오 데이터를 처리하고 립싱크 애니메이션을 생성할 생성기를 만들어야 합니다.

  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. 마이크에서 오디오 캡처 시작

복사 가능한 노드.

Lip Sync During Audio Capture

Step 4: Anim Graph 설정

Event Graph 설정 후, Anim Graph로 전환하여 생성기를 캐릭터의 애니메이션에 연결하세요:

Lip Sync

  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 Filters3개의 항목을 다음 Bone Name으로 추가:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. 사용자 정의 얼굴 애니메이션에 중요: Curve Blend Option에서 **"Use Max Value"**를 선택하세요. 이를 통해 사용자 정의 얼굴 애니메이션(표정, 감정 등)이 립싱크 위에 제대로 레이어링될 수 있습니다.
  4. 연결 구성:
    • 기존 애니메이션(예: BodyPose) → Base Pose 입력
    • 얼굴 애니메이션 출력(립싱크 및/또는 웃음 노드에서) → Blend Poses 0 입력
    • Layered blend 노드 → 최종 Result 포즈

Layered Blend Per Bone

작동 원리: 브랜치 필터는 얼굴 애니메이션 본을 분리하여 립싱크와 웃음이 원본 바디 애니메이션을 보존하면서 얼굴 움직임과만 블렌딩되도록 합니다. "Use Max Value" 커브 블렌드 옵션은 커브를 가산적으로 블렌딩하는 대신 각 커브의 최대값을 취하므로, 사용자 정의 얼굴 애니메이션(표정과 감정 등)이 충돌 없이 립싱크와 적절하게 결합될 수 있습니다. 이는 자연스러운 통합을 위한 MetaHuman 얼굴 릭 구조와 일치합니다.

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

립싱크 동작 미세 조정

기본 립싱크 기능을 설정한 후 프로젝트 요구사항에 더 잘 맞도록 입 움직임의 특정 측면을 미세 조정할 수 있습니다.

혀 내밀기 제어

표준 립싱크 모델에서는 특정 음소 발음 동안 과도한 전방 혀 움직임을 확인할 수 있습니다. 혀 내밀기를 제어하려면:

  1. Blend Runtime MetaHuman Lip Sync 또는 Blend Realistic MetaHuman Lip Sync 노드 다음에 Modify Curve 노드를 추가합니다
  2. Modify Curve 노드를 우클릭하고 Add Curve Pin을 선택합니다
  3. CTRL_expressions_tongueOut이라는 이름의 커브 핀을 추가합니다
  4. 노드의 Apply Mode 속성을 Scale로 설정합니다
  5. Value 매개변수를 조정하여 혀 내밀기 정도를 제어합니다 (예: 0.8로 설정하면 20% 덜 내밀어짐)

턱 벌림 제어

리얼리스틱 립 싱크는 오디오 콘텐츠와 시각적 요구사항에 따라 지나치게 반응적인 턱 움직임을 생성할 수 있습니다. 턱 벌림 강도를 조정하려면:

  1. 립 싱크 블렌드 노드 다음에 Modify Curve 노드를 추가합니다
  2. Modify Curve 노드를 우클릭하고 Add Curve Pin을 선택합니다
  3. CTRL_expressions_jawOpen이라는 이름의 커브 핀을 추가합니다
  4. 노드의 Apply Mode 속성을 Scale로 설정합니다
  5. Value 매개변수를 조정하여 턱 벌림 범위를 제어합니다 (예: 0.9로 설정하면 턱 움직임이 10% 감소함)

구성

립 싱크 구성

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).

립 싱크 모델 선택하기

프로젝트에 사용할 립싱크 모델을 결정할 때 다음 요소들을 고려하세요:

고려 사항표준 모델리얼리스틱 모델
캐릭터 호환성MetaHumans 및 모든 커스텀 캐릭터 타입MetaHumans 전용
시각적 품질효율적인 성능과 좋은 립싱크더 자연스러운 입 움직임으로 향상된 사실감
성능모바일/VR을 포함한 모든 플랫폼에 최적화약간 더 높은 리소스 요구 사항
사용 사례일반 애플리케이션, 게임, VR/AR, 모바일시네마틱 경험, 클로즈업 캐릭터 상호작용

엔진 버전 호환성

UE 5.2 호환성 문제

Unreal Engine 5.2를 사용 중이라면, UE의 리샘플링 라이브러리 버그로 인해 리얼리스틱 모델이 제대로 작동하지 않을 수 있습니다. UE 5.2 사용자 중 안정적인 립싱크 기능이 필요한 경우, 대신 표준 모델을 사용해 주세요.

이 문제는 UE 5.2에 특화된 것이며 다른 엔진 버전에는 영향을 미치지 않습니다.

대부분의 프로젝트에서 표준 모델은 가장 넓은 범위의 캐릭터 타입을 지원하면서도 품질과 성능의 훌륭한 균형을 제공합니다. 리얼리스틱 모델은 성능 오버헤드가 덜 중요한 상황에서 MetaHuman 캐릭터를 위한 최고의 시각적 충실도가 필요할 때 이상적입니다.