la 3d pour le jeu video avec blender

23
Stranger, 19 novembre 2014

Upload: kabibra

Post on 16-Dec-2015

19 views

Category:

Documents


5 download

DESCRIPTION

modélisation numérique

TRANSCRIPT

  • G j. SPl_ G1 C1l oA.P o1*"G1L.1_

    Stranger,

    19 novembre 2014

  • h#H2 /2b KiB`2bR AMi`Q/m+iBQM 8k T`QTQb /m +Qm`b dj AMi`Q/m+iBQM , H2 S?vbB+HHv "b2/ a?/BM; N9 GBbi2 /2b +Qm`b2b RR8 G2 ?B;? TQHv Rje GQr TQHv 2i lo KTTBM; R8d 1M +mBbBM2 TQm` H2 #FBM; Rd3 H#2/Q- `Qm;?M2bb- K2iHM2bb , H bm`7+2 /Mb iQmb b2b iib RNN *2bi T`i kRRy*QM+HmbBQM kj

    3

  • R AMi`Q/m+iBQMVous avez un projet de jeu vido, mais vous dbutez en 3D? Vous tes un habitu de la modlisa-tion mais les textures vous font peur ? Vous tes simplement curieux de dcouvrir les mthodesdes pros ?

    Ce cours est fait pour vous ! A travers un objet dexemple, nous allons voir pas pas commentun lment de jeu vido est cr aujourdhui. Le cours sappuie sur le modeleur libre Blenderet ncessitera galement lusage dun logiciel de retouche dimage tel que Adobe Photoshop ouGIMP.

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

    5

  • k T`QTQb /m +Qm`bCe cours se veut simple et accessible. Lobjectif est de vous apprendre unemthode typique pourraliser 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 Physi-cally Based Rendering. Un moteur de jeu rcent comme Unreal Engine 4, CryEngine 3 ou Unity 5est indispensable ici. Le monde du logiciel libre ne propose pas encore ce stade dvolution tech-nique.

    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.

    7

  • 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 dis-pose galement dun processeur graphique, le GPU, sur votre carte graphique. Ce GPU accueillegalement 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, cestune tche assez pnible quon cherche viter. Cest ici que la notion de matriau intervient :ce quon appellematriau dans le jeu vido est un assemblage de shaders qui peut tre manipuldirectement 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/74f35f7f-8723-4b1b-aa28-f5e8339e06b7.jpg)

    Dans les annes 2000, les jeux vido ont introduit de nombreuses techniques pour raliser lesplus beaux rendus possibles, tout en se pliant aux contraintes dumatriel, et jusqu 2010, il taitdifficile de raliser un objet dont le rendu soit crdible par rapport une photo. On travaillait alorsavec desmodles trs approximatifs de lamatire, on parlait de diffuse et specular pour dsignerla couleur et les reflets dun objet.

    Le Physically Based Rendering ou PBR est un modle pour crer des rendus 3D qui respectentles lois de la physique. Introduit dabord dans le monde des films danimation, ce modle sestintroduit 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 ; lametalness dfinit si la surface est un mtal.

    [Diffrentes valeursde roughness etmetalness] (http ://zestedesavoir.com/media/galleries/300/5b694c98-03cf-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 rendusralistes na jamais t aussi facile.

    9

  • 9 GBbi2 /2b +Qm`b2bAvant de se lancer en cuisine, on va faire le point sur les ingrdients. Pour raliser un objet dansun 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 highpoly ;

    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. Aujour-dhui, 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 occlusionmapqui assombrit les recoins de vos objets, galement ennoir et blanc.

    Lametalness, pour cet objet, sera contrle par une simple valeur fixe : tout lobjet estmtallique,il est donc inutile dutiliser une texture pour a. Dans unmatriau, on peut utiliser aussi bien unetexture 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 mat-riau 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;? TQHvLa particularit dun high poly, la version haute dnition de votre objet, cest que cet objet ne serajamais 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 utiliserune technique qui permet de reproduire une partie des dtails du high poly sur le low poly : lenormal 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 va-riations de la surface entre le high et le low. Le matriau va ensuite reproduire ces diffrencesde surface une fois dans le jeu, en trichant sur lclairage. Le rsultat est saisissant et permet dereprsenter des dtails sans utiliser de gomtrie supplmentaire dans le low poly.

    [Degauchedroite : highpoly, lowpoly et rendu ; lanormalmapest visible enbas] (http ://zestedesavoir.com/media/galleries/300/b3db17af-d865-4d56-b087-7f8b73fff6dc.jpg)

    Dans cet exercice, le lissage des faces est votre principale contrainte. Un objet rel na que rare-ment des artes vives, sauf si il sagit dun couteau ou dune picemtallique frachement usine.Arrondir les angles est donc la premire mission de votre high poly, et pas quun peu : si lobjetrel a un arrondi de 5 millimtres de large, il faut au moins un centimtre darrondi sur le highpoly pour avoir lemme rsultat final. Cest une contrainte qui est lie la normalmap : souvent,la zone autour dune arte tient dans quelques pixels de cette texture, un lissage trs net sera toutsimplement 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, maisau 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 lapropagation du lissage, comme illustr ci-dessous : on appelle a une control loop ;

    loutil edge crease (dans lemenu de la vue 3D, affich avec ||N||) sapplique des edges et dfinitleur 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 lagomtrie 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 ma-

    nette 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 vaservir qu gnrer des ressources et ne sera jamais import dans le jeu. Rassurez-vous, le tempspass en modlisation nest pas perdu : une belle normal map transforme totalement votre lowpoly.

    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 faonefficace. 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 dupolycount. Voici la marche suivre :

    dupliquez le high poly, supprimez le subsurface et ajoutez unmodifier edge split avec un anglebien choisi pour votre objet, typiquement 45 ;

    supprimez toutes les control loop qui servent contrler le lissage : le low poly ne doit avoir desartes que l o la gomtrie change ;

    nhsitez pas supprimer des jointures entre diffrentes pices pour utiliser une gomtrieflottante la place, comme illustr ci-dessous ;

    noubliez pas de crer des seams dans des endroits peu visibles pour prparer lUVmapping.

    Vous pouvez utiliser desmodifiers pour acclrer le travail, notamment lemirror,mais vous devezprendre bien soin de les appliquer avant de passer lUVmapping, lexception de ledge split quiva 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 ya de larges zones vides sur cette UV map, cest autant despace perdu sur vos textures. Attentioncependant ne pas trop condenser non plus, en particulier, vous ne devez jamais avoir deux facessuperposes, mme si ce sont des pices rigourement identiques : la gnration des textures vacrer des artefacts trs visibles si vous vous y risquez.

    Une fois lUVmapping termin, votre objet est prt pour tre export. Le format de rfrence estFBX, il est support dans un plugin de Blender fourni par dfaut que vous devez activer dans lesprfrences de loutil. Aumoment 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 bloquerBlender 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 polyet du low poly, de produire automatiquement la normal map et lambient occlusion map. On adj 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 as-siettes 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 lanormal 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 unrendu classique. Le low poly doit tre associ une texture : en mode edit, slectionnez tout, puisdans la fentre ddition UV, slectionnez galement toutes les faces si elles ne sont dj. Crezune 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, maisil 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 longletRender du panneau latral, puis de drouler lasectionBake tout en bas. DansBakeMode, il faut choisirNormals ouAmbient Occlusion suivantla texture produire, cocher Selected to Active et configurer les proprits Distance et Bias sielles 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 surBake.

    Lopration doit tre faite pour les deux types de texture, via le menu droulant. Noubliez pas desauvegarder une copie de chaque texture. Si vous avez fait le baking une rsolution plus leveque la rsolution cible, cest aussi le moment de les redimensionner dans votre diteur dimagefavori.

    [Normal map et ambient occlusion map] (/media/galleries/300/4476053b-840b-42d6-8dc6-3291f0db22e6.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 , Hbm`7+2 /Mb iQmb b2b iib

    Au terme de ce travail, vous disposez de lamoiti des textures importer, ainsi que dunmesh lowpoly. Il nousmanque encore deux textures, et elles vont toutes deux ncessiter un travail manueldans un diteur dimage.

    On va donc sattaquer la texture la plus classique de toutes, lalbedo. Elle fut connue uneautre poque comme la diffuse map, et cest aussi celle quon appelait avant la texture, toutsimplement, 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 dumtal ou du bois, en dessinant pardessus les dtails qui rendent lobjet unique : raflures, peinture, marquages

    [[information]] | Dans le cas de lobjet dexemple, voici ce que jai fait : | | - jutilise une basetexture demtal ; | - ajoute de la rouille dans les recoins ; | - je peins ensuite, laide dune tablettegraphique, au pinceau sur toutes les artes dans une couleur plus claire afin de mettre en valeurles angles ; | - jajoute des touches de couleur pour reprsenter soit du cuivre, soit de la peinturesur 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 person-nage, bien sr.

    La roughnessmap, dernire de la liste, va exiger beaucoupmoins de talent artistique. Elle repr-sente ltat de surface de votre objet : le noir reprsente une surface plate comme un miroir, leblanc reprsente du ciment ou du papier de verre. En toute logique, du mtal propre va avoir uneroughness 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, enaugmentant 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 paramtredfinit 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. Avous de jongler avec ce paramtre pour raliser le matriau parfait, jai choisi dutiliser la valeur1 pour cet objet.

    19

  • N *2bi T`iVousdisposezmaintenant dunobjet complet, prt tre import dans votremoteur 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 propresmthodes. On sort du domaine de lamthode pour rentrer dansdes problmes dorganisation.

    Dune faon gnrale, le principe est lemme partout. Il faut importer lobjet FBX, les textures auformat TGA ou PNG, crer unmatriau partir de ces textures, et lassocier votre objet import.

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

    Chaquemoteur de jeu a ses propres caractristiques de jeu et il faut bien sr tre conscient quunobjet va toujours exiger des rglages particuliers : textures plus lumineuses, plus contrastesLes 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+HmbBQMAu terme de ce cours, vous avez en main les principales notions pour raliser des objets dans unjeu vido.

    Les fichiers utiliss ici comme exemples sont disponibles au tlchargement. La licence qui syapplique 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