En las partes anteriores de los tutoriales, observamos cómo se crean las texturas. Más precisamente, la forma en que todo se ve debajo del capó (como
Yoooriii lo puso en los comentarios en la cuarta parte). Se han establecido términos: píxeles y texels. Desmontó un poco de escaneo y modelos de cuadrícula, PBR y materiales. Y finalmente, trazamos una línea bajo la profesión de "artista en texturas". Parece que ya puedes parar y comenzar a trabajar.
Parte 1. Pixel aquí .
Parte 2. Máscaras y texturas aquí .
Parte 3. PBR y materiales aquí .
Parte 4. Modelos, normales y barrido aquí .
Parte 5. Sistema de materiales : lo lees.
Bloque de introducción
En esta parte, no tendremos práctica, ya que la quinta parte resultó ser bastante grande. Toda la información sobre cómo crear materiales y personalizarlos en Unreal Engine 4 se puede encontrar en los
tutoriales de Flakky y muchos otros. Nuestra tarea ahora es analizar la teoría con el mayor detalle posible (y si falta información, hágamelo saber).
En 2017, el artista técnico Harrison Moore actuó en Unreal Dev Day Montreal. Él habló sobre qué enfoque para texturizar él y su equipo usaron para asegurarse de que el juego Paragon tuviera materiales muy hermosos. A continuación hay un enlace a su conferencia.
El hecho es que estamos creando un proyecto de realidad virtual donde la calidad de las texturas es de gran importancia. Por ejemplo, al crear texturas para objetos grandes (paredes, pisos, gabinetes grandes, cajas, etc.), nos encontramos con el hecho de que el método estándar daba texturas muy pixeladas y los chaflanes que se crearon usando bordes duros y un mapa normal (lo resolvimos). 4 partes) cuando los objetos estaban cerca de sus ojos, se veían tan pixelados y miserables que tuvimos que aumentar el tamaño de las texturas para arreglar esto. Finalmente, para lograr al menos una aproximación al resultado deseado, comenzamos a remachar la textura de 8k. Resultó que era muy costoso crear texturas de 8k en los principales objetos grandes, pero visualmente fue satisfactorio (máximo).

Al principio, todo salió a la perfección. Las texturas estaban remachadas, la calidad es normal, pero al ensamblar una escena a partir de objetos con tales texturas, nos dimos cuenta de que esto no funciona. El volumen de texturas era muy grande: para que nuestro proyecto funcionara con el usuario final, se requería que la tarjeta de video tuviera al menos 3 gigabytes de RAM. Y el tamaño de una de esas texturas era de 67 millones de texels. Incluso a pesar de que estas ya son texturas completamente calculadas y horneadas, no se requería una pequeña potencia de cómputo de la tarjeta de video para manejar todos los texels y mostrarlos en la pantalla. Pero entendemos que para la implementación completa de PBR no necesitamos 1 textura (y no 1 canal), sino al menos 9 canales.
Como resultado, obtuvimos escenas en las que el volumen de texturas era enorme, requirieron cálculos más salvajes y fallaron los FPS de los cuadros que necesitábamos de 90 a 45. Quedó claro por qué casi todos los juegos usan solo texturas BaseColor, mientras que otros prácticamente no se conectan. Por ejemplo, el juego Torn para VR:

La mayoría (diría que el 90%) de los objetos son simples: el material consistía exclusivamente en BaseColor. Sin mapas normales, sin metalizado o rugosidad. Desafortunadamente, las capturas de pantalla del juego disponibles en la red no le permiten mostrar el punto negativo de este enfoque, y viceversa, muy a menudo las capturas de pantalla muestran que hay todas las cartas, y la imagen es muy hermosa. Pero no hablemos de este juego.
Al principio, ignoré la conferencia, cuyo video inserté arriba. Más precisamente, miré a través y pensé que parecía ser un buen enfoque, pero no cambiamos la tubería para crear objetos y texturas en nuestro equipo, ya que esto requeriría un tiempo suficiente para dominar, introducir y desarrollar habilidades. Y, sin embargo, ante el problema de la calidad del material, decidí reconsiderar el enfoque de la textura.
Comenzamos a distinguir lo que Harrison Moore estaba ofreciendo.
Requisitos previos para la formación del concepto de "artista de superficie"
Y asi. Los chicos de Epic Games han desarrollado un enfoque interesante para el texturizado (más precisamente, hablamos de ello). Adoptaron el enfoque para crear texturas en Substance Painter (o cualquier otro programa de texturizado) y transfirieron la cocción de texturas desde el programa al motor directamente (para ser más precisos, este proceso puede llamarse generación procesal de materiales). Es decir, ahora los cálculos para hornear texturas ya se llevan a cabo en el propio motor, y las texturas no se crean, sino que se compilan por adelantado. El resultado de la compilación (sombreador) se almacena en un formato que el motor comprende, y cuando se muestra un modelo con este sombreador, el resultado se superpone al modelo.
Como funciona
En el motor, cargue la textura de cualquier textura (material) en tamaños de 1k. Es decir, el conjunto estándar es Color base, ORM, Mapa normal. Dichas texturas se cargan con 10-20 piezas. Por ejemplo, 4 variedades de metal, 5 variedades de cuero, varias variedades de plástico, madera, etc. Todo esto se combina en funciones de sombreador para que pueda conectarlas fácilmente más tarde. 1 factura = 1 función.


Después de eso, crean máscaras para el objeto que necesitamos. Aquí, Substance Painter vuelve a ser necesario, con la ayuda de él se crean máscaras en el objeto. Es decir, debe especificar en qué lugares del objeto qué texturas deben mostrarse, luego dibujar la textura deseada en el lugar correcto del objeto:


Arriba, en la captura de pantalla, puedes ver cómo se pinta el robot volador en colores brillantes. Brevemente: esto se hace específicamente para ver qué máscaras se encuentran dónde y dónde. La segunda captura de pantalla muestra una de las máscaras.
Estas máscaras se cargan en el motor. También crean un mapa normal para cada objeto por separado con el fin de suavizar los chaflanes, mostrar algunos elementos técnicos pequeños con la ayuda de él y también cargarlo en el motor.
A continuación, se crea un nuevo sombreador (material), en el que se agregan las máscaras creadas. Las funciones de sombreado necesarias se agregan con las texturas necesarias (por ejemplo, metal oxidado, plástico y metal fresco) y luego se escribe el código (casi no se necesita escribir nada, después de que Epic Games hizo todo lo posible para que sea conveniente para nosotros trabajar), en el que indicamos cómo mezclar máscaras correctamente, qué texturas mostrar debajo de qué máscaras, cómo mostrar la textura de la suciedad, etc.
Después de ensamblar todo, se compila el sombreador y se muestra el resultado.
Bueno, parece que tal cosa: después de todo, lo mismo se puede hacer en Painter y obtener un resultado listo. Sin embargo, esto no es así. Y el mosaico es el culpable.
Un poco sobre mosaico
Mosaico (literalmente, mosaico, mosaico): esta es una repetición de la textura, como si el mosaico fuera más pequeño que el área de texturizado (UV). Esto es necesario para rellenar los espacios que se forman en el espacio UV, si la textura es de menor tamaño. La tarjeta de video comienza a duplicarla tantas veces como sea necesario para cerrar la brecha. El mosaico funciona de una manera interesante: la tarjeta de video calcula cada textura de texel (por ejemplo, 1k de tamaño). Y cuando se trata de la parte que está duplicada, ya no se realizan cálculos, ya que ya existen. La tarjeta de video simplemente copia y pega los datos. Copiar y pegar. Y no cuesta prácticamente nada para el rendimiento. Esto no requiere tantos recursos que no afecte nada, incluso si realiza un mosaico de 10,000 * 10,000 repeticiones (y repita esto con nuestro ejemplo de aproximadamente 10 mil millones de texels por un minuto sobre los números), su proyecto no se detendrá por un segundo.
Continuar
Es decir, ahora podemos tomar la factura. Muestre en el lugar correcto en la instalación y tinte (duplicar) exactamente tanto como necesite para lograr la calidad deseada. Debido al mosaico, el tamaño de los texels se reduce mucho, lo que aumenta la calidad de la textura en sí.
La desventaja de este enfoque es la matemática: ahora, para mostrar texturas en un objeto, el sombreador necesita calcular varias operaciones muchas veces para mostrar el resultado final, y en lugar de las texturas estándar 3, el motor debe tener en cuenta máscaras, mezclar normales, colores, etc.
De hecho, la pérdida en los cálculos se nivela:
- Puede y reutilizará las funciones facturadas. Una y otra vez en otros objetos. Es decir, los cálculos serán iguales en total, pero el número de mapas de textura en sí será menor en ocasiones. Ya no necesita crear nuevas texturas para cada objeto, solo defina áreas para texturas y use las mismas texturas.
- Puede crear tamaños de máscara más pequeños, por ejemplo, 128 por 128 píxeles. Lo que reduce los cálculos cientos de veces.
- Puede mosaico de texturas como desee, logrando un resultado que no se puede lograr utilizando el método de textura estándar.
- Al agregar otros cálculos y máscaras, puede jugar con canales individuales, por ejemplo, hacer que el mosaico del canal de rugosidad sea más pequeño que los mapas de colores, interrumpiendo así la repetición visual de la imagen y creando una sensación de singularidad de toda la superficie.
- Puede imponer funciones de textura de tal manera que se muevan en relación con las coordenadas del objeto en el espacio mundial; de esta manera puede colocar 2 objetos idénticos con los mismos sombreadores, pero ambos se verán únicos.
Debe entenderse que este enfoque no es para todas las plataformas. Por ejemplo, los juegos móviles ya son difíciles de ensamblar de esta manera debido a la complejidad de los cálculos.
El ejemplo más simple de las desventajas del enfoque estándar para texturizar y el nuevo Sistema de capas de material (como los muchachos de Epic Games llamaron este enfoque) es Final Fantasy 15. Para mejorar la calidad de la imagen, lanzaron un paquete con texturas 4k. ¿Y qué es la textura 4K? Esto es 16 millones de errores de cálculo de texel por canal. ¿Y si hay 9 de ellos para el estándar PBR?
Y aquí el poder del Sistema de Capas Materiales comienza a surgir tanto como sea posible. Para recolectar ropa en el personaje usando texturas, es suficiente usar 3-4 texturas (tal vez más). En total, será inferior a las texturas estándar de alta resolución, el rendimiento es aproximadamente del mismo nivel y la calidad puede controlarse mediante mosaicos y establecerse mucho más.
Sistema de capas de material
Los chicos de Epic Games fueron más allá y presentaron una versión beta del "Sistema de capa de material", que no generó exageración y resultó ser bastante defectuoso.
Un ejemplo de su trabajo se puede ver en este video:
Debido al hecho de que el sistema aún no era adecuado para el trabajo, nos familiarizamos con él, nos alegramos de que algún día lo terminemos, pero por ahora nos negamos a trabajar con él y pasamos a crear sombreadores manualmente, indicando directamente cada máscara en el sombreador.
Como resultado, comenzamos a intentar y experimentar.
Cómo nos deshacemos de los mapas normales
Al principio, trabajar con texturas no funcionó del todo bien: logramos el efecto deseado con texturas, pero el mapa normal todavía nos inhibía, ya que era necesario generarlo para cada objeto para crear una sensación de hermosos chaflanes. A pesar de la calidad de las texturas creadas por nosotros, al acercarnos al objeto de la cámara, los biseles dejaban mucho que desear incluso con texturas de 8k (recuerdo que estábamos desarrollando un proyecto para VR). Pero la textura de 8k es un volumen muy grande de texels. Tan grande que 2 conjuntos completos de texturas exprimieron FPS hasta 45 fotogramas (para VR necesitas 90).
Luego nos familiarizamos con el método de creación de biseles, del que hablé brevemente en la cuarta parte. La creación de chaflanes en modelos de objetos hizo posible deshacerse de los mapas normales casi por completo. Sí, hemos aumentado los modelos de polígonos, pero no más del 20-40%, mientras que la calidad de los biseles se disparó.
Este enfoque nos permitió deshacernos de otro problema: las costuras en los bordes. Al crear chaflanes en el modelo, ya no era necesario cortar el modelo a lo largo de bordes duros. En principio, no había bordes duros en los modelos, por lo que las islas se hicieron grandes, comenzaron a incluir espacios grandes, y ahora que estamos aplicando textura a los modelos, prácticamente no hay costuras en los modelos.
Esto no significa que ahora en todos los objetos no tengamos un mapa normal separado. Simplemente, la mayoría de los objetos estándar pueden funcionar con chaflanes en modelos sin un mapa normal adicional.
Finalmente, reduciendo gradualmente las máscaras, aumentando y complicando los sombreadores, comenzamos a crear materiales complejos que nos permiten texturizar superficies muy hermosas:

Sobre el piso consta de 2 texturas - tiras de hierro - 32x32 píxeles y hexágonos - 32x32 píxeles. El material tiene una fórmula muy compleja, un gran número de operaciones para los cálculos, alrededor de 295 instrucciones. Para material ordinario, tal sombreador requeriría más potencia de cómputo, pero usamos solo 32x32 = 1024 texels por canal. 9 canales = 10k texels, que deben tenerse en cuenta al calcular este material + máscara 128x128. Un número muy grande de operaciones son niveladas por un pequeño número de texels para el procesamiento. Como resultado, obtuvimos una hermosa imagen con un sombreador muy rápido y fácil.
Debido a las máscaras, el control competente de mosaico y canales, puede crear sombreadores muy complejos que generarán materiales hermosos y, al mismo tiempo, prácticamente no comen recursos.
Por ejemplo, en este momento usamos alrededor de 10-15 texturas para todo el proyecto (más varios objetos únicos con textura completa usando el método estándar). El mismo metal está en casi todos los objetos. Se modifica en sombreadores: agregamos diferentes colores al material, cambiamos los mapas de rugosidad de la textura, aplicamos rasguños en la máscara y sus coordenadas están controladas por las coordenadas del objeto (si hablamos de objetos estáticos), lo que conduce a objetos únicos con sus chips, grietas, suciedad .
Al aumentar la resolución de la pantalla, es suficiente para nosotros simplemente ajustar el mosaico para que el número de texels coincida con el número de píxeles en la pantalla. Con el método estándar de texturizado, tendrá que palear todas las texturas, recoger proyectos antiguos en Painter y volver a guardarlos. Y debes asegurarte de que la textura no se vaya. Y luego todo esto deberá volver a importarse al motor y asegurarse de que todo estará bien allí, de que los sombreadores calcularán rápidamente texturas más grandes que antes.
Pensar con texturas
Cuando hablé con artistas 3D sobre el tema de las texturas, me dijeron repetidamente que la mayoría de los objetos no se pueden ensamblar usando texturas, que esto requiere una textura separada con patrones únicos y otros componentes. Por ejemplo, este cenador:

La complejidad de representar este objeto en el plan texturizado es que tiene momentos únicos:

El patrón del cinturón en la parte superior de la tela puede hacerse una textura separada y simplemente aplicarse sobre la textura de la tela. O coser un cinturón en la textura de la tela, y luego obtenemos una textura de tela única con un cinturón:

Al usar esta textura, la costura de cinturones a la tela se repetirá constantemente en la misma área, pero esto no será evidente.
Los puntos húmedos se hacen con una máscara y se aplica suciedad o algo más. Y ya se ve único.
Fringe también se distingue por la textura, y su tamaño será muy pequeño, ya que se repite. Puede mostrarlo en el modelo a través de la máscara.
Se puede aplicar un patrón único en un gancho de metal con una calcomanía o con una capa separada de una pequeña tarjeta normal, que se puede alisar bajo la posición de barrido y desarrollar a través de la máscara.
Los pliegues en un rollo de tela se pueden realizar usando geometría o enmascarando con sombreado. En la generación actual de hierro, agregar una pequeña cantidad de vértices no causará ninguna carga, y siempre puede ocultarlos con lods a distancia.
Los objetos de madera se pueden achaflanar y, por lo tanto, eliminar completamente el mapa normal de los cálculos. Y así sucesivamente. Lo más importante aquí es que todo esto se puede ajustar muy rápidamente sin programas de terceros y sin perder tiempo.
Y lo más importante, todas estas texturas se pueden usar en cualquier otro sombreador, ajustando colores y puntos.
Excepciones
La mayoría, diría, el 95% de todos los objetos en el juego están cubiertos por este método. En general, incluso la pintura hecha a mano cae bajo la textura y se puede implementar a través de ella. Sin embargo, no todos los objetos en esta etapa tecnológica pueden implementarse. Por ejemplo, personajes complejos que tienen elementos especiales. E incluso si piensa cuidadosamente sobre ellos, puede cubrirlos con texturas; es importante verlos de manera oportuna, cortarlos y oscurecerlos.
Me ofrecieron demostrar el sofá (imagen de abajo) como un elemento que no puede ser texturizado.

Sin embargo, si miras detenidamente, el sofá tiene 3 texturas (cuero en la parte superior, tapicería, madera para las piernas) y 2 dificultades: estos son pliegues y costuras. Los pliegues se pueden imitar de 2 maneras:
- Vértices adicionales.
- Un pequeño mapa normal adicional que emitirá ondas de plegado (un método más atractivo).
Lo mismo se aplica a las costuras: se pueden resaltar con una máscara e iluminar la textura de las costuras o, nuevamente, con un mapa normal adicional.
Todos los saltos, todas las transiciones se pueden simular con texturas y máscaras, creando el mismo resultado, pero con un número menor de texturas (solo necesitamos usar las texturas de la tela estándar para nuestro proyecto y simplemente cambiar su color directamente en el sombreador).
Aquí puede hacer una pregunta: ¿qué hacer con el desvanecimiento alrededor de las almohadas? Las máscaras resuelven tales problemas con una explosión =)
Además, podemos usar las mismas texturas para las sillas. , . , . — . , , . , , , , .
. , , , — . , , .
, — , - , . , , . , , .
, , , , . , , . , - .
Substance Designer — , .
Epic Games "
Jobs in Unreal Engine — Surface Artist ", , . , , .
:, Qbercat Studio,
«Cat Movies» ( ,
, -. , ) . 3D- 1 . 1- 3-5 3D-. , , .
Snake discord- "
Unreal Engine — RuCommunity ", .
Flakky , .
, - — . , , , .
=)