beneuji_avatar.jpg

Méthodes et mise en oeuvre des outils
Une chose importante : ceci est ma façon de travailler, et c'est bien sur une méthode parmis des milliers. Elle ne prévaut sur aucune autre.

Le décors a autant d'importance que les personnages. Il parle tout autant. Ne pas le négliger.
Le décors doit vivre : éclairages, matières, fumées, eau, salissures, cassures...
Bien sur, cela doit être justifié et sans que cela entre en compétition avec le centre d’interet que l’on veut donner au joueur.

On construit un décors et une ambiance pour porter une histoire. Ce n'est pas une démo, la graphisme n'est pas là pour voler la vedette au Gameplay, etc…




Table des matières :

1. Conseils d'ordre général
2. Modélisation
3. Textures
4. Lights
5. Shading
6. Animation

1. Conseils d'ordre général
Il existe pour moi une hiérarchie dans l'importance des éléments qui composent une image, 3d ou pas.

En 3d, la voici, de la phase la moins à la plus importante :

- Modelisation
- Textures
- Lighting / Ambiance / Animation
- Compo graphique

Cette hiérarchie est valable dans le sens ou par exemple si un modèle est peu défini, avec une bonne texture, ça passe. Un bon modèle avec une mauvaise texture, ça passe pas. Etc...

Mettre au point une palette.
Avoir de bonnes refs.

Je conseille d'y aller par étapes, un rough, ensuite pousser le détail : commencer avec des blocs, poser des volumes, des ambiances, luimères, etc... donner une impression avant tout.
De faire monter la qualité sur l’ensemble du projet : d’abord compo de l’image, ensuite éclairages et ambiances colorées, ensuite détails textures et modés.

Eviter que certains elements entrent en competition : des modeles et textures trop aboutis et réaliste contre une anim trés maladroite. Voire : Hiérarchie des éléments graph.

Mot d’ordre : Mettre le paquet là ou il faut ! Bien choisir ou on met du matos, le justifier.

Toujours bosser avec des refs de taille pour modeliser a l’echelle. Valable aussi pour les textures, il faut qu'elles soient à l'échelle.
Connaitre la distance à laquelle va s’afficher l’objet si possible.
Toujours avoir des objets en ref : contextualiser.

Travailler dans l’angle de la cam. Choisir la bonne focale.

Comme en illustration, pour tester a lisibilité d’une image, la passer en niveaux de gris.

Ne pas oublier que quand la caméra est contrainte on peut mieux choisir ou placer le matos.

Faire vivre des objets à l’exterieur de la scene, ombres portées, lumières, BG fake etc…

Une fois une modé de base et le texturage terminés, ajouter des détails au mesh, casser les angles, abimer les murs, etc… le faire vivre.

Ce qui ralentit le frame rate, c’est de rendre plusieurs fois les objets, soit eviter par exemple d’utiliser des pixel lights, vertex lights sur les décors, plusieurs lights qui éclairent un même objet...

Utiliser les outils de statistiques de rendu.


2. Modelisation
L’optim idéale d’aprés Unity : il est conseillé de combiner les meshes de manière a ce qu’un mesh soit entre 1500 et 4000 polys. Une passe. Si obj 100 faces, une passe aussi. Il y aura un seul mesh renderer/une passe. Utiliser si possible un seul material. Bien sur la plupart du temps difficilement applicable.
A savoir que cette dernière optim est totalement déconseillée dans UE3.

Toujours travailler avec le moins de faces possible.

Construire plusieurs niveaux de LOD.
Ces niveau peuvent être 3D, 2D/3D ou 2D. A une certaine distance, favoriser les silhouettes, soit en faces, soit en alpha, le volume n'est plus necessaire.
Utilisation de fakes 2D en BG, branches arbres, cables, etc

Passer en triangles le mesh avant l'export pour vérifier l'orientation des edges.

Eviter de travailler en double side, cela permet de bien voir l'orientation des normales et de ne pas avoir de surprises.

Merger les doublones de vertex.

Recomputer les normals de temps en temps.

Tenter d’éviter les séparations de faces dans les UV, essayer de les garder conjointes le plus possible, qu’elles partagent des coordonées.

En general, ne pas scaler l’objet, mais scaler son mesh/ses faces.

3. Textures
Utiliser des puissances de 2, 16, 32, 64, 128, 256… pas nécessairement des carrés.

Deux écoles possibles pour l'organisation des textures, cela dépend du moteur :

1 - On rassemble en une seule texture au carré, on definit les parties tilables. On les utilise en découpant le mesh(demande de la préparation)
2 - On utilise plusieurs petites tex tilables, et on découpe moins les meshs.

Choisir avec attention le type de compression pour chaque texture. UNITY : options tex

 - RGB Compressed DXT1 : Compressed RGB texture. This is the most common format for diffuse textures. 4 bits per pixel (32 KB for a 256x256 texture).
 - RGBA Compressed DXT5 : Compressed RGBA texture. This is the main format used for diffuse & specular control textures. 1 byte/pixel (64 KB for a 256x256 texture).
 
Choisir le flitrage de mip map pour chaque tex. (Sur Unity dans les options de la tex)

Faire attention aux differences d'echelle entre les elements texturés.

Toujours penser, quand on crée une texture, si elle n’est pas spécifique, de quelle manière on peut la réutiliser et pousser dans ce sens. Si elle est spécifique, voir quelles parties le sont vraiment.
Pour une texture qui tile, elle doit être homogène sans element trop marquant qui se repeterait partout.
Dans le cadre d'ue texture générique, ne pas trop mettre de couleur ambiante dedans. Assez neutre.

Lutter contre le tiling : le multicouche. Une texture repetitive de base avec par dessus une texture de crade qu'on fait apparaitre avec du paint.

On peut utiliser des plaques d’alpha clonées pour le crade.
Cependant, il faut éviter de superposer de trop nombreuses et trop grandes plaques d’alpha.

Integrer du modelé dans la texture si ça ne gêne pas la répétition.

Il y a une limite acceptable de déformation de la texture avec le mesh.

En général, separer les faces trasparentes du reste de l’objet et lui donner un seul mat.

4. Lights
Toujours justifier l’utilisation d’un certain type de light

Vertex painter les lumieres et ajouter une lampe dynamique exclusive pour les persos. (Moteurs traditionnels)

Si une light dynamique est utilisée, utiliser au max le vertex lit plutot que le pixel lit.

Le nombre de Pixel Lights qui touchent un objet affectent grandement les performances. L’objet entier est rendu autant de fois que le nombre de lampes qui le touche.

Penser à regler la resolution des shadowmaps sur chaque objet.


5. Shading
Toujours justifier l’utilisation d’un shader.

Faites en sorte que vos shaders/materiaux soient réutilisés.

Se souvenir de l’ordre de cout des shaders.

Vertex lit shaders, moins chers que Pixel lit shaders.

Désactiver le calcul et la map de specularité si pas necessaire.

6. Animation
Pour Unity et d’autres moteurs, n’utiliser qu'un seul skinning par mesh.
Quand le mesh est importé dans Unity, lui est automatiquement attribué un Skinned Mesh Renderer, dans lequel on trouvera les informations de rendu de l’objet. Si l’objet possede 2 skins, le temps de rendu double.

Utiliser le moins de bones possible : un moyenne de 30/perso, c’est ok, mais costaud.

Un vertex doit recevoir l’influence du moins de bones possible.
Dans UNITY, un vertex peut être influencé par max 4 bones.
Dans le Skinned Mesh Renderer, on trouve l’option pour indiquer le max de bones dont un vertex peut être influencé.

Utiliser le moins possible de materials par mesh.

Pour les animations, séparer et parenter des elements flottants : armure, arme, etc... Même s'ils ne changent pas. Ce sera toujours ça de moins à être affecté par les bones.

Sauf dans le cas d’anims procédurales, éviter les IK. Animer en IK, baker en FK et supprimer les IK.

Si possible, réutiliser les rigs et les anims leur sont associées.

Il existe aussi l’animation procédurale. C’est à dire des animations traditionnelles blendées qui répondent à des règles.
Ces anims peuvent être affectées par des scripts, des contraintes physiques : poser toujours les pieds par terre malgrés les changements du terrain tandis que la tete anticipe le mouvement du regard, toujours regarder un objet, adapter la taille des pas à la vitesse de déplacement, utiliser la même animation que pour avancer mais inversée lorsque le perso recule…

http://www.youtube.com/watch?v=v2q5kuic6HA&feature=related

Les LOD d’anim : réduction du nombre de bones (doc RE5)

Le Keyframe Reduction, moins on a de points, moins on a de données en mémoire et à calculer, donc plus optimisé.


Le mot de la fin :

Rester intuitif, essayer de s’en remettre au bon sens.

Toujours cloner quand c’est possible et travailler avec le moins de faces possible.

Absolument toujours justifier l'ajout d'une face, d'une lampe, d'une texture, d'un shader, etc...

Prendre du recul et éviter de s'égarer dans les détails.

Qu'un jeu soit graphiquement réaliste, abstrait, etc... il s'agira toujours, au final et avant tout, de donner une "impression.