C'est la norme - 4: résoudre les problèmes avec les cartes normales

image

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

Partie 2: comment les cartes normales sont-elles cuites?

Partie 3: types de cartes normales

C'est la quatrième partie du didacticiel sur les cartes normales, mais elle est indépendante du reste et peut être lue séparément.

Ici, j'énumère les problèmes de carte normaux que j'ai rencontrés au cours des années de travail, et quelques solutions qui peuvent être corrigées.

Problème: sur les bords du modèle il y a des "lignes noires" ou des "inserts"


image

Cela se produit lorsque le modèle a des bords durs, car les sommets du modèle ont des normales qui sont complètement perpendiculaires à la surface du polygone, c'est pourquoi le programme de cuisson peut ignorer certains détails (en laissant des lignes noires sur le modèle).

image

Solution: les programmes de cuisson de carte normaux prennent en compte ce problème lors de la création de cartes normales et tentent de réduire son influence en calculant un peu plus d'informations derrière les normales de sommet, mais pour les enregistrer, ils ont besoin d'un écart entre les polygones de balayage UV.

Il y a une explication plus détaillée ici, mais dans la pratique, la règle est assez simple: lorsque le modèle a une arête vive, vous devez séparer les faces qui lui sont connectées en UV.

Problème: la carte normale semble TOTALement fausse, surtout sous certains angles


Ce problème peut se produire pour diverses raisons. Discutons de certains d'entre eux:

  • Vous utilisez le mauvais espace tangent: les normales de votre modèle lowpoly, que nous essayons de modifier en utilisant la carte normale, peuvent être calculées différemment dans le programme de cuisson que dans le programme utilisé pour rendre le modèle. Si ces calculs sont différents, la carte normale peut sembler très étrange, surtout sous certains angles.

    image

    , . , , .

    : Mikk. , . Mikk, handplane .
  • -: — . , . - — , . - , linear/linear color/raw sRGB Unreal.
  • : , , (bump map), (displacement map) ....
  • lowpoly- lowpoly : , / (smoothing groups)/ (hard edge), / , .

    lowpoly , /, ( obj ) .

: ?


Solution: vous n'en avez pas besoin. Il n'est pas nécessaire de créer des cartes normales pour tout. Un cône pointu en est un exemple classique, mais il existe de nombreux autres cas où les cartes normales ne sont pas une solution.

image

Nous utilisons des cartes normales pour changer la direction des normales des modèles lowpoly. Parfois, la direction des normales est correcte et ne nécessite aucun changement, et parfois les normales lowpoly sont extrêmement tournées (comme dans le cas d'un pic pointu) et les détails du modèle highpoly sont incorrectement mappés à la surface du modèle lowpoly. Dans de tels cas, je supprime simplement les détails de la carte normale en utilisant cette couleur:

image

Cette couleur est 50% rouge, 50% verte et 100% bleue, et elle ne change pas la direction des normales de la carte normale de l'espace tangent, vous pouvez donc l'utiliser pour supprimer des parties dans des endroits où la projection a échoué.

Un cône pointu n'est qu'un exemple de l'un des cas où les cartes normales peuvent ne pas résoudre vos problèmes. Il est important de se rappeler ici que dans certains cas, la carte normale n'est pas la meilleure solution, ses capacités sont limitées et nous ne pouvons pas nous attendre à ce qu'elles se comportent comme nous en avons besoin dans n'importe quelle situation. Parfois, nous passons beaucoup de temps à essayer de faire fonctionner la carte normale, alors que nous pouvons simplement ajouter des parties à la texture diffuse ou lowpoly, et ne pas essayer de transférer la partie à l'aide de la carte normale.

Problème: les détails de mon modèle sont inversés.


C'est un problème très courant et peut être vu dans de nombreux jeux vidéo, même au niveau AAA.

Comme nous l' avons vu dans ce tutoriel [ traduction sur Habré], des cartes normales sont des textures qui utilisent des canaux vert, rouge et bleu pour changer la lumière manière est réfléchie par la surface du modèle quand il tombe, respectivement, du côté, en haut et avant du modèle (rappelez - vous que cela est simplifié explication et ce n'est pas vrai à 100%).

image

Le problème est que certaines applications pensent que le canal vert devrait montrer le modèle comme éclairé par le bas, tandis que d'autres estiment qu'il devrait montrer le modèle comme éclairé par le haut. C'est ce que l'on appelle parfois la «main droite normale de la carte»:

  • Applications OpenGL (côté droit, canal vert positif): Blender, Maya, Modo, Toolbag, Unity.
  • Applications DirectX (côté gauche, canal vert négatif): 3DStudio Max, CryEngine, Source Engine, Unreal Engine.
  • Substance Painter peut fonctionner avec les deux types et exporter les deux types de cartes normales.

Solution: inversez le canal vert de la carte normale. La plupart des moteurs de jeu ont une option pour inverser la texture de la carte normale, ou vous pouvez inverser manuellement le canal de texture vert dans Photoshop (allez dans l'onglet canaux, sélectionnez le canal vert et appuyez sur Ctrl + i).

Problème: certaines pièces semblent plates / manquantes


Imaginez que lors de la cuisson de cartes normales, le programme de cuisson émette des rayons de la surface du modèle lowpoly, en suivant les normales lowpoly, jusqu'à ce que les rayons se croisent avec le modèle highpoly et tournent. Après cela, le programme de cuisson prend ces informations et les enregistre sur la carte normale.

Ces rayons émis ne devraient pas se déplacer sans fin, car ils peuvent entrer en collision avec la partie éloignée du highpoly et tourner incorrectement, de sorte que le programme de cuisson limite la plage d'émission de rayons et parfois les rayons peuvent s'arrêter avant de pouvoir se croiser avec le highpoly. Dans ce cas, nous perdons des détails et la carte normale a des zones de couleur plate.

image

Solution: dépend de la façon dont le programme de cuisson vous permet de contrôler la distance de cuisson:

  • lowpoly , «» lowpoly- ( ). , lowpoly highpoly.
  • , Max, (cage) — «» lowpoly, .
  • ( Substance Painter max frontal/rear distance).

Vous pouvez également essayer de rendre les lowpoly et / ou highpoly plus similaires les uns aux autres afin que les rayons puissent obtenir des détails sur toute la surface du modèle. Une autre option consiste à cuire deux cartes normales avec des distances de cage différentes et à les mélanger dans différentes parties des textures. Certains puristes de carte normaux peuvent vous jurer pour cela, alors prenez soin de vos oreilles.

Problème: la carte normale comporte des détails déformés


Il s'agit d'un problème très courant. Cela se produit lorsque les normales lowpoly ne correspondent pas correctement aux parties highpoly, donc elles semblent inclinées (en fait, si vous les regardez du côté des normales de vertex , elles correspondent parfaitement). Cela se produit généralement lorsque certains visages forment un angle très net.

image

Solution: je l' ai écrit plus en détail sur ce sujet dans un autre tutoriel [ traduction sur Habré], mais en général les solutions sont les suivantes:

  • Lissez l'angle vif en ajoutant un biseau.
  • Convertissez une arête d'un angle aigu en une arête vive (arête dure) / divisez les faces en différents groupes de lissage (groupe de lissage).
  • Utilisez des normales personnalisées / normales pondérées.

Problème: la carte normale semble pixelisée ou contient des rayures


Tremblement de terre (dieu normal de la carte AKA) a écrit une très bonne explication à ce problème.

Si lowpoly et highpoly sont très similaires, alors la plupart de la carte normale aura une couleur de base de la carte normale, et les autres couleurs seront aux endroits où lowpoly diffère de highpoly.

Si la situation est inverse: lowpoly et highpoly sont très différents, alors la carte normale aura une variété de couleurs beaucoup plus large et des dégradés apparaîtront:

image

De tels dégradés lisses posent des problèmes car de nombreuses couleurs sont nécessaires pour les représenter, et les méthodes de compression de texture les plus courantes sont basées sur la réduction du nombre total de couleurs.

Solutions:

  • lowpoly highpoly: , . lowpoly, highpoly.
  • 16- : 8- . , 8 (0 1). 256 .

    , .

    image

    16- 16 , 65536 . , . , 16- , 8- ( ). , 16- -; 24- . [. .: .]

    , , 16 .
  • : — , , — . , , . .

    image
  • , : , , . , : , . . , ( , , ), .

:


La solution évidente serait d'augmenter l'îlot UV de cette partie du modèle ou d'utiliser des textures plus grandes, mais examinons des solutions moins évidentes:

  • Faites cuire la carte normale avec une résolution doublée, puis réduisez la taille de l'image: si vous utilisez une texture 512x512, faites cuire la carte normale avec une résolution de 1024x1024, puis convertissez l'image en 512x512. Pour cette raison, chaque pixel de la texture finale recevra des informations de quatre pixels, créant une sorte d'anticrénelage et réduisant la pixellisation. Cela est également vrai pour les autres images cuites; En outre, il vaut la peine d'enregistrer des versions de texture haute résolution au cas où vous souhaiteriez ultérieurement augmenter les détails dans certaines zones.

    image

    , , , 1024, highpoly, .
  • UV islands , . 1 UV-, .

    trim- .
  • , . - , . :

    image

    image

Problème: mon modèle est symétrique, mais la carte normale est différente sur différents côtés.

Lorsqu'elles sont appliquées à un modèle de symétrie, les directions des normales peuvent changer en raison du fait que la façon de connecter les faces a changé. Parfois, cela signifie que vous pouvez obtenir une couture en plein centre du modèle. Pour éviter cela, assurez-vous que les normales lowpoly au centre sont alignées et ajustez le lissage si nécessaire.

Une autre raison possible est la triangulation : lorsque les modèles sont importés dans le moteur de jeu, ils sont toujours triangulés et parfois ce processus peut changer les normales lowpoly, et des artefacts peuvent apparaître le long des diagonales des faces lowpoly. Pour éviter cela, triangulez le modèle avant la cuisson, faites cuire la carte normale, puis appliquez le modificateur de symétrie.

De plus, vous pouvez étudier le petit tutoriel Séisme, qui m'a aidé un peu plus à comprendre les normales des sommets et les cartes normales.

Pour plus d'informations sur les cartes normales, consultez le wiki Polycount.

All Articles