Création et Utilisation des Normal Maps
Concrètement, qu'est-ce que c'est que les normals maps?
C'est une texture dans un format particulier qui permet à un logiciel (de 3D comme de 2D, puisqu'il est possible de faire un faux éclairage dans photoshop avec des normal map, par exemple) de récupérer des informations d'éclairages. C'est en quelque sorte un bump amélioré qu'on obtiens à partir d'un model complexe pour un model simple.
Cela nous intéresse particulièrement en 3D temps réel ou pour alléger des calculs sur des models complexes.
Nous allons nous intéresser à la partie 3D.
Ce que nous voulons faire, c'est avoir un model en lowpoly qui sera utilisé pour le jeu ou pour notre prod, et un model very high poly, bourré de détails qui nous permetra, lui de créer la Normal Map.
(oui, il est affreux, mais c'est juste pour montrer comment ça marche)
Comment créer votre Normal Map?
Il existe de nombreuses façon de créer une normal map, mais elles impliquent toutes d'avoir au préalable déplié vos UVs (en tout cas sur l'objet lowpoly). Y compris de passer par des logiciels annexes.. Pour les tutoriaux propres aux softs, je vous renvoie ici:
Deux autres tutos sur XSI, avec une méthode plus récente
Vous pouvez donc, dans tout les cas et quel que soit le logiciel que vous utilisez, passer par un logiciel annexe
J'en connais deux:
Ils sont tout les deux très facile d'utilisation (loadez le lowpoly, loadez le highpoly, définissez les tailles de vos maps à générer, cliquez sur générer) mais n'ont pas l'avantage de pouvoir câbler directement votre matériel dans votre logiciel préféré.
Pour maya il existe l'outil "surface sampler"
Pour que cet outil marche il est indispensable que vos meshs soient au même coordonnées (à comprendre qu'ils soient au même endroit et se chevauchent)
Sélectionnez votre lowpoly et ouvrez le surface sampler (modify>surface sample). Cela vous ouvre une fenêtre d'options
Si vous avez bien sélectionné votre lowpoly avant d'ouvrir votre fenêtre, vous n'avez rien à changer dans l'onglet "Target Surface"
Sélectionnez votre Highpoly et dans l'onglet "Source Surface" cliquez ur "Add Selected"
Dans les outputs, choisissez les maps que vous voulez générer
Dans Shading Network, je vous conseille de mette l'option Attach to shading network. Ils vous fera comme ça les câblages automatiquements.
Laissez les options (et plus particulièrement les advanced options) comme elles le sont pas défaut. Elles permettent d'affiner les choses mais normalement par défaut elles fonctionnent très bien.
Cliquez sur bake.
ça calcule ça calcule et...
rien.
boooon.
Cachez votre model highpoly, mettez quelques light dans la scène et cochez le High Quality Rendering (dans l'onglet shading de votre viewport)
Passez en mode 6, puis 7
et hop
C'est en temps réel. Si vous bougez vos light, votre model réagis "comme un vrai". Par contre, comme vous pouvez le voir très clairement ici, ça reste du bump. On vois toujours les polygones, aucun changement de topologie ni de forme évidentes. C'est ce que nous recherchons pour le temps réel.
Mais si vous avez en plus calculé une displacement map, au rendu votre objet aura sensiblement les même forme que votre highpoly (et sera un peu plus rapide au rendu normalement)
En revanche, si vous n'avez pas parfaitement déplié vos UVs, votre model aura une certaine tendance à être absolument immonde.(comme l'exemple ci-dessus) faites donc bien attention à ça!
Comme toujours, si vous avez des questions, remarques, suggestions, n'hésitez pas à me contacter
Fred
frederic.naville@infomaniak.ch