Texturer en Camera Mapping

Texturer en Camera Mapping
Niveau :
Introduction
Le Camera Mapping est une technique qui consiste à projeter une image 2D sur un modèle 3D afin de la mettre en volume, et ainsi pouvoir l'utiliser dans une animation. Toutefois, ce procédé a ses limites, et le déplacement de la caméra de prise de vue ne peut guère se faire alors qu'en travelling avant ou arrière et sans s'éloigner de plus de 15-20° de l'axe de la caméra de projection. Cependant, le Camera Mapping possède un gros avantage : sa facilité de mise en œuvre en regard du résultat photo-réaliste obtenu.Tout ceci, pour en venir l'objet de ce tutoriel qui est une variante du Camera Mapping, puisque l'image 2D n'est pas l'élément de départ : c'est la scène 3D qui va nous servir de base pour réaliser l'image à projeter. L'idée est d'utiliser la projection d'image pour texturer rapidement un ensemble d'objets, que ce soit pour faire des tests de rendu, ou comme texture définitive. Autre atout du procédé : le gain de temps sur les rendus sous Blender.
La mise en œuvre se fait en 3 étapes :
1. Extraire de la scène la géométrie des objets à texturer.
2. Utiliser celle-ci sous Gimp (ou autre) pour construire l'image des textures à projeter.
3. Sous Blender, appliquer l'image obtenue aux objets concernés.
Pour la clarté des explications, la scène de démonstration est très simplement constituée d'un plan sur lequel 2 cubes en sustentation projettent leur ombre.
Les captures d'écran proviennent des versions 2.48 de Blender et 2.4.6 de Gimp
Etape 1 : Extraction de la géométrie des objets
Pour ce faire nous allons utiliser les Index Objets afin de définir des niveaux de gris qui pourront facilement être discriminés sous Gimp :
1. Attribuer des numéros arbitraires d'index (PassIndex) aux objets :
2. Paramétrer le rendu avec les nodes :
3. Créer la composition nodale qui, pour l'essentiel, enregistre dans 3 fichiers (test, test1 et test2) les passes choisies :
- Ce sont les paramètres Size des nœuds Map Value qui règlent l'échelle des gris des images de sortie.
- Évidemment, si plusieurs objets portent le même numéro d'index, ils apparaitront dans la même tonalité de gris.
Etape 2 : Création des textures sous Gimp
Nous n'allons pas aborder ici le détail des manipulations à effectuer sous Gimp pour obtenir l'image de Mapping. Cela sortirait du cadre de ce tutoriel. Ce qui suit se veut seulement un guide d'utilisation des images créées à l'étape précédente.
1. Intégrer les images test, test1 et test2 - postfixées du numéro de Frame lors de l'enregistrement - dans un nouveau document et lui ajouter un calque transparent :

Dans ce qui suit, (FI) = manipulation a effectuer dans la fenêtre image |
d. C'est sur ce nouveau calque et d'autres éventuellement ajoutés que nous allons construire notre image de Mapping.
c. Calque créé par glisser/déposer du fichier 'test2' (FI).
b. Calque créé par glisser/déposer du fichier 'test1' (FI).
a. Calque créé par ouverture du fichier 'test' avec Gimp.
2. Par sélection basée sur la couleur, délimiter les zones à texturer, puis leur appliquer les textures choisies comme ici pour le plan :

b. Remplir la sélection sur ce calque, avec la texture choisie, par glisser/déposer ou Shift + B (FI).
-. Calque rendu invisible...
a. Effectuer la sélection par couleur (Shift + O) sur ce calque (FI)
Les mêmes manipulations sont à répéter pour chaque partie à texturer en utilisant au besoin les deux autres images importées de Blender. C'est ce qui a été fait ici pour les cubes, dont les faces supérieures ont été délimitées à l'aide de l'image 'Arrière-plan' :
3. Enregistrer l'image, éventuellement avec son canal Alpha. Dans le cas présent, elle est enregistrée au format JPG, donc sans canal Alpha, sous le nom de fichier cammap.jpg
Etape 3 : Le Camera Mapping
Bien ! Nous allons maintenant projeter cette image sur les différents objets concernés de la scène. Sous Blender, cela est réalisable en utilisant le modificateur UVProject : le plaquage UV sans les problèmes de dépliage...
Pour commencer, déclarons comme 'projecteur' la caméra qui nous a servi à l'étape 1 pour obtenir les images test, test1 et test2. Ainsi, pas de problème de cadrage à résoudre. Elle est identifiée CameraProj dans notre exemple.
1. Créer pour chaque objet concerné - ici le plan - un nouveau calque de texture UV et lui appliquer notre image :
2. Ajouter à l'objet un modificateur UVProject et le paramétrer :
A propos du modificateur UVProject :
- AspX et AspY doivent être réglés au ratio des dimensions de l'image : ici 800 / 600 pixels = 1.33
- Pour un résultat correct, le mesh doit être subdivisé (comme ci-dessus)
- Le champ Image permet , s'il est renseigné, de limiter l'application de la texture aux faces affectées par l'image.
- Override Image provoque l'écrasement de toute autre image par celle qui est projetée.
- Lorsque plusieurs projecteurs sont déclarés, c'est le projecteur dont l'axe de projection est le plus perpendiculaire à la face considérée qui est utilisé.
3. Créer un nouveau matériau et activer le bouton TexFace ou mieux, charger l'image comme texture image. Pour cette seconde option, sous l'onglet Map Input, activer UV et entrer le nom de la texture UV (par défaut UVTex) puis créer une texture image :
- Le même matériau peut bien sûr, être utilisé pour les 3 objets que comporte notre scène.
- A noter que cette dernière étape est indispensable pour que la texture apparaisse au rendu.
Conclusion :
A l'issue de ce tutoriel, nous avons une scène dans laquelle il suffit d'ajouter une caméra de prise de vue (CameraAnim) et de l'animer - dans les limites édictées en introduction - pour avoir un aperçu des possibilités du Camera Mapping.
Cet exemple est simplissime, mais cette technique peut, du fait de sa rapidité de mise en œuvre, être une alternative intéressante à un texturage complet de tout ou partie des objets d'une scène. De plus, d'autres passes de rendu que celles sélectionnées dans cet exemple peuvent être mises à contribution pour élaborer l'image 2D, ou les images 2D lorsque l'utilisation de plusieurs canaux de texture est envisagée.
Télécharger le fichier exemple cammap.blend (avec une animation paramétrée).
tutoriel rédigé pour le Blender Clan par Egon, 23 décembre 2008