Introducción al sistema de simulación de telas mediante aprendizaje automático
El sistema Machine-Learning (ML) Cloth Simulation (simulación de telas mediante aprendizaje automático) permite simular el comportamiento de los materiales textiles en tiempo real con mucho realismo y un rendimiento óptimo en Unreal Engine.
Permite alcanzar un nivel de realismo mayor que el modelo tradicional basado en físicas mediante un conjunto de datos entrenados que se pueden usar en tiempo real para producir resultados que antes solo serían posibles mediante simulación sin conexión.
Ventajas del aprendizaje automático
En el desarrollo de videojuegos tradicional, para simular la ropa de un personaje se usaba un solucionador de física. Sin embargo, esto puede ser muy exigente computacionalmente, debido a las costosas actualizaciones necesarias para lograr plasmar la elasticidad y a las complicadas interacciones entre la ropa y el cuerpo.
Por otro lado, un sistema de aprendizaje automático puede ayudar a los usuarios a entrenar un modelo usando datos de simulación de alta calidad generados previamente. Este sistema es capaz de producir mallas textiles con una calidad parecida a la de los datos previamente simulados. Todo eso sin perder velocidad ni eficacia en términos de uso de memoria.
Implementación técnica
El sistema *ML Cloth Simulation* toma como entrada la pose esquelética del personaje, fotograma a fotograma, y predice una pose final de la ropa deformando una malla de tela base mediante un _skinning_ de mezcla lineal. Esta deformación tiene dos componentes principales.
El primero de ellos es una deformación de baja frecuencia, similar al modelo de transformación neural.
Este componente se modela con una red perceptrones multicapa (MLP) que predice un conjunto de coeficientes usando la pose de la malla esquelética como dato de entrada. Los deltas de baja frecuencia se calculan del modo siguiente:
low_frequency_deltas = mean_delta + coeffs * basisLa base puede aprenderse durante el entrenamiento o precalcularse mediante el análisis de componentes principales (PCA).
Para entrenar este componente, lo mejor es preparar un conjunto de datos de poses aleatorias y simular la ropa para que se ajuste a cada pose. En el caso de este componente en cuestión, recomendamos 5000 poses para un personaje humanoide.
El segundo componente es una deformación de alta frecuencia calculada mediante una búsqueda de vecinos más próximos.
Este componente toma los coeficientes del primero y realiza una búsqueda de vecinos más próximos en el conjunto de datos correspondiente, a saber:
high_frequency_deltas = NearestNeighborSearch(coeffs)En este caso, lo mejor es preparar un conjunto de poses pequeño pero variado y simular la ropa para que se ajuste a cada una de las poses. Lo ideal es extraer las poses de fotogramas clave de animaciones propias del juego. Asimismo, recomendamos entre 50 y 100 poses para un personaje humanoide para obtener resultados óptimos.
Mediante esta técnica, el delta del vértice se calcula de la siguiente forma:
vertex_delta = low_frequency_deltas + high_frequency_deltasPara el conjunto de datos entrenado, puedes generar la posición final de la ropa para cada pose mediante la herramienta Generador de telas de Chaos en el Editor de ML Deformer de Unreal Engine. De esta forma, se simulará la tela y se generará un caché de geometría que se puede usar en tiempo real.
No obstante, también es posible emplear solucionadores de simulación de telas externos (como Houdini Vellum). Simula la ropa para cada pose hasta que se ajuste correctamente y guarda la tela adecuada en el caché de geometría. Después, puedes importar el caché a Unreal Engine en formato de archivo de Alembic.
Echa un vistazo al tutorial sobre generación de telas mediante aprendizaje automático para obtener más información sobre cómo crear la caché de geometría en Unreal Engine.
Para sacarle el máximo partido, lo mejor es elegir manualmente las poses más relevantes para el conjunto de datos. No obstante, también se pueden seleccionar las poses automáticamente con el Generador de poses KMeans. Este toma una secuencia de animación y ejecuta el algoritmo k-means para generar una lista de entradas para el conjunto de datos del vecino más próximo.
Limitaciones actuales
Este sistema tiene una limitación principal: se asume que la ropa es casi estática. En otras palabras, el sistema es capaz de predecir detalles como arrugas pero no movimiento dinámico como ondulaciones o drapeados.
A día de hoy, es ideal para simular prendas ajustadas como pantalones o camisetas, pero no ropa holgada como vestidos o capas.
Puedes aprender a usar el sistema de simulación de telas mediante aprendizaje automático con el tutorial ML Deformer - Nearest Neighbor Model de la comunidad de desarrolladores de Epic.