Workflow Zbrush – Blender – XNormal


rock_lowpoly_ban

 


rock zbrushPartons du principe que vous avez votre sculpt de prêt. Cela peut être un dynamesh ou un mesh « classique ».

La retopologie suivante est créée dans le but d’être utilisée directement dans un moteur temps réel. Elle ne sera pas subdivisée et difère donc d’une retopologie qui a pour but, par exemple, de recréer un maillage « propre » afin d’être subdivisée et accueillir la projection d’un sculpt (par exemple un dynamesh).

 

1 – Création de la topologie du modèle Low Poly

 

Pour démarrer la topologie :

Dans les subtools, cliquez sur « Append » et ajoutez la ZSphere.

Assurez-vous qu’elle soit correctement sélectionnée et activez la transparence (bouton « Transp » dans les raccourcis à droite). Pour plus de clarté déplacez-la au centre du modèle high poly et débrouillez-vous pour qu’elle ne dépasse pas de celui-ci. Il faut qu’elle reste invisible pendant la phase de création de la topologie pour plus d’aisance.

rock_tuto_2

Assurez-vous que vous travaillez bien avec la Zsphere dans les subtools.

 

rock_tuto_3Ensuite, allez dans « Topology » et cliquez sur « Edit Topology« .

A partir de maintenant, il faut créer la topologie du modèle Low Poly directement sur le modèle High Poly. Le but est de créer un modèle qui épouse les formes globales du modèle High Poly (le sculpt) en évitant de créer des faces inutiles, et en essayant de conserver une homogénéité, (même si dans le cas d’une utilisation directe pour un moteur temps réel l’homogénéité n’a pas d’importance et peut faire gagner quelques calculs de faces en moins).

Cliquez sur le modèle pour créer un premier point, et ainsi de suite.

  • Pour supprimer un point, cliquez dessus en gardant le bouton « alt » appuyé.
  • Pour démarrer un segment à partir d’un point, cliquez sur ce premier point avec « Ctrl » d’appuyé.
  • Déplacez un point avec « W« .

Si vous manquez de visibilité, changez le material du modèle high poly (ici j’ai mis un material blanc).

Si vous n’arrivez pas à déplacer un point, c’est que vous avez du masquer les points par inadvertance. Cela arrive assez souvent ! Gardez « Ctrl » appuyé et sélectionnez une zone vide dans la scène (Enlever le masque).

La topologie est assez délicate dans le cas d’objets organiques, avec des proportions anarchiques, comme cette pierre. Il faut coller les points au maximum avec la surface du modèle afin d’éviter de générer des artefacts lors du baking et ajouter une densité de points plus importante pour accentuer les détails du mesh (par exemple dans notre cas, les fissures de la pierre). Il faut éviter les triangles. A ce propos, pour notre « cailloux », et étant donné que le modèle ne va pas être subdivisé, on peut tolérer parfaitement la présence de triangles. Par contre si notre modèle doit être subdivisé et/ou animé, il faut absolument des quadrangles.

rock_tuto_6

 

 

 

 

 

 

 

 

 

 

rock_tuto_7Une fois la topologie terminée, appuyez sur « A » pour vérifier l’intégrité de la topologie et générer l' »Adaptive Skin« . Allez dans l’onglet « Adaptive Skin » et définissez la densité à 1. Sinon une subdivision est appliquée à votre retopologie.

 

 

 

 

 

 

Avant d’exporter la topologie vers blender, j’utilise une petite astuce qui me permet de l’optimiser afin qu’elle colle au mieux au sculpt d’origine : Je transforme mon Adaptive Skin en PolyMesh3D. Je la renomme (« Rock low poly » par exemple), je reviens sur mon tool qui contient le sculpt et je fait un « append » du tool Low Poly. Je lui applique quelques subdivisions, et je lui projette le sculpt avec « ProjectProject All« . Si la projection génére des artefacts, il faut modifier la valeur de « Dist » dans « ProjectAll« . Une fois la projection appliquée, je reviens au niveau de subdivision initial et je supprime les autres avec le bouton « Del Higher« . C’est assez subtil, mais cela permet d’optimiser un peu le maillage du modèle LP.

 

 2 – Dépliage des UV du modèle Low Poly

 

J’ai pour habitude de créer mon dépliage UV dans blender, mais bien évidement ce n’est pas une obligation, bien au contraire vous pouvez directement le faire depuis Zbrush.

Pour exporter le modèle Low Poly depuis Zbrush en .obj : « Tool -> Export ».

rock_tuto_9

Je ne ferais pas un cours ici sur le dépliage UV avec blender. Vous trouverez facilement d’autres tutoriaux sur le net.

Une fois le dépliage effectué, cliquez sur « Uvs -> Minimize Stretch » afin d’optimiser le dépliage et d’harmoniser l’UV de chaque face en fonction du modèle (évite les étirements de faces).

 

rock_tuto_10

 

Pour l’export en .obj, utilisez la même configuration :

rock_blender_export

 

J’applique toujours au modèle une image « UVGrid » (« Image -> New Image -> UV Grid ») afin de vérifier que le dépliage est assez régulier. Si le dépliage manque de régularité on pourra distinguer des étirements ou surtout des baisses de qualité locale sur les textures du mesh.

 

3 – Création de la cage

Il faut importer le .obj contenant le dépliage UV. On l’ajoute dans les subtools (« append »), on le duplique. On renomme l’un « Low Poly » et l’autre « Cage ».

La cage va servir à « contrôler » la projection lors du baking, afin d’éviter les artefacts à certaines zones sensibles. Ce n’est pas obligatoire mais je conseille fortement de l’utiliser.

Cachez le subtool « Low Poly » et sélectionnez la cage.

 

rock_tuto_11

 

Allez dans « Deformation » et augmentez la valeur du paramètre « Size » de sorte que la cage englobe le sculpt. Si certains points du sculpt sortent encore de la cage, utilisez la brosse « inflate » afin de les cacher. Activez la transparence pour vérifier que la cage englobe bien le sculpt.

 

rock_tuto_12

 

4 – Export

Maintenant il faut exporter tous les meshs :

  1. Le sculpt qui est le modèle high poly (Il faut évidement que le dépliage UV soit effectué)
  2. La topologie qui est le modèle low poly
  3. La cage
Votre sculpt ne comporte pas d’UV et ne possède pas de niveaux de subdivision suffisamment faibles pour en créer ? Dupliquez le modèle High Poly. Appliquez le Zremesher. Ensuite, allez dans « ZPlugin » et « UvMaster ». Enlevez la symétrie et cliquez sur « Unwrap ». Ensuite ajoutez des subdivisions au modèle. Dans les subtools, ne gardez de visible que le modèle à projeter et cliquez sur « Project All » dans l’onglet « Projet ». Vous obtenez le modèle High Poly avec les UVS de définis.

 

Pour le sculpt, supprimez les niveaux de subdivisions inférieurs pour garder le plus important (attention, il est inutile de prendre des niveaux trop élevés vu que le baking est dans le cas d’une utilisation temps réel !). Ensuite allez dans « Zplugin -> Multi Map Exporter« .

 

rock_tuto_13

Il faut exporter la texture qui va contenir les données du polypaint ainsi que le mesh. Choisissez une résolution de 4096 mais 2048 reste largement convenable pour notre exemple.

Exportez le modèle low poly ainsi que la cage directement avec « Tool -> Export« .

 

5 – Baking avec Xnormal

 

XNormal est téléchargeable gratuitement ici : http://www.xnormal.net/

Lancez-le. Faites clic-droit dans « High definition meshes » et ajoutez le mesh high poly.

Clic-droit sur le mesh et cliquez sur « Base texture to bake« . Sélectionnez la texture du polypaint exportée par Zbrush.

 

Faites clic-droit dans « Low  definition meshes » et ajoutez le mesh low poly. Clic-droit sur le mesh et cliquez sur « Browse external cage file« . Sélectionnez la cage.

 

Tout est prêt pour lancer le baking.

Définissez la résolution de votre texture et le répertoire de sortie.

Exportez les maps suivantes :

  • Normal map
  • Bake base texture
  • Ambient occlusion (que je mixe dans certains cas avec la diffuse)

rock_tuto_16

 

Cliquez sur « Generate Maps« .

 

rock_tuto_17Les maps sont prêtes à être utilisées directement dans Unity sur le modèle low poly.

Pour améliorer le rendu, il est possible d’exporter les maps issues d’un matCap zbrush.

6 – Rendu final

Voici le rendu dans unity 5 :

rock_unity5

 

Et dans Marmoset :

rock_marmoset

7 – Conclusion

Le workflow présenté ici n’est pas forcement le meilleur ni le plus rapide et le plus souple. Surtout il n’est pas celui qui doit s’appliquer à tous les cas.

Un mesh pour de l’animation, de l’environnent design, du mobile, etc,  n’obéira pas aux mêmes contraintes et subira donc des techniques différentes pour le baking et la mise en place des textures. Il faut le recul et les connaissances techniques nécessaires afin d’appréhender la méthode la mieux appropriée pour créer un modèle low poly rapidement et efficacement.

2 commentaires

  1. jAvec un ami, je souhaite créer un club ‘robotique avec Arduino’, connaitriez vous des personnes qui seraient susceptibles d’être intéressés.

    PS : J’habite Arcachon

Laisser un commentaire

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

Website Protected by Spam Master


*