Daratis - Graphiste 2D/3D

Daratis - Graphiste 2D/3D

Par daratis Blog créé le 18/03/10 Mis à jour le 12/06/10 à 11h24

Etudiant en 3e année de formation jeu vidéo, graphiste 2D/3D à LISAA Paris.

Ajouter aux favoris
Signaler
Côté technique

 

Dans le jeu vidéo, la grande règle c'est l'optimisation. Rappelez vous du temps où l'on pouvait traverser le décor et se rendre compte que le jeu vidéo est digne du carton pâte, on se serait cru dans un Dark City de Alex Proyas avec la direction d'une pseudo ville qui s'arrête devant un mur de brique. Cette année je travaille sur un moteur qui ne permet pas de bénéficier des dernières techniques en terme d'effets visuels et c'est pourquoi ma seule option est le normal map.

Le normal map kezako ?
En règle générale dans les jeux vidéos, les personnages sont modélisés en « low-poly ». Cela signifie en gros que les faces qui composent un personnage modélisé en 3D se doivent d'être optimisées au mieux (comprendre nombre réduit). C'est l'une des différences majeures avec l'animation 3D pure, ça, et le petit plus temps réel des jeux. Vous pensez que FFXIII est magnifique ? Vous avez raison ! Mais regardez les doigts des personnages, se sont des cubes ! Oui vous avez bien entendu ! 4 faces sur les côtés, pas plus.
Alors comment peut-on faires des boucles de ceintures dans tous les sens sans que ça fasse moche ? Des cicatrices ? Des écailles ? Une des réponses est le normal map (car il y en a d'autres mais je ne parlerai ici que de la normal).
La normal map est une texture qui va enregistrer la façon dont la lumière réagit sur chaque partie de la texture, il s'agit donc également d'un « Shader » par définition.
Ainsi, si une créature a la peau écaillée, la lumière se reflètera sur chacune des écailles, et cela même si en réalité la surface est plane, ce qui donne une impression de relief (Si vous voulez vous amusez, vous remarquerez que les bandes avec des reliefs de smarties géants qui permettent d'éviter de glisser, ou presque, prêt des transports en commun ont en fait l'air tout à fait plats, c'est l'ombre qui fait qu'on voit le relief !).

Le but va donc être de créer tout d'abord un model en low poly. Ici je donnerai l'exemple avec le prédateur du projet Contamination (c'est noël avant l'heure !).
On voit que le modèle fait 1508 triangles soit environ 750 polys (un poly= un carré = 2 triangles. Une carte graphique gère tout sous forme de triangles). On voit également que malgré cela il est relativement adouci. Il s'agit de ce qu'on apelle les "groupes de lissages". Ils permettent dans un premier temps d'obtenir une réaction plus douce de la lumière sur un poly (Si on tord un carré en deux , la lumière frapera l'arrête de manière brute). Cela explique également les accidents que l'on peut voir au niveau de la lumière sur le model en exemple. Les groupes de lissages ne sont pas corrects.
NB : Modéliser avec les groupes de lissage permet, quand on veut faire du low poly de prendre conscience des endroits où il est véritablement nécessaire d'avoir plus de polys et ceux où l'on peut en économiser.

 

Ceci fait, on va réaliser un unwrap du model. Pour faire simple, c'est comme la couture, il faut créer le patron pour la peau (skin) du model. Il y a de nombreuses subtilités par rapport à cette étape mais ce n'est pas ce qui nous intéresse dans l'immédiat.

 

 

Tout est prêt. On passe alors sur un logiciel qui va permettre d'augmenter considérablement le nombre de polys. Pourquoi ? Ca semble aller à l'encontre même de l'optimisation ! Et bien non car en réalité, les informations que l'on va sculpter seront, comme expliqué précédemment, enregistrées sous forme de normal map. Evidemment il ne faut pas espérer pouvoir rajouter un troisième bras ! Ce n'est pas magique non plus ! Par contre voici toutes les informations que j'ai pu ajouter sur le bestiau.

 

On a des écailles, des volumes pour les muscles, des plis de peau et un model d'un peu plus de 3 millions de polys donc 6 millions de triangles, pas question de faire tourner un personnage comme ça en temps réel dans un jeu ! Pas de problèmes, on en extrait donc la normal map (pour ceux qui tenterait l'expérience n'oubliez pas de sélectionner la bonne configuration, genre 3Dsmax 7 tangent sous Zbrush, sans quoi vous vous retrouverez comme moi à pester parce que les couleurs ne sont pas les bonnes).
Et voilà la jolie normal (ou presque jolie).

 

Les artefacts (erreurs) en vert sur l'exemple, ne sont pas très beaux à voir, mais il faut bien comprendre que ce qui n'est pas dans les uvs (les différentes pièces du patron) ne sera pas conservé. Il ne reste plus qu'à mettre tout ça  dans le moteur :

 

Et voilà, le model que vous avez sous les yeux est bien le même que le tout premier que vous avez vu, aucun poly en plus, le relief des écailles vient uniquement de la normal map. Il a perdu du poids parce que les volumes rajoutés en high poly étaient trop importants et donc la lumière ne pouvaient pas à elle seule donner autant d'impression volume. Mais au final on obtient quelque chose de bien plus détaillé qu'avec une simple texture à plat, et on multiplie les détails de texture, variations de relief.

Il est important de noter  que cet article n'est pas un tutorial complet, tout d'abord parce que je ne pense pas être assez pédagoge et expérimenté pour ça, et ensuite parce que  dans les moteurs actuels, la normal map à elle seule ne suffit pas. Un personnage actuel dans un jeu, est en réalité composé de plusieurs autres couches comme la spéculaire etc.
Quant à la texture de l'animal, elle a été réalisée dans des délais assez bref et n'est pas « propre » (ce qui explique aussi pourquoi je ne vous la montre pas en dépliée, il faudra suivre cela sur de futurs post de Contamination).
Enfin, le moteur utilisé n'est pas le plus efficace en ce qui concerne les graphismes actuellement. Mais je pense que cet article vous aura permis de découvrir une petite parcelle des multiples astuces dont le jeu vidéo use pour bluffer nos ptits yeux éblouis mais tant que ça marche, que demander de plus ?

 

Ajouter à mes favoris Commenter (0)

Commentaires

Édito

Tirer son épingle du jeu ?

 

J'ai créé ce blog maintenant que ma formation touche à sa fin pour partager mon travail sur deux projets importants cuisinés au petits oignons dans notre chère école (des contraintes donc, normal...) et par nos esprits (plus ouverts ?), puis à l'occasion d'autres projets personnels.

Ce sera l'occasion pour vous, malgré le fait que je ne me prétend pas l'âme d'un rédacteur, de suivre les différentes phases qui ont amené ces projets à aboutir.
C'est également pour moi l'occasion d'exposer aux regards extérieurs des choix de création, des orientations qui j'espère remporteront le succès.

Soit, bon c'est pas tout mais il faut le faire démarrer ce blog maintenant !

 

 

Archives

Favoris