Jak używać wtyczki z własnymi postaciami
Ten przewodnik przeprowadzi Cię przez proces konfiguracji Runtime MetaHuman Lip Sync dla postaci innych niż MetaHuman. Ten proces wymaga znajomości koncepcji animacji i rigowania. Jeśli potrzebujesz pomocy we wdrożeniu tego dla swojej konkretnej postaci, możesz skontaktować się w celu uzyskania profesjonalnego wsparcia pod adresem [email protected].
Ważna uwaga dotycząca modeli synchronizacji ust
Własne postacie są obsługiwane tylko z modelem Standardowym (Szybszym).
Model Realistyczny (Wyższa Jakość) jest zaprojektowany wyłącznie dla postaci MetaHuman i nie może być używany z własnymi postaciami. W całym tym przewodniku należy postępować zgodnie z instrukcjami dla modelu Standardowego z głównego przewodnika konfiguracji, gdy są przywoływane.
Wymagana wtyczka rozszerzająca: Aby używać modelu Standardowego z własnymi postaciami, musisz zainstalować wtyczkę rozszerzającą Standard Lip Sync Extension, jak opisano w sekcji Wymagania wstępne głównego przewodnika konfiguracji.
To rozszerzenie jest wymagane dla wszystkich implementacji własnych postaci opisanych w tym przewodniku.
Wymagania wstępne
Zanim zaczniesz, upewnij się, że twoja postać spełnia te wymagania:
- Posiada prawidłowy szkielet
- Zawiera morf targety (blend shapes) dla wyrażeń twarzy
- Idealnie posiada 10+ morf targetów definiujących wizemy (więcej wizemów = lepsza jakość synchronizacji ust)
Wtyczka wymaga mapowania morf targetów twojej postaci na następujące standardowe wizemy:
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)
Uwaga: Jeśli twoja postać ma inny zestaw wizemów (co jest prawdopodobne), nie potrzebujesz dokładnych dopasowań dla każdego wizemu. Aproksymacje są często wystarczające — na przykład, mapowanie wizemu SH
twojej postaci na wizem CH
wtyczki zadziała skutecznie, ponieważ są to blisko spokrewnione dźwięki zadziąsłowe.
Referencja mapowania wizemów
Oto mapowania pomiędzy powszechnymi systemami wizemów a wymaganymi przez wtyczkę wizemami:
- Apple ARKit
- Systemy oparte na FACS
- System Prestona Blaira
- System Fonemów 3ds Max
- Niestandardowe Postacie (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe)
ARKit zapewnia kompleksowy zestaw blendshapes do animacji twarzy, w tym kilka kształtów ust. Oto jak mapować je na wizemy RuntimeMetaHumanLipSync:
Wizem RuntimeMetaHumanLipSync | Odpowiednik ARKit | Uwagi |
---|---|---|
Sil | mouthClose | Pozycja neutralna/spoczynkowa |
PP | mouthPressLeft + mouthPressRight | Dla dźwięków dwuwargowych, użyj obu kształtów press razem |
FF | lowerLipBiteLeft + lowerLipBiteRight (lub mouthRollLower) | Dolna warga styka się z górnymi zębami, jak w dźwiękach "f" i "w" |
TH | tongueOut | ARKit ma bezpośrednią kontrolę języka |
DD | jawOpen (lekko) + tongueUp (jeśli masz rig języka) | Język dotyka wału dziąsłowego; lekkie opuszczenie żuchwy |
KK | mouthLeft lub mouthRight (lekko) | Delikatne pociągnięcie kącik ów ust przybliża dźwięki welarne |
CH | jawOpen (lekko) + mouthFunnel (lekko) | Połącz dla dźwięków zadziąsłowych |
SS | mouthFrown | Użyj lekkiego zmarszczenia dla sybilantów |
NN | jawOpen (bardzo lekko) + mouthClose | Prawie zamknięte usta z lekkim otwarciem żuchwy |
RR | mouthPucker (lekko) | Delikatne zaokrąglenie dla dźwięków r |
AA | jawOpen + mouthStretchLeft + mouthStretchRight (lub jawOpen + mouthOpen) | Szeroko otwarte usta dla dźwięku "a" |
E | jawOpen (lekko) + mouthSmile | Pozycja średnio otwarta z lekkim uśmiechem |
IH | mouthSmile (lekko) | Lekkie rozciągnięcie warg |
OH | mouthFunnel | Zaokrąglony, otwarty kształt |
OU | mouthPucker | Ciasno zaokrąglone wargi |
FACS (Facial Action Coding System) używa Jednostek Akcji (AUs) do opisywania ruchów twarzy. Wiele profesjonalnych systemów animacji używa podejść opartych na FACS:
Wizem RuntimeMetaHumanLipSync | Jednostki Akcji FACS | Uwagi |
---|---|---|
Sil | Neutralny | Brak aktywnych AUs |
PP | AU23 + AU24 | Ściskacz warg + napinacz warg |
FF | AU22 + AU28 | Lejkowanie warg + ssanie warg |
TH | AU25 (lekko) + AU27 | Rozchylenie warg + rozciągnięcie ust |
DD | AU25 + AU16 | Rozchylenie warg + obniżacz dolnej wargi |
KK | AU26 + AU14 | Opuszczenie żuchwy + dołeczkowanie |
CH | AU18 + AU25 | Zaokrąglenie warg + rozchylenie warg |
SS | AU20 | Rozciągacz warg |
NN | AU25 (bardzo lekko) | Lekkie rozchylenie warg |
RR | AU18 (lekko) | Delikatne zaokrąglenie warg |
AA | AU27 + AU26 | Rozciągnięcie ust + opuszczenie żuchwy |
E | AU25 + AU12 | Rozchylenie warg + pociągacz kącików warg |
IH | AU12 + AU25 (lekko) | Pociągacz kącików warg + lekkie rozchylenie warg |
OH | AU27 (lekko) + AU18 | Lekkie rozciągnięcie ust + zaokrąglenie warg |
OU | AU18 + AU26 (lekko) | Zaokrąglenie warg + lekkie opuszczenie żuchwy |
System Prestona Blaira to klasyczny standard animacji, który używa opisowych nazw dla kształtów ust:
RuntimeMetaHumanLipSync Viseme | Preston Blair | Uwagi |
---|---|---|
Sil | Rest | Neutralna zamknięta pozycja ust |
PP | MBP | Klasyczny kształt ust "MBP" |
FF | FV | Pozycja "FV" z zębami na dolnej wardze |
TH | TH | Język dotyka przednich zębów |
DD | D/T/N | Podobna pozycja dla tych spółgłosek |
KK | CKG | Pozycja twardej spółgłoski |
CH | CH/J/SH | Lekki grymas dla tych dźwięków |
SS | S/Z | Lekko otwarta pozycja zębów |
NN | N/NG/L | Podobna do D/T, ale inna pozycja języka |
RR | R | Zaokrąglone usta dla dźwięku R |
AA | AI | Szeroko otwarte usta |
E | EH | Średnio otwarte usta |
IH | EE | Rozciągnięte wargi |
OH | OH | Zaokrąglone średnie otwarcie |
OU | OO | Ciasno zaokrąglone wargi |
3ds Max używa systemu opartego na fonemach dla swojego character studio:
RuntimeMetaHumanLipSync Viseme | Fonem 3ds Max | Uwagi |
---|---|---|
Sil | rest | Domyślna pozycja ust |
PP | p_b_m | Bezpośredni odpowiednik |
FF | f_v | Bezpośredni odpowiednik |
TH | th | Bezpośredni odpowiednik |
DD | t_d | Bezpośredni odpowiednik |
KK | k_g | Bezpośredni odpowiednik |
CH | sh_zh_ch | Połączony kształt |
SS | s_z | Bezpośredni odpowiednik |
NN | n_l | Połączone dla tych dźwięków |
RR | r | Bezpośredni odpowiednik |
AA | ah | Otwarty dźwięk samogłoski |
E | eh | Średnia samogłoska |
IH | ee | Zamknięta przednia samogłoska |
OH | oh | Tylna zaokrąglona samogłoska |
OU | oo | Zamknięta tylna samogłoska |
Niestandardowe postacie z wizemami lub kształtami mieszanymi ust/morph targetami (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMe, itp.) zazwyczaj można mapować na system wizemów wtyczki z rozsądnymi przybliżeniami.
Tworzenie niestandardowego zasobu poz (Pose Asset)
Wykonaj następujące kroki, aby utworzyć niestandardowy zasób poz dla swojej postaci, który będzie używany z węzłem Blend Runtime MetaHuman Lip Sync
:
1. Zlokalizuj Skeletal Mesh swojej postaci
Znajdź skeletal mesh, który zawiera morph targety (blend shapes), które chcesz użyć do animacji synchronizacji ust. Może to być pełna siatka ciała lub tylko siatka twarzy, w zależności od projektu twojej postaci.
2. Zweryfikuj Morph Targety i Krzywe
Przed kontynuacją sprawdź, czy twój skeletal mesh ma odpowiednie morph targety i odpowiadające im krzywe do animacji synchronizacji ust.
Sprawdź Morph Targety:
Zweryfikuj, czy twój skeletal mesh zawiera morph targety (blend shapes), które mogą być użyte jako wizemy do animacji synchronizacji ust. Większość postaci z obsługą animacji twarzy powinna mieć jakieś morph targety fonemów/wizemów.
Ważne: Zweryfikuj zakładkę Curves Ten krok jest szczególnie kluczowy dla postaci eksportowanych z Blendera lub innego zewnętrznego oprogramowania:
- Otwórz zakładkę Curves w edytorze Skeletal Mesh
- Sprawdź, czy widzisz krzywe odpowiadające twoim morph targets
- Jeśli zakładka Curves jest pusta, ale morph targets istnieją, ręcznie dodaj nowe krzywe używając dokładnie tych samych nazw co twoje morph targets
Uwaga: Ten problem często występuje przy eksportach z Blendera, gdzie morph targets importują się pomyślnie, ale krzywe animacji nie są tworzone automatycznie. Bez pasujących krzywych animacja nie wypełni się poprawnie po bake do Control Rig.
Alternatywne rozwiązanie: Aby zapobiec temu problemowi podczas eksportu z Blendera, spróbuj włączyć Custom Properties i Animation w ustawieniach eksportu FBX, co może pomóc w dołączeniu krzywych animacji razem z morph targets.
3. Utwórz animację pozy referencyjnej
- Przejdź do
Create Asset -> Create Animation -> Reference Pose
- Wpisz opisową nazwę dla sekwencji animacji i zapisz ją w odpowiedniej lokalizacji
- Utworzona Animation Sequence otworzy się automatycznie, pokazując pustą animację odtwarzaną w pętli
- Kliknij przycisk
Pause
, aby zatrzymać odtwarzanie animacji dla łatwiejszej edycji
4. Edytuj sekwencję animacji
- Kliknij
Edit in Sequencer
->Edit with FK Control Rig
- W oknie dialogowym
Bake to Control Rig
kliknij przyciskBake to Control Rig
bez zmiany jakichkolwiek ustawień
- Edytor przełączy się w tryb
Animation Mode
z otwartą zakładkąSequencer
- Ustaw
View Range End Time
na 0016 (co automatycznie ustawi równieżWorking Range End
na 0016) - Przeciągnij prawą krawędź suwaka na prawy koniec okna sekwencera
5. Przygotuj krzywe animacji
- Wróć do zasobu Animation Sequence i zlokalizuj morph targets na liście
Curves
(jeśli nie są widoczne, zamknij i ponownie otwórz zasób Animation Sequence) - Usuń wszystkie morph targets, które nie są związane z wizemami lub ruchami ust, których chcesz użyć do synchronizacji ust (Lip Sync)
6. Zaplanuj mapowanie wizemów
Utwórz plan mapowania, aby dopasować wizemy twojej postaci do wymaganego zestawu wtyczki. Na przykład:
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
Zauważ, że dopuszczalne jest posiadanie powtarzających się mapowań, gdy zestaw wizemów twojej postaci nie ma dokładnych dopasowań dla każdego wymaganego wizemu.
7. Animuj każdy wizem
- Dla każdego wizemu animuj odpowiednie krzywe celów morfowania od 0.0 do 1.0
- Rozpocznij każdą animację wizemu na innej klatce
- Skonfiguruj dodatkowe krzywe w razie potrzeby (otwieranie szczęki/ust, pozycja języka, itp.), aby stworzyć naturalnie wyglądające kształty wizemów
8. Utwórz Zasób Pozy
- Przejdź do
Utwórz Zasób
->Zasób Pozy
->Bieżąca Animacja
- Wpisz opisową nazwę dla Zasobu Pozy i zapisz go w odpowiedniej lokalizacji
- Utworzony Zasób Pozy otworzy się automatycznie, pokazując pozy takie jak
Pose_0
,Pose_1
, itd., każda odpowiadająca wizemowi - Przejrzyj wagi wizemów, aby upewnić się, że działają zgodnie z oczekiwaniami
9. Sfinalizuj Zasób Pozy
- Zmień nazwę każdej pozy, aby pasowała do nazw wizemów z sekcji Wymagania wstępne
- Usuń wszystkie nieużywane pozy
Konfiguracja obsługi i mieszania dźwięku
Gdy twoja zasada pozów (Pose Asset) jest gotowa, musisz skonfigurować węzły obsługi dźwięku i mieszania:
- Zlokalizuj lub utwórz Animation Blueprint swojej postaci
- Skonfiguruj obsługę dźwięku i mieszanie, postępując zgodnie z tymi samymi krokami, które są udokumentowane w standardowym przewodniku konfiguracji wtyczki
- W węźle
Blend Runtime MetaHuman Lip Sync
wybierz swoją własną Pose Asset zamiast domyślnej Pose Asset MetaHuman
Łączenie z animacjami ciała
Jeśli chcesz wykonywać synchronizację ust (Lip Sync) równolegle z innymi animacjami ciała:
- Postępuj zgodnie z tymi samymi krokami, które są udokumentowane w standardowym przewodniku wtyczki
- Upewnij się, że podajesz poprawne nazwy kości dla szkieletu szyi twojej postaci, zamiast używać nazw kości MetaHuman
Wyniki
Oto przykłady niestandardowych postaci korzystających z tej konfiguracji:
Jakość synchronizacji ust w dużej mierze zależy od konkretnej postaci i tego, jak dobrze skonfigurowane są jej wizemy. Powyższe przykłady demonstrują działanie wtyczki z różnymi typami niestandardowych postaci, posiadających odrębne systemy wizemów.