C'est la norme - 3: types de cartes normaux

Partie 1: quelles sont les cartes normales et comment fonctionnent-elles?

Partie 2: comment les cartes normales sont cuites Au four

Comme beaucoup d'autres choses dans notre industrie, les cartes normales ont évolué au fil des ans, et aujourd'hui il existe plusieurs types qui peuvent avoir l'air différents. Dans l'article, je vais énumérer ceux dont je me souviens, mais il y en a peut-être d'autres.

Carte des normales de l'espace tangent (carte normale de l'espace tangent ): le type le plus courant aujourd'hui, les cartes normales; c'est ce dont nous avons parlé dans les articles précédents. Il modifie la direction des normales du modèle en fonction de la direction des normales de ses sommets (c'est-à-dire que nous devons contrôler les normales des sommets du modèle lowpoly).

image

Carte normale de l'espace tangent Mikk ( carte normale de l'espace tangent Mikk ). Tous les éditeurs 3D ne calculent pas la moyenne des normales de sommet de la même manière. Cela conduit au fait que l'apparition de cartes normales est différente dans les différents moteurs, donc nous avons besoin de faire cuire la carte normale en utilisant la même méthode que les utilisations du programme de rendu (ce qui est appelé « utiliser un flux de travail synchronisé ( flux de travail synchronisé ) »)

Mikk a proposé un moyen de calculer les normales des sommets, qui était censé être universel pour que tous les programmes les calculent de la même manière. Du point de vue du flux de travail, cela signifie que vous pouvez utiliser le modèle low poly avec toutes ses normales moyennes (avec un groupe de lissage ou avec lissage de toutes les faces), cuire la carte normale dans l'espace tangent de Mikk, et il aura l'air exactement tout comme un modèle highpoly, sans avoir besoin d'éliminer les erreurs de lissage ou de séparation des bords durs dans les UV. À l'avenir, j'écrirai un tutoriel sur la façon de procéder.

N'oubliez pas qu'il s'agit toujours d'une carte des normales de l'espace tangent, mais les normales du modèle sont calculées de manière universelle et les modèles peuvent être utilisés dans différents programmes.

image

Deux espace tangent -channel carte normale: il se trouve que l' utilisation des informations stockées dans deux des trois canaux de la carte normale, l'ordinateur peut calculer la troisième, ce qui réduit l'empreinte mémoire au prix d' une augmentation du nombre de calculs. Étant donné que la mémoire est généralement en manque, cette optimisation est souvent utilisée et certains moteurs l'exécutent automatiquement (par exemple, Unreal Engine, lorsque nous définissons le paramètre «normal map» pour compresser la texture normalement). Après avoir libéré un canal de la map normale, nous pouvons réduire la taille de la texture ou utiliser ce canal pour la métallité / rugosité / opacité ...

Normalement, le canal bleu de la carte normale est éliminé, de sorte que ces textures semblent jaunes. Étant donné que cette optimisation est parfois effectuée automatiquement par certains moteurs, vous pouvez remarquer de telles textures dans votre projet.

image

Carte des normales de l'espace mondial (carte normale de l'espace mondial): cette carte est normale, au lieu de modifier la direction des normales de sommet, les ignore complètement et change la façon dont la réflexion de la lumière est un modèle lowpoly dans l'espace mondial (espace mondial) (lorsqu'elle est cuite, elle considère que les normales de sommet parallèle aux axes du monde).

Nous pouvons dire que la carte normale de l'espace tangent indique au modèle «vous devez refléter la lumière vers la droite», et la carte normale de l'espace mondial - «vous devez refléter la lumière vers l'est».

image

Ces cartes normales sont plus colorées et présentent des dégradés plus visibles; ils ont été utilisés parce que dans ce cas, vous n'avez pas besoin de penser aux normales des sommets lowpoly, mais ils ont un inconvénient - vous ne pouvez pas déplacer le modèle car il aura l'air étrange (nous définissons le visage pour qu'il reflète toujours la lumière vers l'est. Si nous le faisons pivoter, puis le bord continuera de réfléchir la lumière vers l'est.).

image

Aujourd'hui, les normales de l'espace mondial sont rarement utilisées dans les jeux, mais elles peuvent toujours être utilisées pour créer de belles textures, par exemple, le canal bleu montre comment le modèle doit refléter la lumière tombant sur le modèle, vous pouvez donc l'utiliser pour ajouter un éclairage de couleur à la texture.

Il convient également de rappeler que les coordonnées universelles dans différentes applications sont implémentées différemment: dans Unreal, 3D Studio Max, Blender, l'axe Z est dirigé vers le haut, et dans Maya, Modo et Cinema4D, l'axe Y est orienté. Cela signifie que lors du transfert des normales mondiales entre les applications les espaces peuvent se détériorer.

Carte normale de l'espace objet(Carte normale de l'espace objet): Il s'agit d'une version améliorée du type de carte précédent, et elle est très similaire à celle-ci. L'idée est que lorsque vous déplacez un modèle dans le monde, sa carte normale de l'espace mondial doit être réorientée par rapport à l'objet.

Cela peut être décrit comme «cette face doit refléter la lumière à droite du modèle». Si vous faites pivoter le modèle dans le monde, la carte normale devrait changer en fonction de ces changements. Cependant, cela ne fonctionne pas avec les maillages déformables, car dans ces cartes, seul le mouvement de l'objet est pris en compte. C'est pour cette raison que les cartes normales de l'espace tangent sont les plus courantes aujourd'hui.

Cartes normales inclinées(Cartes normales pliées): elles combinent essentiellement des informations AO et des cartes normales, en inclinant les directions des normales pour que la lumière ait tendance à se refléter sur les parties du modèle que la lumière frappe.

Ces cartes sont utilisées pour améliorer l'Oclussion ambiante et pour éviter un effet appelé «fuite de lumière», dans lequel un modèle peut réfléchir la lumière dans des parties qu'il ne peut pas atteindre. Personnellement, je ne les ai jamais utilisés, mais j'aurais exploré leurs capacités si j'avais rencontré une «fuite de lumière» notable. Plus d'informations peuvent être trouvées ici , ici et ici .

Cartes normales 16 bits(Cartes normales 16 bits): parfois quand il y a un gradient très lisse sur la carte normale, on peut remarquer l'apparition de rayures. Ces rayures sont dues au manque de couleurs pour représenter un dégradé lisse, généralement causé par la compression de texture.

Mais dans le cas d'une surface large et lisse, de tels problèmes peuvent survenir même avec une texture non compressée. Dans une telle situation, des cartes normales 16 bits peuvent être utilisées, généralement au format de fichier .tga, qui ont plus de couleurs et sont plus grandes que les cartes normales 8 bits normales.

Vous pouvez en savoir plus sur les cartes normales 16 bits sur le dieu tutoriel lui-même - Tremblement de terre .

image

image

Il convient également de tenir compte du fait qu'il existe d'autres techniques pour réduire les conséquences de ce problème, par exemple, en éliminant complètement les cartes normales (seule la géométrie est utilisée pour représenter cette surface lisse), en transformant lowpoly pour qu'il ressemble plus à highpoly afin que les gradients soient moins perceptibles, ou l'utilisation du tramage.

Alors, quel type devrions-nous utiliser?

Dans 90% des cas, la meilleure solution est les cartes normales de l'espace tangent Mikk. Contrairement aux options utilisant des cartes normales de l'espace du monde ou d'un objet, le modèle pourra se déformer et la direction des normales restera correcte.

Vous devez faire cuire la carte normale dans le même espace tangent que dans le programme de rendu. L'espace tangent le plus courant est Mikk, utilisez-le dès que possible.

Si la pixellisation apparaît sur votre carte normale, envisagez d'utiliser 16 cartes normales ou l'une des solutions mentionnées ci-dessus.

En fait, ce sont tous des types de cartes normales dont je me souviens. Si vous connaissez d'autres types, faites-le moi savoir et je les ajouterai à ce tutoriel!

Merci d'avoir lu, j'espère que l'article vous a été utile. Merci à Shnya pour ses commentaires et son aide.

Source: https://habr.com/ru/post/undefined/


All Articles