Einführung in das System der Machine-Learning-Stoffsimulation
Das Machine-Learning (ML) Cloth Simulation-System bietet eine detailgetreue, hoch performante Echtzeit-Simulation von Stoffen in der Unreal Engine.
Das System bietet eine höhere Wiedergabetreue als das herkömmliche physikbasierte Modell, indem es auf einen trainierten Datensatz zurückgreift, der in Echtzeit verwendet werden kann, um Ergebnisse zu erzeugen, die bisher nur mit Offline-Simulationen erreicht werden konnten.
Vorteile der Verwendung von Machine Learning
Bei der herkömmlichen Spieleentwicklung simuliert man die Kleidung der Charaktere mit einem Physik-Solver. Dieses Verfahren kann jedoch aufgrund der zeitaufwendigen Aktualisierungen für die Elastizität und der komplizierten Wechselwirkungen zwischen Stoff und Körper rechenintensiv sein.
Ein Machine-Learning-System kann Nutzer dabei unterstützen, anhand hochwertiger – im Voraus erstellter – Simulationsdaten ein Modell zu trainieren. Dieses System ist in der Lage, Stoff-Meshs zu erstellen, die eine ähnliche Qualität wie die vorher simulierten Daten aufweisen und dabei schnell und effizient sind, was die Speichernutzung angeht.
Technische Implementierung
Das ML-System der Stoff-Simulation nimmt für jeden Frame die Skelett-Pose des Charakters als Input und prognostiziert eine endgültige Stoff-Pose, indem es ein Basis-Stoff-Mesh mit "Linear Blend Skinning" verformt. Diese Verformung besteht aus zwei Hauptkomponenten.
Die erste Komponente ist eine niedrigfrequente Deformation, ähnlich dem neuronalen Morph-Modell.
Diese Komponente wird mit einem Multi-Layer-Perceptron-Netzwerk (MLP) modelliert, das eine Reihe von Koeffizienten anhand der Skelett-Mesh-Pose als Input vorhersagt. Die niederfrequenten Deltas werden folgendermaßen berechnet:
low_frequency_deltas = mean_delta + coeffs * basisDie Grundlage kann zur Trainingszeit erlernt oder mithilfe der Hauptkomponentenanalyse (PCA) vorberechnet werden.
Für das Training dieser Komponente sollten Sie einen Datensatz mit zufälligen Posen vorbereiten und den Stoff/die Kleidung für jede dieser Posen simulieren. Für diese Komponente empfehlen wir 5.000 Posen für einen humanoiden Charakter.
Die zweite Komponente ist eine hochfrequente Verformung, die mithilfe der Nearest-Neighbor-Suche berechnet wird.
Diese Komponente verwendet die Koeffizienten aus der ersten Komponente und wendet eine Pixelwiederholung-Suche in einem Pixelwiederholung-Datensatz an, nämlich:
high_frequency_deltas = NearestNeighborSearch(coeffs)Für diese Komponente sollten Sie einen kleinen aber vielfältigen Satz an Posen vorbereiten und den Stoff/die Kleidung für jede dieser Posen simulieren. Idealerweise sollten die Posen von einigen Keyframes der Spielanimationen übernommen werden. Für optimale Resultate werden zwischen 50 und 100 Posen für einen humanoiden Charakter empfohlen.
Auf Grundlage dieser Technik wird das Scheitelpunkt-Delta wie folgt berechnet:
vertex_delta = low_frequency_deltas + high_frequency_deltasFür den trainierten Datensatz können Sie die endgültige Position für jede Pose mithilfe des Werkzeugs Chaos-Chaos-Stoffgenerator unter dem ML-Deformer-Editor in der Unreal Engine erzeugen. So wird der Stoff simuliert und ein Geometrie-Cache erzeugt, der in Echtzeit verwendet werden kann.
Sie können stattdessen auch externe Solver für die Stoffsimulation verwenden (z. B. Houdini Vellum). Simulieren Sie den Stoff/die Kleidung für jede Pose und speichern Sie das Ergebnis dann im Geometrie-Cache. Sie können den Cache als Alembic-Datei in die Unreal Engine importieren.
Folgen Sie dem ML Cloth Generation tutorial, um zu erfahren, wie Sie den Geometrie-Cache in der Unreal Engine erzeugen können.
Für die besten Resultate sollten Sie die relevantesten Posen für den Datensatz händisch wählen. Es ist jedoch auch möglich, eine automatische Posen-Auswahl mithilfe des KMeans-Posengenerators vorzunehmen. Der Generator verwendet eine Animationssequenz und führt den KMeans-Algorithmus aus, um eine Liste von Einträgen für den Nearest-Neighbor-Datensatz zu erzeugen.
Aktuelle Einschränkungen
Derzeit weist die Systemimplementierung eine wesentliche Einschränkung auf – Stoff wird als quasi-statisch betrachtet. Das heißt, das System kann zwar Formdetails wie Falten vorhersagen, aber keine dynamischen Bewegungen wie Schwingen oder die Form des Stoffs, wenn er ein Element bedeckt.
Das System eignet sich daher derzeit am besten für enganliegende Kleidung wie Hosen und T-Shirts, nicht aber für weite Kleidungsstücke wie Kleider oder Umhänge.
Detailliertere Informationen zum ML-Cloth-System finden Sie im Tutorial ML Deformer – Nearest-Neighbor-Modell in der Epic Entwickler-Community.