Création personnage Low Poly

Document sans nom


Modélisation et texturage d’un personnage Low-poly destiné
au temps-réel (jeux vidéo)





Modélisation


Pour ce tutorial, je vais supposer que vous maitriser les bases de la modélisation. D’ailleurs je ne vais pas expliquer comment modéliser votre personnage/objet puisque d’autre le font bien mieux que moi et ce n’est pas le but visé ici. Je vais simplement vous donner des règles à garder en tète lors de la modélisation :

Le plus important est de minimiser au maximum le nombre de polygone. C’est vraiment important. Les cartes graphiques normales (à la différence des cartes graphiques professionnelles) sont conçues pour afficher assez peu de polygones et mise beaucoup sur les filtres et les shaders pour créer une image belle et réaliste. Si votre modèle est trop lourd, l’affichage en sera très ralenti. Pour donner un ordre de grandeur, mon modèle comporte 700 quads (1300 triangles), ce qui est encore bien élevé.



Autre principe très important, il faut détailler ce qui est visible et pas le reste. Pour une modélisation low-poly comme celle là, la majorité des détails sera contenue dans la texture. Au final, le mesh n’est qu’un support pour les détails de cette dernière. Il faut se concentrer notamment sur la silhouette du mesh (à part les textures de displace qui modifie vraiment la position des points, aucune texture ne pourra améliorer la silhouette d’un objet).

Troisième point, il est conseillé de modéliser des mesh fermés. Utilisez la commande Ctrl + Alt + Maj + M en mode édit pour sélectionner tout les vertices/edges qui sont « non-manifold ». En gros ça regroupe les « trous » dans le maillage et les géométries étranges comme 3 faces pour 1 edges. Dans tout les cas, ce n’est pas bon. Pourquoi des mesh fermés ? C’est nécessaire notamment si votre jeu utilise l’ombrage dynamique de type shadow volume. Concrètement c’est une technique qui va créer un mesh d’après la silhouette de votre mesh pour empêcher les lampes d’éclairer les objets contenue dans la zone d’ombre. Si votre mesh n’est pas fermé, l’algorithme ne pourra pas déterminer sa silhouette, et donc pas d’ombre. Par contre, rien n’empêche de faire un mesh en plusieurs parties fermées (par exemple le chapeau et le vers sont séparés sur mon modèle).



Une fois la modélisation terminée, c’est une bonne idée de la reprendre pour grappiller des
polygones à droite, à gauche. Pensez aux zones qui se voient peu. Sélectionnez des séries d’edges comme sur l’image et faites Mesh/Edges/collapse. Le maillage reste propre et on a économisé des dizaines de polygones. A noter que cette technique ne détruit pas les UV, on peut donc optimiser son maillage même après le texturage.

Nous voilà maintenant en possession d’un modèle à peu près optimisé (youplaboum).


UV Mapping


Il est maintenant temps de donner des couleurs à notre modèle. Pour ça, une seule solution, l’uvmapping. Là non plus je ne vais pas réexpliquer la technique, mais je vais rappeler quelque astuce.
Premièrement, il faut placer les seams (Ctrl+E) sur le modèle. Privilégiez les zones non visible, les cassures dans le modèle (comme le bord extérieure du chapeau), ou des séparations franches des couleurs dans la future texture. Le risque c’est que ces coutures soient visibles après le texturage, donc autant les mettre dans des endroits où l’oeil ne s’attarde pas trop.

Ensuite l’unwrap proprement dit. Ouvrez une fenêtre UV/image editor à coté de votre modèle
et passez en mode UV face select. Sélectionnez toutes les faces et dépliez-les avec la touche E. Si les faces se chevauchent, reprenez les seams.

Une fois que tout est bien à plat il faut réussir à tout casser dans la même texture. Pour cela, on a à notre disposition plusieurs raccourcis clavier :
Ctrl + L : Select Linked, qui permet de selectionner chaque morceau d’un coup.
R,S,G : Rotate, Scale et Grab, qui permettent de tourner, redimensionner et bouger les morceau.



Gardez bien une séparation entre chaque morceau, j’expliquerai plus tard pourquoi.

Ayé, le dépliage est terminé, on passe au texturage proprement dit.

Texturage



Pour le temps réel, on a à notre disposition différent type de texture :
Les textures de couleur (diffuse).
Les textures de relief (bump map et normal map) qui vont simuler du relief sur notre modèle. A noter qu’il existe deux types de normal map, celle en objet space (qui sont de toute les couleurs) et celle en tangent space (celle avec une dominance de bleu). Blender est capable de générer des normal map en objet space, mais pour les jeux vidéo on utilise les autres, pas de bol ^^. Cependant il existe des logiciels comme DENormGen capable de les générer, et d’autre qui sont capable de convertir un type de map en l’autre. Je vous renvoie au très bon tutorial de Alt-ligury ici (EDIT : Depuis la version 2.46, Blender est capable de générer des tangent space \o/ ).
Les textures de déplacement (displace map) qui vont déplacer les points au moment du rendu. Assez peu utilisée actuellement, c’est le futur (lointain) du jeu vidéo.

Pour notre modèle qui est un perso toon, une simple texture de couleur suffira. Il n’y a pas de raison de rajouter un relief particulier. Cependant nous allons nous aider d’une fonction plus que géniale de Blender, le baking.

On est partis. Pour commencer, il faut choisir une taille pour notre texture. Pour du temps réel, l’idéal est d’avoir une seule texture pour tout le modèle. Dans tout les cas elle devra être carré et ses dimensions des puissances de 2 (128x128, 256x256, 512x512 …). Pourquoi cette règle ? Encore une fois c’est à cause des cartes graphiques. Elles sont optimisées pour ces tailles de texture. Pensez aussi à adapter la taille de la texture au niveau de détails que vous voulez mettre puisque plus la texture sera grande, plus l’affichage sera lent. Dans mon cas, j’ai utilisé une map de 1024².

Une fois la taille choisis, on crée une nouvelle image dans l’image editor en mode UV face select. On active l’ambient occlusion et on le pousse à fond (on fera le calcul qu’une fois donc autant le faire bien). Le réglage pour l’Energy c’est au pifomètre. Moi je l’ai un peu augmenté mais de toute façon on pourra éclaircir le résultat plus tard.


Il reste plus qu’a baker l’ambient occlusion. Ca se passe dans les panneaux de rendu. On sélectionne « ambient occlusion » et on augmente beaucoup le Margin avant de lancer le baking.



Il reste plus qu’a se reposer en admirant le travail de Blender. Pendant ce temps, je vais vous expliquer pourquoi il faut augmenter le Margin. Dans beaucoup de jeu, le moteur utilise ce qu’on appelle des mipmaps. Ce sont des textures de plus faible résolution qui sont générés par le jeu à partir de notre texture. Suivant la distance entre le modèle et la caméra, le moteur va ajuster la taille de la texture pour soulager l’affichage. Le problème qui se pose c’est que sans marge, on va voir clairement les coutures sur le modèle texturé. Explication : Lors de la réduction de la taille de la texture (ré-échantillonnage), le moteur va utiliser plusieurs pixel pour n’en faire qu’un. Pour passer d’une map de 1024x1024 à 256x256, il va utiliser 16 pixels pour en calculer 1. Pour les pixels près des coutures, il va donc utiliser la couleur normale, mais aussi la couleur du fond (noir ici) et donc faire apparaitre les coutures. Avec le Margin, plus de problème :-)

Quand le baking est terminé, on enregistre l’image (Image/Save as…) dans un format pas trop destructeur comme le PNG (ca serais dommage de pourrir le truc maintenant), et on l’ouvre dans un éditeur d’image 2D. The Gimp marche très bien, mais j’ai une petite préférence pour Paint.NET qui est très abordable pour les débutants. Quelque soit le logiciel, l’important est d’avoir une gestion des calques.

Pour nous aider à se repérer dans la texture on va utiliser le layout des UV. Pour cela, retour dans blender et son UV/Image editor. En mode UV face select, on va faire UVs/Scripts/Save UV Face Layout. On enregistre l’image en TGA quelque part.


Maintenant, on va régler nos calques. On va en utiliser 4 :
Tout en haut, le layout en mode Multiplicateur (à régler dans les options du calque).
Ensuite, l’ambient occlusion en mode Multiplicateur également.
Un calque qui va servir à rajouter quelques détails (ici les inscription sur la fusée).
Et tout en bas de la pile, le calque où nous allons peindre la couleur de base.

Il reste plus qu’a peindre. Selectionner le dernier calque, un pinceau et des couleurs et peignez !! Au bout de quelque minute vous devriez avoir un résultat dans ce style :



Enregistrez l’image en désactivant le calque du layout et ré-ouvrez la dans blender. Il reste plus qu’a exporter votre modèle et en profiter dans le jeu. Enjoy :-)

tutoriel rédigé pour le Blender Clan par Batmur/BatO, septembre 2007

    


Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.

Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[15] 143 9745 Aujourd'hui 10:12:37
yawdpwal 
Python & Plugins [terminé] City pack Cars pour Blender 0 32 Hier 20:20:50
ferrari6 
Questions & Réponses prb tuto crash car/rigid body    [1][2] 12 123 Hier 18:54:54
belomaker 
Graphisme alternatif faire de la bd avec blender 4 83 Hier 15:58:36
Bibi09 
The Blender Clan 'tchat Avenir du blender clan    [1][2][3]...[23] 222 25925 Hier 10:34:03
Riggelm 
Graphisme alternatif Un court-métrage apocalyptique en 2D ! 3 2223 16/06 18:23:28
moonboots 
Dessin traditionnel Dessins - BlendX 8 14210 16/06 16:41:23
blend74 
Graphisme alternatif Monster Mash    [1][2] 15 300 16/06 16:22:01
blend74 
Questions & Réponses [résolu] Placer mon world 7 79 16/06 09:13:57
Lylo 
Questions & Réponses [non résolu] animation : décalage d'un objet avec "Follow path"    [1][2] 12 119 16/06 05:57:44
blendinfos 
Questions & Réponses Different move value for parent or child - Distances différentes pour un parent ou un enfant 0 82 16/06 04:12:14
Gazpart 
Questions & Réponses Probleme Papercraft sous Blender 6 98 15/06 16:25:42
pinockenstein 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Version alpha disponible + discord    [1][2][3]...[67] 667 138744 15/06 08:58:37
Hook 
Questions & Réponses [non résolu] Plusieurs object qui avance sur une ligne trajectoire 9 530 14/06 18:29:34
blendinfos 
Questions & Réponses [non résolu] animer 2 objets ensemble, puis les séparer 2 50 14/06 11:43:57
blendinfos 
[WIP] et travaux terminés modelisation et animation de petits persos 9 239 14/06 10:20:03
blend74 
[WIP] et travaux terminés [terminé] invitation pour l'avant première de "BRUMES"    [1][2] 15 936 14/06 04:30:41
meltingman 
The Blender Clan 'tchat Blender 2.8x : Actus, tests, feedback..    [1][2][3]...[10] 91 46926 14/06 04:29:58
meltingman 
Moteur de jeu GameBlender et alternatives [BGE]comment faire varier la vitesse d'animation par appui d'une touche? 0 56 12/06 22:12:47
neonclignote 
Questions & Réponses [résolu] Problème Bake 5 1445 12/06 16:16:53
Me 

Qui est en ligne
207 utilisateur(s) en ligne (dont 1 sur Tutoriels)

Membre(s): 0
Invité(s): 207


plus...
Nouveaux membres

Nemo
11/3/2021
qingjie 10/3/2021
Kask909 9/3/2021
marie-antoinette 7/3/2021
Bugs 7/3/2021
lolorogli75 4/3/2021
Flagiel 4/3/2021
thedeathclown 1/3/2021
Littlespoon 28/2/2021
luxperpetua 27/2/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Jui 30
Anniv des Jedi :-D
Jui 10
BUG de Lyon
Jui 23
Anniv du BlenderClan !
plus 255 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445