- Présentation d’un mod créé en 2021 qui améliore la synchro labiale et les clignements d’yeux de Deus Ex 1
- Le développeur a découvert que l’implémentation d’origine de la synchro labiale ne fonctionnait pas correctement depuis la sortie du jeu
- Il a analysé que Deus Ex utilisait lui aussi une méthode d’extraction des phonèmes et de correspondance des mouvements de bouche, similaire à Half-Life 2 de Valve
- En corrigeant un mauvais contrôle de fréquence d’images et un problème de timing de blending dans le code Unrealscript, il est parvenu à obtenir une animation naturelle
- Pour une implémentation parfaite, il reste toutefois à résoudre le problème de fréquence de mise à jour des phonèmes
Introduction et contexte
- Ce mod est un projet visant à améliorer la synchro labiale des dialogues des personnages et les animations de clignement des yeux dans Deus Ex 1
- Dans le jeu d’origine, la synchro labiale et les clignements d’yeux étaient anormaux dès la sortie
- L’auteur présente ici une synthèse du travail qu’il avait publié sur son compte Twitter
- Le téléchargement du mod est proposé via un lien séparé (ModDB)
Enquête sur l’implémentation existante
- En jouant, il a identifié des problèmes de transition des mouvements de bouche dans la synchro labiale, ainsi que d’étranges comportements d’animation
- Référence à une interview de Chris Norden (développeur de Deus Ex) : le système initial de synchro labiale était sophistiqué, mais a été simplifié pour des raisons de performances
- Il a examiné jusqu’où l’implémentation allait dans la partie Unrealscript, ainsi que les possibilités de correction
- Le code source n’est pas disponible, seuls les scripts sont accessibles
Fonctionnement de la synchro labiale
- L’auteur avait déjà acquis de l’expérience en analysant auparavant le système de synchro labiale de Half-Life 2
- Valve utilise une méthode consistant à extraire les phonèmes d’un fichier audio, à ajouter les informations linguistiques à la fin du fichier
.wav, puis à basculer les formes de bouche (visèmes) au moment approprié pendant l’exécution
- Cette approche a l’avantage de réduire la charge à l’exécution grâce à une extraction préalable des phonèmes
Problèmes structurels de Deus Ex
- Dans Deus Ex, les informations de phonèmes ne semblent être stockées nulle part, ce qui laisse penser à une extraction en temps réel lors de l’exécution
- L’analyse de l’Unrealscript montre un fonctionnement basé non pas sur des skeletal animations, mais sur des vertex animations, avec seulement 7 formes de bouche et 1 animation de clignement des yeux
- Depuis le système audio externe,
nextphoneme est défini sur A, E, F, M, O, T, U ou X (bouche fermée), puis le script du personnage change la forme de bouche en conséquence
Bugs et améliorations
- Dans le code d’origine, la logique de détection de la fréquence d’images fonctionnait à l’envers, si bien que les formes de bouche changeaient immédiatement même à fréquence élevée
- La durée du blending (
tweentime) était réglée beaucoup trop court (0,1 seconde), ce qui supprimait toute sensation de transition naturelle
- Il a ignoré la condition de vérification de la fréquence d’images et allongé suffisamment
tweentime (à 0,35 seconde)
- Le résultat est une synchro labiale bien plus fluide
Fermeture de la bouche et clignements d’yeux
- Une logique supplémentaire a été ajoutée pour appliquer un blending naturel lors de la fermeture de la bouche après la fin d’une réplique
- La logique d’animation ne vérifiait auparavant que
bIsSpeaking, mais a été améliorée pour que l’animation de synchro labiale fonctionne en permanence
- La vitesse des clignements d’yeux a également été ajustée afin qu’ils restent perceptibles pour l’utilisateur
Limites structurelles et frustrations
- La fréquence de mise à jour de
nextphoneme elle-même est irrégulière, avec une limite structurelle empêchant une mise à jour à chaque tick
- En conséquence, même en appliquant correctement tous les blendings, il est impossible d’obtenir une synchro labiale parfaite
- Si la mise à jour se faisait à une fréquence constante, il serait possible d’optimiser la vitesse de blending en conséquence, mais ce n’est pas faisable avec la structure actuelle
- Le code présente aussi des inefficacités, comme une implémentation dupliquée de la même logique dans les classes des PNJ et du personnage joueur
Exemple final de code modifié
- Le bas de l’article fournit le code complet de la fonction de synchro labiale améliorée
- Principales améliorations : suppression de la prise en compte du contrôle de fréquence d’images, forte augmentation de
tweentime, fermeture de bouche plus douce après les dialogues, ajustement de la fréquence et de la vitesse des clignements d’yeux
Conclusion
- Avec ce mod, on peut profiter d’une synchro labiale et d’animations de clignement des yeux nettement plus naturelles et améliorées par rapport à la version d’origine
- Malgré les limites structurelles qui empêchent une synchro labiale parfaite, il s’agit de la meilleure solution actuellement accessible
Aucun commentaire pour le moment.