• eng
  • deu
  • fra
  • ita
  • Krita tutorial: como criar um normal map e mapas de deslocamento, altura, etc.
  • Manténgase al día con las últimas noticias en el sitio con un lector de feeds
  • Página de Facebook Gráficos y Programación
  • Graphics and programming Youtube channel
  • Graphics and programming Twitter page

Tutorial de Krita tutorial: cómo crear un mapa normal y mapas de desplazamiento, altura, etc.

En este tutorial para Krita en español (actualizado a Krita 4.4.8) veremos cómo crear mapas de desplazamiento, de altura, normal, de rugosidad y especular a partir de una foto. Estos mapas son muy importantes en el mundo 3D ya que a través de una textura proporcionan información sobre cómo debe modificarse realmente la superficie de un objeto (mapa de desplazamiento), o sobre cómo simular de forma no real pequeños detalles no muy en relieve ( mapa de altura, mapa normal), o para especificar con precisión qué áreas de una superficie, y cómo, deben reflejar la luz y otras no (mapa especular, mapa de rugosidad).

Una aclaración: siempre hay un poco de confusión en el uso de los nombres de los distintos mapas, por ejemplo, a veces se puede utilizar un mapa de altura directamente en las funciones de desplazamiento, ya que los distintos tonos de gris pueden ayudar a reproducir fielmente la malla real de un objeto; por otro lado, un mapa de desplazamiento se puede llamar fácilmente mapa de altura, ya que puede definir, por ejemplo, la altura de un terreno/de una montaña. Sin embargo, un mapa de altura también se puede utilizar como un mapa de relieve (bump map) en lugar de un mapa normal, cuando no esté disponible.

En nuestro caso, sin embargo, no podemos usar un mapa de altura simple para el desplazamiento, obtenido directamente de la foto que también es bueno como un mapa de relieve, por lo que llamamos a los dos mapas de manera diferente: mapa de desplazamiento al que se usa en la función de desplazamiento y mapa de altura el que se utiliza como mapa de relieve, para no confundirse con el mapa normal.
Este es el primero de una serie de tutoriales que nos mostrarán cómo transformar una foto en un conjunto de mapas para usar con el programa Blender, para crear una pared más o menos realista, equipada con escrituras, coli, moldes, hiedra y todo. eso que hace que una pared parezca más "consumida".

Comencemos subiendo una foto de un muro (del sitio pixabay.com) en Krita, aquellos que no estén familiarizados con el software Krita pueden ver su introducción en https://www.graphicsandprogramming.net/esp/tutorial/krita/guia-basica-de-krita/tutorial-krita-introduccion , y llamamos a la capa correspondiente "difffuse" (un mapa "diffuse", también llamado "albedo" o "color", es un mapa que debe obtenerse mediante luz difusa, sin ningún ángulo en particular, idealmente debería representar los colores de la superficie sin iluminación)

Por seguridad, pero también para posiblemente reutilizar la imagen, seleccionamos la capa "difusa", la duplicamos presionando las teclas "Ctrl+J" y cambiamos el nombre de la copia con "base difusa"

En nuestro caso usamos una foto sin retocar, pero un buen mapa inicial difuso no debería tener sombras, o áreas más claras y áreas más oscuras (que podrían afectar la creación de los otros mapas), y debería mejorarse antes de ser utilizado.

 

Qué es un mapa de desplazamiento (Diplacement Map):

El mapa de desplazamiento es un mapa en escala de grises (generalmente está codificado en 8 bits, correspondiente a 256 tonos de gris, pero para más detalles también hay mapas de 16 y 32 bits) donde las partes neutrales, que no deben verse afectadas por la función de desplazamiento, permanecen grises (color hexadecimal:#808080), las que deben hundirse son negras, mientras que las partes que deben emerger más deben ser "coloreadas" en blanco. Las distintas tonalidades de gris corresponden a los niveles intermedios de altura.
El mapa de desplazamiento modifica los objetos de forma real en los programas de modelado 3D y sobre todo debe dar una forma más o menos aproximada a los relieves producidos, que luego quedarán mejor definidos por el mapa de alturas y el mapa normal, por tanto en nuestro caso los ladrillos en el mapa de desplazamiento deben ser casi uniformemente blancos, mientras que la parte cubierta del mortero debe ser casi uniformemente negra. Para hacer esto, intentamos separar de alguna manera el mortero de los ladrillos, para poder actuar sobre ellos de forma independiente.

 

Construyendo el mapa de desplazamiento (Diplacement Map) en Krita:

Usamos el "Contiguous Selection Tool" (Herramienta de selección de área contigua) que nos permitirá seleccionar elementos contiguos que tengan más o menos un color determinado.

y en el panel "Tool Options" (Opciones de la herramienta), establecemos un valor de "Fuzziness" (Borrosidad) igual a 23,

por lo que podemos seleccionar la mayor parte del mortero sin incluir los ladrillos

sin embargo, donde los ladrillos proyectan su sombra de manera más consistente, no se seleccionó el mortero

así que cambiemos el valor de "Fuzziness" (Borrosidad) a 13, para limitar aún más el conjunto de colores similares al seleccionado, y manteniendo presionada la tecla "SHIFT" (para hacer una selección aditiva), con un poco de paciencia haga clic en todas las partes sombreadas del mortero o, por otras razones, aún no seleccionadas. (Si por el contrario la selección realizada anteriormente ha incorporado una parte de unos ladrillos, manteniendo pulsada la tecla "ALT" podemos realizar una selección sustractiva, eliminando así las zonas superfluas)
Aún manteniendo presionada la tecla "SHIFT", podemos usar otros tipos de herramientas, como el rectángulo o la selección a mano alzada, para acelerar las operaciones.

O para mejorar la selección podemos utilizar los pinceles; de hecho si miramos los niveles vemos que se ha creado uno nuevo automáticamente, correspondiente a la selección que se acaba de hacer

si hacemos clic en la capa, las partes no seleccionadas se volverán rojas y usando un pincel (como Basic-1 o Airbrush_Soft, eligiendo el color blanco y la opacidad 100%) o un borrador podemos agregar o quitar partes a la selección, simplemente pintando

hagamos la selección menos irregular haciendo clic derecho en la parte seleccionada y usando la función "Transform > Smooth" (Transformar > Suave)

obtendremos

Los bordes de los ladrillos en el mapa deben estar ligeramente borrosos, por lo que antes hacemos clic con el botón derecho y llamamos a la función "Transform > Smooth" (Transformar > Selección defuminada) con "Radio defuminado" con valor 2 (posiblemente usando "Reducir" y "Crecer" para ajustar el tamaño de la selección)

Después de haber construido, con este procedimiento, una selección limpia de los ladrillos

que corresponde a la capa "Selection Mask"

podemos modificar de forma independiente el mortero y el ladrillo.
Pero primero desaturamos, de forma no destructiva, la foto en "diffuse base" añadiendo un filtro adecuado: ocultamos la máscara de selección

y seleccione la capa "diffuse base" y en el menú desplegable en la parte inferior izquierda seleccione "Filter Layer" (Capa de filtro)

y en la ventana emergente seleccione el filtro "Adjust > Desaturate" (Ajustar > Desaturar) con el método de desaturación "Average" (Promedio) (el método de saturación debe seleccionarse de acuerdo con la imagen a modificar y el trabajo que se está realizando)

confirmamos y obtenemos

duplicar la "Selection Mask" y hacerla visible haciendo clic en el icono del ojo

haga clic en el botón "+" en la parte inferior izquierda

creamos una "Paint Layer" (Capa de pintura) que llamamos "Mortero oscuro", reescribiendo el nombre después de presionar la tecla F2, y arrastramos la máscara de selección duplicada a esta capa

seleccione la capa "Dark Mortar", seleccione la herramienta bote de pintura (Herramienta de relleno) (ubicada en el panel izquierdo) presionando la tecla "F"

seleccionamos el color negro

y coloreamos toda la capa.
Seleccionamos "Copy of Selection Mask" y la transformamos de una máscara de selección a una máscara de transparencia, haciendo clic con el botón derecho del mouse y seleccionando Convert > To Trasparency Mask" (Convertir > a máscara de transparencia).

La máscara de transparencia asegura que la pintura negra de "Dark Mortar" esté presente solo en el mortero y no en los ladrillos.

Damos a la opacidad de "Dark Mortar" un valor del 80%, o lo suficiente, para resaltar los relieves y ondulaciones más significativos presentes en el mortero.
Seleccionamos la capa "Dark Mortar" y la máscara relativa "Transparency Mask 1" y las duplicamos presionando las teclas "CTRL+J". Cambiamos el nombre de la nueva capa como "Light Bricks", mientras que la nueva máscara como "Transparency Mask 2"

haga clic en "Transparency Mask 2" e invierta los colores presionando las teclas "CTRL+I"; de esta forma los ladrillos serán visibles mientras que el mortero será transparente. Luego pintamos la capa "Light Bricks" con el color blanco con el cubo, llevando la opacidad a un valor del 60% para mostrar los relieves más interesantes de los ladrillos.

Obteniendo así el mapa de desplazamiento

Ahora tenemos que difuminar la imagen, de hecho un mapa de desplazamiento con bordes demasiado nítidos hará que los elementos más altos emerjan verticalmente a 90 grados, estirando así el mapa difuso con efectos no deseados, mientras que necesitamos un resultado más suave que no genere artefactos. el mapa de colores. No importa si se eliminan algunos detalles, porque el mapa de ubicación se usa para dar forma a los ladrillos, mientras que para los detalles usaremos los mapas de relieve.

Así que agreguemos una "Filter Layer" (Capa de filtro) "Blur > Gaussian Blur" (Desenfocar > Desenfoque gaussiano), con "Horizontal radius" (Radio horizontal) y "Vertical Radius" (Radio vertical) con valores cercanos a 20px

y obtendremos un mapa de desplazamiento como este

que exportamos, con "File > Export" (Archivo > Exportar), como "displacement_map.jpg" que, utilizado en un software de modelado 3D (en nuestro caso Blender) con un modificador de desplazamiento, resultará

guardamos el archivo, con "File > Save As" (Archivo > Guardar como), como "displacement_map.kra".

 

Qué es un mapa de relieve (Bump Map):

Ahora crearemos el mapa de altura y el mapa normal, los cuales se consideran mapas de relieve. Ambos contienen datos para representar solo detalles aparentes en la superficie de una mesh en un programa de modelado y renderizado 3D, por lo tanto, no crean relieves reales sino ilusiones de relieve a través de un juego de luces y sombras; esto le permite crear modelos con relativamente pocos polígonos, pero con muchos detalles, como los que se utilizan en los juegos electrónicos. Dado que el detalle que crean es falso y no se agrega una resolución real, la forma de la geometría a la que se aplica el mapa de relieve no se verá afectada por el mapa.

 

Qué es un mapa de altura (Height Map):

Como se mencionó, son similares a los mapas de desplazamiento en formato de archivo, pero no en gráficos, ya que deben ser mucho más detallados, ya que deben describir los objetos que representan con mucha precisión.
También se guardan en formato de 8 bits en 256 tonos de gris, de negro a blanco, en el que cada píxel representa la cantidad en la que el punto de la superficie debe aparecer elevado: el blanco corresponde a los relieves, el negro a las áreas en profundidad, el gris intermedio tiene un efecto neutro.
Los mapas de altura se ven muy afectados por el ángulo de la luz y la cámara, en un entorno 3D, por lo que hay que tener cuidado en su uso, eventualmente asociándolos a un mapa especular adecuado, para superar los problemas de las zonas semisombreadas.

Como dijimos antes, en comparación con un mapa de desplazamiento en un mapa de altura hay que ver más detalles y el mapa no debe usarse dentro de una función de desplazamiento para deformar la geometría de la malla para crear los ladrillos, por lo que no debe haber un tamaño tan grande. diferencia en los tonos de gris entre el mortero y el ladrillo que habíamos intentado lograr antes.

 

Creando un mapa de altura (Height Map) en Krita:

Así que comencemos con el ejemplo del mapa de desplazamiento, creado anteriormente, eliminamos la capa "Filter Layer 1 (Gaussian Blur)", y ahora demos a la opacidad de la capa "Dark Mortar" un valor del 40%.

y a la capa "Light Bricks" un valor del 25% para la opacidad

obteniendo así el mapa de alturas

que exportamos como "height_map.jpg".
Luego guardamos el archivo, con "File > Save As" (Archivo > Guardar como), como "height_map.kra".

 

Qué es un mapa normal (Normal Map):

Como se mencionó anteriormente para los mapas de relieve y los mapas de altura, un mapa normal es para pequeños golpes de frecuencia más alta, como surcos, rayones, porosidad de la piel y donde se necesiten detalles finos de la superficie. Sin embargo, en realidad es una ilusión, ya que este procedimiento no afecta la geometría real, sino la forma de gestionar la luz capturada, ahorrando así en el número de polígonos a utilizar.

Un objeto en un entorno 3D se ilumina utilizando las normales de superficie de los distintos polígonos que lo componen: en función del ángulo entre el vector de la normal de superficie y el de la luz incidente, el polígono puede estar más o menos sombreado. Un mapa normal proporciona información sobre una "perturbación" virtual (de color azul en la siguiente figura) "sobre" la superficie "real" del modelo (de color negro),

What is a normal map

Un mapa normal es una textura RGB, donde cada píxel representa la diferencia en la dirección a la que debe enfrentarse la normal de superficie, en relación con su normal de superficie sin modificar. Matemáticamente, para cada punto de la superficie, se considera un plano tangente a ese punto (de hecho también se le llama "mapa normal del espacio tangente"), representado por un vector perpendicular a él. Luego se hace un mapeo entre los vectores unitarios, en el espacio tridimensional X Y Z, y los canales RGB de los colores de cada píxel del mapa. Por tanto, cada color representa un eje diferente de dirección relativa. Usando la regla de la mano izquierda y mostrando solo los vectores frente al usuario, obtendremos estas correspondencias:

X: de -1 a +1 - > Rojo: de 0 a 255
Y: de -1 a +1 - > Verde: de 0 a 255
Z: 0 a -1 - > Azul: 128 a 255

Por lo tanto, estas texturas tienden a tener un predominio azul-violeta, debido a la forma en que el vector se almacena en valores RGB y se procesa posteriormente.
Un vector normal que apunta directamente al observador (0,0,-1) se asigna a (128,128,255). Entonces, las partes del objeto que están directamente frente al espectador son azules, el color en un mapa normal que representa la superficie no deformada, que muchas veces corresponde a la mayor parte de la textura.

 

Creando un mapa normal en Krita:

Arrancamos Krita y cargamos la foto del muro en una capa que llamaremos "diffuse"

haciendo clic, como antes, en el menú desplegable a la derecha del botón "+" en la parte inferior, agregamos el "Filter Layer" (Capa de filtro) "Edge Detection > Height to Normal Map" (Detección de bordes > Altura a mapa normal) y aparece la ventana emergente

En el que podemos ver algunas opciones para elegir:

- tres métodos diferentes: Prewitt (que genera un efecto más fuerte), Sobel (efecto más sutil), Simple (computacionalmente más rápido). Elegimos la opción "Sobel" ya que no necesitamos relieves muy marcados.
- El canal desde el que obtener el mapa de las alturas sobre las que trabajar. En nuestro caso dejamos seleccionado "Azul", porque acentúa bastante las grietas en los ladrillos pero sin resaltar también otras partes no deseadas. (Examine siempre la vista previa para ver qué canal se ve mejor para su textura, esto puede depender del color dominante de la textura y los diversos elementos presentes)
- Ni siquiera cambiamos el radio horizontal y vertical, cuyo aumento podría tener el efecto de acentuar el relieve generado por el mapa.
- En cambio, una atención especial requiere la elección de ejes para la realización del mapa normal; de hecho si dejamos la tríada X+, Y+, Z+ sin cambios, presionando el botón "OK" obtendremos un mapa normal de la siguiente manera

que, sin embargo, resalta el mortero en lugar de los ladrillos como en relieve, como también podemos ver aplicando el mapa en un plano en el programa de modelado 3D Blender, después de guardar el archivo, con "File > Save As" (Archivo > Guardar como), como "normal_map.kra" y exportado como "normal_map.jpg"

Así que haga clic con el botón derecho en el "Filter Layer" (Capa de filtro) que acaba de crear, o presione F3 y seleccione "Propiedades".

Cambiamos, apropiadamente, el eje Y eligiendo la tríada X+, Y-, Z+

y obtenemos el mapa

verificando en Blender, descubrimos que un mapa con esta elección de ejes representa más correctamente el mortero y los ladrillos

guardamos el archivo como "normal_map.kra" y exportamos el archivo en formato jpeg "normal_map.jpg".

 

Qué es un mapa de rugosidad (Roughness Map):

Las superficies de los objetos no son todas iguales, unas son más lisas, otras más arrugadas, otras tienen una superficie formada por objetos aún más pequeños y muy próximos entre sí. Entonces, cuando un rayo de luz golpea una superficie más rugosa, las pequeñas protuberancias reflejan la luz en múltiples direcciones diferentes y el rayo previamente concentrado se refleja globalmente de una manera más difusa. El mapa de rugosidad es un mapa en escala de grises, que controla la nitidez de los reflejos, es decir, si deben ser más concentrados o más difusos (en este caso son más borrosos, de forma granular).
En algunos sitios, que le permiten descargar texturas, a veces puede encontrar mapas "Gloss" en lugar de "Rugosidad", pero en la práctica son conceptualmente iguales, solo uno es el inverso del otro (así que simplemente agregue un nodo de inversión a textura valle)

 

Creando el mapa de rugosidad (Roughness Map) en Krita:

En nuestro caso, en lo que respecta a un muro, el mortero es muy poroso y por tanto con un valor de rugosidad bastante significativo, al igual que los ladrillos, incrementado por el hecho de que no son nuevos, sino viejos y deteriorados. El polvo de la pared derrumbada también podría amplificar el efecto.

Recarguemos el ejemplo relativo a la textura de desplazamiento "displacement_map.kra" y eliminamos la capa "Filter Layer 1 (Gaussian Blur)"

para tener una rugosidad alta es necesario aligerar tanto el mortero como los ladrillos, por eso ponemos la "capa" de "Light Bricks" con un 58% de opacidad, mientras que le damos a la "Dark Mortar" un valor casi igual al 0% y obtenemos

guardamos el archivo como "roughness_map.kra" y exportamos el archivo en formato jpeg "roughness_map.jpg"

 

Qué es un mapa especular (Specular Map):

Se utiliza en infografías en tiempo real, para determinar la intensidad de la reflexión especular, pero guardando algunos cálculos con las luces presentes en la escena, o para forzar la reflexión de una superficie en situaciones particulares (por ejemplo, una lata de un fresco bebida sacada fuera del frigorífico, un poco empañada y con chorros de agua condensada), donde se pintan de blanco las zonas más brillantes y de negro las más opacas, o para resaltar algunas zonas que deberían ser de interés (que, por ejemplo, no se vería).
Un mapa especular básicamente indica dónde debería o no aparecer un reflejo, por esta razón su uso puede considerarse incorrecto en un material de base física (PBR), para lo cual sería más adecuado un mapa de rugosidad.

 

Construyendo un mapa especular (Specular Map) en Krita:

En nuestro caso no hay reflexiones particulares que destacar, por lo que no sería necesario construir un mapa de reflexión. El mapa podría usarse si la pared estuviera mojada, ya que en ese caso reflejan mucho más los ladrillos que el mortero, en este caso dar un valor uniforme para la especularidad a toda la pared no sería correcto y se necesitaría un mapa para distinguir las distintas áreas (el mortero de los ladrillos).
Abramos el archivo "height_map.kra"

Si quieres dar más reflejos a los ladrillos, aumentamos la diferencia con el mortero dándole a la opacidad de "Dark Mortar" un valor del 53%

y agregue un filtro "Niveles" (agregando una capa de filtro "Filter Layer > Adjust > Levels" (Capa de filtro > Ajustar > Niveles)) para proporcionar algo de contraste también, moviendo los controles deslizantes hacia la derecha, dando a las sombras el valor 16 y los medios tonos 0.506,

Luego agregamos un filtro de capa "Adjust > HSV/HSL Adjustment" (Ajustar > Ajuste de HSV/HSL) con "Lightness"(Claridad): -45 para suavizar un poco los reflejos.

guardamos el archivo como "specular_map.kra" y exportamos el archivo en formato jpeg como "specular_map.jpg".

Puedes descargar los mapas creados aquí:
diffuse_map.jpg
displacement_map.jpg
height_map.jpg
normal_map.jpg
roughness_map.jpg
specular_map.jpg

Con este tutorial se termina la primera parte del mini-curso, en el próximo episodio hablaremos sobre el desplazamiento en Blender, donde comenzaremos a usar uno de los mapas creados aquí, el "mapa de desplazamiento" Blender: cómo crear los ladrillos del muro con el modificador de desplazamiento. ¡Hasta pronto! 

Volvé al curso "Curso de Blender: de una foto a una pared 3D"

Si te gustó el artículo, compártelo con un amigo:

Artículos relacionados:

Tutorial Krita: Introducción [ESP]

En este tutorial en español presentamos Krita, un programa de dibujo digital 2d de código abierto ampliamente utilizado para pintar ...

Lea el articulo >

Cómo crear un graffiti en Krita

En este tutorial en español para Krita veremos cómo crear graffiti en Krita. Usaremos como textura base la imagen de ...

Lea el articulo >

 

Vas a la lista de tutoriales: > Krita <