Dans ce guide, vous apprendrez à configurer une simulation Chaos Flesh à l'aide d'une ressource étoile de mer fournie.
Configuration du fichier
Référence de fichiers d'exemple
Les informations suivantes précisent où télécharger les fichiers d'exemple et où les placer dans votre projet.
Créer un projet vierge à partir du lanceur
Pour utiliser les fichiers fournis, vous devez créer un projet UE vierge à partir du lanceur.
Version de l'éditeur
Assurez-vous d'utiliser la version 5.5.0-37670630+++UE5+Release-5.5 ou une version ultérieure.
Téléchargement de fichier
Télécharger Fleshtutorials-ExampleContent.7z.
Le fichier contient également un dossier .fbx utilisé pour la section Projections de rayons liées au squelette de ce guide.
Dossier "Example Content (Exemple de contenu)"
Extrayez le fichier ZIP Fleshtutorials-ExampleContent.7z. Ensuite, déplacez manuellement le dossier ExampleContent extrait dans votre répertoire Content (Contenu).
Si vous avez déjà un dossier ExampleContent après avoir éventuellement suivi des exemples de vêtement antérieurs, il vous suffit de faire glisser le dossier 5_5_ChaosFlesh du fichier ZIP vers ce dossier ExampleContent.
Charger les plug-ins
Vous devrez d'abord activer le plug-in Chaos Flesh.
Ensuite, chargez les plug-ins ML Deformer Framework et ML Deformer Neural Morph Model.
Démarrer l'étoile de mer
Configuration rapide
Le système Flesh implémente une simulation élastique volumétrique utilisant une structure de support tétraédrique. Les tétraèdres sont évalués par le solveur et fournissent des forces d'appui qui tentent de préserver le volume et d'empêcher la surface du personnage de s'effondrer sous son propre poids. Dans cet exemple, nous vous expliquons comment créer une géométrie tétraédrique à partir d'un maillage statique fermé (un simple cube), puis simuler la ressource dans l'Unreal Engine.
Importer l'étoile de mer
La simulation Flesh nécessite un maillage tétraédrique créé à partir de géométries de surface. Dans cet exemple, nous vous expliquons comment importer des géométries à partir d'un fichier FBX et créer un maillage tétraédrique de l'étoile de mer à l'aide du nœud de flux de données.
Contraintes
Importer des ressources Flesh et des cinématiques simples
Les contraintes cinématiques permettent aux artistes de contrôler les vertex via l'animation. Les cinématiques sont définies sur les vertex du tétraèdre. Lorsqu'un vertex est défini comme cinématique, les propriétés de masse de ce vertex sont définies sur une masse infinie, et le vertex n'est pas simulé. Il est possible d'utiliser les vertex cinématiques en tant que conditions de limite pour la dynamique, les vertex libres qui leur sont connectés étant entraînés par le mouvement de la cinématique. Dans cet exemple, nous vous expliquons comment peindre et contraindre cinématiquement des particules afin qu'elles restent fixes dans l'espace, par rapport à la position des composants.
Transfert des attributs de vertex
Le maillage tétraédrique est susceptible de changer, et la progression de la peinture sur le maillage tétraédrique n'est plus valide après tout changement de topologie. Dans cet exemple, nous vous expliquons comment peindre sur le maillage squelettique et transférer les attributs de vertex (attribut peint et couleur) sur le maillage tétraédrique.
Contrainte du squelette cinématique
Il est aussi possible d'utiliser les transformations du squelette pour définir les cinématiques. Un cas d'utilisation courant consiste à relier un composant Flesh à un squelette. Lorsque le composant Flesh est colocalisé dans l'espace local du squelette, les vertex des tétraèdres qui croisent le squelette (segments de ligne parent-enfant) sont cinématiquement contraints. Dans cet exemple, nous vous montrons comment définir automatiquement des vertex cinématiques sur la ressource d'étoile de mer en fonction de son squelette colocalisé.
Contrainte cinématique animée
Lorsque les vertex cinématiques sont contraints à un squelette animé, la géométrie tétraédrique est asservie au mouvement du squelette. Dans cet exemple, nous vous décrivons la configuration impliquée dans le pilotage d'un maillage Flesh à partir d'une hiérarchie de transformation animée.
Contraintes faibles
Les positions cibles, ou contraintes faibles, sont une autre façon de limiter la géométrie à une position cible. Contrairement aux contraintes cinématiques, les contraintes faibles ont une rigidité qui permet un léger glissement par rapport à la cible réelle. En introduisant des contraintes faibles dans un environnement excessivement limité, la simulation peut trouver un état raisonnable qui peut rester harmonieux et visiblement acceptable. Dans cet exemple, nous vous expliquons comment lier la ressource Flesh aux cibles d'articulation cinématique en utilisant des contraintes faibles.
Collisions
Collision du monde
Le solveur tétraédrique est exécuté indépendamment du solveur du monde principal. À l'instar du solveur Chaos Cloth, toute collision contre la géométrie tétraédrique doit être ajoutée pendant la simulation. Cette démonstration indique comment ajouter des corps de collision au début de la simulation à l'aide d'un gestionnaire de collision relié au solveur Flesh.
Chargement dynamique des collisions
Les collisions contre la géométrie du monde sont actuellement implémentées via un système de chargement dynamique. Le solveur tétraédrique peut répondre à un ensemble limité de types de collisions qui doivent être chargés et libérés en fonction de la proximité de la simulation tétraédrique. Les collisions contre le solveur tétraédrique sont implémentées en tant que collisions basées sur les vertex contre le volume du corps rigide, de sorte que lorsque la résolution du tétraèdre augmente, le coût de calcul de la réponse de collision augmente également.
Actuellement, le solveur prend en charge les types convexes et certains types analytiques (sphère, cube, plan), et la collision est unidirectionnelle, c'est-à-dire du corps rigide au tétraèdre. En d'autres termes, le tétraèdre n'a pas d'incidence sur l'état du corps rigide, et le corps rigide est effectivement une interaction cinématique de masse infinie. En règle générale, la position et la vitesse du corps rigide sont calculées sur le solveur de corps rigide principal, et la chair réagit uniquement au mouvement des corps rigides.
Ressource Blueprint et déformateur de maillage
Les ressources Flesh peuvent déformer les maillages squelettiques intégrés. Utilisez le nœud GenerateSurfaceBindings dans le graphique de flux de données de la ressource Flesh pour créer des données de correspondance entre les surfaces de rendu d'un maillage squelettique et un maillage tétraédrique. Utilisez ensuite "DG_FleshDeformer" sur le maillage squelettique pour appliquer la déformation du maillage tétraédrique au maillage squelettique.
Si le déformateur ne semble pas fonctionner, consultez le journal pour en savoir plus. Un problème peut se produire si l'acteur possède plusieurs composants Flesh, et le déformateur doit connaître le maillage squelettique à déformer et la ressource Flesh utilisée à cet effet. Pour lever cette ambiguïté, définissez les paramètres TransformSelection ou GeometryGroupGuids facultatifs dans le nœud GenerateSurfaceBindings. Vérifiez par ailleurs que la ressource Flesh (collection de repos) est reliée au bon maillage squelettique à l'aide de GenerateSurfaceBindings. Bien entendu, si la topologie de la surface de rendu ou le maillage tétraédrique change, il convient de regénérer la liaison. Les points de rendu qui n'ont pas de liaison seront surfacés. Si le déformateur ignore certains points, soit ils ne possèdent pas de liaisons, soit ils ont été masqués (ce qui se produit uniquement en l'absence de liaisons, même s'il existera des nœuds de flux de données pour le masquage à l'avenir).
Attribut par particule
De nombreuses propriétés de simulation utilisées par le solveur tétraédrique sont basées sur les particules. Par exemple, la masse peut varier à travers le maillage et sera enregistrée sur le vertex du tétraèdre simulé. Cela peut permettre au maillage tétraédrique avec une uniformité variable d'avoir une distribution uniforme de la masse sur tout le volume du maillage. La masse n'est qu'un exemple de propriété par particule et illustre la façon dont chaque propriété stockée sur la particule peut être définie dans la configuration de la ressource. Cette démonstration illustre l'utilisation des champs pour définir les propriétés par particule sur le tétraèdre.
Apparition et destruction dans le blueprint
Les ressources Flesh peuvent également être générées lors des opérations de blueprint. Le blueprint d'acteur fonctionne de la même manière que l'acteur de maillage squelettique, dans la mesure où vous créez un composant Flesh et l'associez à une ressource Flesh. Il est ensuite possible d'utiliser les nœuds de blueprint d'acteur Spawn et Destroy pour ajouter dynamiquement des blueprints d'acteur à la simulation ou en supprimer.
Résultat de la simulation d'échantillonnage
Alors que l'affichage de rendu du composant Flesh montre le résultat de l'ensemble de la simulation tétraédrique, il peut parfois être utile d'échantillonner un sous-ensemble des déformations de la simulation. Par exemple, le rendu du décalage de position dans le monde (WPO) du maillage Nanite dans la démonstration Electric Dreams a été implémenté en échantillonnant des positions à proximité de la surface du pneu et en les mappant dans une texture ayant déplacé la géométrie du pneu sur le processeur graphique. Cette démonstration illustre comment interpoler un ensemble d'échantillons à partir des résultats de déformation auxquels il est possible d'accéder pendant le jeu.
Mise en cache
Mise en cache des flux de données et déformateur ML
Les simulations Flesh peuvent être coûteuses. Bien qu'il soit possible de créer une ressource basse résolution en vue de l'exécuter dans un jeu, pour obtenir un résultat sur une géométrie haute résolution, la simulation tétraédrique ne peut pas fonctionner en temps réel. Le système de mise en cache permet au graphiste d'enregistrer les résultats d'une simulation et de les reproduire dans le graphique de flux de données. À partir du cache, il est aussi possible de générer un cache de géométrie sous forme de données d'entraînement dans le déformateur ML. Dans cet exemple, nous vous expliquons comment mettre en cache les résultats de la simulation, générer un cache de géométrie et entraîner le déformateur ML.
Mise en cache dans l'éditeur
Il est par ailleurs possible d'effectuer une mise en cache dans l'éditeur et de visualiser les lectures dans une séquence de niveau. Dans cet exemple, nous vous expliquons comment mettre en cache une ressource (ou un blueprint) Flesh simulée et examiner de près les résultats de la simulation.
Propriétés de simulation
Les propriétés de simulation sont définies à plusieurs emplacements dans le système Chaos Flesh. Le solveur tétraédrique dispose de propriétés qui ont une incidence sur l'ensemble du système de simulation, par exemple en permettant à l'utilisateur de configurer les propriétés de progression et de threading, ainsi que des contrôles de collision. Alors que les propriétés sur l'acteur Flesh permettent des configurations spécifiques d'une instance précise d'une ressource, les propriétés basées sur le flux de données configurent la ressource proprement dite. Cette démonstration passe en revue certaines des propriétés les plus importantes de la simulation et vous donne un aperçu de l'emplacement de types de contrôles spécifiques.
Projections de rayons liées au squelette
Consultez le fichier .fbx dans Téléchargement de fichier pour suivre cette section du guide.
Les projections de rayons liées au squelette permettent à certains types d'objets d'interagir avec la géométrie statique de l'environnement. Bien que l'approche de projection de rayons ne soit pas une configuration de collision d'environnement générale, sous des configurations spécifiques, elle permet à un corps déformable de répondre à la géométrie de la scène. Par exemple, cette configuration a été utilisée dans la démonstration Electric Dreams, pour permettre aux pneus de réagir à la géométrie de la scène.
Vous devez respecter certaines exigences pour pouvoir utiliser cette approche. Les vertex de projection de rayon doivent être convexes à proximité d'un emplacement de transformation dans le modèle, le composant tétraédrique doit être contenu dans un blueprint de maillage squelettique, et la ressource doit être cinématiquement contrainte à un squelette. En raison du mode d'implémentation de la réaction à la collision, la projection de rayons doit provenir d'un point intérieur du modèle, et la réaction à la collision translate le vertex vers l'origine intérieure, contre la direction de la projection de rayons.
Flux de travail avancé
Consultez le document Chaos Flesh for Muscle Simulation pour apprendre à configurer une simulation de muscle et de graisse avec Chaos Flesh.