Przejdź do głównej zawartości

Konfiguracja Wtyczki

Konfiguracja Modelu

Standardowa Konfiguracja Modelu

Węzeł Create Runtime Viseme Generator używa domyślnych ustawień, które sprawdzają się w większości scenariuszy. Konfiguracja odbywa się poprzez właściwości węzła mieszania w Animation Blueprint.

Aby poznać opcje konfiguracji Animation Blueprint, zobacz sekcję Konfiguracja Synchronizacji Warg poniżej.

Konfiguracja Realistycznego Modelu

Węzeł Create Realistic MetaHuman Lip Sync Generator akceptuje opcjonalny parametr Configuration, który pozwala dostosować zachowanie generatora:

Typ Modelu

Ustawienie Model Type określa, której wersji realistycznego modelu użyć:

Typ ModeluWydajnośćJakość WizualnaObsługa SzumuZalecane Zastosowania
Wysoko Zoptymalizowany (Domyślny)Najwyższa wydajność, najniższe użycie CPUDobra jakośćMoże wykazywać zauważalne ruchy ust przy szumie tła lub dźwiękach innych niż głosCzyste środowiska audio, scenariusze krytyczne pod względem wydajności
Częściowo ZoptymalizowanyDobra wydajność, umiarkowane użycie CPUWysoka jakośćLepsza stabilność z zaszumionym audioZrównoważona wydajność i jakość, mieszane warunki audio
OryginalnyNadaje się do użycia w czasie rzeczywistym na nowoczesnych CPUNajwyższa jakośćNajbardziej stabilny z szumem tła i dźwiękami innymi niż głosProdukcje wysokiej jakości, zaszumione środowiska audio, gdy potrzebna jest maksymalna dokładność

Ustawienia Wydajności

Intra Op Threads: Kontroluje liczbę wątków używanych do wewnętrznych operacji przetwarzania modelu.

  • 0 (Domyślne/Automatyczne): Używa automatycznego wykrywania (zazwyczaj 1/4 dostępnych rdzeni CPU, maksymalnie 4)
  • 1-16: Ręczne określenie liczby wątków. Wyższe wartości mogą poprawić wydajność na systemach wielordzeniowych, ale zużywają więcej CPU

Inter Op Threads: Kontroluje liczbę wątków używanych do równoległego wykonywania różnych operacji modelu.

  • 0 (Domyślne/Automatyczne): Używa automatycznego wykrywania (zazwyczaj 1/8 dostępnych rdzeni CPU, maksymalnie 2)
  • 1-8: Ręczne określenie liczby wątków. Zwykle utrzymywane niskie dla przetwarzania w czasie rzeczywistym

Rozmiar Porcji Przetwarzania

Processing Chunk Size określa, ile próbek jest przetwarzanych w każdym kroku wnioskowania. Wartość domyślna to 160 próbek (10ms audio przy 16kHz):

  • Mniejsze wartości zapewniają częstsze aktualizacje, ale zwiększają użycie CPU
  • Większe wartości zmniejszają obciążenie CPU, ale mogą zmniejszyć responsywność synchronizacji warg
  • Zaleca się używanie wielokrotności 160 dla optymalnego wyrównania

Ustawianie Rozmiaru Porcji Przetwarzania

Konfiguracja Modelu z Nastrojem

Węzeł Create Realistic MetaHuman Lip Sync With Mood Generator zapewnia dodatkowe opcje konfiguracji poza podstawowym modelem realistycznym:

Podstawowa Konfiguracja

Lookahead Ms: Czas wyprzedzenia w milisekundach dla poprawionej dokładności synchronizacji warg.

  • Domyślne: 80ms
  • Zakres: 20ms do 200ms (musi być podzielne przez 20)
  • Wyższe wartości zapewniają lepszą synchronizację, ale zwiększają opóźnienie

Output Type: Kontroluje, które kontrolki twarzy są generowane.

  • Full Face: Wszystkie 81 kontrolek twarzy (brwi, oczy, nos, usta, szczęka, język)
  • Mouth Only: Tylko kontrolki związane z ustami, szczęką i językiem

Performance Settings: Używa tych samych ustawień Intra Op Threads i Inter Op Threads co zwykły model realistyczny.

Ustawienia Nastroju

Dostępne Nastroje:

  • Neutralny, Szczęśliwy, Smutny, Odraza, Gniew, Zaskoczenie, Strach
  • Pewny siebie, Podekscytowany, Znudzony, Zabawowy, Zdezorientowany

Intensywność Nastroju: Kontroluje, jak mocno nastrój wpływa na animację (0.0 do 1.0)

Kontrola Nastroju w Czasie Rzeczywistym

Możesz dostosować ustawienia nastroju podczas działania za pomocą następujących funkcji:

  • Set Mood: Zmień aktualny typ nastroju
  • Set Mood Intensity: Dostosuj, jak mocno nastrój wpływa na animację (0.0 do 1.0)
  • Set Lookahead Ms: Zmodyfikuj czas wyprzedzenia dla synchronizacji
  • Set Output Type: Przełącz między kontrolkami Full Face i Mouth Only

Konfiguracja Nastroju

Przewodnik Wyboru Nastroju

Wybieraj odpowiednie nastroje na podstawie treści:

NastrójNajlepsze DoTypowy Zakres Intensywności
NeutralnyOgólna rozmowa, narracja, stan domyślny0.5 - 1.0
SzczęśliwyTreści pozytywne, wesoły dialog, świętowanie0.6 - 1.0
SmutnyTreści melancholijne, sceny emocjonalne, ponure momenty0.5 - 0.9
OdrazaReakcje negatywne, treści niesmaczne, odrzucenie0.4 - 0.8
GniewAgresywny dialog, sceny konfrontacyjne, frustracja0.6 - 1.0
ZaskoczenieNieoczekiwane wydarzenia, objawienia, reakcje szoku0.7 - 1.0
StrachSytuacje zagrażające, niepokój, nerwowy dialog0.5 - 0.9
Pewny siebiePrezentacje zawodowe, dialog przywódczy, asertywna mowa0.7 - 1.0
PodekscytowanyTreści energetyczne, ogłoszenia, entuzjastyczny dialog0.8 - 1.0
ZnudzonyTreści monotonne, dialog niezainteresowany, zmęczona mowa0.3 - 0.7
ZabawowySwobodna rozmowa, humor, lekkie interakcje0.6 - 0.9
ZdezorientowanyDialog z wieloma pytaniami, niepewność, zakłopotanie0.4 - 0.8

Konfiguracja Animation Blueprint

Konfiguracja Synchronizacji Warg

Węzeł Blend Runtime MetaHuman Lip Sync ma opcje konfiguracji w panelu właściwości:

WłaściwośćDomyślneOpis
Interpolation Speed25Kontroluje, jak szybko ruchy warg przechodzą między wizemami. Wyższe wartości skutkują szybszymi, bardziej nagłymi przejściami.
Reset Time0.2Czas w sekundach, po którym synchronizacja warg jest resetowana. Jest to przydatne, aby zapobiec kontynuacji synchronizacji warg po zatrzymaniu audio.

Animacja Śmiechu

Możesz również dodać animacje śmiechu, które będą dynamicznie reagować na śmiech wykryty w audio:

  1. Dodaj węzeł Blend Runtime MetaHuman Laughter
  2. Podłącz swoją zmienną RuntimeVisemeGenerator do pinu Viseme Generator
  3. Jeśli już używasz synchronizacji warg:
    • Podłącz wyjście z węzła Blend Runtime MetaHuman Lip Sync do Source Pose węzła Blend Runtime MetaHuman Laughter
    • Podłącz wyjście węzła Blend Runtime MetaHuman Laughter do pinu Result w Output Pose
  4. Jeśli używasz tylko śmiechu bez synchronizacji warg:
    • Podłącz swoją pozę źródłową bezpośrednio do Source Pose węzła Blend Runtime MetaHuman Laughter
    • Podłącz wyjście do pinu Result

Blend Runtime MetaHuman Laughter

Gdy śmiech zostanie wykryty w audio, twoja postać będzie dynamicznie animowana odpowiednio:

Konfiguracja śmiechu

Węzeł Blend Runtime MetaHuman Laughter ma własne opcje konfiguracji:

WłaściwośćDomyślnaOpis
Prędkość interpolacji25Kontroluje, jak szybko ruchy ust przechodzą między animacjami śmiechu. Wyższe wartości skutkują szybszymi, bardziej nagłymi przejściami.
Czas resetu0.2Czas w sekundach, po którym śmiech jest resetowany. Jest to przydatne, aby zapobiec kontynuowaniu śmiechu po zatrzymaniu dźwięku.
Maksymalna waga śmiechu0.7Skaluje maksymalne natężenie animacji śmiechu (0.0 - 1.0).

Uwaga: Wykrywanie śmiechu jest obecnie dostępne tylko w Modelu Standardowym.

Łączenie z istniejącymi animacjami

Aby zastosować synchronizację ust i śmiech wraz z istniejącymi animacjami ciała i niestandardowymi animacjami twarzy bez ich nadpisywania:

  1. Dodaj węzeł Layered blend per bone między animacjami ciała a ostatecznym wyjściem. Upewnij się, że Use Attached Parent jest ustawione na true.
  2. Skonfiguruj ustawienia warstw:
    • Dodaj 1 element do tablicy Layer Setup
    • Dodaj 3 elementy do Branch Filters dla warstwy, z następującymi nazwami kości (Bone Name):
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. Ważne dla niestandardowych animacji twarzy: W Curve Blend Option wybierz "Use Max Value". Pozwala to na prawidłowe nakładanie niestandardowych animacji twarzy (wyrazy, emocje itp.) na synchronizację ust.
  4. Wykonaj połączenia:
    • Istniejące animacje (takie jak BodyPose) → wejście Base Pose
    • Wyjście animacji twarzy (z węzłów synchronizacji ust i/lub śmiechu) → wejście Blend Poses 0
    • Węzeł warstwowego mieszania → ostateczna poza (Result pose)

Layered Blend Per Bone

Wybór zestawu celów morfowania

Model Standardowy używa zasobów poz, które z natury obsługują dowolną konwencję nazewnictwa celów morfowania poprzez konfigurację niestandardowego zasobu pozy. Nie jest potrzebna dodatkowa konfiguracja.

Precyzyjne dostrajanie zachowania synchronizacji ust

Kontrola wysuwania języka

W standardowym modelu synchronizacji ust możesz zauważyć nadmierny ruch języka do przodu podczas niektórych fonemów. Aby kontrolować wysuwanie języka:

  1. Po węźle mieszania synchronizacji ust dodaj węzeł Modify Curve
  2. Kliknij prawym przyciskiem myszy na węźle Modify Curve i wybierz Add Curve Pin
  3. Dodaj pin krzywej o nazwie CTRL_expressions_tongueOut
  4. Ustaw właściwość Apply Mode węzła na Scale
  5. Dostosuj parametr Value, aby kontrolować wysunięcie języka (np. 0.8, aby zmniejszyć wysunięcie o 20%)

Kontrola otwierania szczęki

Realistyczna synchronizacja ust może powodować nadmiernie responsywne ruchy szczęki w zależności od treści audio i wymagań wizualnych. Aby dostosować intensywność otwierania szczęki:

  1. Po węźle mieszania synchronizacji ust dodaj węzeł Modify Curve
  2. Kliknij prawym przyciskiem myszy na węźle Modify Curve i wybierz Add Curve Pin
  3. Dodaj pin krzywej o nazwie CTRL_expressions_jawOpen
  4. Ustaw właściwość Apply Mode węzła na Scale
  5. Dostosuj parametr Value, aby kontrolować zakres otwierania szczęki (np. 0.9, aby zmniejszyć ruch szczęki o 10%)

Precyzyjne dostrajanie specyficzne dla nastroju

Dla modeli z obsługą nastroju możesz precyzyjnie dostroić specyficzne wyrazy emocjonalne:

Kontrola brwi:

  • CTRL_expressions_browRaiseInL / CTRL_expressions_browRaiseInR - Podnoszenie wewnętrznej części brwi
  • CTRL_expressions_browRaiseOuterL / CTRL_expressions_browRaiseOuterR - Podnoszenie zewnętrznej części brwi
  • CTRL_expressions_browDownL / CTRL_expressions_browDownR - Opuszczanie brwi

Kontrola wyrazu oczu:

  • CTRL_expressions_eyeSquintInnerL / CTRL_expressions_eyeSquintInnerR - Mrużenie oczu
  • CTRL_expressions_eyeCheekRaiseL / CTRL_expressions_eyeCheekRaiseR - Podnoszenie policzków

Porównanie modeli i wybór

Wybór między modelami

Decydując, którego modelu synchronizacji ust użyć w swoim projekcie, rozważ te czynniki:

RozważanieModel StandardowyModel RealisticModel Realistic z obsługą nastroju
Kompatybilność z postaciamiMetaHumany i wszystkie typy niestandardowych postaciPostacie MetaHuman (i ARKit)Postacie MetaHuman (i ARKit)
Jakość wizualnaDobra synchronizacja ust z wydajną wydajnościąZwiększony realizm z bardziej naturalnymi ruchami ustZwiększony realizm z wyrażeniami emocjonalnymi
WydajnośćZoptymalizowany dla wszystkich platform, w tym mobilnych/VRWyższe wymagania zasoboweWyższe wymagania zasobowe
Funkcje14 wizemów, wykrywanie śmiechu81 kontrolek twarzy, 3 poziomy optymalizacji81 kontrolek twarzy, 12 nastrojów, konfigurowalne wyjście
Obsługa platformWindows, Android, QuestWindows, Mac, iOS, Linux, Android, QuestWindows, Mac, iOS, Linux, Android, Quest
Przypadki użyciaAplikacje ogólne, gry, VR/AR, mobilneDoświadczenia filmowe, interakcje z bliskaOpowiadanie emocjonalne, zaawansowana interakcja z postaciami

Kompatybilność z wersjami silnika

Problem z kompatybilnością UE 5.2

Jeśli używasz Unreal Engine 5.2, modele Realistic mogą nie działać poprawnie z powodu błędu w bibliotece próbkowania UE. Dla użytkowników UE 5.2, którzy potrzebują niezawodnej funkcjonalności synchronizacji ust, proszę używać Modelu Standardowego zamiast tego.

Ten problem jest specyficzny dla UE 5.2 i nie dotyczy innych wersji silnika.

Zalecenia dotyczące wydajności

  • Dla większości projektów Model Standardowy zapewnia doskonałą równowagę jakości i wydajności
  • Użyj Modelu Realistic, gdy potrzebujesz najwyższej wierności wizualnej dla postaci MetaHuman
  • Użyj Modelu Realistic z obsługą nastroju, gdy kontrola wyrażeń emocjonalnych jest ważna dla Twojej aplikacji
  • Rozważ możliwości wydajnościowe platformy docelowej przy wyborze między modelami
  • Przetestuj różne poziomy optymalizacji, aby znaleźć najlepszą równowagę dla swojego konkretnego przypadku użycia

Rozwiązywanie problemów

Typowe problemy

Odtwarzanie generatora dla modeli Realistic: Dla niezawodnej i spójnej pracy z modelami Realistic zaleca się odtwarzanie generatora za każdym razem, gdy chcesz przekazać nowe dane audio po okresie bezczynności. Wynika to z zachowania środowiska wykonawczego ONNX, które może powodować zatrzymanie działania synchronizacji ust przy ponownym używaniu generatorów po okresach ciszy.

Na przykład, możesz odtworzyć generator synchronizacji ust przy każdym rozpoczęciu odtwarzania, takim jak za każdym razem, gdy wywołujesz Play Sound 2D lub używasz jakiejkolwiek innej metody do rozpoczęcia odtwarzania fali dźwiękowej i synchronizacji ust:

Recreate Lip Sync Generator On Play Sound

Lokalizacja wtyczki dla integracji Runtime Text To Speech: Podczas używania Runtime MetaHuman Lip Sync razem z Runtime Text To Speech (obie wtyczki używają środowiska wykonawczego ONNX), możesz doświadczyć problemów w spakowanych kompilacjach, jeśli wtyczki są zainstalowane w folderze Marketplace silnika. Aby to naprawić:

  1. Znajdź obie wtyczki w folderze instalacyjnym UE pod \Engine\Plugins\Marketplace (np. C:\Program Files\Epic Games\UE_5.6\Engine\Plugins\Marketplace)
  2. Przenieś oba foldery RuntimeMetaHumanLipSync i RuntimeTextToSpeech do folderu Plugins Twojego projektu
  3. Jeśli Twój projekt nie ma folderu Plugins, utwórz go w tym samym katalogu, co plik .uproject
  4. Uruchom ponownie Unreal Editor

Rozwiązuje to problemy z kompatybilnością, które mogą wystąpić, gdy wiele wtyczek opartych na środowisku wykonawczym ONNX jest ładowanych z katalogu Marketplace silnika.

Konfiguracja pakowania (Windows): Jeśli synchronizacja ust nie działa poprawnie w spakowanym projekcie na Windows, upewnij się, że używasz konfiguracji kompilacji Shipping zamiast Development. Konfiguracja Development może powodować problemy ze środowiskiem wykonawczym ONNX modeli realistycznych w spakowanych kompilacjach.

Aby to naprawić:

  1. W ustawieniach projektu → Packaging, ustaw Build Configuration na Shipping
  2. Spakuj ponownie swój projekt

Shipping Configuration

Projekty tylko z Blueprintami

W niektórych projektach tylko z Blueprintami, Unreal Engine może nadal kompilować w konfiguracji Development, nawet gdy wybrano Shipping. Jeśli tak się stanie, przekonwertuj swój projekt na projekt C++, dodając co najmniej jedną klasę C++ (może być pusta). Aby to zrobić, przejdź do Tools → New C++ Class w menu edytora UE i utwórz pustą klasę. Spowoduje to wymuszenie poprawnej kompilacji projektu w konfiguracji Shipping. Twój projekt może pozostać tylko z Blueprintami funkcjonalnie, klasa C++ jest potrzebna tylko do poprawnej konfiguracji kompilacji.

Obniżona responsywność synchronizacji ust: Jeśli doświadczasz, że synchronizacja ust staje się mniej responsywna w czasie przy użyciu Streaming Sound Wave lub Capturable Sound Wave, może to być spowodowane akumulacją pamięci. Domyślnie pamięć jest realokowana za każdym razem, gdy nowe audio jest dołączane. Aby zapobiec temu problemowi, wywołaj funkcję ReleaseMemory okresowo, aby zwolnić zgromadzoną pamięć, na przykład co 30 sekund lub podobnie.

Optymalizacja wydajności:

  • Dostosuj rozmiar fragmentu przetwarzania dla modeli Realistic w oparciu o wymagania wydajnościowe
  • Używaj odpowiedniej liczby wątków dla docelowego sprzętu
  • Rozważ użycie typu wyjścia Mouth Only dla modeli z obsługą nastroju, gdy pełna animacja twarzy nie jest potrzebna