Esta es la norma - 4: resolver problemas con mapas normales

imagen

Parte 1: qué son los mapas normales y cómo funcionan

Parte 2: cómo se hornean los mapas normales

Parte 3: tipos de mapas normales

Esta es la cuarta parte del tutorial de mapas normales, pero es independiente del resto y se puede leer por separado.

Aquí enumero los problemas de mapas normales que he encontrado a lo largo de los años de trabajo, y algunas soluciones que se pueden solucionar.

Problema: en los bordes del modelo hay "líneas negras" o "insertos"


imagen

Esto sucede cuando el modelo tiene bordes duros, ya que los vértices del modelo tienen valores normales que son completamente perpendiculares a la superficie del polígono, por lo que el programa de horneado puede omitir algunos detalles (dejando líneas negras en el modelo).

imagen

Solución: Los programas de cocción de mapas normales tienen en cuenta este problema al crear mapas normales e intentan reducir su influencia calculando un poco más de información detrás de las normales de vértice, pero para guardarlo, necesitan un espacio entre los polígonos de escaneo UV.

Aquí hay una explicación más detallada, pero en la práctica la regla es bastante simple: cuando el modelo tiene un borde afilado, es necesario separar los bordes conectados a él en UV.

Problema: el mapa normal parece TOTALMENTE mal, especialmente en algunos ángulos


Este problema puede ocurrir por una variedad de razones. Analicemos algunos de ellos:

  • Está utilizando el espacio tangente incorrecto: las normales de su modelo lowpoly, que estamos tratando de modificar utilizando el mapa normal, se pueden calcular en el programa de horneado de manera diferente que en el programa utilizado para representar el modelo. Si estos cálculos son diferentes, el mapa normal puede parecer muy extraño, especialmente desde algunos ángulos.

    imagen

    , . , , .

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

    lowpoly , /, ( obj ) .

: ?


Solución: no lo necesitas. No es necesario crear mapas normales para todo. Un cono afilado es un ejemplo clásico de esto, pero hay muchos otros casos en los que los mapas normales no son una solución.

imagen

Usamos mapas normales para cambiar la dirección de las normales de los modelos lowpoly. A veces, la dirección de las normales es correcta y no requiere ningún cambio, y a veces las normales de lowpoly se rotan extremadamente (como en el caso de un pico agudo) y las partes del modelo de highpoly se asignan incorrectamente a la superficie del modelo de lowpoly. En tales casos, simplemente elimino los detalles del mapa normal usando este color:

imagen

Este color es 50% rojo, 50% verde y 100% azul, y no cambia la dirección de las normales del mapa normal del espacio tangente, por lo que puede usarlo para eliminar partes en lugares con una proyección fallida.

Un cono afilado es solo un ejemplo de uno de los casos en que los mapas normales pueden no resolver sus problemas. Es importante recordar aquí que en algunos casos el mapa normal no es la mejor solución, sus capacidades son limitadas y no podemos esperar que se comporten como lo necesitamos en cualquier situación. A veces pasamos mucho tiempo tratando de hacer que el mapa normal funcione, cuando simplemente podríamos agregar partes a la textura difusa o lowpoly, y no tratar de transferir la parte usando el mapa normal.

Problema: los detalles de mi modelo parecen invertidos.


Este es un problema muy común y se puede ver en muchos videojuegos, incluso a nivel AAA.

Como vimos en este tutorial [ traducción en Habré], los mapas normales son texturas que usan canales verde, rojo y azul para cambiar la forma en que la luz se refleja desde la superficie del modelo cuando cae, respectivamente, desde el lado, la parte superior y el frente del modelo (recuerde que esto se simplifica explicación y no es 100% cierto).

imagen

El problema es que algunas aplicaciones creen que el canal verde debería mostrar el modelo iluminado desde abajo, mientras que otras creen que debería mostrar el modelo iluminado desde arriba. Esto a veces se llama la "manejabilidad del mapa normal":

  • Aplicaciones OpenGL (canal verde positivo del lado derecho): Blender, Maya, Modo, Toolbag, Unity.
  • Aplicaciones DirectX (lado izquierdo, canal verde negativo): 3DStudio Max, CryEngine, Source Engine, Unreal Engine.
  • Substance Painter puede trabajar con ambos tipos y exportar ambos tipos de mapas normales.

Solución: invierta el canal verde del mapa normal. La mayoría de los motores de juego tienen una opción para invertir la textura del mapa normal, o puede invertir manualmente el canal de textura verde en Photoshop (vaya a la pestaña de canales, seleccione el canal verde y presione Ctrl + i).

Problema: algunas partes aparecen planas / faltan partes


Imagine que al hornear mapas normales, el programa de horneado emite rayos desde la superficie del modelo lowpoly, siguiendo los normales lowpoly, hasta que los rayos se cruzan con el modelo highpoly y rotan. Después de eso, el programa de horneado toma esta información y la guarda en el mapa normal.

Estos rayos emitidos no deben moverse sin cesar, ya que pueden chocar con la parte más alejada del highpoly y rotar incorrectamente, por lo que el programa de horneado limita el rango de emisión de rayos y, a veces, los rayos pueden detenerse antes de que puedan cruzarse con highpoly. En este caso, perdemos detalles y el mapa normal tiene áreas de color plano.

imagen

Solución: depende de cómo el programa de horneado le permita controlar la distancia de horneado:

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

También puede intentar hacer que lowpoly y / o highpoly sean más similares entre sí para que los rayos puedan obtener detalles en toda la superficie del modelo. Otra opción es hornear dos mapas normales con diferentes distancias de jaula y mezclarlos en diferentes partes de las texturas. Algunos puristas de mapas normales pueden jurar por esto, así que cuida tus oídos.

Problema: el mapa normal tiene detalles distorsionados


Este es un problema muy común. Esto sucede cuando las normales de lowpoly no se corresponden correctamente con los detalles de highpoly, por lo que parecen inclinadas (de hecho, si las miras desde la dirección de las normales de los vértices , se corresponden perfectamente). Esto generalmente ocurre cuando algunas caras forman un ángulo muy agudo.

imagen

Solución: Escribí con más detalle sobre este tema en otro tutorial [ traducción en Habré], pero en general las soluciones son las siguientes:

  • Alise la esquina afilada agregando un bisel.
  • Convierta un borde de un ángulo agudo en un borde afilado (borde duro) / divida las caras en diferentes grupos de suavizado (grupo de suavizado).
  • Utilice normales personalizados / normales ponderados.

Problema: el mapa normal se ve pixelado o contiene rayas


Terremoto (también conocido como dios del mapa normal) escribió una muy buena explicación para este problema.

Si lowpoly y highpoly son muy similares, entonces la mayoría del mapa normal tendrá un color base del mapa normal, y los otros colores estarán en los lugares donde lowpoly difiere de highpoly.

Si la situación es la opuesta: lowpoly y highpoly son muy diferentes, entonces el mapa normal tendrá una variedad mucho más amplia de colores y aparecerán degradados:

imagen

Tales gradientes suaves causan problemas porque se necesitan muchos colores para representarlos, y los métodos de compresión de textura más comunes se basan en reducir el número total de colores.

Soluciones:

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

    , .

    imagen

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

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

    imagen
  • , : , , . , : , . . , ( , , ), .

:


La solución obvia sería aumentar la "isla" UV de esta parte del modelo o usar texturas más grandes, pero veamos soluciones menos obvias:

  • Hornee el mapa normal con una resolución duplicada y luego reduzca el tamaño de la imagen: si usa una textura de 512x512, hornee el mapa normal con una resolución de 1024x1024 y luego convierta la imagen a 512x512. Debido a esto, cada píxel de la textura final recibirá información de cuatro píxeles, creando un tipo de suavizado y reduciendo la pixelación. Esto también es cierto para otras imágenes horneadas; Además, vale la pena guardar versiones de texturas de alta resolución en caso de que luego desee aumentar los detalles en algunas áreas.

    imagen

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

    trim- .
  • , . - , . :

    imagen

    imagen

Problema: mi modelo es simétrico, pero el mapa normal es diferente en diferentes lados.

Cuando se aplica a un modelo de simetría, las direcciones de las normales pueden cambiar debido al hecho de que la forma de conectar las caras ha cambiado. A veces esto significa que puede obtener una costura justo en el centro del modelo. Para evitar esto, asegúrese de que las normales de lowpoly en el centro estén alineadas y ajuste el suavizado si es necesario.

Otra posible razón es la triangulación : cuando los modelos se importan en el motor del juego, siempre se triangulan y, a veces, este proceso puede cambiar las normales de lowpoly, y pueden aparecer artefactos a lo largo de las diagonales de las caras de lowpoly. Para evitar esto, triangule el modelo antes de hornear, hornee el mapa normal y luego aplique el modificador de simetría.

Además, puede estudiar el pequeño tutorial de Terremoto, que me ayudó un poco más a comprender las normales de los vértices y los mapas normales.

Para obtener más información sobre mapas normales, consulte el wiki de Polycount.

All Articles