06 — From Houdini to Unreal Engine ➡️

Ronan Champigny
5 min readFeb 22, 2022

--

Je vous ai raconté dans l’article précédent mes toutes premières aventures houdinesques. Peu après cela, j’ai été embarqué par mon collègue Frederic (le surnommé Ed) vers de fraîches expérimentations qui allaient déjà plus loin pour mon niveau de débutant sur Houdini et sur Unreal. Ces recherches techniques que je vais relater, ne sont pas seulement de la pure curiosité personnelle mais aussi de la R&D pour l’agence où je me trouve. Et bien sûr elles s’ancrent tout à fait dans le cadre de mon journal.

Le tuto qui nous a inspiré cette R&D 🎦

De Houdini vers Unreal Engine 4 ? 🤪

Mon collègue Ed se forme également à Houdini ces derniers temps et a lui aussi modélisé un objet à l’aide du casque VR lorsque j’étais à l’école. Il a construit une sculpture constituée d’anneaux qui rappelle un peu ceux des jeux olympiques. Par la suite, il a suivi un tuto sur Houdini pour apprendre à créer une apparition particules : ces particules apparaissent en formant des serpentins qui tournoient autour des anneau.

L’idée d’Ed était d’explorer la passerelle entre Houdini et UE en testant d’importer cette drôle d’animation plutôt lourde et de voir comment elle réagit en temps réel. Car le tutoriel qu’il a regardé (et qui nous a servi de base) utilise un objet plus léger pour importer dans UE. Mais quelle sont les limites techniques à connaître entre les deux logiciels ?

Petit image-teaser 👀

Premier essai ☝️

Lorsque Ed finaissait de suivre de son tuto, j’ai ouvert la première version de son animation sur Houdini. J’essayais d’appliquer des animations de softbody aux éléments sur la structure 3D, mais c’était avant tout pour remettre en pratique ce que j’avais déjà appris.

Les serpentins en question avant d’être des particules ✨

Pour exporter les simulations d’Houdini dans d’autres logiciels, le format de fichier 3D le plus qualitatif et le plus répandu est l’alambic (.abc) : un seul fichier assez lourd qui contient tout, tel un pdf de la 3D.

J’ai préparé une scène dans UE, Ed m’a alors passé un premier export Alembic qui pesait plus 10 gigas (oui c’est lourd), pour les 3 apparitions de particules en même temps. Unreal mettait plusieurs minutes à importer le fichier et lorsque je le glissais dans la scène, rien ne s’affichait du tout dans ma scène. Premier échec.

Nous avons testé d’exporter chacune des animations dans trois alembics différents allant de 3 à 4 gigas, et de les simplifier. Toujours rien dans la scène Unreal Engine, ceci même en ayant respecté les paramètres d’import du tutoriel.

Un bête problème de taille ⚖️

Après quelques autres essais, le problème n’était finalement pas lié au poids du fichier mais en réalité à l’échelle que les animations avaient par défaut dans la scène. Les alembics d’Houdini se mettaient en échelle x100 ; difficile de les voir à cette taille.

Et surprise : les alembics se lisent plutôt bien en temps réel : au chargement il y a un léger lag mais les animations se lisent de façon fluide. On allait pouvoir continuer dans ce sens.

Créer un espace VR 🛖

Nous voulions pousser un peu plus loin le projet et construire un espace où l’on pouvait se balader avec le casque VR autour de cette étonnante statue. Les serpentins de particules seraient comme des hologrammes en réalité augmentée. Si nous avions un projet en VR/XR à l’agence, tout ce que nous allions entreprendre ici permettrait de savoir le montrer à un client avec le casque, par exemple.
Ed a alors construit une structure semi-ouverte avec un puit de lumière sur Cinema 4D. Il a ensuite utilisé le plugin Datasmith sur Unreal Engine, qui permet d’ouvrir nativement des fichiers Cinema 4D. Je ne connaissais pas et c’est très pratique car on récupère de plus la hiérarchie des objets directement dans sa scène UE.

La statue d’Ed ouvert avec Datasmith sur UE

Créer un cycle jour nuit automatique 🌃

Ed m’a donné la mission de créer un setup de jour/nuit qui défile pour animer l’ambiance de cette scène ouverte sur l’extérieur. J’ai alors regardé ce tuto qui m’a permis de savoir relier le temps qui passe à la hauteur du soleil ainsi que la couleur du preset de ciel (le BPSky). C’est clairement quelque chose que je n’aurais pas pu créer tout seul avec les blueprints, la logique n’étant pas si évidente: il faut notamment créer des fonctions et des variables. J’ai réussi à faire fonctionner le principe, même si la nuit est par défaut assez courte par rapport au jour.

La course automatique du soleil 🌞

Le premier tutoriel cité plus tôt dans l’article montrait aussi comment on pouvait récupérer la vertex map des particules avec l’alembic, afin de leur donner un même shader avec deux aspects différents dans UE : un côté luminescent et un côté coloré et brillant.

Le résultat dans le casque VR 🪖

Travailler à deux sur ce genre de projet “recherche” est assez stimulant, même si on a tendance à être assez désordonné comme nous ne connaissons pas encore bien les logiciels. Au fur et à mesure de la semaine, de nos essais, de nos discussions, nous avons dupliqué et crée plus d’une dizaine de versions du projet. A noter qu’il faudrait être assez rigoureux dans son organisation si on espère travailler sur le même dossier de projet.

Nous avons aussi rencontré des frustrations vis-à-vis de la gestion de lumière et l’illumination globale : la 3D temps réel a plus de mal à gérer une scène à moitié en extérieur en plus d’un cycle jour/nuit. Il y a des compromis à faire.
Ed a alors dupliqué la scène avec un preset VR dans UE, qui est plus optimisé graphiquement pour l’utilisation du casque (peu de réflexions pour rester performant et un aspect plus PS2).
Voilà un enregistrement dans le casque VR, finalement sans le cycle jour/nuit :

La vue live dans le casque 🪄

Voilà ce qu’on avons déjà pu tester en l’espace de 2–3 jours. Je commençais à mieux dessiner les limites techniques du moteur d’Unreal Engine 4. Mais qu’en est-il de la version 5 en bêta ?

À très bientôt par ici 🌻

Chumpy_corp

--

--