Mapas normales ideales para Unity (y otros programas)

... y cómo descubrir qué está mal con su canal de creación de contenido.


Supongamos que tiene un increíble modelo de alta poli en el que el artista ha trabajado, y desea incluirlo en el juego. El artista mostró capturas de pantalla de la modelo en su programa y se ven increíbles. Incluso después de hornear mapas normales para la versión low-poly, todavía se ve muy bien.


¡Vea la grandeza de este modelo tradicional para probar mapas normales!

Entonces el artista la mete en el juego, y ella se ve ... un poco mal.


¿No deberían ser estas caras planas?

Las superficies, que deberían ser planas, todavía están un poco redondeadas, algunas incluso están deprimidas y, lo que es peor, hay rayas extrañas a lo largo de ellas. Situación familiar? Algunos de ustedes probablemente lo encontraron, pensaron: "Bueno, probablemente, no funcionará mejor", y continuaron. Quizás se aplicó un poco de suciedad para enmascarar los casos más graves.

Pero en realidad hay algo mal con su canal de creación de contenido. ¡Esto no siempre es obvio, pero el problema puede resolverse! *

* Si asume que en algunos casos puede hacer cambios en la canalización de contenido.

Prefacio


Este artículo trata sobre cómo exportar mapas normales ideales desde otras aplicaciones para usar en Unity 5.3 y versiones posteriores. No habla sobre cómo obtener mapas normales de alta calidad, hay muchos otros tutoriales para esto, por lo que no tocaré este tema.



Base espacial tangente


El problema es cómo funcionan los mapas normales del espacio tangente. En particular, cómo funciona el espacio tangente (o base tangente). No iré demasiado lejos en los aspectos técnicos de lo que hacen. Yo, como otros autores, ya he hablado de esto , pero en resumen, el espacio tangente determina lo que debe representar la orientación de la dirección en el mapa normal. La dirección en el mapa normal es en realidad "hacia adelante", "arriba" o "derecha". Hablando en términos generales, esta orientación es la orientación de las coordenadas UV de la textura y las normales de los vértices.

Es más importante comprender que el programa utilizado para hornear el mapa normal desde la malla de alta política a la malla de baja política debe calcular su espacio tangenteexactamente igual que el programa en el que se usarán los mapas normales . Dado que diferentes programas pueden usar el espacio tangente de diferentes maneras, los mapas horneados normales para una malla no serán necesariamente los mismos para todas las aplicaciones. ¡Incluso para aplicaciones que usan el mismo espacio tangente!

Conoce a tu enemigo


Golpe debido a un error obvio


El error más común es el problema "OpenGL vs Direct3D". También se denominan mapas normales Y + e Y-. Los incluí aquí solo para completar. Lo más probable es que la mayoría de las personas que han encontrado este problema ya lo saben, o al menos aprendieron cómo resolverlo. Dado que los mapas normales se generan en una orientación, son esencialmente inútiles para usar en una aplicación diseñada para usar otra.


Mapas normales en orientación Direct3D en el motor Unity, que espera una orientación OpenGL.

Esto se puede entender por el hecho de que la iluminación parece estar invertida o cayendo desde el otro lado, pero solo en algunas direcciones de iluminación. Algunas esquinas o caras pueden parecer completamente normales hasta que mueva la fuente de luz.

Y con este problema, todo está lo suficientemente claro. La mayoría de las aplicaciones de horneado de mapas normales tienen un botón o menú grande y agradable para cambiar entre la opción de orientación OpenGL / Direct3D o Y. Descubra qué orientación usa la aplicación de destino y hornee mapas en ella. Unity usa OpenGL e Y +. Unreal usa Direct3D e Y-. Esto se puede entender claramente observando la textura del mapa normal en sí. Si parece que en el canal verde están iluminados "desde arriba", entonces esta es la orientación OpenGL. Si desde abajo, entonces esto es Direct3D.

Rarezas con sRGB


Otro error común es usar una textura marcada como textura sRGB. Esto cambia la forma en que se muestrea la textura de la GPU, forzándola a convertir valores de color del espacio sRGB, desde el cual las personas generalmente seleccionan valores de color, a un espacio de color lineal. Para mapas normales, esto no es necesario. Si establece el tipo en "Mapa normal" para la textura en Unity, el motor deshabilitará automáticamente esta opción, pero también puede deshabilitar la opción "sRGB (Textura de color)" manualmente, y la textura funcionará como un mapa normal. Al menos en Unity 2017.1 y posteriores.


Mapa normal con tipo de textura predeterminado y sRGB habilitado.

Este problema puede reconocerse por el hecho de que los mapas normales están fuertemente sesgados en una dirección. En este modelo, casi todas las caras parecen dirigidas hacia una fuente de luz. Obviamente, este no siempre será el caso. En un mapa normal más detallado, todas las partes responderán a la iluminación casi correctamente, pero cambiarán ligeramente a algún ángulo. A veces puede parecer que toda la superficie de la malla está distorsionada.

Demasiado diferente para ser normal


Otro problema común es el uso de diferentes mallas de cocción normales en el activo del juego. Al igual que con las tangentes, para que todo funcione, deben coincidir exactamente . Este error a menudo ocurre si los artistas exportan mallas con normales de vértice incorrectas. En este caso, cualquier aplicación que abra la malla tendrá que calcularlos usted mismo. No hay una sola forma correcta de resolverlo, todo depende de la malla, ¡así que asegúrese de que usted (o los artistas) exporten el modelo con las normales finales!


Mapas normales horneados en una malla suavizada, mostrados como en una malla con bordes afilados


Mapas normales horneados en una malla con bordes afilados, mostrados como en una malla suavizada

Este es otro problema que es fácil de detectar. Si el modelo parece que tiene bordes afilados, pero el sombreado se dobla desde estos bordes, esto significa que horneó el mapa normal con normales suaves, pero se representan en una malla con un borde afilado. Si el sombreado se dobla hacia el borde, esto significa que el mapa se horneó con un borde afilado y se renderizó en un borde liso. De hecho, en un modelo pueden estar presentes ambos casos, porque es posible indicar la suavidad o nitidez de los bordes individuales, e incluso el grado de suavidad. Pero, de hecho, se garantiza que son erróneos si permite que otra aplicación adivine cómo debería ser. El modelo presentado anteriormente es un caso extremo, y a menudo todo no es tan obvio, porque grandes partes del modelo pueden parecer completamente normales. Pero en el caso general,Si tiene varios bordes que se ven particularmente extraños, entonces esto probablemente se deba a una falta de coincidencia en las vértices normales.

MikkTSpace vs Autodesk


Un problema menos notable es que al hornear mapas normales de 3ds Max o Maya, siempre serán incorrectos en el motor de Unity. Se equivocarán en Unreal y en casi cualquier otro programa, excepto en el que fueron horneados. ¡Los mapas normales de 3ds Max no funcionan en Maya, y viceversa! Cada una de estas aplicaciones calcula el espacio tangente en su propia forma única, que no corresponde a otras aplicaciones. Cuando se usan independientemente, se ven perfectos , y si genera mapas normales para usar en estos programas, intente hornear mapas normales en ellos. Casi ningún otro programa es capaz de hornear los mapas normales correctos para estas aplicaciones, por lo que parece que no tiene otra opción.

La única solución en este caso es no hornear mapas normales con estas aplicaciones si desea usarlos en otro lugar. Si necesita un programa gratuito, use xNormal . Esta es una herramienta estándar de la industria. Si usa Sustancia en algún lugar de la canalización de creación de contenido, úsela.


3ds Max horneó el mapa normal utilizado por Unity. La

forma más fácil de notar este problema es ver que las caras planas tienen pequeñas abolladuras o curvaturas. En algunos casos, esto puede ser muy discreto, especialmente en objetos orgánicos. Por lo tanto, los problemas de este tipo a menudo pasan desapercibidos.

Muchas aplicaciones que no son de Autodesk han cambiado a un método de cálculo de espacio tangente llamado MikkTSpace.. Tanto xNormal como Substance, así como Blender, Unity, Unreal, Godot, Marmoset, Houdini, Modo y algunos otros, por defecto usan MikkTSpace o al menos lo admiten, lo que mejora enormemente su compatibilidad. De hecho, en los últimos diez años, se ha convertido en el estándar de la industria en todos los casos cuando se utilizan mapas normales del espacio tangente. Presumiblemente, en algún momento, 3ds Max agregará su soporte, pero no está claro si los desarrolladores planean permitir hornear mapas normales usando MikkTSpace o simplemente proporcionar soporte para ver / renderizar con su ayuda.

Exportar mallas y pintor de sustancias


Otro problema con 3ds Max y Maya es que al exportar mallas desde ellos hay una opción de exportación con "tangentes y binormales". No estarán en las tangentes reales de MikkTSpace, sino que se basarán en ellas. Algunas aplicaciones fuerzan el recálculo predeterminado del MikkTSpace correcto (por ejemplo, xNormal, Unity e Unreal), pero otras aplicaciones usan mallas tangentes (si las hay) "como están" y calculan MikkTSpace solo si la malla no tiene tangentes. Por ejemplo, Substance Painter usa mallas tangentes si están presentes tal como están, es decir, ¡Painter crea mapas normales muy similares a los 3ds Max horneados! Similar, pero no exactamente igual, por lo que si los importa de nuevo a 3ds Max, no se verán tan bien como horneados en Max.

MikkTSpace vs MikkTSpace?


¡El siguiente problema es que hay más de una versión de MikkTSpace! Sí, ese no sería el estándar si de alguna manera no introdujera confusión. MikkTSpace determina cómo se deben almacenar los datos en la malla para cada vértice y cómo se usan los datos para la representación. Todas las aplicaciones habilitadas para MikkTSpace calculan los mismos datos de malla para vértices. Pero hay dos formas diferentes de utilizar estos datos en la representación. MikkTSpace define cómo calcular el vector tangente y el signo para cada vértice en función de la orientación UV. Pero cuando se usa el espacio tangente, la tangente a dos puntos (bitangente) se recalcula para cada vértice o para cada píxel. Este parámetro también debe ser el mismo para hornear y ver.

xNormal y Substance tienen la opción de hornear mapas normales usando ambos métodos. Estas opciones se denominan "calcular el espacio tangente por fragmento" en Sustancia y "calcular binormal en el sombreador de píxeles" en xNormal. No necesita usarlo si está horneando para los métodos de representación incorporados de Unity. Sin embargo, puede valer la pena hacer esto para SRP, ¡dependiendo del tipo que elija!


XNormal "binormals de sombreador de píxeles" con un procesador de avance incorporado Unity

Visualmente, esto parece usar un espacio tangente completamente diferente, pero generalmente es mucho menos pronunciado. Algunas caras pueden parecer como si la normalidad estuviera un poco distorsionada y no tuviera una abolladura grande. La solución aquí es muy simple: no seleccione esta opción si está preparando los métodos de representación integrados de Unity. Marque la casilla si hornea motores Unreal o Unity para HDRP.

Muchas fuentes dicen que Blender y Unity son idénticos, ¡pero en realidad esto nunca es cierto! Blender, como Unity, usa la orientación MikkTSpace y OpenGL, pero, como Unreal, usa binormales para cada binomio de fragmento.

La buena noticia es que ahora los sombreadores LWRP, URP y Shader Graph usan binormales para cada vértice, y los sombreadores HDRP incorporados para cada píxel. En una futura actualización de Shader Graph (7.2.0), se realizará la transición a la computación píxel por píxel y, después de un tiempo, los sombreadores URP incorporados también cambiarán a ella. Y los métodos de representación estándar se pueden cambiar utilizando sus propios sombreadores, si elige dicha ruta.

Triangular, triangular, triangular!


El último problema son las diferentes formas de triangulación. Si exporta mallas sin triangulación preliminar, no hay garantía de que otras aplicaciones triangulen el modelo de la misma manera. ¡Esto también daña los mapas normales! Por lo tanto, triangule las mallas, ya sea utilizando las opciones de exportación, o mediante el modificador de triangulación.


Substance Painter , Unity , 3ds Max (quads)

Esto parece muy similar a un espacio tangente completamente incorrecto, como si los mapas normales se hornearan en 3ds Max. Pero en el caso general, son un poco más afilados, casi doblados y no parecen una concavidad suave. En esta malla, se ve una forma de X en las caras externas. Este problema puede ser difícil y molesto cuando varias personas están trabajando con el modelo en la tubería de producción de contenido en diferentes aplicaciones, porque a menudo es útil no triangular la malla y guardar hermosos polígonos. En este caso, debes aceptar las molestias o hacer que la última herramienta en la tubería antes de exportar el modelo al juego también se use para generar una malla utilizada para hornear normales. Como un espacio tangente con normales de vértices (que son parte del espacio tangente),La triangulación también debe coincidir exactamente.

Lista para crear mapas normales perfectos para Unity


Entonces, aquí hay algunos consejos para generar mapas normales de espacio tangente para mallas lowpoly a partir de los modelos highpoly originales para usar en Unity:

  • No es necesario hornear mapas normales con 3ds Max, Maya o cualquier otra aplicación que no tenga la opción tangente MikkTSpace .
  • Exporte mallas como triángulos , con normales y sin tangentes.
  • Elija OpenGL o X + Y + Z + como la orientación del mapa normal al hornear (así como al crear un proyecto para Substance Painter).
  • No necesita habilitar las opciones de tangentes a los dos puntos " por píxel " / " por fragmento " al hornear para los métodos de representación integrados (proactivos o diferidos) o LWRP.
  • Incluya opciones para tangentes a los dos puntos "por píxel" / "por fragmento" cuando hornee para HDRP, y pronto para URP.
  • Deje las opciones de importación de modelo predeterminadas para Unity, con las normales configuradas en "Importar" y las tangentes en "Calcular Mikktspace".

¡Eso es todo! ¡Cada vez que obtienes mapas normales perfectamente horneados!


¡Hurra! ¡El mapa normal perfecto!


... con reflejos? Ejem ..

Bueno, el último, simplemente lo ignoramos. Lo más "perfecto" posible con formatos de textura comprimidos con 8 bits por canal. Un mapa normal difuminado puede verse un poco mejor que las rayas, pero, desafortunadamente, no muchas herramientas ofrecen esta opción. De lo contrario, puede usar mapas normales de 16 bits. Pero este es un tema para otro artículo.

Obtenga más información sobre MikkTSpace.


El sitio semioficial de mikktspace.com explica bien los beneficios clave de MikkTSpace. En particular, este espacio funciona bien tanto para el recuento como para la transferencia de datos tangentes entre programas con diferente procesamiento de malla, mientras se mantiene la integridad de los resultados. El texto del sitio es una copia de la ya difunta página wiki de Blender escrita por el propio Morten S. Mikkelsen. Desafortunadamente, solo menciona la versión con tangentes a dos puntos por cada píxel, pero no la versión para cada vértice, el valor predeterminado utilizado por Unity y xNormal. Dado que Blender usa derivados de tangentes por píxel, es lógico que solo se mencionen.

Aquí hay comentarios sobre estas dos opciones del archivo mikktspace.h original :

, /.

bitangent = fSign * cross(vN, tangent);



(/ ) , .

, , , «» , : vT, vB vN.

( )

vNout = normalize( vNt.x * vT + vNt.y * vB + vNt.z * vN );

vNt — . «» , , .



, , , .

Entonces, en el ejemplo original, la tangente a dos puntos se recrea en el sombreador de vértices y se pasa al sombreador de píxeles como otro valor interpolado. Así es como los sombreadores normales de Unity manejan actualmente los mapas normales. Un ejemplo de realizar esta tarea en un sombreador de píxeles es más un ejemplo improvisado que un ejemplo "principal". Además, dado que la implementación de Unity 5.3 (y xNormal?) Fue creada por el propio Morten S. Mikkelsen, y ambos usan tangentes para cada vértice, esta es otra prueba de nuestra teoría. Pero luego Blender usó tangentes píxel por píxel, y Morten también estuvo involucrado. Probablemente, de hecho, fue solo una opción que causó pequeños cambios en los sombreadores Unity terminados, y aunque para los gráficos en tiempo real, ninguno de los métodos se consideró mucho mejor que el otro.

La ventaja de la implementación píxel por píxel es la eliminación de dos valores interpolados a costa de un pequeño costo adicional para ALU (matemática del sombreador de píxeles). Esto significa que en lugar de los tres valores de Vector3 (tangente, tangente a dos puntos y la normal), solo necesitamos Vector4 y Vector3 (tangente con un signo y normal). En las GPU modernas, esto es un poco más rápido. Y definitivamente es más rápido cuando se ejecuta en la CPU, ya que puede usarse para renderizadores que no son en tiempo real. Desde este punto de vista, es lógico que la mayoría de la industria decidiera recrear la tangente a dos puntos en el píxel, y no en la parte superior.

¡Es curioso que cuando escribí este artículo, Morten promovió la transición en Unity SRP a tangentes píxel por píxel a dos puntos! Es una mala suerte que los métodos de representación integrados de Unity tengan un legado de opciones inconvenientes.



Espacio tangente en diferentes aplicaciones.


Aunque este artículo se centra principalmente en Unity, dado que hoy este motor se ha generalizado, quería que mi estudio fuera más detallado. Por lo tanto, creé una lista de varias aplicaciones con información sobre el uso del espacio tangente.

Unidad (5.3+)


Orientación: OpenGL Y +
Espacio de tangente: MikkTSpace
Cálculo de tangentes a dos puntos para MikkTSpace: para vértices o para píxeles *

Notas:de forma predeterminada, el motor redefine a la fuerza las tangentes de la malla al importar para usar MikkTSpace. Para usuarios avanzados, tiene opciones para usar la malla tangente, pero esto no garantiza la compatibilidad con los mapas normales horneados en otras herramientas, especialmente cuando se usan sombreadores integrados. Se pueden reemplazar con sombreadores completamente propios. Y para sus sombreadores integrados, HDRP utiliza tangentes píxel por píxel en dos puntos. Al momento de escribir, se planeó que los sombreadores URP y Shader Graph también cambien a tangentes píxel por píxel a dos puntos. Antes de Unity 5.3, el motor usaba tangentes Lengyel , que todavía se pueden usar seleccionando la opción Legacy Tangents en el importador de mallas, pero los sombreadores integrados ya no admiten este espacio tangente.

Además: antes de URP 7.2.0, el procesamiento de mapas normales en Shader Graph estaba completamente roto. Ni MikkTSpace ni siquiera el espacio tangente de Lengyel se utilizan correctamente, y es imposible arreglar esto dentro del gráfico de sombreado. Si es posible, actualice a 7.2.0.

Motor irreal 4


Orientación: Direct3D Y-
Espacio de tangente: MikkTSpace
Cálculo de tangentes a dos puntos para MikkTSpace: píxel por píxel
Notas: de forma predeterminada, el motor redefine las tangentes de la malla al importar utilizando MikkTSpace. Para usuarios avanzados, tiene opciones para usar una malla tangente, pero esto no garantiza la compatibilidad con mapas normales horneados en otras herramientas.

Godot


Orientación: OpenGL Y +
Espacio tangente: MikkTSpace
Cálculo de tangentes a dos puntos para MikkTSpace: para cada vértice
Notas: si no hay datos tangentes, puede calcular mallas tangentes en MikkTSpace al importarlas. La documentación del motor sugiere exportar mallas de malla tangente, pero como la mayoría de las herramientas no exportan la malla tangente correcta, ignoraría este consejo. Incluso si usa la malla tangente original, no hay garantía de que los mapas normales se vean bien.

Playcanvas


Orientación: OpenGL Y +
Espacio tangente: Lengyel / Schüler *
Cálculo de tangentes a dos puntos: para cada vértice / basado en derivadas
Notas: proporciona varios métodos para procesar el espacio tangente. Las tangentes generadas por código no usan MikkTSpace. Tiene opciones para usar una tangente a dos puntos para cada vértice que normalizan los vectores espaciales tangentes en el sombreador de píxeles "fastTbn" sin normalizar el espacio tangente en el sombreador de fragmentos (que necesitamos, ya que esto corresponde a la implementación de MikkTSpace con un cálculo para cada vértice), o usan el TBN basado en derivadas, tomado de Christian Schuler ; ignora por completo la tangente de la malla y calcula el espacio tangente en el sombreador de píxeles. Ahora, por defecto, se usan mapas normales basados ​​en derivados, para los cuales, hasta donde yo sé, no hay herramientas para hornear mapas normales exactos. Es posible que pueda importar mallas con datos normales y tangentes existentes desde MikkTSpace, y luego usar la opción de material "fastTbn" para que coincida con los métodos de representación integrados de Unity, pero creo que esto debería hacerse en código, no a través de la interfaz del editor.

Filamento


Orientación: OpenGL Y +
Espacio de tangente: MikkTSpace
Cálculo de tangentes a dos puntos para MikkTSpace: para cada vértice
Notas: dependiendo del rendimiento en el futuro, el motor puede cambiar a tangentes píxel por píxel a dos puntos.

3ds max


Orientación: Direct3D Y- *
Espacio tangente:
opciones de exportación de Mesh nativo : exporta archivos FBX con Triangulate activado pero Tangents y Binormals desactivados. Las normales siempre deben exportarse. Las normales divididas por vértice pueden dejarse deshabilitadas.
Notas: Por defecto, 3ds Max asume que la orientación Direct3D se usa en mapas normales, pero tiene opciones para voltear las orientaciones X e Y cuando se usan texturas de mapas normales en los materiales. La cocción siempre usa la orientación Direct3D. El soporte de MikkTSpace aparecerá en futuras versiones.

maya


Orientación: OpenGL Y +
Espacio de tangente:
opciones de exportación de malla nativas : exportar archivos FBX con Triangulate activado, pero Tangents y Binormals desactivados. Las normales siempre se exportan. Las normales divididas por vértice pueden dejarse deshabilitadas.
Notas: algunas personas me han dicho que Maya ya admite parcialmente MikkTSpace, pero no sé en qué medida.

Licuadora (2.57+)


Orientación: OpenGL Y +
Espacio de tangente: MikkTSpace
Cálculo de tangentes a dos puntos para MikkTSpace: para cada píxel
Opciones de exportación de malla : exporta archivos FBX con un valor de suavizado de "Normals Only". Puede exportar con o sin Tangent Space si la aplicación de destino también usa MikkTSpace, como Unity o Unreal.
Notas: Blender no tiene una opción de triangulación al exportar a FBX, por lo tanto, use primero el modificador Triangulate. Los mapas normales horneados en Blender no serán 100% compatibles con Unity, pero si voltea el canal verde en una aplicación de terceros o en material personalizado, entonces funcionarán perfectamente en Unreal.

xNormal (3.17.5+)


Orientación:
espacio tangente personalizable : MikkTSpace *
Cálculo de tangentes a dos puntos para MikkTSpace: personalizable (para cada vértice o píxel)
Opciones para hornear mapas normales:tiene opciones para voltear los tres ejes del mapa normal durante la exportación. La unidad necesita X + Y + Z +. También existe la opción de usar tangentes a dos puntos para cada vértice o píxel (es decir, fragmento). Por defecto, xNormal usa tangentes a dos puntos para cada vértice, pero esto se puede cambiar en el menú Administrador de complementos (icono de enchufe de alimentación en la esquina inferior izquierda) haciendo clic en "Calculadora base tangente", "Mikk - TSpace" y haciendo clic en Configurar. Aparecerá una ventana emergente con la única opción "Calcular binormal en el sombreador de píxeles". Debe estar desactivado para Unity y activado para Unreal.
Notas:Aunque xNormal solo es compatible con MikkTSpace, su sistema de complementos teóricamente admite cualquier espacio tangente. Hasta ahora, el único complemento de espacio tangente que conozco está diseñado para hornear el espacio tangente de Unity 4 y ya es inútil. Es decir, si se aborda de manera realista, la aplicación solo es compatible con MikkTSpace.

Pintor de sustancias


Orientación: personalizable (OpenGL o Direct3D)
Espacio tangente: MikkTSpace
Cálculo de tangentes a dos puntos para MikkTSpace: personalizable (para vértices o píxeles)
Opciones de horneado para mapas normales: tiene opciones de horneado en orientación OpenGL o Direct3D. Y una opción para usar tangentes a dos puntos para cada vértice o píxel (fragmento), que se configura mediante el parámetro "Calcular espacio tangente por fragmento". Al exportar para los métodos de representación Unity incorporados, debe seleccionar OpenGL y deshabilitar Calcular espacio tangente por fragmento en el proyecto y las opciones de exportación, y al exportar a Unreal o Unity HDRP, haga lo contrario.
Notas:Substance Painter por defecto usa los datos tangentes que usa la malla importada. A menos que esté exportando desde Blender, ¡no lo necesita! Pero no hay opciones para deshabilitar esta función. Antes de importar en Substance Painter, exporte mallas sin tangentes. Anteriormente en la documentación de la Sustancia, se afirmó erróneamente que los cálculos de tangentes a dos puntos
en Blender corresponden a Unity, ¡pero ahora el error se ha solucionado!

Marmoset Toolbag 3


Orientación:
espacio tangente personalizado :
cálculo personalizado de tangentes a dos puntos para MikkTSpace: píxel por píxel
Notas: parece que el programa tiene opciones para ver u hornear mapas normales en casi cualquier configuración existente. ¡Incluyendo configuraciones listas para espacios tangentes 3ds Max y Maya! Sin embargo, la opción de espacio tangente Mikk / xNormal utiliza tangentes píxel por píxel en dos puntos, y esto no se puede cambiar. Es decir, Marmoset Toolbag 3 no puede ver u hornear correctamente los mapas normales para los métodos integrados de representación de Unity. Quizás en futuras versiones la situación cambie, porque los desarrolladores son conscientes del problema.

3DCoat


Orientación:
espacio tangente personalizado :
cálculo personalizado de tangentes a dos puntos para MikkTSpace :?
Notas: Tiene muchas opciones para ver y hornear mapas normales. Es perfectamente capaz de hacer coincidir Blender y UE4, por lo tanto, admite tangentes píxel por píxel a dos puntos, pero no sé si se utilizan tangentes de vértices a dos puntos en el preajuste de Unity.

Houdini (16.0.514+)


Orientación: personalizable
Espacio tangente: personalizable *
Cálculo de tangentes a dos puntos para MikkTSpace: píxel por píxel
Notas: admite su propia base de tangentes o MikkTSpace, tanto para ver como para hornear, pero solo en la versión píxel por píxel. Parece que, por defecto, no usa MikkTSpace para renderizar, sino que comienza con Houdini 17.5. Las mallas se pueden modificar con nodos integrados para usar la tangente MikkTSpace.

Modo (10+?)


Orientación:
espacio tangente personalizado :
cálculo personalizado de tangentes de dos puntos para MikkTSpace: personalizado (vértice o píxel por píxel) *
Notas: parece que admite renderizado y horneado en diferentes espacios tangentes, así como la opción de tangentes píxel por píxel a dos puntos para exportar. No he probado esto.

Knald


Orientación:
espacio tangente personalizado : MikkTSpace
Cálculo de tangentes a dos puntos para MikkTSpace: píxel por píxel
Notas: De forma predeterminada, utiliza MikkTSpace y redefine las tangentes de mallas importadas, pero si es necesario, hay una opción para utilizar las mallas tangentes existentes. La orientación de los mapas normales se puede voltear con un parámetro que se aplica a todo el proyecto.



Finalmente


Un aspecto importante es que si el modelo de bajo poli en el que hornea es solo un plano (por ejemplo, para textura de mosaico), entonces todo lo escrito no tiene importancia y puede hornear usando cualquier herramienta ... si simplemente mantiene todo en la orientación correcta o luego voltee los canales de textura correspondientes.

Además, la mayoría de los problemas enumerados en el artículo son notables solo en modelos sólidos. Las formas orgánicas pueden ocultar las diferencias más sutiles, por ejemplo, la diferencia entre vértices y tangentes píxel por píxel en dos puntos.

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


All Articles