Salut à toi et bienvenue dans ce nouveau tuto sur la simulation de fluide dans Houdini 3D. Dans cette vidéo, je vais te montrer les différentes étapes pour créer une simulation de fluide réaliste et professionnelle avec ce logiciel de 3D.
On va découper le setup en 3 parties :
- Dans la première partie, on va créer et configurer une source.
- Dans la deuxième partie, on va configurer le dynamique opérator (DOP) pour calculer les déplacements du fluide.
- Dans la dernière partie, on va récupérer le résultat du dynamique opérator (DOP) et le transformer en mesh utilisable en production.
Si avant ça, tu as besoin de mieux comprendre le DOP, c’est par ici ==> Houdini 3D : Découverte du DOP et Création d’un Pyro Solver (Part 3). Et sinon, prêt à apprendre ? C’est parti !
Créer et configurer une source dans Houdini 3D (0.44′)
Je rappel que le logiciel Houdini 3D est disponible gratuitement en format Apprentice ici !
OK ! Dans un premier temps, on va créer un NODE géométrie et rentrer directement à l’intérieur pour aller dans le contexte SOP d’Houdini 3D.
Comme je te l’ai dit tout à l’heure, c’est d’ici que l’on va créer notre première source d’émetteur de fluides. Pour cette vidéo, j’ai décidé que la source sera une sphère classique. Mais de ton côté, tu fais ce que tu veux, ça n’auras aucun impact sur le reste du SETUP.
Le setup du NODE (1.04′)
En dessous du NODE sphere, je place un Node transforme pour déplacer l’objet sur son axe Y.
En dessous du Node transforme, je vais placer un Node qui s’appelle Flip source. Ce simple mode va, à lui tout seul, nous configurer automatiquement la géométrie pour que la simulation de Flip fonctionne correctement.
Ce Flip source nous à créer deux choses :
- La première, c’est qu’il nous convertit la géométrie en un VDB
- La deuxième, c’est que sur la base de ce VDB, il a créé plein de particules.
Je crée un blast, c’est l’un des Node qui te permet de supprimer certaines choses. Quand je viens cliquer sur la petite flèche juste ici et je demande de supprimer tout ce qui a le nom surface, je vais me retrouver uniquement avec les points.
À l’inverse, si je duplique ce Node et que je viens supprimer tout ce qui n’est pas sélectionné, je me retrouve ici uniquement avec le VDB. Cette étape supplémentaire n’est pas nécessairement pour le setup. Je te montre juste ce que le Node à automatiquement créer de manière distincte.
La recombinaison en un seul NODE (2.03′)
Donc pour continuer dans cette logique, je vais récupérer ces deux Nodes et venir les merge ensemble. Au moins, je recombine la data en un seul Node. Une fois que c’est fait, je crée un null, je le renomme « OUT EMMIT » pour rester organisé.
Configurer le DOP pour calculer les déplacements du fluide (2.20′)
On y va maintenant pour la deuxième partie, à savoir le mode dynamique. Pour ça, je crée un DOP et je rentre à l’intérieur. Une fois dedans, tu constates que tout est vidé comme d’habitude. On va donc tout construire de A à Z.
Création du Flip object et du Flip solver dans Houdini 3D (2.33′)
Comme je le répète tout le temps, dans le dynamique operator il faut au minimum deux choses : un objet et un SOLVER. Dans notre cas, on veut faire des fluides.
Donc le terme associé dans Houdini 3D, c’est le terme Flip. On va donc crée un Flip object et un Flip solver. Ensuite, on les connecte ensemble :
- la sortie de l’objet dans la première entrée du solver
- le solver dans le OUTPUT
On sélectionne ensuite notre solver et au-dessus du viewport, on appuie sur la touche entrée et on ajuste la bouding box. Fait bien attention à cette bounding box car la simulation calcule uniquement ce qui se trouve à l’intérieur.
On rajoute ensuite une gravité. On la connecte juste en dessous de notre solver et notre simulation est fonctionnelle !
Ajout du ground plane dans Houdini 3D (3.23′)
Pour compléter ce setup, on va rajouter un ground plane. Au moins, notre liquide va entrer en collision avec quelque chose.
On connecte ce ground plane à un merge et on n’oublie surtout pas de connecter également le Flip Solver.
On récupère la sortie du merge et on le reconnecte à la gravité. En théorie, tu devrais commencer à visualiser ton liquide qui s’écrase sur le sol.
Création d’un volume source dans Houdini 3D (3.40′)
Maintenant, passons à l’étape où on intègre notre propre géométrie. Pour le moment, ce qu’on a, c’est ce que le flip object nous a fournis par défaut. C’est pas du tout ce qu’on veut. Nous, on veut notre propre source d’émetteur. On va donc créer un nouveau Node qui s’apelle volume source.
La sortie de ce Node, on va la connecter directement dans la dernière entrée de notre Flip solver nommé « sourcing ». Ensuite, il faut :
- remonter d’un étage,
- venir selectionner l’objet NULL nommé « OUT_EMMIT »,
- faire un CTRL+C dessus,
- retourner à l’intérieur de notre DOP
- dans la cellule SOP PATCH du volume source, fournir le chemin d’accès de notre null en faisant un CTRL+V à l’intérieur.
Ensuite, dirige-toi sous l’onglet initialise et vient sélectionner le preset source Flip. Il va te configurer automatiquement tous les paramètres pour reconnaître la surface de l’objet ainsi que les particules qui se trouvent à l’intérieur.
Maintenant qu’on a réussi à importer notre géométrie directement dans le DOP, on va pouvoir retirer la forme par défaut crée par le Flip object. Pour ça, sélectionne-le et retire tout le chemin d’accès qui se trouve dans le SOP path.
À partir de maintenant, tu peux réactiver ta simulation et le seul objet qui sera pris en compte, ce sera ta source !
Affiner le look des particules dans Houdini 3D (4.56′)
Notre setup est fin prêt ! On va pouvoir se concentrer sur son look. On va commencer par lui donner plus de résolution. À l’intérieur du Flip object, on va donc :
- copier le paramètre particules séparation,
- remonter en SOP,
- coller en relative référence ce paramètre dans le voxel size et les particules séparation du Flip source.
Grâce à ça, les trois paramètres vont être liés. Et à chaque fois qu’on va changer l’un des trois, les deux autres vont se mettre à jour automatiquement.
Donc si je mets comme valeur 0,02 dans le voxel size, tu peux voir qu’ils se mettent tous à jour. Quand on retourne dans le DOP, tu constates également que notre sphère est beaucoup plus dense en particules.
Si maintenant, tu actives ta simulation, tu obtiens un résultat en très haute résolution. Attention car plus tu baisses cette valeur, plus la simulation va être gourmande à calculer. A toi de trouver la valeur adaptée à ton PC.
Transformer le résultat en mesh pour la production (5.47′)
Passons maintenant à la troisième étape qui consiste à récupérer le résultat de cette simulation pour le transformer en une mesh utilisable en production.
Le NODE DOP IO et le file cache (5.56′)
Pour ça, on va remonter dans le contexte en SOP et on va faire apelle au NODE nommé DOP IO. Ce Node nous permet d’importer des simulations en SOP de manière propre et organisée.
Dans l’onglet preset juste ici, je viens sélectionner l’onglet particules pour récupérer tous les points de ma simulation.
Le node juste en dessous est un file cache. C’est le NODE qui permet de sauvegarder mes rendus sur le disque dur. Je ne vais pas couvrir ça dans cette vidéo, mais sache que si tu prévoies de le faire de ton côté, il est préférable de compresser le nombre de particules avant de sauvegarder le résultat d’une simulation de fluide. En faisant comme ça, tu va gagner énormément de temps en production.
Le NODE Fluidcompress (6.52′)
Si tu regardes attentivement le NODE Fluidcompress, tu remarques qu’il y a encore un paramètre nommé « particules séparation ». Ce paramètre, tu commences à bien le connaître et si tu te souviens bien, on avait lié tous ces paramètres au milieu de la vidéo.
Pour conserver une cohérence dans ton setup, récupère l’un des paramètres dans le flip source et colle le résultat en relative référence dans les particules séparation de ton fluidcompress. Ensuite, il ne te reste plus qu’à cliquer sur « Save to disk ».
Mais attention, assure toi d’avoir bien sauvegardé ton projet car, comme tu peux le voir ici, quand tu vas enregistrer la simulation sur ton disque dur, elle va être sauvegardée à l’endroit où tu as sauvegardé ton HIPFILE. La variable $HIP veut dire là où est enregistré ton projet et le / geo désigne le dossier dans lequel sera sauvegardé le rendu. Je t’expliquerais ça plus en détail dans une autre vidéo.
Création d’une mesh à partir des particules (7.42′)
Pour le moment on continue notre setup. On va donc passer à la dernière étape, celle de créer une mesh a partir de ces particules.
Décompresser les particules (7.50)
La méthode la plus courante dans Houdini 3D, c’est de créer des sphères sur les particules et de les transformer en VDB pour les lier entre elles. L’avantage de ce procédé, c’est que le VDB va gérer pour nous les intersections entre les sphères et les fusionner entre elles pour nous donner un look de fluid.
Pour ça, il va falloir récupérer nos particules. N’oublie pas que juste avant, on les a compressées. Pour les décompresser, il faut utiliser le NODE Unpack.
Convertir ton volume en Polygone (8.16′)
À partir de là, il y a plusieurs méthode pour créer un vdb sur la base de particules. Dans notre cas, je vais utiliser la méthode la plus rapide. Ouais, je suis un gros flémard et j’assume 😉
Avec seulement le node VDBFROMPARTICLEFLUID, on peut transformer nos points en une surface.
La seule chose que tu as à faire pour avoir un look correct, c’est de copier les particules séparation de ton setup pour que les calculs restent conformes.
Ensuite, il ne te reste plus qu’à positionner un VDBRESHAPESDF pour « dilater ou erode » ton volume. Puis, de faire appel à un VDBSMOOTHSDF pour adoucir ton volume, toujours en fonction du look que tu veux. Enfin, un convert VDB pour convertir ton volume en Polygone et ainsi obtenir un mesh prête pour le rendu final !
Voilà, j’espère que ce tuto t’a aidé à comprendre les bases de la simulation de fluide dans Houdini 3D.
Une fois de plus, n’oublie pas de pratiquer et d’expérimenter avec les différents paramètres pour améliorer tes compétences. Si tu as des questions, n’hésite pas à les poser dans les commentaires ci-dessous. Merci de m’avoir regardé, à la prochaine ! 😉