Vous êtes sur la page 1sur 23

G j. SPl_ G1 C1l oA.

P o1*
"G1L.1_
Stranger,
19 novembre 2014

h#H2 /2b KiB`2b


R AMi`Q/m+iBQM

k  T`QTQb /m +Qm`b

j AMi`Q/m+iBQM , H2 S?vbB+HHv "b2/ a?/BM;

9 GBbi2 /2b +Qm`b2b

RR

8 G2 ?B;? TQHv

Rj

e GQr TQHv 2i lo KTTBM;

R8

d 1M +mBbBM2 TQm` H2 #FBM;

Rd

3 H#2/Q- `Qm;?M2bb- K2iHM2bb , H bm`7+2 /Mb iQmb b2b iib

RN

N *2bi T`i

kR

Ry*QM+HmbBQM

kj

R AMi`Q/m+iBQM
Vous avez un projet de jeu vido, mais vous dbutez en 3D ? Vous tes un habitu de la modlisation mais les textures vous font peur ? Vous tes simplement curieux de dcouvrir les mthodes
des pros ?
Ce cours est fait pour vous ! A travers un objet dexemple, nous allons voir pas pas comment
un lment de jeu vido est cr aujourdhui. Le cours sappuie sur le modeleur libre Blender
et ncessitera galement lusage dun logiciel de retouche dimage tel que Adobe Photoshop ou
GIMP.

Figure 1.1 : Lexemple de ce cours ; les talents artistiques de lauteur seront excuss

k  T`QTQb /m +Qm`b
Ce cours se veut simple et accessible. Lobjectif est de vous apprendre une mthode typique pour
raliser un objet de jeu vido, travers un exemple.
Voici ce que ce cours nest pas :
un cours de modlisation ;
un guide pas--pas qui vous rappelle le dtail des oprations ;
un cours universel pour crer tous les objets possibles ;
une encyclopdie qui explique tout.
On va voir ici des techniques trs modernes puisque le cours se base sur la technologie du Physically Based Rendering. Un moteur de jeu rcent comme Unreal Engine 4, CryEngine 3 ou Unity 5
est indispensable ici. Le monde du logiciel libre ne propose pas encore ce stade dvolution technique.
Une connaissance basique de Blender est requise : modlisation simple, modiers et UV mapping.
De nombreux cours de qualit existent sur ce sujet, commencer par celui-ci.

j AMi`Q/m+iBQM , H2 S?vbB+HHv "b2/


a?/BM;
Pour commencer ce cours, faisons le point sur la technologie.
Votre ordinateur est quip dun processeur sur lequel sexcutent des programmes, mais il dispose galement dun processeur graphique, le GPU, sur votre carte graphique. Ce GPU accueille
galement des programmes : on les appelle les shaders, et ils produisent les pixels lcran
partir dobjets 3D, de textures et de paramtres divers.
Les shaders sont difficiles raliser et doivent tre crits par un programmeur spcialis, cest
une tche assez pnible quon cherche viter. Cest ici que la notion de matriau intervient :
ce quon appelle matriau dans le jeu vido est un assemblage de shaders qui peut tre manipul
directement par un artiste, sans crire de code. Il contrle lapparence de la surface de votre objet
partir dune srie de textures et de paramtres.
[Un matriau dans Unreal Engine 4] (http ://zestedesavoir.com/media/galleries/300/74f35f7f8723-4b1b-aa28-f5e8339e06b7.jpg)
Dans les annes 2000, les jeux vido ont introduit de nombreuses techniques pour raliser les
plus beaux rendus possibles, tout en se pliant aux contraintes du matriel, et jusqu 2010, il tait
difficile de raliser un objet dont le rendu soit crdible par rapport une photo. On travaillait alors
avec des modles trs approximatifs de la matire, on parlait de diffuse et specular pour dsigner
la couleur et les reflets dun objet.
Le Physically Based Rendering ou PBR est un modle pour crer des rendus 3D qui respectent
les lois de la physique. Introduit dabord dans le monde des films danimation, ce modle sest
introduit en quelques annes dans les principaux moteurs de jeu moderne.
Dans un matriau en PBR, on a gnralement trois paramtres centraux :
lalbedo est tout simplement la couleur de la surface ;
la roughness contrle la rugosit de la surface, du miroir parfait au papier de verre ;
la metalness dfinit si la surface est un mtal.
[Diffrentes valeurs de roughness et metalness] (http ://zestedesavoir.com/media/galleries/300/5b694c9803cf-4fd6-8ed4-74629e05c300.jpg)
Sur lexemple ci-dessus, le matriau a les proprits suivantes, de gauche droite :
metalness = 0, roughness = 0 ;
metalness = 1, roughness = 1 ;
metalness = 1, roughness = 0 ;
metalness = 1, roughness = 0.5.
Lavnement des modles physiques est une excellente nouvelle pour vous : crer des rendus
ralistes na jamais t aussi facile.

9 GBbi2 /2b +Qm`b2b


Avant de se lancer en cuisine, on va faire le point sur les ingrdients. Pour raliser un objet dans
un jeu vido, au niveau de qualit attendu aujourdhui par un joueur, il va nous falloir :
un objet en 3D finement dtaill dans votre modeleur favori, cest ce quon appelle un high
poly ;
une version plus lgre de cet objet, le low poly ;
un matriau PBR dans votre moteur de jeu favori ;
plusieurs textures.
[[question]] | Pourquoi a-t-on besoin de plusieurs textures ?
Autrefois, on utilisait une seule texture, celle qui correspondrait aujourdhui lalbedo. Aujourdhui, on va utiliser diffrentes textures pour contrler le rendu :
une albedo map, qui dfinit lalbedo, la couleur de lobjet ;
une normal map qui simule des reliefs ;
une roughness map ou gloss map en noir et blanc pour contrler la roughness ;
une ambient occlusion map qui assombrit les recoins de vos objets, galement en noir et blanc.
La metalness, pour cet objet, sera contrle par une simple valeur fixe : tout lobjet est mtallique,
il est donc inutile dutiliser une texture pour a. Dans un matriau, on peut utiliser aussi bien une
texture quune valeur uniforme sur toute la surface !
Pour terminer les prsentations, reprenons lexemple de notre valve
[[question]] | Il faut donc raliser ces quatre textures et les associer au matriau de lobjet ?
Tout fait ! La faon exacte de faire dpend normment du jeu et de la technologie qui va avec,
mais les moteurs de jeu cits en avant-propos proposent des moyens simples de crer un matriau partir des textures.

11

4 Liste des courses

Figure 4.1 : Dans lordre de lecture : albedo, normal, roughness et ambient occlusion

12

8 G2 ?B;? TQHv
La particularit dun high poly, la version haute dnition de votre objet, cest que cet objet ne sera
jamais prsent dans le jeu. Le nombre dlirant de faces, la complexit des modiers, la difficult
texturer sont autant de raisons. On va donc tricher, importer le low poly dans le jeu, et utiliser
une technique qui permet de reproduire une partie des dtails du high poly sur le low poly : le
normal mapping.

Figure 5.1 : Le high poly : 96 000 faces aprs les modifiers, qui dit mieux ?
Le principe du normal mapping est le suivant : une texture, la normal map, va stocker les variations de la surface entre le high et le low. Le matriau va ensuite reproduire ces diffrences
de surface une fois dans le jeu, en trichant sur lclairage. Le rsultat est saisissant et permet de
reprsenter des dtails sans utiliser de gomtrie supplmentaire dans le low poly.

[De gauche droite : high poly, low poly et rendu ; la normal map est visible en bas] (http ://zestedesavoir.com/med
d865-4d56-b087-7f8b73fff6dc.jpg)
Dans cet exercice, le lissage des faces est votre principale contrainte. Un objet rel na que rarement des artes vives, sauf si il sagit dun couteau ou dune pice mtallique frachement usine.
Arrondir les angles est donc la premire mission de votre high poly, et pas quun peu : si lobjet
rel a un arrondi de 5 millimtres de large, il faut au moins un centimtre darrondi sur le high
poly pour avoir le mme rsultat final. Cest une contrainte qui est lie la normal map : souvent,
la zone autour dune arte tient dans quelques pixels de cette texture, un lissage trs net sera tout
simplement invisible.
Il faut donc modliser en tenant compte de cette contrainte, en exagrant les formes que vous

13

5 Le high poly

souhaitez introduire dans la normal map. Les rivets de lexemple ont une forme sphrique, mais
au rendu ils nexistent que par une distorsion de lclairage et ont donc lair quasiment plats.
Il y a deux outils dans Blender pour contrler le lissage dun high poly :
loutil edge loop (||CTRL|| + ||R||) sert diviser des faces, on peut sen servir pour limiter la
propagation du lissage, comme illustr ci-dessous : on appelle a une control loop ;
loutil edge crease (dans le menu de la vue 3D, affich avec ||N||) sapplique des edges et dfinit
leur mode de lissage, de 0 1 : 0 pour ne pas influencer le lissage, 1 pour crer une arte vive.

Figure 5.2 : Les artes lisses : observez leurs edge crease (en violet) et les control loop (en vert)
Dans la mesure du possible, il faut soigner le lissage en connectant le maillage dune partie
lautre, sans discontinuit. Bien sr, la patience a ses limites et vous pouvez aussi recourir de la
gomtrie dite ottante, cest--dire qui nest pas relie au reste de lobjet, si :
soit la diffrence nest pas visible et cest donc inutile (les rivets ci-dessus) ;
soit il ne faut pas de lissage car vous reprsentez des pices spares (entre lcrou et la manette sur notre valve, par exemple).
[[question]] | Toutes ces heures de modlisation, cest juste pour faire une seule texture ?
Presque : on gnrera en fait une deuxime texture partir du high poly. Mais en effet, il ne va
servir qu gnrer des ressources et ne sera jamais import dans le jeu. Rassurez-vous, le temps
pass en modlisation nest pas perdu : une belle normal map transforme totalement votre low
poly.

14

e GQr TQHv 2i lo KTTBM;


Le low poly est la version light de votre objet ! On va voir ensemble comment le raliser de faon
efficace. Dabords, parlons un peu de ses contraintes :
il doit pouser parfaitement les courbes de votre high poly, de prfrence en les enrobant ;
il doit minimiser le nombre de faces ou polycount ;
il ne doit pas utiliser de subsurface ou autre dformation automatique qui serait applique
lexportation, multipliant le polycount ;
bien entendu, il doit comporter un UV mapping.

Figure 6.1 : 3 000 triangles, pour cet objet, cest un poids raisonnable
Chacun a sa propre mthode pour le faire, la mienne est trs rapide, au dtriment peut-tre du
polycount. Voici la marche suivre :
dupliquez le high poly, supprimez le subsurface et ajoutez un modifier edge split avec un angle
bien choisi pour votre objet, typiquement 45 ;
supprimez toutes les control loop qui servent contrler le lissage : le low poly ne doit avoir des
artes que l o la gomtrie change ;
nhsitez pas supprimer des jointures entre diffrentes pices pour utiliser une gomtrie
flottante la place, comme illustr ci-dessous ;
noubliez pas de crer des seams dans des endroits peu visibles pour prparer lUV mapping.
Vous pouvez utiliser des modifiers pour acclrer le travail, notamment le mirror, mais vous devez
prendre bien soin de les appliquer avant de passer lUV mapping, lexception de ledge split qui
va nous accompagner jusqu lexportation.

15

6 Low poly et UV mapping

Figure 6.2 : Exemple de passage une gomtrie flottante, sur un autre objet

LUV mapping est une tape pnible mais ncessaire, qui doit tre ralise avec minutie : si il y
a de larges zones vides sur cette UV map, cest autant despace perdu sur vos textures. Attention
cependant ne pas trop condenser non plus, en particulier, vous ne devez jamais avoir deux faces
superposes, mme si ce sont des pices rigourement identiques : la gnration des textures va
crer des artefacts trs visibles si vous vous y risquez.
Une fois lUV mapping termin, votre objet est prt pour tre export. Le format de rfrence est
FBX, il est support dans un plugin de Blender fourni par dfaut que vous devez activer dans les
prfrences de loutil. Au moment de lexportation, prenez garde slectionnez votre low poly et
cocher la case selected only, pour ne pas exporter galement le high poly, au risque de bloquer
Blender pendant plusieurs minutes !

16

d 1M +mBbBM2 TQm` H2 #FBM;


Le baking est ltape centrale du travail de cration. Ce processus permet, partir du high poly
et du low poly, de produire automatiquement la normal map et lambient occlusion map. On a
dj parl de la normal map, lAO map est la suivante sur la liste.
Lambient occlusion consiste, en deux mots, assombrir les recoins dun objet. Empilez des assiettes et regardez bien lespace entre elles : la lumire ambiente ne parvient pas aussi facilement
clairer cet espace ferm. Lclairage des jeux vido ne suffit pas produire un rsultat pareil,
il faut l-encore tricher. On va donc gnrer une ambient occlusion map en mme temps que la
normal map.
Pour raliser le baking, vous devez superposer le low poly et le high poly dans la mme scne.
Aucune camra ou light nest ncessaire ou mme souhaitable, nous nallons pas procder un
rendu classique. Le low poly doit tre associ une texture : en mode edit, slectionnez tout, puis
dans la fentre ddition UV, slectionnez galement toutes les faces si elles ne sont dj. Crez
une nouvelle texture, de prfrence une rsolution double par rapport votre taille cible.
[[information]] | Aujourdhui, une texture typique a une rsolution de 1024 pixels de ct, mais
il est trs courant dutiliser 2048 pixels, voire 4096 pour de trs gros objets lourdement dtaills
(personnages, vhicules). Un baking une rsolution double permet davoir un rendu plus fin,
plus prcis, avec moins dartefacts ; en revanche votre systme peut tre men rude preuve.
Un baking dambient occlusion en 8192 pixels, moins de disposer dune machine surpuissante,
peut durer plus dune heure
Pour lancer le baking, il faut se placer dans longlet Render du panneau latral, puis de drouler la
section Bake tout en bas. Dans Bake Mode, il faut choisir Normals ou Ambient Occlusion suivant
la texture produire, cocher Selected to Active et configurer les proprits Distance et Bias si
elles existent :
Distance configure la distance maximale entre le high poly et le low poly, pour une face ;
Bias indique la distance de laquelle le high poly peut dpasser du low poly.
Il suffit ensuite de slectionner le high poly puis le low poly avec la touche shift, et de cliquer sur
Bake.
Lopration doit tre faite pour les deux types de texture, via le menu droulant. Noubliez pas de
sauvegarder une copie de chaque texture. Si vous avez fait le baking une rsolution plus leve
que la rsolution cible, cest aussi le moment de les redimensionner dans votre diteur dimage
favori.
[Normal map et ambient occlusion map] (/media/galleries/300/4476053b-840b-42d6-8dc63291f0db22e6.jpg.960x960_q85.jpg)

17

7 En cuisine pour le baking

Figure 7.1 : Le baking, tout juste termin : on voit que le high et le low se superposent

18

3 H#2/Q- `Qm;?M2bb- K2iHM2bb , H


bm`7+2 /Mb iQmb b2b iib
Au terme de ce travail, vous disposez de la moiti des textures importer, ainsi que dun mesh low
poly. Il nous manque encore deux textures, et elles vont toutes deux ncessiter un travail manuel
dans un diteur dimage.
On va donc sattaquer la texture la plus classique de toutes, lalbedo. Elle fut connue une
autre poque comme la diffuse map, et cest aussi celle quon appelait avant la texture, tout
simplement, car il ny avait quelle. Elle reprsente la couleur, et uniquement la couleur de lobjet.
Le travail faire ici dpend entirement de lobjet, des outils, de la direction artistique du jeu.
Habituellement, on utilise une texture dite de base, comme du mtal ou du bois, en dessinant par
dessus les dtails qui rendent lobjet unique : raflures, peinture, marquages
[[information]] | Dans le cas de lobjet dexemple, voici ce que jai fait : | | - jutilise une base
texture de mtal ; | - ajoute de la rouille dans les recoins ; | - je peins ensuite, laide dune tablette

graphique, au pinceau sur toutes les artes dans une couleur plus claire afin de mettre en valeur
les angles ; | - jajoute des touches de couleur pour reprsenter soit du cuivre, soit de la peinture
sur lobjet ; | - enfin, jai dessin une tiquette sur la manette de la valve.
Un objet mtallique est relativement simple faire, a se corse si vous devez raliser un personnage, bien sr.
La roughness map, dernire de la liste, va exiger beaucoup moins de talent artistique. Elle reprsente ltat de surface de votre objet : le noir reprsente une surface plate comme un miroir, le
blanc reprsente du ciment ou du papier de verre. En toute logique, du mtal propre va avoir une
roughness trs faible, alors que du mtal ray va avoir une roughness suprieure. Cest tout !

En pratique, une roughness map de qualit va souvent tre obtenue partir de la base texture, en
augmentant le contraste et en dessinant les artes de faon trs visible.
[[question]] | Cest bon, cest fini ?
Pas tout fait : on ne sest pas encore occups de la metalness. On rappelle que ce paramtre
dfinit si le matriau se comporte comme un mtal :
0, lobjet est dit dilectrique (comprendre isolant), ce nest donc pas un mtal ;
1, lobjet est parfaitement mtallique ;
logiquement, une valeur de 0.75 par exemple serait adapte pour un mtal un peu sale.
Ce rglage va principalement jouer sur la couleur et lintensit des rflexions sur votre objet. A
vous de jongler avec ce paramtre pour raliser le matriau parfait, jai choisi dutiliser la valeur
1 pour cet objet.

19

N *2bi T`i
Vous disposez maintenant dun objet complet, prt tre import dans votre moteur de jeu favori.
Il reste donc cette dernire tape, pour laquelle je ne peux pas vous aider : chaque jeu est diffrent,
chaque technologie a ses propres mthodes. On sort du domaine de la mthode pour rentrer dans
des problmes dorganisation.
Dune faon gnrale, le principe est le mme partout. Il faut importer lobjet FBX, les textures au
format TGA ou PNG, crer un matriau partir de ces textures, et lassocier votre objet import.

Figure 9.1 : Le matriau dans Unreal Engine 4, aprs quelques rglages


Chaque moteur de jeu a ses propres caractristiques de jeu et il faut bien sr tre conscient quun
objet va toujours exiger des rglages particuliers : textures plus lumineuses, plus contrastes
Les images ci-dessous montrent des rsultats diffrents dans des outils diffrents.

21

9 Cest prt

Figure 9.2 : Le rendu dans Unreal Engine 4

Figure 9.3 : Le rendu dans Marmoset Toolbag

22

Ry *QM+HmbBQM
Au terme de ce cours, vous avez en main les principales notions pour raliser des objets dans un
jeu vido.
Les fichiers utiliss ici comme exemples sont disponibles au tlchargement. La licence qui sy
applique est la mme que celle indique pour ce cours.
fichier source Blender
fichier source Photoshop
archive compresse des ressources au rendu
Merci de votre lecture !

23

Vous aimerez peut-être aussi