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 !! Tutoriels "Bonhomme de neige avec EEVEE" 7 108 Aujourd'hui 14:32:27
Bibi09 
[WIP] et travaux terminés [terminé] Imprimante à jet d'encre industrielle    [1][2] 11 2549 Aujourd'hui 14:26:48
JaAlVir657 
[WIP] et travaux terminés [WIP] BUDY3000 prochain tuto spécial : modélisation semi mécanique    [1][2] 10 251 Aujourd'hui 13:58:42
Guiu 
Questions & Réponses Animation 2D débutant 7 96 Aujourd'hui 13:28:35
meltingman 
Python & Plugins ajouter plusieurs fois le même objet avec le même retard 1 28 Aujourd'hui 13:25:46
meltingman 
Hors Sujet !! Comment se servir du Vertex Group- créer une fiole sans déplacer un vertex 0 14 Aujourd'hui 12:32:01
meltingman 
Questions & Réponses [WIP] Typo 6 166 Hier 22:45:30
Laorz 
Questions & Réponses [physique] patte à modeler 2 27 Hier 22:00:39
prometheusx 
The Blender Clan 'tchat Blender 2.8x : Actus, tests, feedback..    [1][2][3]...[7] 66 37901 Hier 19:10:37
lucky 
Questions & Réponses Particules qui tombent puis restent collées à la surface 3 71 Hier 13:17:11
Bibi09 
[WIP] et travaux terminés [WIP] Les wips à Chikin    [1][2] 11 2524 01/12 19:24:49
chikin 
Python & Plugins script python pour dupliquer un objet et fusionner le tout    [1][2] 14 289 01/12 18:15:17
neonclignote 
Questions & Réponses Je perds sans arrêts mes shaders! 9 91 01/12 16:59:53
titisteph 
Questions & Réponses [résolu] Compter les vertices 2 56 01/12 16:15:45
zeromeetsinfinity 
Questions & Réponses Bump map pixellisée    [1][2][3] 21 315 01/12 14:31:41
moonboots 
Questions & Réponses [non résolu] Mettre du texte sur un sujet 3d    [1][2][3] 21 736 01/12 10:43:08
Lady 
Questions & Réponses Ajouter l'effet de deux shaders? 2 119 01/12 09:07:13
titisteph 
[WIP] et travaux terminés [terminé] Photogrammétrie : Meshroom ! 4 91 30/11 22:43:07
Bibi09 
Hors Sujet !! Tuto rapide - Tips Astuce - mixer des matériaux - créer un marécage 8 141 30/11 19:52:59
meltingman 
Questions & Réponses lampe chinoise effet de lumiere 5 89 30/11 16:24:16
prometheusx 

Qui est en ligne
192 utilisateur(s) en ligne (dont 2 sur Tutoriels)

Membre(s): 1
Invité(s): 191


Guiu, plus...
Nouveaux membres
KassandraW 3/12/2020
KatherinAg 3/12/2020
ChantalCro 3/12/2020
kerju2002 2/12/2020
bugsheep 29/11/2020
gto37 29/11/2020
Augustus_Strix 28/11/2020
yocodream 28/11/2020
Pandore62 27/11/2020
Kristof_LEDRU 26/11/2020
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 9
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 263 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2020 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445