C'est la norme - 2: comment les cartes normales sont cuites

Il s'agit de la deuxième partie d'une série de didacticiels sur les cartes normales. La première partie est ici , mais pour comprendre la deuxième partie il n'est pas nécessaire de la lire.

Le principe général de cuisson d'une carte normale est relativement simple: nous avons un modèle lowpoly avec coordonnées UV et un modèle highpoly; nous transférons les informations normales de highpoly à lowpoly. Grâce à cela, lowpoly réfléchira la lumière de la même manière que highpoly.

Au cours de ce processus, le programme de cuisson émet essentiellement des rayons provenant du lowpoly, suivant les normales des sommets et recherchant le higpoly. C'est l'aspect le plus important de la création de cartes normales, et la plupart des problèmes qui surviennent lorsque vous travaillez avec des cartes normales y sont liés.

Si vous ne contrôlez pas les normales des sommets du modèle lowpoly, vous perdrez le contrôle de la carte normale.

image

Mauvaise corrélation des cartes normales


Pour contrôler le lissage du modèle lowpoly, nous avons besoin de sommets divisés (pour créer des bords rigides) ou de sommets moyens (pour créer des bords lisses).

Il s'est avéré que tous les programmes 3D n'utilisent pas les mêmes calculs pour calculer la moyenne des sommets. Cela signifie que dans différents éditeurs 3D, le modèle lowpoly aura un aspect différent et ses normales de sommet pointeront légèrement dans des directions différentes. Habituellement, cela ne pose pas de gros problème, car ces écarts sont très faibles, mais ils affectent l'apparence du modèle; et ces différences sont amplifiées lors de l'utilisation de cartes normales, car les cartes normales modifient les normales des modèles lowpoly, qui sont différents dans différents programmes.

image

L'industrie graphique 3D s'efforce de résoudre ce problème; Récemment, un standard appelé espace Mikk est apparu. Il s'agit d'une méthode de calcul des normales de sommet que toutes les applications 3D peuvent utiliser pour que les normales de sommet se ressemblent dans tous les programmes 3D. Cependant, il convient de noter que jusqu'à présent, toutes les applications 3D ne l'utilisent pas.

Une autre façon de réduire cet effet est de ne pas trop compter sur des cartes normales lors de la cuisson. Essayez de faire ressembler le modèle lowpoly à un modèle highpoly et utilisez des bords plus rigides sur des surfaces planes. Dans ce cas, la carte normale n'a pas à faire tout le travail et les petites déviations deviendront moins visibles.

Détails en biseau de la carte normale


Lorsque l'ordinateur fait la moyenne de la direction de la normale pour les normales des sommets du modèle lowpoly, de grands changements dans les angles de surface peuvent «presser» les normales du modèle lowpoly et ils ne seront plus perpendiculaires à la surface lowpoly.


Étant donné que le programme de cuisson normal, lors de la recherche de pièces highpoly, utilise les directions normales lowpoly, si ces directions sont biseautées, elles seront biseautées sur la carte normale:

image

Il s'agit d'un problème très courant pour lequel plusieurs solutions ont été trouvées. Il n'y a pas de solution idéale, tout dépend de la géométrie.

1. Dans certains programmes de cuisson 3D, il est possible de rechaper ces pièces avec un changement temporaire des normales lowpoly afin qu'elles cuisent sans biseautage. Par exemple, une telle option se trouve dans le Marmoset Toolbag. Un utilisateur de Reddit avec le surnom Tanagashi m'a gentiment expliqué que certains programmes comme xNormal peuvent tesseller lowpoly pour ajouter de nouveaux sommets et rendre les normales perpendiculaires à la surface lowpoly, cuire la carte normale dans l'espace objet et ensuite la convertir en espace tangent basé sur les normales lowpoly originales. En utilisant la nouvelle carte normale, le programme peut créer des masques pour contrôler où utiliser la carte normale d'origine et où elle a été créée à partir du modèle lowpoly en mosaïque.

image

2. L'ajout de sommets rendra la transition entre les normales des sommets moins oblique, car un angle de 90 ° sera divisé en plusieurs degrés plus petits, rendant la deuxième transition moins oblique. De toute évidence, cela augmente le nombre de polygones, et lorsque vous ajoutez de la géométrie, je recommande d'utiliser ces modules complémentaires pour créer une silhouette de modèle plus intéressante.

image

image

3. Séparation des normales moyennes des sommets (raidissement de l'arête / utilisation de groupes de lissage séparés): de cette façon, chaque sommet aura plusieurs normales, chacune étant perpendiculaire à la surface lowpoly. N'oubliez pas que lorsqu'un programme 3D a un sommet divisé normalement, il crée en fait un doublon du sommet, augmentant ainsi le nombre de sommets et réduisant légèrement les performances. De plus, comme nous le verrons plus loin, les côtes rigides créent le problème des «côtes noires».

image

4. Vous pouvez modifier les normales du modèle pour plier les normales lowpoly afin qu'elles soient perpendiculaires aux normales highpoly. N'oubliez pas que tous les programmes ne permettent pas l'utilisation de normales modifiées (dans Zbrush, il n'y a que des normales moyennes, les fichiers OBJ et les FBX obsolètes ne contiennent pas d'informations spéciales sur les normales). En fait, il existe deux façons de modifier les normales:

  • Normales pondérées: Il s'agit d'une méthode automatique, similaire aux normales moyennes des sommets. L'idée est que lors de la moyenne des normales des sommets, toutes les faces ne devraient pas avoir la même force: les grandes faces «attirent» les normales des sommets vers elles-mêmes plus fortement que les petites faces. Pour cette raison, les grands visages, qui sont généralement plus importants, auront une meilleure projection des détails. Cela fonctionne particulièrement bien avec les panneaux highpoly.

    image
  • Normales personnalisées: en utilisant les outils de l'éditeur 3D, nous pouvons plier des normales lowpoly. Il s'agit d'une idée relativement nouvelle, pour la mise en œuvre de laquelle il n'y a pas d'outils standardisés. N'oubliez pas que les normales de flexion peuvent créer des ombrages indésirables très étranges dans d'autres parties du modèle, donc cette technique est généralement combinée avec des biseaux. Certaines personnes appellent cette technique «modélisation midpoly».

    image

Cage / distance de cuisson


Par défaut, les rayons émis par une surface à faible niveau de polarité parcourent une distance limitée de sorte que le faible niveau de polarité ne reçoit pas d'informations normales de parties éloignées du niveau de haut niveau. Cette distance est généralement appelée «distance frontale / arrière», car les rayons peuvent être émis vers l'intérieur, l'extérieur ou les deux. Dans la figure ci-dessous, cette distance est indiquée en rouge:

image

Certaines applications 3D (telles que 3ds Max) permettent également l'utilisation d'une cage. La cage est une «copie» d'un modèle lowpoly qui peut être modifiée de manière à contenir idéalement un highpoly. De plus, dans certains cas (pas toujours), cela nous permet de changer la direction des rayons sans changer les normales initiales des sommets lowpoly. Cela peut aider à obtenir les meilleurs cas limites de cuisson et à éviter les biseaux; cependant, nous devons nous rappeler que nous cuisons en utilisant non pas la direction des sommets des normales, mais à la fin nous utiliserons la carte normale pour changer les vraies normales lowpoly, donc le résultat peut sembler étrange.

image

Coutures côtelées


Comme nous l'avons vu, s'il existe un modèle avec des bords durs (certains bords ont plus d'un groupe de lissage, ou certains bords sont marqués comme «durs»), le programme de cuisson divise le sommet normal entre deux faces. Il y a des bons et des mauvais côtés à cette opération.

La bonne chose à ce sujet est que les normales ne sont pas moyennées, donc il y a moins de distorsion des normales: les normales des sommets sont complètement perpendiculaires à la surface lowpoly. Il peut également rendre le lowpoly plus beau s'il a des bords à angles vifs plus adaptés aux bords rigides.

La mauvaise nouvelle est qu'il y a maintenant un écart entre les normales, et cela peut signifier que nous pouvons perdre des informations si lowpoly a un écart dans les normales où il ne peut pas obtenir de détails highpoly. De plus, certaines parties de la projection lowpoly peuvent se croiser et rivaliser pour le même espace UV. Les deux effets créent une couture le long de la nervure, dont la visibilité dépend du moteur.

image

Cependant, cela peut être facilement évité avec une astuce simple: si deux faces sont séparées par un bord dur, vous devez placer chaque face sur un îlot UV séparé, en laissant de l'espace entre elles. Pour réduire l'impact du problème des normales divisées, les programmes de cuisson essaient un peu d'informations supplémentaires en dehors des sommets des normales, mais pour cela, ils ont besoin d'espace supplémentaire sur la texture. Si les faces séparées par un bord dur sont connectées en UV, il n'y aura pas de place pour enregistrer ces informations supplémentaires sur la texture.

image

image

Conclusion


Ayant préparé le modèle lowpoly et le rapprochant le plus possible du modèle highpoly, je commence à travailler sur le lissage avant UV. J'ai défini le lissage pour lowpoly (si l'objet est organique, je commence par un modèle entièrement lissé, s'il a une surface solide, puis je règle l'angle de lissage entre 30 et 60 ° et ajuste le lissage jusqu'à ce que le résultat soit satisfaisant).

Après avoir préparé le lissage du modèle, je commence à travailler sur les UV, en divisant tous les bords durs en îlots UV séparés (pour éviter les coutures sur les bords).

S'il y a des erreurs avec les biseaux, alors j'ajoute des bords supplémentaires (généralement je fais des biseaux pour maintenir la rondeur de la silhouette). Cela fonctionne pour la plupart de mes modèles, mais je peux corriger les erreurs avec les biseaux si j'utilise le sac à outils Marmoset pour la cuisson, ou en utilisant mes propres normes / pondérées.

S'il y a des erreurs de projection, je modifie la distance de cuisson / cage, modifie le lopoly / highpoly pour qu'ils soient mieux adaptés à la cuisson, ou supprime les cartes normales sur des pièces séparées très rigides, par exemple, aux extrémités des cônes.

Le prochain article sera une instruction pour résoudre les problèmes de cuisson des cartes normales et discuter des problèmes et des solutions les plus courants.

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


All Articles