Création d'un bâtiment procédural

image

Øyvind Fiksdal a partagé les détails du processus procédural de création d'une maison et d'un paysage à Houdini et a parlé des avantages de cette approche.


Présentation


Je m'appelle Eivind Fixdahl , je suis un artiste norvégien qui travaillait principalement avec l'art traditionnel. Plus près d'une trentaine d'années, j'ai décidé de me concentrer entièrement sur la 3D et suis entré dans une formation et une animation 3D de deux ans. Après un certain temps, j'ai obtenu un emploi dans l'une des plus grandes agences de publicité de Norvège.

Le travail dans l'industrie de la publicité a ouvert toutes les portes, mais le travail pour une entreprise ne m'a pas donné la possibilité de mise en œuvre, alors je suis devenu pigiste. Après deux ans de travail à la pige, un ancien collègue et moi avons décidé de nous unir et de créer une entreprise appelée Trollskog.

Approche procédurale du projet


J'ai toujours été intrigué par la nature procédurale de Houdini , mais au niveau artistique, pas seulement par l'utilisation standard du programme. Après avoir passé en revue un grand nombre de tutoriels et de présentations, j'ai commencé à maîtriser la puissance cachée à l'intérieur du programme.

Lorsque vous travaillez avec des ressources entièrement procédurales dans Houdini ou tout autre logiciel, il y a très peu d'opportunités pour introduire des touches artistiques - vous ne pouvez que changer la graine et espérer obtenir quelque chose d'intéressant. Lorsque vous travaillez sous la direction d'un directeur artistique, il est tout à fait possible de donner des éléments de fond à la randomisation, mais créer des éléments de héros ou un village créé manuellement peut être une tâche insupportable pour la plupart d'entre nous.




Même lorsque vous travaillez avec la modélisation et la sculpture traditionnelles, la création d'un village entier sera une tâche à grande échelle, en particulier la modification d'un actif une fois terminé.

Mon concept était basé sur l'idée de créer manuellement des actifs low-poly simples, ainsi que de créer le même ensemble d'outils procéduraux qui lisent la géométrie et créent un modèle prêt à l'emploi avec tous les détails, textures et améliorations. Avec l'approche traditionnelle, un tel travail prendrait plusieurs jours.

Il convient également de noter que j'ai réalisé ce projet il y a environ un an pour élargir mes connaissances à Houdini, travailler avec VEX et comprendre s'il est possible d'utiliser Houdini dans le pipeline de production.





Construction de maisons: Convoyeur procédural


La procédure qui génère une maison finie à partir d'une base en poly faible est assemblée à partir d'une série de modules. Quand on parle de modules Houdini, ils signifient souvent une chaîne de nœuds qui effectuent une tâche spécifique. Par exemple, le premier module lit la géométrie low-poly et reconnaît les toits, les murs, les portes et les fenêtres. Plusieurs modules qui effectuent des opérations secondaires en dérivent. Par exemple, le toit est ensuite envoyé au module suivant, trouvant l'arête du toit et vérifiant s'il peut détecter la flèche. Ensuite, les données sont envoyées à un nouveau module qui crée des tuiles, puis à un autre pour créer de la mousse, puis pour créer de l'herbe, etc.


Dans le modèle fini, il n'y a pratiquement aucun actif pré-créé. Au lieu de cela, il les génère à partir de la surface sous eux. C'est le concept du projet. Comme dans l'exemple de la vidéo, les murs sont créés sur la base d'une simple géométrie low poly.

Le processus commence par l'importation d'un maillage séparé, comme indiqué dans la première vidéo. De là, comme je l'ai dit ci-dessus, le modèle reconnaît procéduralement le toit, les murs, les fenêtres et les portes. Ils sont ensuite transférés à la phase principale de création. Le modèle d'entrée est également utilisé pour générer du lierre, qui non seulement pousse à la surface, mais mesure également le volume du modèle pour éviter trop ou trop peu de végétation.


Chacun de ces éléments lit le chemin du fichier d'entrée et il est transmis en tant qu'attribut, de sorte que le modèle fini est écrit en tant que fichier Houdini natif. Autrement dit, après avoir choisi un modèle pour créer un modèle fini, un clic de souris me suffit.



Approche procédurale combinée à un travail manuel


Si vous utilisez un pipeline entièrement procédural sans données d'entrée créées manuellement, vous pouvez obtenir des résultats organiques et aléatoires, mais le processus sera très complexe et imprévisible. Mais en combinant les deux approches, nous simplifierons le travail et aurons plus de contrôle sur le résultat final.

Bien sûr, certains aspects doivent être laissés au hasard, par exemple, la création de valeurs aléatoires pour l'échelle, la rotation ou les positions des objets, ainsi que l'utilisation de modèles de bruit pour simuler des surfaces en pierre et plus, mais pour un cheval de labour aussi fiable que Houdini, ce sont des opérations simples.



Fabrication de matériaux


Comme vous pouvez le voir dans la vidéo sur la création de murs, une grande partie de ces matériaux ne sont pas des textures, mais de la géométrie. Les matériaux restants sont créés à l'aide des données de couleur des maillages, ainsi que des mesures de courbure et d'autres astuces effectuées à l'aide d'attributs. La plupart des textures réellement utilisées sont des textures très simples créées via COP (le compositeur intégré de Houdini).

Avant l'importation, une analyse UV d'un modèle low poly a été effectuée et ces données ont été utilisées dans le processus de modélisation, par exemple lors de la création d'une tuile. Bien que je ne les utilise pas dans le produit final, ils peuvent être utilisés pour la cuisson de textures, qui seront utilisées dans la version low-poly, mais il existe des moyens plus optimaux pour créer un modèle de jeu, que nous reviendrons plus tard.



Pour le modèle final, le balayage UV est principalement effectué de manière procédurale à l'aide d'outils de développement de jeux, tandis que d'autres parties, par exemple, des poutres et des portes sont déployées en s'étirant le long de courbes avec des coordonnées UV.

Création de paysage


Le terrain est généré en lisant l'étage inférieur du modèle importé, la géométrie finale est créée à l'aide de VDB en mélangeant divers bruits.


Une fois le terrain terminé, nous pouvons mesurer toutes sortes de propriétés topologiques: occlusion, courbure, angle d'inclinaison, etc. Ils déterminent l'emplacement de l'herbe, sa hauteur et l'emplacement des fleurs ou des arbres.

Dans un souci de variabilité, les matériaux sont créés en combinant des images et des données de couleur.


Les plantes et l'herbe elles-mêmes sont des instances qui sont créées de manière procédurale en combinant des nœuds et VEX. Ils se transforment ensuite en proxy Redshift, dont les instances sont créées en fonction des attributs du paysage.

Le projet est-il prêt à être utilisé dans le jeu?


Un tel système est à la fois applicable et non applicable pour la production de jeux. Pour qu'il soit applicable, il doit être soumis à un autre ensemble d'opérations, mais ce sera une tâche assez simple et directe. Les modèles sont trop poly pour être utilisés dans les jeux, mais si vous convertissez un modèle poly élevé en objet VDB pour garantir son étanchéité, puis utilisez les outils pour réduire le nombre de polygones, tout le reste peut simplement être transformé en textures.




Je pense qu'aujourd'hui, les jeux sont souvent utilisés dans une architecture générée de manière procédurale, mais je n'ai pas encore vu de cas où je prendrais des modèles simples faits à la main, puis générerais tous les détails en fonction d'eux. Peut-être qu'à l'avenir, ce sera plus courant.

Je classerais ma propre connaissance limitée de Houdini comme un goulot d'étranglement de projet. J'ai commencé ce projet pour étudier le programme et je ne savais pas à quoi je voulais en venir. Rétrospectivement, je peux dire qu'avec les connaissances que j'ai maintenant, j'aurais beaucoup différent dans ce projet et dans d'autres projets. Un autre goulot d'étranglement est la RAM - pour fonctionner dans Houdini, et surtout lors du traitement de VDB, vous avez besoin de beaucoup de RAM.

Øyvind Fiksdal , artiste 3D

Interview réalisée par Kirill Tokarev

Source: https://habr.com/ru/post/fr424203/


All Articles