1 puntos por GN⁺ 2025-09-28 | Aún no hay comentarios. | Compartir por WhatsApp
  • Explicación de un mod creado en 2021 para mejorar el lipsync y el parpadeo en Deus Ex 1
  • El desarrollador descubrió que la implementación original del lipsync no funcionaba correctamente desde el lanzamiento del juego
  • Analizó que en Deus Ex también se aplica una extracción de fonemas y un mapeo de movimientos de boca similar al de Half-Life 2 de Valve
  • Logró implementar animaciones naturales corrigiendo una verificación errónea de la tasa de cuadros y problemas de sincronización del blending dentro del código Unrealscript
  • Para una implementación perfecta, todavía hace falta resolver el problema de la frecuencia de actualización de fonemas

Introducción y contexto

  • Este mod es un proyecto para mejorar el lipsync de los diálogos y la animación de parpadeo de los personajes en Deus Ex 1
  • En el juego original, el funcionamiento del lipsync y el parpadeo estaba mal implementado desde el lanzamiento
  • El autor presenta un resumen del trabajo que había mostrado en su Twitter
  • La descarga del mod está disponible en un enlace aparte (ModDB)

Investigación de la implementación existente del lipsync

  • Durante la partida, identificó problemas en la transición de formas de la boca y fenómenos extraños en la animación del lipsync
  • Referencia a una entrevista con Chris Norden (desarrollador de Deus Ex): el sistema inicial de lipsync era sofisticado, pero fue simplificado por razones de rendimiento
  • Revisó hasta qué punto estaba implementado dentro de Unrealscript y si era posible modificarlo
  • No hay acceso al código fuente; solo a los scripts

Cómo funciona el lipsync

  • El autor ya tenía experiencia previa analizando el sistema de lipsync de Half-Life 2
  • Valve usa un método que extrae los fonemas de los archivos de voz, añade la información lingüística al final del archivo .wav, y durante la ejecución cambia la forma de la boca (viseme) según ese timing
  • Este método tiene la ventaja de reducir la carga en tiempo de ejecución gracias a la extracción previa de fonemas

Problemas estructurales de Deus Ex

  • En Deus Ex, la información de fonemas no parece almacenarse en ninguna parte, por lo que es posible que se extraiga en tiempo real durante la ejecución
  • El análisis de Unrealscript mostró que se basa en vertex animation, no en skeletal animation, y que solo ofrece 7 formas de boca y 1 animación de parpadeo
  • En el sistema de audio externo, nextphoneme se define como A, E, F, M, O, T, U o X (estado de boca cerrada), y el script del personaje cambia la forma de la boca según eso

Bugs y mejoras realizadas

  • En el código original, la lógica de detección de framerate funcionaba al revés, por lo que la forma de la boca cambiaba de inmediato incluso con tasas altas de cuadros
  • La duración del blending (tweentime) estaba configurada demasiado corta (0.1 segundos), lo que hacía perder naturalidad en la transición
  • Ignoró la condición de verificación de framerate y ajustó tweentime a una duración suficientemente larga (0.35 segundos)
  • Como resultado, el lipsync se enlaza de manera mucho más fluida

Cierre de la boca y manejo del parpadeo

  • También insertó lógica adicional para aplicar blending natural al cerrar la boca después de terminar una línea de diálogo
  • La lógica de animación antes solo comprobaba bIsSpeaking, pero ahora se mejoró para que la animación de lipsync funcione siempre
  • También ajustó la velocidad del parpadeo para que el usuario pueda percibirlo de forma constante

Limitaciones estructurales y puntos pendientes

  • La frecuencia de actualización de nextphoneme es irregular y existe una limitación estructural porque no se actualiza en cada tick
  • Como resultado, incluso aplicando bien todo el blending, no es posible lograr una experiencia de lipsync perfecta
  • Si se actualizara a una frecuencia constante, podría optimizarse la velocidad del blending en función de eso, pero con la estructura actual no es posible
  • También hay ineficiencias en el código, como la duplicación de la misma lógica en las clases de NPC y del personaje jugador

Código de ejemplo final de la corrección

  • Al final del artículo se proporciona el código completo de la función de lipsync mejorada
  • Mejoras principales: ignorar la detección de framerate, aumento considerable de tweentime, cierre suave de la boca tras terminar el diálogo y ajuste de la frecuencia y velocidad del parpadeo

Conclusión

  • Con este mod se puede experimentar una animación de lipsync y parpadeo mucho más natural y mejorada en comparación con el original
  • Aunque las limitaciones estructurales dificultan un lipsync completamente perfecto, esta es la mejor solución accesible por ahora

Aún no hay comentarios.

Aún no hay comentarios.