Guillaume Deschamps
Sorcier digital (2D, 3D et web)

Création de cristaux semi-réalistes stylisés avec Blender et Substance Painter

catégorie -

Pour mettre-à-jour et ré-orienter mon portfolio de developpeur web/webdesigner vers la création 3D, j’ai décidé d’illustrer chacun de mes domaines de compétences par des cristaux. Ce projet m’a permis de questionner et d’approfondir mon workflow général. Et dans ce premier article consacré à la 3D, je souhaitais partager les résultats et les questionnements qui m’ont été soulevés. Comment modéliser un cristal en 3D ? Comment gérer son mapping ? Comment créer une texture semi-réaliste ré-utilisable dans des moteurs de jeux 3D ? J’aborde donc premierement, mes inspirations puis mes recherches, que j’analyse en suite pour passer à la pratique, et conclure en évaluant les résultats.

Désirant baser mon portfolio sur la métaphore de la sorcellerie et du paganisme, j’ai crée une identité visuelle centrée sur un attrapeur de rêve dessiné à la main. Mon intention première était de revendiquer position artisanale comme alternative à la pauvreté du web design contemporain (material design, flat design).

En décidant de me réinvestir sérieusement et principalement dans la création 3D, plus particulièrement pour les jeux vidéos de style hand-painted, j’ai pensé que des cristaux pourraient bien illustrer ces différents domaines :
– 3D (modélisation, sculpting, texturing, lightening)
– web (design et dev)
– coding ( prog orientée objet)
– crea (2D / concept art)
– print
– soft skills

Recherches

Dans un fichier PureRef, j’ai collecté et reclassé par style, par média toutes les images qui ont retenu mon attention via différentes recherches sur Artstation, Pinterest, et Sketchfab. Très vite la question de savoir si je voulais faire des cristaux réalistes ou stylisés (terme très vague) est venue à moi. Je ne voulais pas de cristaux réalistes : ça n’aurait pas respecté la charte graphique de mon site. Mais les cristaux minimalistes low poly ne me convenaient pas non plus. Je voulais des cristaux suffisamment détaillés avec des cavités, des aspérités et des reflets mais sans exigence photoréalistes. Mes recherches m’ont permis de gagner du temps en prenant des décisions. Par la suite, j’ai cherché tous les tutos disponibles sur le web, pour voir techniquement comment traduire tel ou tel style graphique.
Images rassemblées dans le logiciel PureRef

Les travaux qui ont retenu mon attention

Voici quelques travaux/artistes que j’ai retenu :

Les meilleurs tutoriels sur le sujet

Crystals – Hand Painted Game Assets – Blender 2.8 from the great Grant Abbitt
Tous les tutos de Grant Abbitt sont géniaux et généreux. Il y a toujours quelque chose à apprendre de ses videos qui vont à l’essentiels de manière très pédagogique. Celui-ci explique comment modéliser et texturer un cluster minimaliste et stylisé. Ca ne correspondait pas à ce que je voulais, mais l’approche mérite d’être prise en compte. QUE DU BLENDER. 😉

Beginners Guide to Glowing Crystals with Blender 2.8 & Substance Painter
D’abord, ce que j’ai trouvé d’intéressant dans ce TUTO, c’est la modélisation du cristal : créer une sphère que l’on découpe grossièrement avec l’outil « Knife » de Blender en mode « Edit », ce qui permet de maitriser la forme global de mon cristal au départ. Ensuite, la partie sur Substance Painter m’a aidée à me réapproprier son interface, finalement proche de photoshop (le principe des masques et des calques) mais avec des petites subtilités.

Intro to Sculpting in Blender from Rico Cilliers
C’est sans aucun doute pour moi l’un des tutos les plus intéressants sur Artstation au sujet du Sculpt de Blender, parce qu’il est précis. Il y a beaucoup de ressources et d’astuces présentées ici pour arriver à créer des rochers réalistes en passant par : la création d’un blocking avec un usage surprenant des modifiers « Skin » et « Subdivision » (que j’utilise en général pour créer des arbres), le masquage au lasso pour donner du relief à la surface, l’utilisation des brushes Orb à la Warcraft, le respect optionnel des « normals » initiales par les brushes (c’est magique !!!), la création des détails (cavités, aspérités), etc… Je ne peux que le recommander.

Méthodologies

A la lumière de toutes ces techniques proposées, j’ai pu constater des étapes récurrentes :

1 – Méthode réaliste à la mano

Tu crées un cristal « HighPoly » (HP) que tu dupliques et transformes en « lowPoly » (LP). Puis tu fais les bakings nécessaires mais après avoir crée l’UVmapping nécessaire.
Le baking consiste à transférer les informations détaillees du HP sur le LP à partir de différentes cartes (baked maps) à savoir :
– « albedo » nommée aussi « base color »,
– « ambiant occlusion »,
– « normals »,
– « roughness »
– et « height » nommée aussi « curvature ».
Bon ça mériterait un article à part entière tout çà ! A suivre.

Et l’UVmapping consiste à définir comment le maillage de mon objet 3D va recevoir son matériaux, notamment à l’aide de coutures réalisées à la main (ou pas). Ca aussi, c’est un sujet d’article !
Après on peut peindre à la main dans Blender, ou dans Substance Painter, ou même en 2D Photoshop/Gimp/Krita, les différentes maps et textures. Mais c’est beaucoup plus rapide et pratique de peindre directement sur un objet 3D.

2 – Méthode minimaliste à la mano

Tu crées un cristal avec un faible maillage « low poly » et tu lui appliques le matériau que tu veux. Ca peut être une texture map peinte à la main, ou une texture procédurale, avec ou sans detail. Ce qui est déterminant ici, c’est la simplicité de la silhouette de ton objet 3D, tout comme celle de son rendu.

3 – Méthode procedurale

La méthode procédurale consiste à appliquer à un maillage super dense, une ou plusieurs textures générées par des algorithmes, et qui vont déformer ton maillage (avec une height map). On parle beaucoup des geometryNodes et de Substance Designer. C’est tout récemment que j’ai découvert le principe, et je ne maitrise pas du tout cette méthode, ni ces logiciels. Ce que je peux dire, c’est qu’elle offre énormément de souplesse et de gain de temps, parce qu’elle réduit les interventions à la mano et qu’elle permet de faire des changements rapidement en temps réel sans avoir à tout recommencer depuis le début. Mais je me demande comment ce principe s’applique au sein moteur 3D, généralement d’usage très « lowPoly ».

Mise-en-pratique

Après avoir expérimenté pas mal de temps, tatoné et fait quelques erreurs pour mieux comprendre les enjeux graphiques et techniques, j’en suis arrivé enfin à me créer mon propre workflow.

1 – Blocking et sculpting

J’ai crée 12 fois un bloc d’une hauteur entre 15 et 20 cm en essayant de varier la hauteur et l’épaisseur. Chaque bloc est ensuite subdivisé 5 fois pour me donner un maillage fin et prêt à être sculpté. En activant la « dynotopology », le maillage est optimisé à chaque modifications de brush (ajout ou suppression de faces). Le résultat m’a donné des cristaux HP avec suffisamment de détails pour passer à l’étape suivante.

wireframe des cristaux

2 – Retopologie

J’ai dupliqué chacun des cristaux HP pour en faire des LP avec le modifier « decimate ». Le maillage est moins propre que si j’avais gardé le maillage du bloc au tout début, mais tant que la silhouette de mon cristal est respectée, je me dis que c’est pas très grave.
Ensuite, j’ai appliqué le modifier « shrink wrap » pour que mon LP colle au mieux à mon HP. Après çà, je me suis occupé de l’UVmapping.

3 – UVmapping

Et c’est la que çà se complique : sachant que je découvrais et expérimentais avec Substance Painter, je me suis posé plusieurs questions :

– devais-je crée manuellement des « sharp edges », des arrêtes aigues… (Ce qui est déterminant surtout sur le rendu au sein des moteurs 3D comme Unreal) ?
– … et ensuite les utiliser comme coutures (seams) pour le mapping ?
– ai-je vraiment besoin des sharp edges ?
– comment éviter de perdre du temps à tous faire à la main ?

Parce que refaire 12 fois les mêmes operations à la main (sélectionner des edges et les transformer en sharp edge, puis en couture, puis rajouter d’autres coutures, puis ranger les « islands » dans la carte UV BEURK ET REUBEURK !!!)

C’est là où ma méthode est vite devenue chronophage.

De moins en moins motivé, j’ai donc laissé tombé les « sharp edges », et me suis concentré sur les coutures. Je cherche encore à optimiser cette partie, et je me demande si elle est inévitable.

4 – Texturing

Enfin, comment créer et gérer les matériaux appliqués à mes cristaux 3D, sachant que le résultat final devait s’afficher dans une page web, avec une images 300x300px en 72 dpi.

Un des gros avantages de substance painter, c’est la facilité avec laquelle on fait les bakings. Alors qu’avec Blender, c’est beaucoup plus laborieux. Je me suis également inspiré du tuto de la chaîne the Stylized Station sur… La création d’un améthyste.

Le tuto propose les layers suivants
[capture substance]

– EDGES
— EDGES 2
— EDGES 1
– REFLECTS
– EMISSIVE TINT
— TOP GLOW
— BOTTOM GLOW
– BASE COLOR

Ce en quoi mon approche se distingue un peu, c’est l’utilisation d’un HP pour le baking. Et je me suis vite rendu compte que la curvature map n’était pas bonne du tout. Les sommets (edges) ne rendaient pas correctement. Après plusieurs expérimentations, j’ai découvert que le baking de la curvature map était plus satisfaisante avec le LP.
J’ai ainsi pu obtenir les baked map suivantes avec mon HP : ambiant occlusion, cavity, roughness, et avec le LP la curvature map. Chaques maps ont été exportées dans le dossier du cristal concerné.

Recherches sur le rendu des cristaux

Ma routine, bien qu’un peu redondante, s’est crée de cette manière.

5 – Création d’une famille de cristaux

Une fois mes cristaux prêts individuellement, je voulais les combiner pour avoir un jeu de clusters différents.

Je me suis demandé si je devais les combiner avant ou après les process du baking. J’ai opté pour un traitement individuel des bakings pour chaque cristaux, sans être sur à 100% de mon choix. Je reste ouvert aux suggestions d’améliorations.

famille complète de cristaux

Une autre question s’est posée : comment rendre la gestion de la « base color » plus flexible ? En effet, j’ai compris que la base color map était trop rigide, car une fois mes cristaux importés dans un moteur 3D, ou même dans Blender, même en modifiant la saturation ou la valeur « hue » de ma map (j’implique la base color et l’emissiv color), les choix de couleurs étaient limités. Je devais penser autrement.

Finalement, j’ai compris que je n’avais réellement besoin que de l’AO, curvature, roughness et normal maps. Les autres pouvant être gérées dynamiquement dans unreal ou blender avec une node.

Conclusion

Ca n’est qu’a la fin de mon projet que j’ai découvert le principe du workflow non-destructive : un workflow qui permet de revenir sur des choix précédents sans avoir à tout recommencer depuis le début. C’est probablement ce qui explique l’engouement pour les geometyNodes. Et je pense que ça pourrait améliorer mon process pour la création de ce type d’objet.

Merci pour votre lecture.

Mon projet sur Artstation
L’article en anglais sur Artstation.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *