플러그인 사용법
이 가이드는 MetaHuman 캐릭터에 대해 Runtime MetaHuman Lip Sync 설정 과정을 안내합니다.
사전 준비 사항
시작하기 전에 다음을 확인하세요:
- MetaHuman 플러그인이 프로젝트에서 활성화되어 있음
- 최소한 하나 이상의 MetaHuman 캐릭터가 프로젝트에 다운로드되어 사용 가능함
- Runtime MetaHuman Lip Sync 플러그인이 설치됨
추가 플러그인:
- 오디오 캡처(예: 마이크 입력)를 사용할 계획이라면, Runtime Audio Importer 플러그인을 설치하세요.
- 텍스트-음성 변환 기능을 사용할 계획이라면, Runtime Text To Speech 플러그인을 설치하세요.
설정 과정
1단계: 얼굴 애니메이션 블루프린트 찾기 및 수정
MetaHuman 캐릭터의 얼굴 애니메이션에 사용할 Animation Blueprint를 수정해야 합니다. 기본 MetaHuman 얼굴 Animation Blueprint는 다음 위치에 있습니다:
Content/MetaHumans/Common/Face/Face_AnimBP
입 모양 동기화 기능을 구현하는 데 몇 가지 옵션이 있습니다:
- 기본 자산 편집 (가장 간단한 옵션)
- 복제본 생성
- 사용자 정의 애니메이션 블루프린트 사용
기본 Face_AnimBP
를 직접 열고 수정하세요. 모든 MetaHuman 캐릭터에 이 애니메이션 블루프린트를 사용하여 변경 사항이 적용됩니다.
참고: 이러한 접근 방식은 편리하지만, 기본 애니메이션 블루프린트를 사용하는 모든 캐릭터에 영향을 미칩니다.
Face_AnimBP
를 복제하고 설명적인 이름을 지정합니다.- 캐릭터의 블루프린트 클래스 위치를 찾습니다 (예: 캐릭터 "Bryan"의 경우
Content/MetaHumans/Bryan/BP_Bryan
에 있음) - 캐릭터 블루프린트를 열고 Face 컴포넌트를 찾습니다.
- Anim Class 속성을 새로 복제한 애니 메이션 블루프린트로 변경합니다.
참고: 이 방법은 특정 캐릭터에 대한 입 모양 동기화를 사용자 정의할 수 있으며, 다른 캐릭터는 변경되지 않습니다.
필요한 얼굴 뼈에 접근할 수 있는 어떠한 애니메이션 블루프린트에서도 입 모양 동기화를 구현할 수 있습니다.
- 기존의 사용자 정의 애니메이션 블루프린트를 생성하거나 사용하십시오.
- 귀하의 애니메이션 블루프린트가 기본 MetaHuman의
Face_Archetype_Skeleton
(모든 MetaHuman 캐릭터에 사용되는 표준 스켈레톤)과 동일한 얼굴 뼈를 포함하는 스켈레톤과 작동하는지 확인하십시오.
참고: 이 접근 방식은 사용자 정의 애니메이션 시스템과 통합할 때 최대의 유연성을 제공합니다.
중요: Runtime MetaHuman Lip Sync 블렌딩은 기본 MetaHuman의 Face_Archetype_Skeleton
에 있는 얼굴 뼈를 포함한 포즈에 접근할 수 있는 모든 애니메이션 블루프린트 자산에서 구현할 수 있습니다. 위의 옵션에만 제한되지 않으며 이러한 접근 방식은 일반적인 구현 접근 방법입니다.
2단계: 이벤트 그래프 설정
Face Animation Blueprint를 열고 Event Graph
로 이동하세요. 오디오 데이터를 처리하고 비세임을 생성할 Runtime Viseme Generator를 생성해야 합니다.
Event Blueprint Begin Play
노드를 추가합니다(이미 존재하지 않는 경우에)Create Runtime Viseme Generator
노드를 추가하고 Begin Play 이벤트에 연결합니다.- 출력을 변수로 저장합니다(예: "VisemeGenerator") 그래프의 다른 부분에서 사용하기 위해
3단계: 오디오 입력 처리 설정
오디오 입력을 처리하는 방법을 설정해야 합니다. 오디오 소스에 따라 여러 방법이 있습니다.
- 마이크 (실시간)
- 마이크 (재생)
- Text-to-Speech
- 사용자 정의 오디오 소스
이 방법은 마이크로 말할 때 실시간으로 입 모양 동기화를 수행합니다:
- Runtime Audio Importer를 사용하여 Capturable Sound Wave를 생성합니다.
- 오디오 캡처 시작 전에
OnPopulateAudioData
대리자에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator에서
ProcessAudioData
를 호출합니다. - 마이크에서 오디오 캡처를 시작합니다.
이 방법은 마이크에서 오디오를 캡처한 다음 입 모양 동기화와 함께 재생합니다:
- Runtime Audio Importer를 사용하여 Capturable Sound Wave를 생성합니다.
- 마이크에서 오디오 캡처를 시작합니다.
- 캡처 가능한 사운드 웨이브를 재생하기 전에
OnGeneratePCMData
대리자에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator에서
ProcessAudioData
를 호출합니다.
이 방법은 텍스트에서 음성을 합성하고 입 모양 동기화를 수행합니다:
- Runtime Text To Speech를 사용하여 텍스트에서 음성을 생성합니다.
- Runtime Audio Importer를 사용하여 합성된 오디오를 가져옵니다.
- 가져온 사운드 웨이브를 재생하기 전에
OnGeneratePCMData
대리자에 바인딩합니다. - 바인딩된 함수에서 Runtime Viseme Generator에서
ProcessAudioData
를 호출합니다.
사용자 정의 오디오 소스의 경우 다음이 필요합니다:
- float PCM 포맷의 오디오 데이터 (부동 소수점 샘플의 배열)
- 샘플 레이트와 채널 수
- 이러한 매개변수를 사용하여 Runtime Viseme Generator에서
ProcessAudioData
를 호출합니다.
4단계: Anim Graph 설정
이벤트 그래프를 설정한 후 Anim Graph
로 전환하여 비세임 생성기를 캐릭터의 애니메이션에 연결합니다:
- MetaHuman 얼굴이 포함된 포즈를 찾습니다(보통
Use cached pose 'Body Pose'
에서). Blend Runtime MetaHuman Lip Sync
노드를 추가합니다.- 포즈를
Blend Runtime MetaHuman Lip Sync
노드의Source Pose
에 연결합니다. RuntimeVisemeGenerator
변수를Viseme Generator
핀에 연결합니다.Blend Runtime MetaHuman Lip Sync
노드의 출력을Output Pose
의Result
핀에 연결합니다.
참고: 입 모양 동기화 플러그인은 기존의 애니메이션 설정에 비파괴적으로 작동하도록 설계되어 있습니다. 이는 입 움직임에 필요한 특정 얼굴 뼈에만 영향을 미치며, 다른 얼굴 애니메이션은 그대로 유지됩니다. 따라서 애니메이션 체인 내에서 안전하게 통합할 수 있으며, 다른 얼굴 애니메이션보다 이전에(입 모양 동기화를 무시하도록 허용) 또는 이후에(기존 애니메이션 위에 입 모양 동기화를 혼합) 놓을 수 있습니다. 이러한 유연성 덕분에 눈 깜박임, 눈썹 움직임, 감정적 표현과 다른 얼굴 애니메이션과 충돌 없이 입 모양 동기화를 결합할 수 있습니다.
구성
Blend Runtime MetaHuman Lip Sync
노드에는 속성 패널에서 구성 옵션이 있습니다:
Property | Default | Description |
---|---|---|
Interpolation Speed | 25 | 입 움직임이 비세임 간에 얼마나 빠르게 전환되는지를 제어합니다. 높은 값은 더 빠르고 급작스러운 전환을 결과로 가져옵니다. |
Reset Time | 0.2 | 오디오가 멈춘 후 입 모양 동기화가 계속되는 것을 방지하기 위해 입 모양 동기화가 재설정되는 시간(초)을 설정합니다. |