1 Punkte von GN⁺ 2025-09-28 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Beschreibung eines Mods aus dem Jahr 2021, der Deus Ex 1-Lipsync und Blinzelanimationen verbessert
  • Der Entwickler stellte fest, dass die Lipsync-Implementierung des Originalspiels schon bei der Auslieferung nicht korrekt funktionierte
  • Es wurde analysiert, dass auch in Deus Ex ein Verfahren ähnlich wie in Valves Half-Life 2 zur Phonem-Extraktion und Mundform-Zuordnung verwendet wird
  • Durch Korrekturen an einer fehlerhaften Framerate-Prüfung und an Problemen beim Blending-Timing im Unrealscript-Code konnte eine natürlichere Animation umgesetzt werden
  • Für eine perfekte Umsetzung muss zusätzlich das Problem der Phonem-Aktualisierungsfrequenz gelöst werden

Einführung und Hintergrund

  • Dieser Mod ist ein Projekt zur Verbesserung des Lipsyncs von Charakterdialogen und der Blinzelanimationen in Deus Ex 1
  • Im Originalspiel waren Lipsync-Verhalten und Blinzeln seit dem Release fehlerhaft implementiert
  • Hier werden die zuvor auf Twitter veröffentlichten Arbeiten gesammelt und vorgestellt
  • Der Download des Mods wird über einen separaten Link (ModDB) angeboten

Untersuchung der bisherigen Lipsync-Implementierung

  • Während des Spielens wurden Probleme beim Wechsel der Mundformen sowie ungewöhnliche Animationseffekte erkannt
  • Verweis auf ein Interview mit Chris Norden (Deus-Ex-Entwickler): Das frühe Lipsync-System war ausgefeilt, wurde aber aus Performance-Gründen vereinfacht
  • Es wurde untersucht, wie weit die Implementierung im Unrealscript reicht und was sich daran korrigieren lässt
  • Der Quellcode liegt nicht vor, nur die Skripte sind zugänglich

Funktionsweise des Lipsyncs

  • Der Autor hatte bereits Erfahrung durch die frühere Analyse des Lipsync-Systems von Half-Life 2
  • Valve extrahiert Phoneme aus Sprachdateien, hängt die Sprachinformationen an das Ende der .wav-Datei an und schaltet zur Laufzeit entsprechend dem Timing die Mundformen (Viseme) um
  • Dieses Verfahren hat den Vorteil, durch vorab extrahierte Phoneme die Last zur Laufzeit zu reduzieren

Strukturelle Probleme von Deus Ex

  • In Deus Ex werden Phoneminformationen offenbar nirgends gespeichert, weshalb sie möglicherweise zur Laufzeit in Echtzeit extrahiert werden
  • Die Analyse von Unrealscript zeigt, dass statt Skelettanimationen Vertex-Animationen verwendet werden; verfügbar sind insgesamt 7 Mundformen und nur 1 Blinzelanimation
  • Aus dem externen Audiosystem wird nextphoneme auf A, E, F, M, O, T, U oder X (geschlossener Mund) gesetzt, und das Charakterskript wechselt daraufhin die Mundform

Bugs und Verbesserungsarbeiten

  • Im Originalcode arbeitete die Logik zur Framerate-Erkennung verkehrt herum, sodass die Mundformen selbst bei hoher Framerate sofort umgeschaltet wurden
  • Die Blend-Dauer (tweentime) war mit 0,1 Sekunden zu kurz eingestellt, wodurch natürliche Übergänge verloren gingen
  • Die Framerate-Prüfung wurde ignoriert und tweentime deutlich länger auf 0,35 Sekunden gesetzt
  • Dadurch wurde der Lipsync spürbar weicher verbunden

Schließen des Mundes und Blinzelverhalten

  • Es wurde zusätzliche Logik eingefügt, damit auch beim Schließen des Mundes nach dem Ende einer Zeile ein natürliches Blending angewendet wird
  • Die Animationslogik prüfte zuvor nur bIsSpeaking, wurde aber so verbessert, dass die Lipsync-Animation immer aktiv bleibt
  • Auch die Geschwindigkeit des Blinzelns wurde angepasst, damit sie für Nutzer kontinuierlich wahrnehmbar ist

Strukturelle Grenzen und Schwächen

  • Bei der Aktualisierungsfrequenz von nextphoneme gibt es eine strukturelle Grenze: Sie ist unregelmäßig und wird nicht bei jedem Tick aktualisiert
  • Dadurch ist selbst bei korrekt angewendetem Blending kein perfektes Lipsync-Erlebnis möglich
  • Würde die Aktualisierung mit konstanter Frequenz erfolgen, könnte die Blend-Geschwindigkeit passend optimiert werden; in der aktuellen Struktur ist das jedoch nicht möglich
  • Zusätzlich gibt es ineffizienten Code, etwa weil dieselbe Logik in NPC- und Spielercharakter-Klassen doppelt implementiert ist

Beispielcode der finalen Änderungen

  • Im unteren Teil des Artikels wird der vollständige Code der verbesserten Lipsync-Funktion bereitgestellt
  • Die wichtigsten Verbesserungen: Framerate-Prüfung ignorieren, tweentime stark erhöhen, sanftes Schließen des Mundes nach Dialogende sowie Anpassung von Frequenz und Geschwindigkeit des Blinzelns

Fazit

  • Mit diesem Mod lassen sich deutlich natürlichere und gegenüber dem Original klar verbesserte Lipsync- und Blinzelanimationen erleben
  • Aufgrund struktureller Einschränkungen ist perfekter Lipsync schwierig, aber dies ist derzeit die bestmögliche zugängliche Lösung

Noch keine Kommentare.

Noch keine Kommentare.