Passer au contenu principal

Texture photogrammétrie

Une texture pour un objet 3D n'est pas seulement une simple image que l'on ira plaquer sur notre objet 3D.
Une texture peut être beaucoup plus complexe et faire appel à plusieurs images pour obtenir certains effets particuliers.

La première chose à faire est de vous reporter au tutoriel sur la photogrammétrie afin de réaliser une photogrammétrie de l'objet que vous voudrez voir transformé en texture.

Pour ce tutoriel, nous allons utiliser un modèle qui n'est pas du tout idéal pour ça mais qui permet de bien se rendre compte du processus.
Ce modèle est tout simplement celui utilisé pour le tutoriel "photogrammétrie".

Pour arriver à notre texture, suivez donc ce tutoriel jusqu'à l'étape MeshLab, étape changeant complètement pour ce besoin particulier.

Il nous faudra faire appel à un logiciel particulier, non utilisé dans le tuto sur la photogrammétrie : xNormal

MeshLab

Ouverture des fichiers

Ouvrez votre fichier NVM ainsi que le modèle 3D que vous avez créé :

mltt01.png

Nous pouvons voir sur notre capture que l'objet 3D n'est pas orienté convenablement et ne nous fait pas face.
Dans la colonne à droite, désélectionnez le nuage de point en cliquant sur le petit œil situé à sa gauche et sélectionner l'objet 3D encore visible.

Ré-orientation des objets

Une fois cela fait nous allons ré-orienter notre objet au moyen du Manipulators Tool :

mltt02.png

Jusqu'à obtenir notre objet convenablement orienté. Attention, il vous faudra sans doute un peu d'entraînement, ce n'est pas une chose spécialement facile à réaliser.
Comme dans beaucoup de logiciels 3D, il vous est possible de modifier la vue au moyen des touches du pavé numérique, 1 et 3 vous proposant la vue de face et de côté, 7 la vue du haut.

Le principal est donc d'arriver à avoir votre objet de face. Nous avons ici également couper les bords de l'objet :

mltt03.png

Une fois cela fait, dans la colonne de droite, rendez à nouveau visible votre nuage de points et faites un click droit sur le modèle 3D, faisant apparaître le menu suivant :

mltt04.png

Dans ce menu, sélectionnez Matrix : Set/copy transformation, faisant apparaître la fenêtre suivante :

mltt05.png

Dans cette fenêtre, commencez par choisir Read from current Layer.
Toutes les modifications faites à notre modèle pour l'avoir de face vont apparaître sous forme de matrice.

Cochez la case Apply to all visible Layers et appliquez.

Tous les calques seront modifiés afin d'être alignés sur le calque que vous avez modifié :

mltt06.png

Création d'une texture plate

Attention! MeshLab a un petit bug au niveau de la création des textures plates, raison pour laquelle la procédure suivante peut sembler "bizarre" et qui ne sera peut-être plus aussi longue à l'avenir s'ils venaient à corriger cela.

Maintenant que notre objet est orienté convenablement, rendez-vous dans Filters, allez dans Texture et choisissez Parametrization : Flat plane.

La fenêtre suivante s'affichera, dans laquelle il faut cocher Preserve Ratio et s'assurer que Projection plane soit bien sur XY :

mltt07.png

Rendez-vous à nouveau dans Filters, puis Texture et choisissez maintenant Project active rasters colors to current mesh, filling the texture, ce qui fera apparaître la fenêtre suivante :

mltt08.png

C'est donc dans cette fenêtre que vous indiquerez le nom du fichier image ainsi que sa dimension.

Si vous appliquez, le processus se déroulera convenablement, mais aucune texture n'apparaitra sur votre objet, c'est là qu'est le bug.

Pour que la texture soit appliquée, retournez dans Filters, allez dans Texture et choisissez Parametrization : Trivial per-triangle, ce qui fera apparaître la fenêtre suivante :

mltt09.png

Modifiez la résolution et le Inter-Triangle Border jusqu'à ce qu'il accepte d'appliquer le filtre.

En principe, à ce moment là, vous deviez vous retrouver avec votre objet texturé mais dont la texture est appliquée n'importe comment :

mltt10.png

Rendez-vous à nouveau dans FiltersTexture et Parametrization : Flat plane en ré-appliquant les paramètres entré lors de la première utilisation. Après application, nous aurons, enfin, notre objet texturé :

mltt11.png

Sauvegardez votre fichier en OBJ.

Création d'un modèle plat

xNormal est un logiciel qui permet de transférer sous forme de texture les détails d'un modèle 3D très complexe vers un modèle 3D moins complexe.

Un texture étant un élément plat, le modèle 3D moins complexe en question sera donc une surface plane.

Néanmoins, nous ne pouvons pas simplement lancer un logiciel de modélisation et créer une surface pour l'exporter par la suite, ce serait trop simple…

Dans Meshlab, vous allez relancer les transformateurs vus plus haut et effectuer un redimensionnement en Z jusqu'à avoir aplati totalement votre modèle :

mlredim01.pngmlredim02.png mlredim03.pngmlredim04.png

Une fois cela fait, dans la colonne de droite, faites un click droit sur le nom de votre modèle et sélectionnez Matrix : Freeze current matrix.

Il va maintenant nous falloir réduire le nombre de triangles format notre objet.

Pour cela, affichez, au moyen des outils de la barre située au-dessus de la fenêtre de visualisation de l'objet 3D, les triangles de votre objet. comme on peut le voir, il y en a beaucoup :

mltt12.png

Rendez-vous ensuite dans Filters, puis dans Remeshing, Simplification and Reconstruction et choisissez Simplification : Quadric Edge Collapse Decimation (with texture), faisant apparaître la fenêtre suivante :

mlquadric.png

Le premier nombre indiqué correspond à la moitié du nombre de faces formant notre objet et est donc le nombre de face qu'aura notre objet si nous appliquons le filtre tel quel.

Attention! Ne jamais passer à moins de la moitié du nombre de faces. Il vaut mieux répéter plusieurs fois l'opération jusqu'à obtenir ce que l'on désire que directement indiquer une faible valeur. Ainsi si vous voulez passer de 1 million à 10000, faîtes 1M - 500k - 250k - 130k - 70k - 40k - 20k - 10k…

Dans notre cas nous descendrons jusqu'à obtenir quelque chose ressemblant à ceci :

mltt13.png

Sauvez ce nouvel objet au format OBJ sous un nouveau nom.

Nous pouvons maintenant passer à …

Voici la fenêtre qui apparaîtra lorsque vous lancerez le logiciel :

xno01.png

Configuration

La première chose que nous allons faire est configurer le logiciel. Pour cela cliquer sur la petite prise située en bas à gauche de la fenêtre, ce qui fera apparaître la fenêtre suivante :

xno02.png

Allez dans l'onglet Image exporters et sélectionner dans cette liste TIFF Exporter, ce qui fera apparaître un bouton "Configure" qui ouvrira la fenêtre suivante :xno03.png

Il est très important de faire passer le Bits per channel à 16 s'il n'est pas déjà sur cette valeur.

Nous travaillerons en TIFF car ce format permet justement de sauvegarder des images en 16bits et non en 8.

Cette différence est-il importante? Oui! 8 bits signifie que chaque couleur est codée sur 8 bits et peut donc être déclinée en 256 variantes, du noir à la couleur pleine, rouge, verte ou bleu.

Cela permet donc d'arriver à 256*256*256 couleurs affichées, soit un peu plus de 16 millions de couleurs.

Néanmoins, pour aller du noir au blanc, les trois couleurs de bases auront la même valeur et ça ne fera donc qu'un dégradé possible de 256 couleurs.

Cela peut déjà sembler beaucoup mais est insuffisant pour une utilisation dans le cadre d'une texture car elle créera un effet d'escalier visible :

8 bits 16 bits
col08.png col16.png

col0802.png

Si vous vous baladez dans le reste des options, vous verrez qu'il est possible de mettre le logiciel en français. Ne le faites pas!!! C'est une Google traduction qui n'a ni queue ni tête.

Ouvertures des modèles

Nous allons maintenant ouvrir nos deux modèles 3D.

Rendez-vous dans la colonne de droite et cliquez sur High definition meshes, ce qui vous amènera à cette fenêtre :

xno04.png

Faites un click droit sur cette ligne et cliquez sur Add Meshes pour rajouter le modèle 3D non-aplati.
Faites un nouveau click droit et cliquez sur Base texture to bake en choisissant alors la texture utilisée pour cet objet.

Dans la colonne de droite, cliquez maintenant sur Low definition meshes qui vous aménera à une fenêtre similaire dans laquelle vous pourrez indiquer votre modèle 3D plat.
Il n'y a pas besoin d'indiquer une texture.

Configuration de la texture

Dans la colonne de droite, cliquez sur Baking options, ce qui fera apparaître cette fenêtre :

xno06.png

Dans Output file, vous indiquerez le nom de votre texture. N'oubliez pas d'indiquez que vous voulez travailler en TIFF.

Dans la section Maps to render vous retrouverez toutes les cartes qui seront générées pour composer votre texture (Vous retrouverez plus bas le résultat de chacune de ces cartes.)

Une fois cela fait…

Création de la texture

Cliquez maintenant sur

xno08.png

et voici ce qui devrait se passer :

amenant au résultat suivant :

Texture de base

matexture_basetexbaked.jpg

Normals

matexture_normals.jpg

Heights

matexture_heights.jpg

Occlusion

matexture_occlusion.jpg

Bent normals

matexture_bent_normals.jpg

PRTP

matexture_prtp.jpg

PRTN

matexture_prtn.jpg

Convexity

matexture_convexity.jpg

Thickness

matexture_thickness.jpg

Proximity

matexture_proximity.jpg

Wire rays

matexture_wire_rays.jpg

Cavity

matexture_cavity.jpg

Résultats

texture00.png

texture01.pngtexture02.png texture03.pngtexture04.png