Présentation du système de simulation textile par apprentissage automatique
Le système de simulation de vêtements par apprentissage automatique permet de simuler des vêtements en temps réel de façon très performante et réaliste dans l'Unreal Engine.
Grâce aux données d'apprentissage utilisables en temps réel, ce système offre plus de réalisme que le modèle physique traditionnel et permet de produire des résultats qui n'étaient auparavant possibles qu'en simulation hors ligne.
Avantages de l'utilisation de l'apprentissage automatique
Dans le développement de jeu traditionnel, on simule les vêtements d'un personnage par le biais d'un solveur de physique. Cependant, ce processus peut s'avérer coûteux sur le plan des calculs, en raison des mises à jour chronophages requises pour l'élasticité et des interactions complexes entre le vêtement et le corps.
Un système à apprentissage automatique permet à l'utilisateur d'entraîner un modèle grâce à des données de simulation de haute qualité générées à l'avance. Ce système est capable de produire des maillages de textile dont la qualité est égale à celle des données avant la simulation, tout en offrant une simulation rapide et performante sur le plan de la mémoire.
Implémentation technique
Pour chaque image, le système de simulation textile par apprentissage automatique utilise la pose squelettique du personnage en tant que valeur d'entrée et prédit une pose finale du vêtement en déformant un maillage textile de base avec surfaçage par fusion linéaire. La déformation est constituée de deux composants principaux.
Le premier composant est une déformation basse fréquence, semblable au modèle de morphose neuronale.
Ce composant est modélisé à l'aide d'un réseau perceptron multicouche (MLP), qui prédit un ensemble de coefficients à partir de la pose de maillage squelettique comme valeur d'entrée. Les deltas basse fréquence sont calculés comme suit :
low_frequency_deltas = mean_delta + coeffs * basisLa base peut être assimilée au moment de l'apprentissage ou précalculée à l'aide de l'analyse en composantes principales (ACP).
Pour entraîner ce composant, il faut préparer un jeu de données de poses aléatoires et simuler les vêtements à appliquer pour chaque pose. Pour la réalisation de ce composant, nous recommandons de préparer 5 000 poses pour un personnage humanoïde.
Le deuxième composant est une déformation haute fréquence calculée à l'aide de la recherche du plus proche voisin.
Ce composant utilise les coefficients du premier composant et applique une recherche du plus proche voisin dans un ensemble de données du plus proche voisin, à savoir :
high_frequency_deltas = NearestNeighborSearch(coeffs)Pour ce composant, il faut préparer un ensemble de poses restreint mais divers, et simuler les vêtements à appliquer pour chaque pose. Dans l'idéal, les poses proviennent des images clés des animations du jeu. Pour des résultats optimaux, il faut compter entre 50 et 100 poses pour un personnage humanoïde.
En utilisant cette technique, le delta des vertex est calculé comme suit :
vertex_delta = low_frequency_deltas + high_frequency_deltasPour l'ensemble de données formé, vous pouvez générer la position finale des vêtements pour chaque pose en utilisant l'outil de génération de tissu Chaos sous l'éditeur de déformateur ML dans l'Unreal Engine. Cela permet de simuler les tissus et de générer un cache de géométrie utilisable en temps réel.
Vous pouvez également utiliser des solveurs de simulation textile externes (tels que Houdini Vellum). Simulez les textiles pour chaque pose et enregistrez les positions finales des textiles dans le cache de géométrie. Vous pouvez importer le cache dans l'Unreal Engine sous forme de fichier Alembic.
Consultez le tutoriel ML Cloth Generation pour découvrir comment générer le cache de géométrie dans l'Unreal Engine.
Pour de meilleurs résultats, mieux vaut sélectionner manuellement les poses les plus appropriées pour le jeu de données. Cependant, il est aussi possible de réaliser une sélection automatique de pose avec l'outil de génération de pose K-moyennes. Ce générateur prend une séquence d'animation et exécute l'algorithme KMeans par-dessus pour générer une liste d'entrées pour le jeu de données du plus proche voisin.
Contraintes actuelles
L'implémentation actuelle du système présente une contrainte importante : les vêtements sont considérés comme étant pratiquement statiques. Cela signifie que le système peut prédire des détails de forme tels que les plis, mais qu'il ne peut pas prédire les mouvements dynamiques tels que les effets de balancement ou de drapé.
À l'heure actuelle, le système est plus adapté pour les vêtements relativement proches du corps, tels que les pantalons et les T-shirts, que pour les vêtements lâches comme les robes ou les capes.
Pour savoir comment utiliser le système de simulation textile par apprentissage automatique, consultez le tutoriel ML Deformer - Nearest Neighbor Model sur le site de la Communauté de développeurs Epic.