Unreal Engine Astuces – Tips

Comprendre le lissage des maillages dans UE

Solving Mesh Smoothing issues in UE

Travaillant sur un capot de piano à queue, après avoir fait une passe de réduction de polygones,
voici le pauvre résultat que j’obtiens – pourtant même en conservant une arête de chanfrein sur tout le contour : la partie supérieure apparaît bombée, et la réflexion rend encore plus visible cette aberration.

Piano_Lid_Smoothing

Et ce n’est pas la topologie du capot qui semble responsable, c’est la transition entre la partie verticale et horizontale
qui semble poser problème.

While working on my game-ready classical piano, here is the poor result I got after reducing the polygon count :
the lid seems to be inflated, and this visual illusion is reinforced by the reflective material.
Even with a beveled edge running all around the contour.

The topology from flat areas does not seem to be problematic, but rather the angular transition from
vertical to horizontal edges.

Piano_Lid_Smoothing_02Yuno_look_flat

La solution fut de rajouter une boucle d’arêtes très proche de mon contour d’origine,
afin de « tasser » le lissage, et laisser apparaître la zone plate comme effectivement plate !
Désormais, le capot de droite est fidèle au modèle High-Poly, sans avoir recours aux surfaces de subdivisions.
Le capot fait 1306 triangles, soit environ 684 polys.

Mesh_Smoothing_002

Solution was to create a thin inset from the original top lid shape, so that the transition from vertical to horizontal edges
does not « spread » too much far within the topology. Now you see, both lids are Low-Poly, but the right hand one is much
closer in appearance to the original High-Poly model.
Lid is made of 1306 tris, and approximatively 684 polygons.

Piano_Lid_Smoothing_good

L’impossible trissection de l’angle

Voilà quelques temps que je ré-étudie la géométrie plane, au moyen des seuls compas et règle non graduée, comme ont pu travailler les antiques bâtisseurs.

Si beaucoup de polygones sont accessibles uniquement avec ces deux outils, je ressentais le besoin de savoir diviser un angle en trois parties égales, afin d’élargir ma palette d’expression géométrique, et sans doute découvrir d’autres proportions, d’autres harmonies mathématiques.

À ma grande surprise, je lisais à longueur de forums que la trissection de l’angle était tout simplement impossible, sans autre démonstration que l’acceptation de cet argument. Circulez, y’a rien à voir…

Piqué au vif, j’ai donc mené mon enquête, pour savoir si cette « vérité » était fondée, car il lui manquait la démonstration – démonstration que je me propose de partager à présent.

Pour cela j’ai utilisé le logiciel libre GéoGebra (http://www.geogebra.org/cms/fr/)  sur lequel je me repose pour l’exactitude des mesures et des tracés effectués.

Au commencement donc, il y avait une droite, passant par deux points.

2014-03-17 11_54_42-GeoGebra

De la, je construis le triangle équilatéral correspondant.

2014-03-17 11_55_48-GeoGebra

Ainsi constitué, on peut donc rappeler ses caractéristiques : tous ses côtés sont de même longueur, et les angles aux sommets mesurent tous les trois 60°.

2014-03-17 12_03_32-GeoGebra

Dans un triangle de ce type (équilatéral), la bissectrice d’un angle est aussi la médiatrice du côté opposé à cet angle. C’est cette relation de réciprocité que j’ai voulu extrapoler vers une trissection. Mais voyons d’abord la bissection. On obtient donc deux angles de 30° (le résultat serait similaire sur les deux autres sommets du triangle).

2014-03-17 12_06_34-GeoGebra

Mon idée était la suivante : puisque une bissectrice d’un angle coupe aussi le côté opposé en deux parties égales, et que j’ai trouvé un moyen de diviser un côté en trois parties égales (ça sera démontré plus bas), normalement je devrais pouvoir diviser ainsi mon angle en trois parties égales ? C’est ce que nous allons voir…

Pour diviser un côté donné en trois parties égales, il faut qu’il appartienne à un triangle. Ça tombe bien, il est déjà fait.

Ensuite, il s’agit de tracer la bissectrice de chaque angle (ou la médiatrice de chaque côté).
L’intersection de ces droites détermine le centre géométrique du triangle.

2014-03-17 13_24_01-GeoGebra

De ce centre, on trace le cercle qui passe par tous les sommets du triangle – pas les points des bissectrices.
En rouge, je trace uniquement les deux segments qui m’intéressent. Sinon, en reliant les points d’intersection du cercle et des médiatrices, on obtiendrait un second triangle.

2014-03-17 13_32_48-GeoGebra

De ce nouvelles intersections, notées ici K et L, on va pouvoir déterminer les fameux tiers de segment !
[AK], [KL] et [LB] sont identiques en longueur. GéoGebra nous le confirme.

2014-03-17 13_34_48-GeoGebra

Maintenant, c’est l’instant de vérité, car de ces nouveaux points, on va pouvoir vérifier si ma théorie était juste…

Et non, à ma grande surprise, seuls deux angles sur trois sont égaux. J’ai vérifié si je n’avais pas fait d’erreur dans mon exécution. En tout cas les segments sont bien des tiers.
Très curieux… Est-ce que mon approche serait la mauvaise ? Et si on essayait de ruser en divisant d’abord l’angle en trois parties égales, donc en angles de 20°, pour s’assurer de la réciprocité avec les tiers de segment ?

2014-03-17 13_35_19-GeoGebra

Hélas non, ce n’est pas mieux, et on se retrouve dans le problème inverse : cette fois l’angle est divisé en trois, mais ce sont les segments qui sont désormais inégaux !

Et inutile de tracer une parallèle à nos segments, en pensant que c’est une affaire d’éloignement avec l’angle… L’écartement de l’angle reste proportionnel dans ce cas.

2014-03-17 13_20_18-GeoGebra

Ainsi, la trissection de l’angle est belle est bien incompatible avec la trissection du segment. Le cas de la bissectrice est donc une -heureuse- coïncidence.

Pour aller plus loin, on pourrait supposer que les divisions paires garderaient cette réciprocité, or, comme illustré ci-dessous, une quadrisection du segment originel nous donne deux paires différentes d’angles : 13,9° et 16,1°.

2014-03-17 14_38_27-GeoGebra

Ainsi, je comprends mieux les difficultés qu’ont connu tous les cartographes pour établir des plans, car il s’agissait de convertir des distances non-planes sur un support plat.

La précision maximale était obtenue sur le méridien central (la droite qui relie deux pôles), mais sitôt qu’on s’en éloignait à l’Est ou à l’Ouest, la divergence entre mesures réelles et cartographiques augmentait, d’où le besoin de créer suffisamment de fuseaux pour rétablir la justesse des mesures. Mais je diverge moi-même et ne suis pas cartographe…

V Mask – ZBrush Projection

In this tutorial, apart from the process of creation of Guy Fawkes’ mask, popularized by the V For Vendetta movie, my aim is to show you the power of the Projection feature from Zbrush.

This tutorial will focus on technical part, instead of artistical ones.

My first advice would be to use references pictures. We’re lucky, as Internet is rich of it.
I also recommend using the fourth version of Zbrush, as we’ll need the Spotlight feature.
If you have two screens, jolly good ! Otherwise, you’ll need like me to display the required pictures inside of Zbrush.

When you’ve gathered every relevant picture you’ll need, to get the image in Zbrush,
we shall go inside of the « Texture » palette, click on Import button.

Texture_Menu_Import

Then, choose your picture, validate, and after, click on the « Add To Spotlight » button, located in the same palette.

Texture_AddToSpotlight

Don’t hide right now the freshly popping Spotlight tab, because it will pop again on every texture addition. Keep it for the final action. Use the comma key « , » to hide it.

2014-02-17 10_30_49-ZBrush

Once your graphic stuff is on board, organize it as you wish, with the Spotlight manipulator. For the practical details, and complete information about its usage,
I forward you to the Pixologic online documentation.

http://docs.pixologic.com/reference-guide/texture/spotlight/

The most important part here is to deactivate an hidden button, which by default prevents us from sculpting our model, as Spotlight was mainly designed to paint texture on geometry only.

For that you’ll need to go in « Brush » palette, and dig into « Samples » subpalette, and then disable the long orange button « Spotlight Projection » ! You’re done !

BrushPalette_SpotlightProjection

If you ever need to project again any texture on your model, come back here and reactivate it. I also suggest to add it in you interface, if you have to do often times the switch.

Good, now Zbrush is prepared, we’ll start to take a little time to examinate the case.
This mask raises two kinds of problem :

  1. – It is a very thin object, which needs a greater care in strokes, or undesirable results, as we may turn around it. AutoMaskBackFace (Brush -> Masking) would reveal precious ;
  2. – It has numerous holes, which added to the previous point, makes the process even more delicate.

This project sounds like surgery. Fortunately, thanks to the ingenuity of Zbrush, we’ll discover soon why this software became a painkiller asset !

So we can start with a lighter heart, and use a very simple sphere.
No matter for the thickness of the mask for the moment. The next pictures are here to show you some of the evolutions of the sculpting process,
and not to explain how to sculpt it.

GuyFawkes_Mask_Lineup

During this initial phase, I even needed to use a Dynamesh operation, which removed my original topology, and which of course doesn’t contitute a decent topology for any polished project.
But it was necessary to have an even pattern of polygons , so that subdivision would act correctly (someone may notify me that « Relax » operation in the Deformation subpalette fit my needs. Why not ? It’s good to know that exists, though).

Don’t forget to save, and to make backups !

VMask_Polypainting

When modeling part was over, about 90 minutes later, I could start polypainting.
On the same model, don’t worry about it.

VMask_Polypainting_Finish

As original colors weren’t so complicated, no pattern, no gradient, just a Standard brush was needed. You can pick color just by leaving your cursor upon the relevant pixel, and hit « C ».

Another tip, don’t forget to create polypainting on 3D layer (within your « Tool » palette, not the « Layers » palette).

Ok, now I consider polypainting as done, and here begins the proper work of detail transfer, which is the goal of this tutorial.

Here is the plan : we’ve got a sculpted, painted model, which weighs a couple of million polygons, with a dirty, messy topology, and we want it to be transposed onto a clean, optimized mesh.

We can start with a rough extraction of the face. First you need to draw a mask on the area we want to extract (CTRL + draw).
VMask_Masking_wip VMask_Masking_full

To sharpen it, hold CTRL + ALT, and click a couple of times.

VMask_Masking_Contrast

Now go into the « Subtool » subpalette, and in the bottom it, you’ll find the « Extract » section. Open it, and deactivate « Double », « TBorder », leave « Thick » at zero.

2014-02-17 14_11_50-ZBrush

Click on « Extract« , which will give only a preview of the operation. If you do any other action, preview would be lost. When the preview satisfies you, click on « Accept ».
We now have a single side of polygon. That is normal, and wanted.

VMask_Extracted

Then, from this extracted, we will make a Zremeshed one. It will produce a full quad topology, whereas a Dynamesh one will leave a regular spatial grid topology, which is not an optimized one. For Zremesh to work more efficiently, I recommend to use the Zremesh Guides Brush (B + Z + R), and to draw the main topology lines on your model.

VMask_ZRemesher_Guides

For this mask, I think that 500 polys is a sufficient density.
A thousand is already too much.
I also deactivate the « Adaptive » button, which has a tendency to not comply with the polycount setting. I don’t blame it, because it works with a higher priority than the polycount setting.
By deactivating it, we’ll get polygons at a rather uniform scale. Adaptive mode would create smaller ones to better catch small cavities.

Vmask_Zremeshed_1k2014-02-17 14_19_32-ZBrush

Vmask_Zremeshed_0.45k2014-02-17 14_22_35-ZBrush

Right, now the Zremesh is done , we should do a Projection, just to ensure that it matches our initial geometry.

To do so, go to the « Subtools » palette.

Subtool_Projection_List

Now take care : for subtools, vertical order matters.
For Zbrush, you should place in your subtool list the reference object above the object you want to be reprojected. Zbrush will examinate every object in the list, but of course you can exclude them from the calculation by hiding them. Just click on the eye icon.
What you see in your scene will effectiveley be used as reference, it’s that simple.

Now comes a crucial setting at this step : Projection Shell. By varying the Projection Shell value, we can notice that our mesh is inflating. No panic though, it is just a way to display how far our mesh will have to search from reference the points to match to.
Once the reference mesh is fully covered by the Projection Shell, release the click, and the mesh returns to its original appearance.

ProjectionShell_001ProjectionShell_002

Now you can press the « Project » button, and Zbrush asks if we also want to project polypaint data. That’s cool, but not now, so decline its offer.

Alert_Projection_Polypaint

Now we can export the Zremeshed, projected mask as an .OBJ file, to be refined in our favorite 3D package. Not that Zbrush cannot delete particular polygons, but after many tries and fails, I considered the task would be easier and straightforward in a regular 3D package. Also export a mid-level of your sculpted mesh, as a better reference for placing holes.

We will leave Zbrush temporarily, and for this task you’re free to use any modeler you feel comfortable with.

When you’ve imported both Low poly and high poly versions, I recommend not to start by creating the thickness of the mask. This should be the last modeling operation.

Now we can have real holes for the eyes, the nostrils, and the rectangular slit between the lips. Then, you can make the UV map. When done, save your .OBJ, and you can import it back to Zbrush.

VMask_Good_Modeling

Be careful though, before importing any .OBJ, change your active tool (the one with subdivision levels and subtools) to a primitive object, or the imported object will replace the previous one.
You should then add the freshly imported .OBJ inside of your existing Ztool, via the « Append » button, located in the « Subtool » palette.

Now comes an important answer that was awaited : will Projection work with a pierced geometry ? Yes ! Not only it works on a single sided geometry, but also on holed ones !

I would like to develop another point about the projection workflow inside of Zbrush : at the beginning of Zbrush, (but it is still possible today) you could replace a geometry by another one, even if their topology differ.

For that you had to go to the lowest level of subdiv, and do the swap.
The problem is, you have no have no idea if your new mesh takes the same space as the old one, and if not, the automated projection will lose the details and colors at these areas, as you can see on the picture. There’s no setting for this operation, and if it fails, you have to cancel, modify your mesh apart, and try again. See the example below…

Projection_w_Replacement

On the contrary, working with subtools and the Projection settings enables us to make the geometry match, even if they were not, and above all, it doesn’t destruct the sculpted geometry !

By doing so, you’ll be able to retrieve on your low poly mesh not only the sculpted details, but also the polypaint !

2014-01-12 13_48_09-ZBrush

Here is the sequence to reconstruct the mask onto the new geometry :

  • – On your sculpted mesh, set the level of subdivision to the lowest, so that the fresh new geometry as the same starting point as the sculpted one ;
  • – Create a morph target on the new geometry ;
  • – Apply projection ;
  • – Subdivide the new object ;
  • – On the sculpted object, raise by one level the subdivision ;
  • – On the new object, apply the projection ;
  • – And so on, until you reach the last level of subdivision on the sculpted object, then subdivide the new one again, and project a last time.

Why ? Because the new one had a much lower polycount at start, so at equal subdivision level, the amount of polygons is unbalanced between two objects, as a penalty for the new one, which has for consequence to be not as fine as its counterpart, and make the projection less effective. That’s why I make an additional subdivision, at least to match or exceed the target polycount.

Your polypainting should come nicely too, when ZBrush asks you.

Now we are close to the end, and we should be able to export our maps. We don’t need anymore of the original, sculpted object.

GuyFawkesDiffuse GuyFawkesNM

Let’s go to the lowest level of subdivision, and switch the morph target.
You should notice that it has changed slightly. This state corresponds to the actual shape of the geometry you made in your modeler, the one I guess you will use your maps on.
If ever you needed to make any sculptural change, switch again this morph target, because it would cause unwanted changes to your sculpting levels.

As you can see below, the result of maps displayed onto the low poly mesh.
I didn’t generated specular map, because in the movie, the mask has the same overall specularity.

Guy_Fawkes_Creation_09Guy_Fawkes_Creation_08

As a conclusion, I would say that Projection feature is a priceless tool which allows us to migrate details from a model to another, plus the polypainting ! No need to bake textures during the process, and no matter the topology is. My intent was also to demonstrate the possibility to use non closes geometries.

Masque de V – ZBrush Projection

Dans ce tutorial, outre la création de ce masque de V, en référence à Guy Fawkes devenu culte grâce à « V pour Vendetta », je vais vous démontrer la puissance de la fonction Projection de Zbrush.

Ce tutoriel se concentrera sur les parties techniques, et non sur les parties artistiques.
Pour commencer, je ne saurais trop vous recommander d’avoir des images de référence sous les yeux. Ça tombe bien, Internet en regorge. Faites votre sélection, puis lancez ZBrush (minimum version 4, pour bénéficier de Spotlight, sans qui les premières indications seraient inutiles).
Tout d’abord, importer l’image. C’est dans le menu Texture, et sur le bouton Import.

Texture_Menu_Import

Après avoir sélectionné ladite texture dans cette palette,

Texture_AddToSpotlight

cliquez sur le bouton Add to Spotlight. Immédiatement après, elle s’affiche dans votre espace de travail, en même temps que la barre Spotlight s’ouvre.

Recommencez l’opération autant de fois que vous aurez d’images.
Maintenant vous pouvez refermer le panneau Spotlight, qui fait irruption à chaque ajout de texture dans Spotlight… Touche « virgule ».

2014-02-17 10_30_49-ZBrush

Utilisez ensuite la palette circulaire de Spotlight pour déplacer/mettre à l’échelle les images.
Pour alléger ce tutorial, je vous renvoie vers la documentation de cet outil.

http://docs.pixologic.com/reference-guide/texture/spotlight/

Ce qui est important que je signale, c’est que par défaut, tant que les images seront affichées, et donc tant que Spotlight sera actif, vous ne pourrez pas utiliser des brosses de sculpture, mais seulement « Move ». Il faudra désactiver Spotlight (touche SHIFT + Z) pour retrouver l’usage de nos brosses… Pas évident, sauf qu’il existe heureusement une option bien cachée pour défaire ce nœud !
Il faut aller dans le menu Brush, et descendre jusqu’à Samples, déplier cette sous-palette, et désactiver le gros bouton « Spotlight Projection« . Voilà, c’est fait !

BrushPalette_SpotlightProjection

Par contre, ça désactive la projection d’une image depuis Spotlight sur notre objet. Quand viendra le besoin de projeter une texture, vous saurez où revenir pour activer ce comportement.

Bien, alors que maintenant l’on va pouvoir commencer à créer un objet de base, quelques questions méritent d’être posées, car ce masque présente deux défis de modélisation dans Zbrush :

  • c’est un objet peu épais, ce qui implique une plus grande prudence dans les coups de brosse, pour ne pas détériorer la face opposée du masque (AutoMaskBackFace pourra nous sauver la mise)
  • il est troué à plusieurs endroits, ce qui, ajouté au point précédent, rend la tâche encore plus délicate…

Le projet s’annonce comme quasi-chirurgical. Heureusement, grâce une inventivité insoupçonnée de ZBrush, cette tâche ardue va pouvoir être réglée avec aisance !

Première chose réconfortante, c’est de de dire : commencez au plus simple.
Partant donc d’une simple sphère, j’ai modélisé un visage, sans me soucier de l’épaisseur.
En cours de route, j’ai eu besoin de faire un coup de Dynamesh, pour équilibrer la disposition des polygones, et pouvoir monter en résolution.

GuyFawkes_Mask_Lineup

Pensez à sauvegarder, en faisant des copies !
Quand la modélisation fut achevée (env. 1h30 plus tard), j’ai pu entamer le polypainting.

VMask_Polypainting

VMask_Polypainting_Finish
Comme les couleurs sont très simples sur ce masque, je n’ai pas eu besoin de la projection de Spotlight, seulement de récupérer la couleur sur les textures elles-mêmes puis de peindre avec les brosses de ZBrush. Pour capturer la couleur qui se trouve sous votre pointeur, appuyez sur la touche « C« .

Au besoin, créez un Layer qui contiendra les informations de Polypainting.

Voilà, si l’on estime que la partie créative est terminée, on va pouvoir entamer le travail de projection, et dans le cœur de ce tutoriel.

Voici le plan d’action : nous avons un modèle sculpté et peint, qui pèse quelques millions de polygones, dans une topologie, disons-le, dégueulasse, et qu’on voudrait exploitable pour un moteur de jeu (dans mon cas).

Déjà, première recommandation, travailler sur un duplicata de cet objet. Car en plus de préserver le fruit de nos efforts, le fait de faire une projection entre deux objets distincts fonctionne mieux que de remplacer l’objet de base et de laisser Zbrush gérer les conséquences…

Ou alors, c’est comme vous préférez, ignorez le paragraphe précédent, et au lieu de faire la duplication de l’objet original, on procèdera à une extraction, qui créera une copie, en plus de ne garder que la partie sélectionnée.

Pour cela, on dessine un masque sur la face, et qui corresponde à peu près à quoi devrait ressembler le masque au final.

VMask_Masking_wip VMask_Masking_full

Puis on peut augmenter le contraste du masque, en maintenant CTRL + ALT, et en faisant un clic sur le masque. Quelques clics plus tard, on obtient un masque aux contours bien plus nets.

VMask_Masking_Contrast

Enfin, on se rend dans l’onglet Extract de la palette Tool, et dans la sous-palette Subtool, et après avoir désactivé la fonction « Double » et « TBorder« , et laissé le paramètre « Thick » à zéro (comme indiqué sur la capture d’écran),

2014-02-17 14_11_50-ZBrush

on clique sur le gros bouton Extract, ce qui donne d’abord une prévisualisation, et ensuite, on valide avec le petit bouton Accept. Attention, si vous tournez la vue, la prévisualisation sera perdue, et il faudra à nouveau cliquer sur Extract pour la faire revenir. Nous voici avec une simple épaisseur de polygones.
Ensuite, de ce double, on va pouvoir en faire une copie low-poly, ou du moins qui constituera le maillage de base.

VMask_Extracted

Le plus rapide est de faire une première conversion grâce à ZRemesher, qui va nous faire le plus gros du travail de retopo. Ne parlons pas encore des yeux, ou des autres orifices, ça sera en dehors de ZBrush.
Vous pouvez vous aider de la brosse ZRemesher Guides (B + Z + R) pour tracer les grandes lignes du visage, et ainsi orienter le flux des polygones.

VMask_ZRemesher_Guides

La densité suffisante pour cette retopo est de moins de 500 polygones. À partir du millier de polygones, je trouve que c’est trop riche en détail, donc moins pratique pour retoucher la topologie dans un autre soft de 3D.

Vmask_Zremeshed_1k2014-02-17 14_19_32-ZBrush

Vmask_Zremeshed_0.45k2014-02-17 14_22_35-ZBrush

Bien, une fois que cette version de base est prête, il serait bon de lui appliquer une projection par rapport au modèle original, afin d’être sûr de sa conformité avec ce dernier.
Pour cela, ça se passe dans la sous-palette Subtools.
Attention, l’ordre des objets est important : Zbrush considère que la référence se situe toujours au-dessus de l’objet sur lequel on va appliquer la projection.

Subtool_Projection_List

On peut aussi exclure des objets de cette procédure en désactivant leur visibilité (symbole d’œil).
Pour les paramètres de projection, c’est dans l’onglet homonyme, dans le bas de Subtools.

Maintenant vient une information essentielle à cette technique de projection : le Projection Shell. En faisant varier l’intensité de ce paramètre, on peut remarquer que notre maillage se dilate.

Pas de panique, c’est seulement temporaire.
Mais il nous indique jusqu’à quelle distance ZBrush va devoir aller inspecter l’espace environnant pour chaque point, pour le faire correspondre avec un point homologue du maillage de référence.
Vous n’avez pas compris ? Pour faire simple, il faut et il suffit que le maillage du Projection Shell englobe complètement le maillage de référence, et donc ne doit laisser aucune zone apparente.

Voyez sur les images le premier, qui n’est pas bon, et le deuxième, qui l’est.

ProjectionShell_001ProjectionShell_002

Une fois que l’on relâche le clic de souris, le Projection Shell disparaît, et l’on retrouve la forme antérieure de notre maillage retopologisé.

Un clic sur le bouton Project, et ZBrush nous ouvre une fenêtre, demandant si l’on souhaite projeter aussi les données de Polypaint ! Vraiment sympa, mais pas utile pour l’instant. On se contentera donc de la géométrie.

Alert_Projection_Polypaint

Une fois fait, on peut exporter en .OBJ notre objet low-poly vers notre logiciel de modelisation préféré. Je parle d’expérience, car je me suis cassé le nez à essayer de le faire dans ZBrush, car ce n’est pas aussi évident, ni prédictible en matière de quantité de polygones.

Exportez aussi une copie de votre modèle sculpté, juste à niveau de détail suffisant pour que l’on puisse bien tracer le contour des yeux.
On va temporairement quitter ZBrush, pour faire un vrai maillage de base bien propre.
L’opération marche aussi bien avec 3ds Max que Maya ou bien Modo, (pour ne citer que les plus populaires).
C’est justement à cette occasion qu’il s’agira de créer les orifices pour les yeux, les narines et la bouche. Le maillage high poly ne servira quant à lui que de référence pour pour assurer que les contours de votre maillage low poly correspondent bien avec le premier.

Mais attention, pas question pour l’instant de créer la face interne du masque.

Gardons juste la façade. Ne pas oublier non plus de déplier les UV, on en aura besoin.

VMask_Good_Modeling

Maintenant, retour dans ZBrush, et on importe notre OBJ fraichement modifié, en lieu de notre objet « ZRemesh ».

Maintenant, une autre question cruciale me traversait l’esprit au moment où j’expérimentais cette méthode, c’était de savoir si ZBrush allait bien accepter de faire une projection sur un élément troué ! Et bien oui ! Non seulement il n’a pas besoin d’être fermé, mais il peut être fait de plusieurs morceaux !

Pour bien faire, appliquez-lui un coup de Projection, pour caler votre nouvelle géométrie sur l’ancienne. Cette fois, on pourra lui projeter la couleur, bien que le résultat soit très grossier.

Je voudrai aussi développer un autre point, qui puisse vous servir plus tard sur d’autres projets, et vous éviter de lutter contre le logiciel : il faut savoir que, de base, ZBrush permet de remplacer un objet par un autre, même si les topologies sont différentes.
Pour cela, il faut se rendre au niveau de subdivision 1 de l’objet ou du subtool, et d’importer un fichier OBJ.
Une fois fait, ZBrush va automatiquement projeter sur cette géométrie de bas niveau tous les étages successifs.

Le problème, et qui se produit 7 fois sur 10, c’est que si la forme de votre nouvelle géométrie diffère un peu trop de votre géométrie d’origine, ZBrush va « perdre » la correspondance à cet endroit, c’est pourquoi on obtient des plaques vierges, où aucun détail ne sera projeté, et ces détails-là sont perdus…

Projection_w_Replacement

Vous pouvez toujours annuler cette opération, et modifier votre maillage low poly, mais vous travaillez à l’aveuglette, car en dehors de Zbrush, et à chaque import, vous vous demandez sur quel endroit ça va merder, passez-moi l’expression.

J’étofferai mon propos de la métaphore suivante :
imaginons que notre objet sculpté, avec ses niveaux de subdivisions, soit un bâtiment à étages.
Si on s’attaque aux fondations alors que le bâtiment est debout, il y a de grandes chances que ce qui se trouvait auparavant soutenu désormais s’effondre, si les fondations diffèrent.
Or, avec un objet distinct, on va littéralement faire un moulage de votre bâtiment existant, donc aucune détérioration.
On laisse les défauts derrière, pour ne garder que la nouvelle structure !

2014-01-12 13_48_09-ZBrush

Pensez un instant aux efforts que vous pouvez économiser avec un maillage qui serait passé par Dynamesh…

En gardant le maillage d’origine, et en le re-projetant sur notre nouveau maillage propre, successivement à chaque étape de subdivision, on récupèrera tous nos détails, ainsi que la couleur d’origine, sur notre nouvelle géométrie ! Et si quelque chose ne tournait pas bien, aucun souci, le processus n’est pas destructif pour le modèle de référence.

En quelques étapes, voici la procédure qui vous permettra de reconstruire votre masque sur votre nouvelle géométrie :

  • faire correspondre les niveaux de subdivision entre objet : pour commencer, il faut donc projeter le nouveau maillage sur le niveau 1 de la sculpture originale ;
  • enregistrez une MorphTarget de votre nouvel objet ;
  • appliquer la projection ;
  • subdiviser le nouvel objet ;
  • monter d’un cran dans les niveaux de subdivision de l’objet original ;
  • appliquer la projection ;
  • continuer jusqu’à atteindre le niveau de subdivision maximal de l’objet original, puis subdiviser encore une fois le nouvel objet, et appliquer à nouveau la projection.

Pourquoi ? Parce qu’avec le nouvel objet, on démarre avec beaucoup moins de polygones que l’objet référence, donc à niveau de subdivision égal, le nombre de polygones n’est pas égal, et il faut donc compenser cet écart.
La peinture doit suivre également.

Maintenant, on va être en mesure d’exporter une normal map à partir du nouvel objet, ainsi qu’une map de couleur (la map de spécularité n’est pas indispensable, vu que dans le film, le masque est brillant partout).

GuyFawkesDiffuse GuyFawkesNM

Replacez-vous au niveau de subdivision 1, et dans le menu des MorphTarget, cliquez sur Switch. Cette MorphTarget ne servira que pour les export de textures.

Voici donc les textures qui iront sur votre géométrie low poly, géométrie que vous pourrez enfin extruder, pour donner de l’épaisseur.

Guy_Fawkes_Creation_09Guy_Fawkes_Creation_08

En conclusion, la fonction Projection est une véritable bouée de sauvetage, et permet de franchir la barrière de la topologie, sans avoir besoin de baker les textures au préalable.
En outre, le but était de montrer que la Projection fonctionnait aussi sur des géométries non fermées.
En espérant que ceci vous ait donné foi en ZBrush !

Normal Map Generation from Handpainting

Vous cherchez la version française ? C’est par ici.

The exercise here is to start with a hand-painted texture, to get an normal map from it. For this job we’ll need an image editor (Photoshop may sound familiar, or The Gimp for the alternative), and ZBrush 4 at least, for its TimeLine feature. The goal here is to keep artistic freedom of manufactured texture, contrary to a procedural one, without sacrificing the benefits of normal map. For the first step, we’ll start with a square document, typically a 1024 pixels wide. Then it’s up to your imagination, or your references, to describe the pattern. Good ? Next step.

2014-02-13 10_11_29-AncientPavement_A_1024

Then, you’ll need to make this pattern tileable, without any unpleasant seams. To help us in this task, Photoshop offers a special, non-artistic filter : you can find it in
Filters -> Others -> Offset. When prompted, you should indicate values equal to the half of your document. Here, we’ll type in 512 pixels for X and Y. We’ll get the borders of the document in the middle, for an easier correction.
2014-02-13 10_10_06-AncientPavement_A_1024

Then, you’ll just have to draw to rest of the pattern, but try not to draw on borders, otherwise you’ll have to correct them again. I encourage you to draw irregular lines, because it will help to break the similarities of the pattern, and make it less artificial. When done, don’t forget to get back to your initial pattern, by applying Offset again. It should be the latest filter used, so you can recall it with CTRL + F.

2014-02-13 10_16_53-AncientPavement_A_1024
Before exporting your pattern for ZBrush, we need to turn this image into grayscale, and increase contrast. For that task, I’ll use Hue/Saturation, and Curves.

2014-02-13 10_16_55-AncientPavement_A_1024

Now the stencil map is ready ! Export in whatever format you want, and we’re done with the image editor.

Let’s switch to Zbrush now !

Preparation Part (ZBrush)

First thing to do in ZB, is to setup the document size : in 99% of cases, it would be rectangular. For the sake of this task, we need to make it square. It will greatly help the stencil. Let’s go to Document palette, and find the pixel values for X and Y.
Beware, uncheck « Pro« (-portional) to unlock the image ratio, and type 1024 for X and Y. When done, click on « New Document » button, three stories above, and validate. It will reinitialize your canvas, so that’s why you should start by this.

 

On the second time, you can now activate the TimeLine, if not already visible. You need to go to « Movie » menu, open SubPalette « TimeLine« , and click « Show« . That’s it. For further information, I suggest you to read Pixologic’s documentation : http://docs.pixologic.com/user-guide/movies/timeline/

2014-02-12 11_26_33-ZBrush
I anticipate a crucial question, which is :

but what the Timeline is for ? Isn’t it question of animation here ?

It’s right, we won’t be discussing of any animation, but we’ll use at our advantage a cool particularity of the TimeLine : as it is able to memorize location and rotation of any given object, that’s a very smart feature in ZB, because we don’t have such parameters per object like in a conventional 3D package. If we need to recall the same location to apply our stencil, the TimeLine will reveal quite handy !

Creation Part

Next, we need the simplest 3D primitive available : a plane. Once drawn on the canvas, we’ll immediatly edit it (T), and make it editable by clicking « Make PolyMesh 3D » in the Tool palette.
Now, we’ll have to import our texture pattern, to make it work as a stencil. But first, we need to load it in Zbrush as an alpha texture. Go to Alpha palette, Import,

2014-02-12 11_38_08-ZBrush

select the proper file, and go. After, open a sub-palette called Transfert, located below, and click on « Make St » (Make Stencil). If this option is unavailable, check if the alpha is actually selected, you never know. 😉

2014-02-12 11_38_35-ZBrush

And why using a stencil instead of a regular alpha mask ?

For the simple reason that we can lock a stencil on canvas borders, whereas an alpha mask is not, and solely depends on your stroke. That makes an additional source of approximation we can avoid. We could try Spotlight, but I did not yet. It would be worth to check if it can we locked as a stencil…
Now we can go to the Stencil palette, to activate it : in addition to « Use Stencil » button, you should press « Stretch« , and increase the Alpha Repeat value to 3. That gives us a visible pattern with sufficient space around.

2014-02-12 13_51_23-ZBrush
2014-02-12 13_51_08-ZBrush

 

2014-02-12 13_53_04-ZBrush
We need now to save the current state of the plane, via a Morph Target. Go to Tool palette, under the MorphTarget sub-palette, and click StoreMT. I’ll explain you why a little later.
2014-02-12 13_58_00-ZBrush 2014-02-12 13_58_06-ZBrush
The next task will be to put the plane under the central pattern, with an overlap on neighbour patterns. That done, we won’t find ourselves in lack of pattern information later when we will be going back in Photoshop. When you consider the plane meets every requirements, you can record its position in the Timeline. For that, simply click in the lower scale, at any place. A new solid orange circle would appear.
That’s our key, which I recommend to check if it had recorded the desired location and rotation. If correct, you can poursue.

2014-02-12 13_55_17-ZBrush
Before projecting the stencil, you should go in the Tool Palette, and deactivate the « Smt » (Smooth) button, next to the « Divide » button. That way your corners won’t get smoothed on the first iteration. In my case, the plane borders were creased, which is a sort of protection against the smoothing effect, but in case of doubt, it doesn’t hurt.

2014-02-12 13_56_53-ZBrush

For this job I’ve used the Layer Brush (shortcut : B + L + A), because it preserves existing details, and does not mess surface normal (and make the plane unnecessarily wavy), plus we can draw several times on the same spot, and it won’t accumulate.

The worst choice would be the Standard brush, because it would do exactly the contrary of aforementioned perks.

You could use Clay Brush (B + C + L), but not ClayBuildup, because of the « buildup » option.
The following is pretty straightforward : you apply the stencil all over the plane surface, then you subdivide, you paint the stencil, you subdivide, and so on, until you reach the seventh level of subdivision. There, we’ll get a total of 4 millions of polygons, which more than enough for our texturing needs.

2014-02-12 14_15_39-ZBrush
A 1024 pixels square texture contains circa 1.05 millions pixels. At level 6, we have already reached that number, but remember, we do not use every polygon of our plane for the final export, so it is always better to see larger at first, and then shrink to fit your needs. You won’t lose quality.
I could also say that the default texture size generated by Zbrush is 2048 px, which is fine, because we’ll have much more what we need, especially if we take in account the security margin, and the final adjustment in Photoshop.

Now the stencil part is over, we’ll start the sculpting. Texture has left crisp, jagged edges on the geometry, and we need now to smooth them, but caution, do not abuse of smoothing brush, otherwise you’ll wash away your details.

2014-02-12 14_29_52-ZBrush

It’s better to polish edges, with a TrimDynamic brush (B + T + D), which give a subtle but convincing look of worn stone. This task is a meticulous one.

You could also use the PenMash brush (CTRL + draw), to protect the surrounding edges from unwanted polishing. Moreover, I’ve used a Clay Brush, without alpha, to level up some areas of stones, and smooth them after. The DamStandard Brush (B + D + S) is a cool one to create scratches and grooves. I should recommend using alpha 40.
After doing, this is what I’ve obtained :
2014-02-12 14_37_45-ZBrush

 

For the normal map export procedure, we need first to go to the lowest level of subdivision, I mean level 1. At this point we can notice that our plane is not so flat anymore… That’s now the Morph Target would reveal very precious, and in one click, our prefect plane would come back.

But why is it so important ?

Because normal map calculation is made from low-poly state and high-poly state, the difference of location vertices has a direct impact on the resulting normal map. A non flat plane would create a less accurate map, instead of a real flat one, unless we want our geometry not to be flat.
In the Normal map panel, don’t forget to activate the « Tangeant » button, otherwise it would be the world space normal map that would be generated, and not the tangeant one, which is the one we want.

Also activate « FlipG » (flip Green) button. This later button inverts the Y axis on computation, and therefore our normal map would render correctly, and not reversed.
Click on « Create Normal Map« , and let Zbrush do its work… And the little blueish thumbnail appears, which informs us of the completion of the process. But we’re still not out of Zbrush !
Just a few steps left… If you are new to ZBrush texture management (old school way), here is the trick : in the same panel, click on « Clone NM« , and then go to the Texture Palette. Check if the Normal Map is not upside-down. In my situation it was not the case. But Zbrush is known to work upside-down. So, beware. You can flip the texture vertically inside ZBrush, or in Photoshop, that’s up to you. Click on Export, and… give it a name.

Back into the Image Editor

The following is pretty simple. Import your newly acquired Normal Map file into your original texture, decrease opacity, and shrink it and move it to match the underlying pattern. If you do it carefully, you may have only a 1-2 pixels error, which is really low, and unnoticeable at runtime. This is the only manual crafting part, I hope to find later a better way to avoid this trick.
2014-02-12 15_07_30-AncientPavement_A_1024

And now, a render in a realtime engine, without and with the Normal Map.

2014-02-13 11_35_312014-02-13 11_35_56

I needed about three hours to make normal and painting, plus the tries and errors. With some training, I could have added more fine details, the current surface look quite plastic… But it has bumps !
I hope this tutorial would have make you feel like to try other patterns, or crank up your painted textures !

Normal Map depuis une texture peinte

Looking for english version ? Click here.

L’exercice ici est de partir d’une texture manufacturée (faite à la main, donc, contrairement à une texture procédurale ou encore photographiée), pour obtenir une Normal Map.
Pour cela on va avoir besoin d’une application graphique (Photoshop, ou Gimp), et de ZBrush 4 (pour la fonction de Timeline).
Le but est de garder la liberté artistique de la texture peinte à la main, sans pour autant faire l’impasse sur la Normap Map, qui elle relève d’un calcul logiciel.
À l’inverse, avec une texture procédurale, obtenir une Normal map est une simple formalité, mais c’est la personnalisation de la texture en elle-même qui devient délicate.
Pour la première étape, il nous faut un fichier de format carré, disons 1024 px de côté.
Puis on dessine l’ébauche du carrelage. Bien.

2014-02-13 10_11_29-AncientPavement_A_1024

Ensuite, il faut s’assurer que cette texture « boucle » bien. Je veux dire, si la juxtaposition du motif ne va pas montrer des faux raccords. Dans Photoshop, c’est avec un filtre que l’on va mettre en évidence ces faux raccords pour les corriger.
Il se trouve à cet emplacement : Filtres -> Divers -> Translation. Une fenêtre de réglages s’ouvre. Idéalement, il faut y indiquer la moitié de la taille de notre image : 1024/2 = 512, pour X et Y. On valide et on voit le résultat. Les faux raccords devraient être bien visibles désormais.

2014-02-13 10_10_06-AncientPavement_A_1024

Et bien le travail consiste à dessiner le contour des pierres, pour avoir un tracé qui soit agréable à l’œil, même si ça n’est pas bien droit. Au contraire, ça rend les contours du motif moins identifiables. Attention à ne pas retracer les contours qui se trouvent maintenant sur les bords du document, car on risquerait d’avoir à les retracer aussi avant l’export pour ZBrush.
Quand la correction est faite, très important, il faut revenir à la disposition originale de la texture (quoique en l’état elle se répète bien), en appliquant une fois de plus le filtre Translation, avec les même valeurs.

2014-02-13 10_16_53-AncientPavement_A_1024

Enfin, avant d’exporter ce motif pour ZBrush, on va modifier les couleurs pour bien distinguer la pierre des interstices. On dé-sature l’image, et on augmente les contrastes, et voilà la texture prête à faire office de pochoir !

2014-02-13 10_16_55-AncientPavement_A_1024

On peut passer à ZBrush désormais.

Partie préparation(ZBrush)

Première chose à faire, c’est de définir la taille du document ZBrush, pour qu’il corresponde au ratio de notre texture. Ça va aider plus tard pour la bonne répétition du pochoir.
Il faut se rendre dans le menu Document, et plus bas, se trouvent les dimensions en X et Y. Désactivez le gros bouton « Pro« (-portional) au préalable, car il sert de contrainte de ratio. Quand c’est fait, vous n’avez plus qu’à cliquer sur « New Document« , placé trois étages au dessus, et ensuite confirmer votre choix.

2014-02-12 11_43_13-ZBrush

Deuxième chose à faire, activer la TimeLine, si elle n’était pas déjà visible. Il faut se rendre pour cela dans le Menu Movie -> TimeLine, et cliquer sur « Show« .

Pourquoi avoir besoin de la TimeLine, alors qu’on ne va pas faire d’animation ?

C’est vrai, on ne va pas faire d’animation. Mais le gros avantage ici, c’est que la TL va nous permettre de garder en mémoire la position et l’orientation exacte d’un ZTool, et d’y faire appel à tout moment, car par défaut ZBrush ne nous permet pas de sauvegarder la position et la rotation par objet, comme le ferait un logiciel 3D classique. Sans cela, ça rendrait l’application d’un pochoir très aléatoire.

Partie Création

Ensuite, pour le choix de la primitive, on va très simplement prendre un Plane3D, qu’on va immédiatement convertir en PolyMesh3D, pour le sculpter.

Bien, on va charger la texture qu’on a créée, pour en faire un pochoir (un Stencil, dans ZBrush). Pour cela, il faut aller dans le menu Alpha -> Import… Puis on désigne la bonne texture, et quand c’est fait, il faut, plus bas dans le menu, ouvrir la sous-palette « Transfer« , et cliquer sur « Make St » (Make Stencil). Voilà pour ça !

 

Et pourquoi on fait un Stencil au lieu d’utiliser simplement la texture en Alpha ?

Pour la simple et bonne raison que le Stencil est calé sur les bords du document, et donc ne bougera pas, alors que l’Alpha sera appliqué uniquement selon l’endroit où l’on clique, donc source d’approximation.
Maintenant il s’agit d’aller dans le menu « Stencil« , pour activer le pochoir à proprement parler. Problème, par défaut, celui-ci n’est pas aligné au centre du document.
Pour ma part, j’ai activé « Stretch« , puis j’ai augmenté le nombre « Alpha Repeat » à 3, afin d’avoir au moins 1 motif en entier, et suffisamment dégagé des bords du document.

2014-02-12 13_51_23-ZBrush

2014-02-12 13_53_04-ZBrush

2014-02-12 13_53_04-ZBrush

Ensuite, il s’agit de positionner le PolyMesh sous ce motif, là aussi en se gardant de l’espace tout autour. Quand il est en place, il faut créer une clé dans la TimeLine, simplement en cliquant dans celle du bas, à un instant quelconque. La nouvelle clé est en orange plein.

2014-02-12 13_55_17-ZBrush

Ne pas hésiter à vérifier qu’elle correspond bien à l’emplacement souhaité en déplaçant le plan, puis en manipulant la tête de lecture !
Et, dernière chose avant de commencer à subdiviser , il faut se rendre dans le sous-menu MorphTarget, situé dans « Tool« , et cliquer sur StoreMT. Il faut le faire tant que le plan est encore plat. J’expliquerai plus tard l’utilité de cette option.

2014-02-12 13_58_00-ZBrush 2014-02-12 13_58_06-ZBrush

Maintenant que ces préparations sont faites, on peut donc commencer le transfert de relief !
Désactivez « Smt » (Smooth) dans la partie Geometry du même menu Tool. Même si les bordures sont déclarées comme « Dures » (Creased) dans ZBrush, cela évitera que le plan n’ait les bordures courbées par la subdivision, de toutes façons.
Pour la brosse qui servira à appliquer le pochoir, je préconise la brosse « Layer » (raccourci : B + L + A), car elle préserve les reliefs existants, et l’on peut repasser plusieurs fois au même endroit, elle ne s’accumule pas, et elle projette dans une même direction.

Ne surtout pas utiliser la brosse « Standard », car elle va faire gondoler le sol.

Idem pour la brosse ClayBuildup, car elle est accumulative. La brosse Clay n’a pas cette caractéristique, et pourrait être retenue, mais par sûreté je préfère prendre Layer, car je n’ai pas besoin de rajouter un relief autre que celui du pochoir, CQFD.
La suite est assez directe : on dessine sur toute la surface du plan, ce qui va appliquer le pochoir, on subdivise, on dessine, on subdivise encore, et on répète l’opération jusqu’à arriver au niveau 7.
On dispose d’un plan faisant plus de 4 millions de polygones, ce qui est plus que suffisant.

2014-02-12 14_15_39-ZBrush

On aurait même pu s’arrêter un cran avant, à 1.05 million, mais on n’aurait pas atteint le nombre de pixels existants pour  occuper l’intégralité d’une texture de 1024px de côté (1024 x 1024 = 1.048.576), compte tenu de la marge qu’on s’est donnée autour du motif sur le plan. Et oui, il y a un peu de déchet sur les côtés, donc tous les polygones ne seront pas exploités pour exporter les textures.
J’en profite aussi pour dire que la taille de la texture qui sera exportée sera de 2048 px de large, donc deux fois plus grande que ce qu’il nous faut. On laisse ainsi, car il est préférable d’avoir beaucoup de marge pour réduire la taille de cette image, plutôt que de se retrouver avec une textures d’une taille inférieure, ce qui se paye forcément par une qualité détériorée.
Bien, maintenant que le relief est posé, on va pouvoir lisser les contours des dalles, et ajouter les détails. C’est un processus qui s’annonce minutieux.

2014-02-12 14_29_52-ZBrush

Pour lisser les contours, j’utilise TrimDynamic (Raccourci : B + T + D), en conjonction avec le PenMask (CTRL + dessin sur la surface), pour protéger les arêtes voisines. Ainsi, cela polit les arrêtes franches.
Pour donner de l’élévation aux pierres, j’utilise Clay (B + C + L), mais sans Alpha, et j’atténue aussitôt avec la brosse Smooth (SHIFT). Pour les griffures, c’est avec la brosse DamStandard (B + D + S), mais que j’emploie avec un autre alpha, bien plus petit, c’est l’alpha 40.
Au bout du compte, vous devriez obtenir ceci :

2014-02-12 14_37_45-ZBrush

Pour exporter la Normal Map, il faut replacer le niveau de subdivision au plus bas de l’objet, c’est à dire 1. C’est là qu’on s’aperçoit que notre plan n’est plus tout à fait plan ! C’est pour cela que je vous ai demandé de créer une MorphTarget en début de processus, car celle elle qui va nous rendre un plan intact.

Pourquoi est-ce important ?

Parce que pour calculer les normales, ZBrush va analyser la différence de distance entre les géométries de bas niveau et de haut niveau. La distance qui sépare les points entre eux influence directement le résultat de la Normal Map. Si l’on avait pas rétabli la planéité de l’objet, le relief de la Normal Map serait plus faible qu’il ne l’est en réalité, alors que calculé sur un objet plat (ce qui est le cas pour mon besoin), la texture générée sera davantage fidèle à ce que j’ai sculpté !
On permute donc les MorphTarget, et on peut s’intéresser à la création de Normal Map.
Dans le panneau Normap Map, ne pas oublier d’activer « Tangeant« , sinon la texture ne sera pas utilisable, car en world-space, et pas en tangeant-space comme il nous le faudrait, ainsi que le petit bouton « FlipG« , qui va inverser la provenance de l’axe Y… Qui a un impact sur le relief.
On clique sur « Create Normal Map« , puis on laisse Zbrush faire ses calculs… Et la petite vignette bleutée s’affiche, signe que la texture est prête, mais pas encore sortie de ZB !
Si vous ne connaissez pas déjà la manipulation, la voici alors : toujours dans ce même espace, cliquez sur « Clone NM« , ce qui va la copier dans le menu « Texture« . Dans cet autre menu, une fois sélectionnée, il faudra cliquer sur « Export« , et choisir un nom et un format de fichier pour cette texture.
J’ajoute que d’ordinaire ZBrush travaille avec l’axe Y des textures inversé par rapport aux autres logiciels, mais la situation actuelle , celle-ci est dans le bon sens, et m’épargne donc d’avoir à faire l’opération moi-même dans Photoshop.

Retour dans l’éditeur d’image

Enfin, revenons sur notre texture originale en 1024 px, dans laquelle on insère la Normal Map en 2048 px, et que la réduction va nous permettre de recaler plus ou moins exactement sur les pixels existants, compte tenu de la marge qu’on s’était donnée. C’est la seule partie vraiment manuelle, mais d’après moi si vous faites le calage sérieusement, vous n’avez qu’une marge d’erreur d’un ou deux pixels, ce qui ne se verra pas dans notre cas.

2014-02-12 15_07_30-AncientPavement_A_1024

Voici un petit aperçu dans un moteur temp-réel de la surface, sans Normal Map, et avec.

2014-02-13 11_35_312014-02-13 11_35_56

Cela m’a demandé trois heures pour faire le processus, en comptant les essais et erreurs, et on pourrait améliorer cette texture en y rajoutant davantage de détails fins.
J’espère que ce processus vous donnera d’autres idées, ou d’oser expérimenter de nouvelles textures !