플러그 인을 사용자 정의 캐릭터와 함께 사용하는 방법
이 가이드는 사용자 정의 캐릭터에 Runtime MetaHuman Lip Sync를 설정하는 과정을 안내합니다. 이 과정은 애니메이션 개념과 리깅에 대한 친숙함이 필요합니다. 특정 캐릭터에 대한 구현에 도움이 필요하다면, [email protected]로 전문 지원을 요청할 수 있습니다.
Lip Sync 모델 호환성에 대한 중요 참고사항
사용자 정의 캐릭터는 Standard (Faster) 모델에서만 지원됩니다.
Realistic (Higher Quality) 모델은 MetaHuman 캐릭터 전용으로 설계되었으며, 사용자 정의 캐릭터와 함께 사용할 수 없습니다. 이 가이드 전체에서 참조할 때는 메인 설정 가이드의 Standard 모델 지침을 따라야 합니다.
필요한 확장 플러그인: 사용자 정의 캐릭터와 Standard Model을 사용하려면, 메인 설정 가이드의 필수 조건 섹션에 설명된 대로 Standard Lip Sync Extension plugin을 설치해야 합니다.
이 확장 기능은 이 가이드에 설명된 모든 사용자 정의 캐릭터 구현에 필수입니다.
필수 조건
시작하기 전에, 캐릭터가 다음 요구 사항을 충족하는지 확인하세요:
- 유효한 스켈레톤을 보유
- 얼굴 표정을 위한 morph target (blend shape)을 포함
- 이상적으로 10개 이상의 viseme을 정의하는 morph target을 보유 (viseme이 많을수록 lip sync 품질이 향상됨)
플러그인은 캐릭터의 morph target을 다음 표준 viseme에 매핑해야 합니다:
Sil -> Silence
PP -> Bilabial plosives (p, b, m)
FF -> Labiodental fricatives (f, v)
TH -> Dental fricatives (th)
DD -> Alveolar plosives (t, d)
KK -> Velar plosives (k, g)
CH -> Postalveolar affricates (ch, j)
SS -> Sibilants (s, z)
NN -> Nasal (n)
RR -> Approximant (r)
AA -> Open vowel (aa)
E -> Mid vowel (e)
IH -> Close front vowel (ih)
OH -> Close-mid back vowel (oh)
OU -> Close back vowel (ou)
참고: 캐릭터가 다른 비즘 세트를 가지고 있는 경우(이는 매우 가능성 높음), 각 비즘에 대해 정확히 일치하는 것이 필요하지 않습니다. 근사치로도 충분한 경우가 많습니다—예를 들어, 캐릭터의 SH
비즘을 플러그인의 CH
비즘에 매핑하는 것은 둘 다 유사한 후치경음이므로 효과적으로 작동할 것입니다.
비즘 매핑 참조
일반적인 비즘 시스템과 플러그인이 요구하는 비즘 간의 매핑은 다음과 같습니다:
- Apple ARKit
- FACS 기반 시스템
- Preston Blair System
- 3ds Max Phoneme System
- Custom Characters (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe)
ARKit는 여러 입 모양을 포함한 포괄적인 얼굴 애니메이션용 blendshape 세트를 제공합니다. 이를 RuntimeMetaHumanLipSync 비즘에 매핑하는 방법은 다음과 같습니다:
RuntimeMetaHumanLipSync 비즘 | ARKit 동등물 | 참고 |
---|---|---|
Sil | mouthClose | 중립/휴식 상태 |
PP | mouthPressLeft + mouthPressRight | 양순음의 경우, 두 프레스 셰이프를 함께 사용 |
FF | lowerLipBiteLeft + lowerLipBiteRight (또는 mouthRollLower) | 아래 입술이 위 치아에 접촉, "f" 및 "v" 소리에서와 같이 |
TH | tongueOut | ARKit는 직접적인 혀 제어 기능을 가짐 |
DD | jawOpen (약간) + tongueUp (혀 rig가 있는 경우) | 혀가 치조융기에 접촉; 약간의 턱 벌림 |
KK | mouthLeft 또는 mouthRight (약간) | 미묘한 입꼬리 당김으로 연구개음 근사 |
CH | jawOpen (약간) + mouthFunnel (약간) | 후치경음에 대해 결합 |
SS | mouthFrown | 치찰음에 약간의 찡그림 사용 |
NN | jawOpen (매우 약간) + mouthClose | 거의 닫힌 입에 약간의 턱 벌림 |
RR | mouthPucker (약간) | r-소리를 위한 미묘한 둥글림 |
AA | jawOpen + mouthStretchLeft + mouthStretchRight (또는 jawOpen + mouthOpen) | "ah" 소리를 위한 넓게 벌린 입 |
E | jawOpen (약간) + mouthSmile | 중간 벌림 위치에 약간의 미소 |
IH | mouthSmile (약간) | 입술의 약간의 펼쳐짐 |
OH | mouthFunnel | 둥글게 벌린 모양 |
OU | mouthPucker | 단단히 둥글린 입술 |
FACS (Facial Action Coding System)는 얼굴 움직임을 설명하기 위해 Action Units (AUs)를 사용합니다. 많은 전문 애니메이션 시스템이 FACS 기반 접근법을 사용합니다:
RuntimeMetaHumanLipSync 비즘 | FACS Action Units | 참고 |
---|---|---|
Sil | Neutral | 활성 AU 없음 |
PP | AU23 + AU24 | 입술 누르기 + 입술 조이기 |
FF | AU22 + AU28 | 입술 깔때기 모양 + 입술 빨기 |
TH | AU25 (약간) + AU27 | 입술 벌림 + 입 늘리기 |
DD | AU25 + AU16 | 입술 벌림 + 아래 입술 내리기 |
KK | AU26 + AU14 | 턱 떨어뜨리기 + 보조개 만들기 |
CH | AU18 + AU25 | 입술 오므리기 + 입술 벌림 |
SS | AU20 | 입술 늘리기 |
NN | AU25 (매우 약간) | 약간의 입술 벌림 |
RR | AU18 (약간) | 약간의 입술 오므리기 |
AA | AU27 + AU26 | 입 늘리기 + 턱 떨어뜨리기 |
E | AU25 + AU12 | 입술 벌 림 + 입꼬리 당기기 |
IH | AU12 + AU25 (약간) | 입꼬리 당기기 + 약간의 입술 벌림 |
OH | AU27 (약간) + AU18 | 약간의 입 늘리기 + 입술 오므리기 |
OU | AU18 + AU26 (약간) | 입술 오므리기 + 약간의 턱 떨어뜨리기 |
Preston Blair 시스템은 입 모양에 대해 설명적인 이름을 사용하는 고전적인 애니메이션 표준입니다:
RuntimeMetaHumanLipSync Viseme | Preston Blair | 설명 |
---|---|---|
Sil | Rest | 중립적인 입 다문 상태 |
PP | MBP | 고전적인 "MBP" 입 모양 |
FF | FV | 아래 입술에 이빨이 닿는 "FV" 위치 |
TH | TH | 앞니에 혀가 닿는 상태 |
DD | D/T/N | 이러한 자음에 대한 유사한 위치 |
KK | CKG | 강한 자음 위치 |
CH | CH/J/SH | 이러한 소리를 위한 약간의 내민 입 |
SS | S/Z | 약간 벌린 이빨 위치 |
NN | N/NG/L | D/T와 유사하지만 다른 혀 위치 |
RR | R | R 소리를 위한 둥근 입술 |
AA | AI | 크게 벌린 입 |
E | EH | 중간 정도 벌린 입 |
IH | EE | 펴진 입술 |
OH | OH | 둥근 중간 벌림 |
OU | OO | 꽉 조인 둥근 입술 |
3ds Max는 character studio를 위해 음소 기반 시스템을 사용합니다:
RuntimeMetaHumanLipSync Viseme | 3ds Max Phoneme | 설명 |
---|---|---|
Sil | rest | 기본 입 위치 |
PP | p_b_m | 직접적인 동등물 |
FF | f_v | 직접적인 동등물 |
TH | th | 직접적인 동등물 |
DD | t_d | 직접적인 동등물 |
KK | k_g | 직접적인 동등물 |
CH | sh_zh_ch | 결합된 형태 |
SS | s_z | 직접적인 동등물 |
NN | n_l | 이러한 소리들을 위해 결합됨 |
RR | r | 직접적인 동등물 |
AA | ah | 열린 모음 소리 |
E | eh | 중간 모음 |
IH | ee | 닫힌 전설 모음 |
OH | oh | 후설 원순 모음 |
OU | oo | 닫힌 후설 모음 |
Viseme 또는 mouth blend shapes/morph targets를 가진 커스텀 캐릭터들(Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe 등)은 일반적으로 플러그인의 viseme 시스템에 합리적인 근사치로 매핑될 수 있습니다.
커스텀 Pose Asset 생성하기
Blend Runtime MetaHuman Lip Sync
노드와 함께 사용될 캐릭터용 커스텀 pose asset을 생성하려면 다음 단계를 따르세요:
1. 캐릭터의 Skeletal Mesh 위치 찾기
립싱크 애니메이션에 사용하려는 morph targets (blend shapes)를 포함하는 skeletal mesh를 찾으세요. 이는 캐릭터 디자인에 따라 전체 바디 메시 또는 얼굴 메시일 수 있습니다.
2. Morph Targets와 Curves 확인하기
진행하기 전에, skeletal mesh가 립싱크 애니메이션을 위한 적절한 morph targets와 해당 curves를 가지고 있는지 확인하세요.
Morph Targets 확인:
skeletal mesh가 립싱크 애니메이션을 위한 viseme으로 사용될 수 있는 morph targets (blend shapes)를 포함하는지 확인하세요. 얼굴 애니메이션을 지원하는 대부분의 캐릭터는 일부 음소/viseme morph targets를 가지고 있어야 합니다.
중요: Curves 탭 확인하기 이 단계는 Blender나 다른 외부 소프트웨어에서 익스포트한 캐릭터의 경우 특히 중요합니다:
- Skeletal Mesh 편집기에서 Curves 탭을 엽니다
- 모프 타겟에 해당하는 커브가 보이는지 확인합니다
- Curves 탭이 비어 있지만 모프 타겟이 존재하는 경우, 정확히 동일한 이름으로 새 커브를 수동으로 추가합니다
참고: 이 문제는 Blender 익스포트에서 모프 타겟은 성공적으로 임포트되지만 애니메이션 커브가 자동으로 생성되지 않는 경우에 흔히 발생합니다. 일치하는 커브가 없으면 Control Rig로 베이킹한 후 애니메이션이 제대로 채워지지 않습니다.
대체 해결 방법: Blender에서 익스포트할 때 이 문제를 방지하려면 FBX 익스포트 설정에서 Custom Properties와 Animation을 활성화해 보세요. 이렇게 하면 모프 타겟과 함께 애니메이션 커브도 포함될 수 있습니다.
3. 레퍼런스 포즈 애니메이션 생성하기
Create Asset -> Create Animation -> Reference Pose
로 이동합니다- 애니메이션 시퀀스에 설명적인 이름을 입력하고 적절한 위치에 저장합니다
- 생성된 Animation Sequence가 자동으로 열리며, 빈 애니메이션이 루프로 재생되는 것을 볼 수 있습니다
- 편집을 쉽게 하기 위해 애니메이션 재생을 멈추려면
Pause
버튼을 클릭합니다
4. 애니메이션 시퀀스 편집하기
Edit in Sequencer
->Edit with FK Control Rig
를 클릭합니다Bake to Control Rig
대화 상자에서 설정을 변경하지 않고Bake to Control Rig
버튼을 클릭합니다
- 편집기가
Animation Mode
로 전환되며Sequencer
탭이 열립니다 View Range End Time
을 0016으로 설정합니다 (이렇게 하면Working Range End
도 자동으로 0016으로 설정됩니다)- 슬라이더의 오른쪽 끝을 시퀀서 창의 오른쪽 끝까지 드래그합니다
5. 애니메이션 커브 준비하기
- Animation Sequence 에셋으로 돌아가서
Curves
목록에서 morph target을 찾습니다 (보이지 않으면 Animation Sequence 에셋을 닫았다가 다시 엽니다) - Lip sync에 사용하려는 viseme이나 입 움직임과 관련 없는 morph target은 모두 제거합니다
6. Viseme 매핑 계획 세우기
플러그인이 요구하는 세트에 맞춰 캐릭터의 viseme를 매핑할 계획을 세우세요. 예를 들어:
Sil -> Sil
PP -> FV
FF -> FV
TH -> TH
DD -> TD
KK -> KG
CH -> CH
SS -> SZ
NN -> NL
RR -> RR
AA -> AA
E -> E
IH -> IH
OH -> O
OU -> U
참고로, 캐릭터의 비짐 세트가 모든 필요한 비짐에 대해 정확히 일치하는 항목을 가지고 있지 않을 때는 매핑이 반복되어도 괜찮습니다.
7. 각 비짐 애니메이션 적용하기
- 각 비짐에 대해, 관련된 morph target 곡선을 0.0에서 1.0으로 애니메이션화합니다
- 각 비짐 애니메이션을 다른 프레임에서 시작하도록 합니다
- 자연스러운 비짐 형태를 만들기 위해 필요한 추가 곡선(턱/입 벌림, 혀 위치 등)을 구성합니다
8. 포즈 애셋 생성하기
애셋 생성(Create Asset)
->포즈 애셋(Pose Asset)
->현재 애니메이션(Current Animation)
으로 이동합니다- 포즈 애셋에 대해 설명적인 이름을 입력하고 적절한 위치에 저장합니다
- 생성된 포즈 애셋이 자동으로 열리며,
Pose_0
,Pose_1
등과 같이 각각 비제임(viseme)에 해당하는 포즈들을 보여줍니다 - 비제임 가중치를 미리보기하여 예상대로 작동하는지 확인합니다
9. 포즈 애셋 완성하기
- 필수 조건(Prerequisites) 섹션의 비제임 이름과 일치하도록 각 포즈의 이름을 변경합니다
- 사용되지 않는 포즈는 삭제합니다
오디오 처리 및 블렌딩 설정
포즈 애셋이 준비되면, 오디오 처리 및 블렌딩 노드를 설정해야 합니다:
- 캐릭터의 Animation Blueprint를 찾거나 생성하세요
- 표준 플러그인 설정 가이드에 문서화된 동일한 단계를 따라 오디오 처리 및 블렌딩을 설정하세요
Blend Runtime MetaHuman Lip Sync
노드에서 기본 MetaHuman 포즈 애셋 대신 사용자 정의 포즈 애셋을 선택하세요
바디 애니메이션과 결합
립 싱크를 다른 바디 애니메이션과 함께 수행하려면:
- 표준 플러그인 가이드에 문서화된 동일한 단계를 따르세요
- MetaHuman 본 이름을 사용하는 대신 캐릭터의 목 스켈레톤에 대한 올바른 본 이름을 제공해야 합니다
결과
이 설정을 사용하는 사용자 정의 캐릭터의 예시입니다:
립 싱크의 품질은 특정 캐릭터와 해당 비셈 설정이 얼마나 잘 구성되었는지에 크게 의존합니다. 위 예시들은 서로 다른 유형의 사용자 정의 캐릭터와 독특한 비셈 시스템으로 플러그인이 작동하는 것을 보여줍니다.