• eng
  • deu
  • esp
  • fra
  • ita
  • rss-icon
  • facebook-icon
  • youtube-icon
  • twitter-icon

Krita Tutorial: como criar mapas de deslocamento, de altura, de normais, etc.

Neste tutorial do Krita em português (atualizado para o Krita 4.4.8), veremos como criar mapas de deslocamento, altura, normal, rugosidade e especular a partir de uma foto. Esses mapas são muito importantes no mundo 3D, pois através de uma textura eles fornecem informações sobre como a superfície de um objeto deve realmente ser modificada (mapa de deslocamento), ou sobre como simular de forma não real pequenos detalhes não muito destacados (mapa de altura, mapa normal), ou para especificar precisamente quais áreas de uma superfície, e como, devem refletir a luz e outras não (mapa especular, mapa de rugosidade).

Uma clarificação: sempre há um pouco de confusão no uso dos nomes dos vários mapas, por exemplo, um mapa de altura às vezes pode ser usado diretamente nas funções de deslocamento, pois os vários tons de cinza podem ajudar a reproduzir fielmente a malha real de um objeto; por outro lado, um mapa de deslocamento pode facilmente ser chamado de mapa de altura, pois pode definir, por exemplo, a altura de um terreno/montanha. No entanto, um mapa de altura também pode ser usado como um mapa de relevo no lugar de um mapa normal, quando não estiver disponível.

No nosso caso, no entanto, não podemos usar um mapa de altura simples para deslocamento, obtido diretamente da foto que também é bom como um mapa de relevo, então chamamos os dois mapas de forma diferente: mapa de deslocamento aquele que é usado na função de deslocamento e mapa de altura aquele que é usado como mapa de relevo, para não se confundir com o mapa normal.
Este é o primeiro de uma série de tutoriais que nos mostrarão como transformar uma foto em um conjunto de mapas para usar com o programa Blender, para criar uma parede mais ou menos realista, equipada com escritos, coli, moldes, hera e tudo. que faz com que uma parede pareça mais "envelhecida".

Vamos começar enviando uma foto de uma parede (do site pixabay.com) no Krita, aqueles que não estão familiarizados com o software Krita podem assistir a sua introdução em https://www.graphicsandprogramming.net/por/tutorial/krita/guia-basico-krita/tutorial-krita-introducao, e chamamos a camada correspondente de "diffuse" (um mapa "difuso", também chamado de "albedo" ou "color", é um mapa que deve ser obtido usando luz difusa, sem nenhum ângulo particular, idealmente, deve representar as cores da superfície sem qualquer iluminação)

Por segurança, mas também para possivelmente reutilizar a imagem, selecionamos a camada "diffuse", duplicamos pressionando as teclas "Ctrl+J" e renomeamos a cópia com "diffuse base"

No nosso caso, usamos uma foto não retocada, mas um bom mapa diffuse inicial não deve ter sombras, ou áreas mais claras e áreas mais escuras (o que pode afetar a criação dos outros mapas), e deve ser melhorado antes de ser usado.

 

O que é um mapa de deslocamento (Displacement Map):

O mapa de deslocamento é um mapa em tons de cinza (geralmente é codificado em 8 bits, correspondendo a 256 tons de cinza, mas para mais detalhes também há mapas de 16 e 32 bits) onde as partes neutras, que não devem ser afetadas pelo deslocamento da função, permanecem cinza (cor hexadecimal:#808080), as que devem afundar são pretas, enquanto as partes que devem emergir mais devem ser "coloridas" de branco. Os vários tons de cinza correspondem aos níveis de altura intermediários.
O mapa de deslocamento modifica, nos programas de modelagem 3D, os objetos de forma real e acima de tudo deve dar uma forma mais ou menos aproximada aos relevos produzidos, que então serão melhor definidos pelo mapa de altura e pelo mapa normal, portanto em Em nosso caso, os tijolos no mapa de deslocamento devem ser quase uniformemente brancos, enquanto a parte coberta da argamassa deve ser quase uniformemente preta. Para isso tentamos separar de alguma forma a argamassa dos tijolos, de forma a atuar sobre eles de forma independente.

 

Construindo o mapa de deslocamento (Displacement Map) no Krita:

Usamos a "Contiguous Selection Tool" (Ferramenta de Seleção Contígua) Que nos permitirá selecionar elementos contíguos com mais ou menos uma determinada cor

e na area acoplavel "Tool Options" (Opções de ferramentas), definimos um valor de "Fuzziness" (Difusão) igual a 23,

então podemos selecionar a maior parte da argamassa sem incluir os tijolos

no entanto, onde os tijolos projetam sua sombra de forma mais consistente, a argamassa não foi selecionada

então vamos mudar o valor de "Fuzziness" (Difusão) para 13, para limitar ainda mais o conjunto de cores semelhante ao selecionado, e mantendo pressionada a tecla "SHIFT" (para fazer uma seleção aditiva), com um pouco de paciência clique em todas as partes sombreadas da argamassa ou, por outros motivos, ainda não selecionadas. (Se, por outro lado, a seleção feita anteriormente incorporou uma parte de alguns tijolos, mantendo pressionada a tecla "ALT" podemos fazer uma seleção subtrativa, eliminando assim as áreas supérfluas)
Ainda mantendo pressionada a tecla "SHIFT", podemos usar outros tipos de ferramentas, como o retângulo ou a seleção à mão livre (Freehand Selection Tool), para acelerar as operações.

Ou para melhorar a seleção podemos usar os pincéis; na verdade, se olharmos para as camadas, vemos que um novo foi criado automaticamente, correspondendo à seleção feita

se clicarmos na camada, as partes não selecionadas ficarão vermelhas e usando um pincel (como Basic-1 ou Airbrush_Soft, escolhendo a cor branca e opacidade 100%) ou uma borracha podemos adicionar ou remover partes da seleção, simplesmente por quadro

vamos fazer a seleção menos irregular clicando com o botão direito na parte selecionada e usando a função "Transform  > Smooth" (Transformar  > Suave)

nós vamos chegar

As bordas dos tijolos no mapa devem ser levemente desfocadas, portanto, antes de clicarmos com o botão direito e chamarmos a função "Transform > Feather Selection" (Transformar > Seleção Leve) com "Raio da passagem" com valor 2 (possivelmente usando "Shrink"(Encolher a Seleção) e "Grow"(Aumentar a Seleção) para ajustar o tamanho da seleção)

Após a construção, com este procedimento, uma seleção limpa dos tijolos

que corresponde à camada "Selection Mask"

podemos modificar independentemente a argamassa e o tijolo.
Mas primeiro desaturamos, de forma não destrutiva, a foto em "diffuse base" adicionando um filtro apropriado: escondemos a máscara de seleção

e selecione a camada "diffuse base" e, no menu suspenso no canto inferior esquerdo, selecione "Filter Layer"(Camada de filtro)

e na janela pop-up selecione o filtro "Adjust > Desaturate" (Ajuste > Reeduzir a Saturação) com o método de dessaturação "Average" (Média) (o método de saturação deve ser selecionado de acordo com a imagem a ser modificada e o trabalho que está sendo realizado)

nós confirmamos e obtemos

duplique a "Selection Mask" e torne-a visível clicando no ícone do olho

clique no botão "+" no canto inferior esquerdo

criamos uma "Camada de Pintura" que chamamos de "Dark Mortar" (Argamassa escura), reescrevendo o nome após pressionar a tecla F2, e arrastamos a máscara de seleção duplicada para esta camada

selecione a camada "Dark Mortar", selecione a ferramenta balde de tinta (localizada no painel esquerdo) pressionando a tecla "F"

nós selecionamos a cor preta

e colorimos toda a camada.
Selecionamos "Copy of Selection Mask" e a transformamos de uma máscara de seleção em uma máscara de transparência, clicando com o botão direito do mouse e selecionando "Convert > To Trasparency Mask" (Converter > Para a Máscara de Transparência)

A máscara de transparência garante que a tinta preta de "Dark Mortar" esteja presente apenas na argamassa e não nos tijolos.

Damos à opacidade de "Dark Mortar" um valor de 80%, ou apenas o suficiente, para realçar os relevos e ondulações mais significativos presentes na argamassa.
Selecionamos a camada "Dark Mortar" e a máscara relativa "Transparency Mask 1" e as duplicamos pressionando as teclas "CTRL+J". Renomeamos a nova camada como "Light Bricks", enquanto a nova máscara como "Transparency Mask 2"

clique em "Transparency Mask 2" e inverta as cores pressionando as teclas "CTRL+I"; desta forma os tijolos ficarão visíveis enquanto a argamassa ficará transparente. Em seguida pintamos com o balde a camada "Light Bricks" com a cor branca, trazendo a opacidade para um valor de 60% para mostrar os relevos mais interessantes dos tijolos.

Obtendo assim o mapa de deslocamento

Agora temos que desfocar a imagem, de fato, um mapa de deslocamento com bordas muito nítidas fará com que os elementos mais altos surjam verticalmente a 90 graus, alongando assim o mapa difuso com efeitos indesejados, enquanto precisamos de um resultado mais suave que não gere artefatos. Em o mapa de cores. Não importa se alguns detalhes são excluídos, pois o mapa de diplacement é usado para modelar os tijolos, enquanto para os detalhes usaremos os mapas de relevo.

Então vamos adicionar uma "Filter Layer"(Camada de filtro) "Blur > Gaussian Blur"(Borrar > Borrão Gaussiano), com "Horizontal radius"(Raio horizontal) e "Vertical Radius"(Raio vertical) com valores próximos a 20px

e vamos obter um mapa de deslocamento como este

que exportamos, com "File > Export" (Ficheiro > Exportar), como "displacement_map.jpg" que, usado em um software de modelagem 3D (no nosso caso Blender) com um modificador de deslocamento, resultará

salvamos o ficheiro, com "File > Save As" (Ficheiro > Gravar como), como "displacement_map.kra".

 

O que é um mapa de relevo (Bump Map):

Agora criaremos o mapa de altura e o mapa normal, que são ambos considerados mapas de relevo. Ambos contêm dados para representar apenas detalhes aparentes na superfície de uma malha em um programa de modelagem e renderização 3D, portanto, eles não criam relevos reais, mas ilusões de relevo através de um jogo de luz e sombra; isso permite criar modelos com relativamente poucos polígonos, mas com muitos detalhes, como os usados em jogos eletrônicos. Como o detalhe que eles criam é falso e nenhuma resolução real é adicionada, a forma da geometria à qual o mapa de relevo é aplicado não será afetada pelo mapa.

 

O que é um mapa de altura (Height Map):

Conforme mencionado, são semelhantes aos mapas de deslocamento em formato de ficheiro, mas não em gráficos, pois devem ser muito mais detalhados, pois devem descrever os objetos que representam com muita precisão.
Eles também são salvos no formato de 8 bits em 256 tons de cinza, do preto ao branco, em que cada pixel representa a quantidade pela qual o ponto na superfície deve aparecer elevado: o branco corresponde aos relevos, o preto às áreas em profundidade, o cinza intermediário tem um efeito neutro.
Os mapas de altura são muito afetados pelo ângulo da luz e da câmera, em um ambiente 3D, portanto deve-se ter cuidado na sua utilização, possivelmente associando-os a um mapa especular adequado, para contornar os problemas de áreas semi-sombreadas.

Como dissemos antes, em comparação com um mapa de deslocamento em um mapa de altura, você tem que ver mais detalhes e o mapa não deve ser usado dentro de uma função de deslocamento para deformar a geometria da malha para criar os tijolos, então não deve haver tão grande diferença em tons de cinza entre argamassa e tijolo que tentamos alcançar anteriormente.

 

Criando um mapa de altura (Height Map) no Krita:

Então, vamos começar com o exemplo do mapa de deslocamento, criado anteriormente, excluímos a camada "Filter Layer 1 (Gaussian Blur)" e agora vamos dar à opacidade da camada "Dark Mortar" um valor de 40%

e para a camada "Light Bricks" um valor de 25% para a opacidade

obtendo assim o mapa de altura

que exportamos como "height_map.jpg".
Em seguida, salvamos o ficheiro, com "File > Save As" (Ficheiro > Gravar como), como "height_map.kra".

 

O que é um mapa normal (Normal Map):

Conforme mencionado anteriormente para mapas de relevo e mapas de altura, um mapa normal é para saliências pequenas e de alta frequência, como ranhuras, arranhões, porosidade da pele e sempre que detalhes finos da superfície são necessários. Porém, na verdade é uma ilusão, pois este procedimento não afeta a geometria real, mas a forma de gerenciar a luz capturada, economizando assim no número de polígonos a serem usados.

Um objeto em um ambiente 3D é iluminado usando as normais de superfície dos vários polígonos que o compõem: com base no ângulo entre o vetor da normal de superfície e o da luz incidente, o polígono pode ser mais ou menos sombreado. Um mapa normal fornece informações sobre uma "perturbação" virtual (de cor azul na figura a seguir) "acima" da superfície "real" do modelo (de cor preta),

What is a normal map

Um mapa normal é uma textura RGB, onde cada pixel representa a diferença na direção que a normal da superfície deve estar, de sua normal de superfície não modificada. Matematicamente, para cada ponto da superfície consideramos um plano tangente a esse ponto (na verdade também é chamado de "mapa normal do espaço tangente"), representado por um vetor perpendicular a ele. Um mapeamento é então feito entre os vetores unitários, no espaço tridimensional X Y Z, e os canais RGB das cores de cada pixel do mapa. Cada cor, portanto, representa um eixo diferente de direção relativa. Usando a regra da mão esquerda e exibindo apenas os vetores voltados para o usuário, obteremos estas correspondências:

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

Essas texturas, portanto, tendem a ter uma predominância azul-violeta, devido à forma como o vetor é armazenado nos valores RGB e processado posteriormente.
Um vetor normal apontando diretamente para o observador (0,0, -1) é mapeado para (128,128,255). Portanto, as partes do objeto diretamente voltadas para o visualizador são azuis, a cor em um mapa normal que representa a superfície indeformada, que muitas vezes corresponde à maior parte da textura.

 

Criar um mapa normal no Krita:

Iniciamos o Krita e carregamos a foto da parede em uma camada que chamaremos de "diffuse"

clicando no menu suspenso à direita do botão "+" na parte inferior, adicionamos a "Filter Layer" (Camada de filtro) "Edge Detection > Height to Normal Map" (Detecção de Contornos > Mapa del Altura à Normal) e a janela pop-up aparece

No qual podemos ver algumas opções para escolher:

- três métodos diferentes: Prewitt (que gera um efeito mais forte), Sobel (efeito mais sutil), Simples (computacionalmente mais rápido). Escolhemos a opção "Sobel" porque não necessitamos de relevos muito acentuados.
- O canal a partir do qual obter o mapa das alturas em que trabalhar. No nosso caso deixamos "Azul" selecionado, pois acentua bastante as fissuras nos tijolos, mas sem destacar outras partes indesejadas. (Sempre examine a visualização para ver qual canal parece melhor para sua textura, isso pode depender da cor dominante da textura e dos vários elementos presentes)
- Não alteramos sequer o raio horizontal e vertical, cujo aumento poderia ter o efeito de acentuar o relevo gerado pelo mapa.
- Uma atenção particular, por outro lado, requer a escolha dos eixos para a realização do mapa normal; na verdade, se deixarmos a tríade X +, Y+, Z+ inalterada, pressionando o botão "OK" obteremos um mapa normal como segue

que, no entanto, destaca a argamassa ao invés dos tijolos como em relevo, como também podemos ver aplicando o mapa em um plano no programa de modelagem 3D Blender, após salvar o ficheiro, com "File > Save As" (Ficheiro > Gravar como), como "normal_map. kra "e exportado como" normal_map.jpg "

Então, clique com o botão direito do mouse em "Filter Layer" (Camada de filtro) recém-criada ou pressione F3 e escolha "Properties"(Propriedades)

Mudamos apropriadamente o eixo Y, escolhendo a tríade X +, Y- e Z+

e nós pegamos o mapa

verificando no Blender, descobrimos que um mapa com esta escolha de eixos representa mais corretamente argamassa e tijolos

salvamos o ficheiro como "normal_map.kra" e exportamos o ficheiro no formato jpeg "normal_map.jpg".

 

O que é um mapa de rugosidade (Roughness Map):

As superfícies dos objetos não são todas iguais, algumas são mais lisas, outras mais enrugadas, outras têm uma superfície composta por objetos ainda menores e muito próximos uns dos outros. Portanto, quando um raio de luz atinge uma superfície mais áspera, as pequenas saliências refletem a luz em várias direções diferentes e o raio anteriormente concentrado é refletido globalmente de uma forma mais difusa. O mapa de rugosidade é um mapa em escala de cinza, que controla a nitidez dos reflexos, ou seja, se eles devem ser mais concentrados ou mais difusos (neste caso são mais borrados, de forma granular).
Em alguns sites, que permitem o download de texturas, às vezes você pode encontrar mapas "Gloss" em vez de "Roughness", mas na prática eles são conceitualmente iguais, apenas um é o inverso do outro (então, basta adicionar um nó de inversão para vale de textura)

 

Criar o mapa de rugosidade (Roughness Map) no Krita:

Quanto ao nosso caso, no que se refere a uma parede, a argamassa é muito porosa e portanto com um valor de rugosidade bastante significativo, tal como os tijolos, agravada pelo facto de não serem novos, mas sim velhos e danificados. A poeira da parede em ruínas também pode amplificar o efeito.

Vamos recarregar o exemplo referente à textura de deslocamento "displacement_map.kra" e excluímos a camada "Filter Layer 1 (Gaussian Blur)"

para ter uma rugosidade elevada é necessário clarear argamassa e tijolos, por isso definimos a camada "Light Bricks" com 58% de opacidade, enquanto atribuímos à opacidade "Dark Mortar" um valor quase igual a 0% e obtemos

salvamos o ficheiro como "roughness_map.kra" e exportamos o ficheiro no formato jpeg "roughness_map.jpg"

 

O que é um mapa especular (Specular Map):

É usado em computação gráfica em tempo real, para determinar a intensidade da reflexão especular, mas salvando alguns cálculos com as luzes presentes na cena, ou para forçar o reflexo de uma superfície em situações particulares (por exemplo, uma lata de uma bebida recém-tirada da geladeira, um pouco embaciado e com gotas de água condensada), onde as áreas mais brilhantes são pintadas de branco e as mais opacas de preto, ou para enfatizar algumas áreas que deveriam ser de interesse (que, por exemplo, com pouca luz não seria visto).
Um mapa especular basicamente indica onde uma reflexão deve ou não aparecer, por isso seu uso pode ser considerado incorreto em um material de base física (PBR), para o qual um mapa de rugosidade seria mais adequado.

 

Construir um mapa especular (Specular Map) no Krita:

Em nosso caso, não há reflexões particulares a serem observadas, portanto, não seria necessário construir um mapa especular. O mapa poderia ser usado se a parede estivesse molhada, pois nesse caso os tijolos refletem muito mais do que a argamassa, neste caso dar um valor uniforme para a especularidade para toda a parede não seria correto e seria necessário um mapa para distinguir as várias áreas (a argamassa dos tijolos).
Vamos abrir o ficheiro "height_map.kra"

Se você quiser dar aos tijolos mais reflexão, aumentamos a diferença com a argamassa, dando à opacidade de "Dark Mortar" um valor de 53%

e adicione um filtro "Níveis" (adicionando uma "Filter Layer"(Camada de filtro) "Filter Layer > Adjust > Levels"(Camada de filtro > Ajustar > Níveis)) para fornecer algum contraste também, movendo os controles deslizantes para a direita, dando às sombras o valor 16 e os tons médios 0,506,

Em seguida, adicionamos um filtro de camada "Adjust > HSV/HSL Adjustment" (Ajuste > Ajuste do HSV/HSL ) com "Lightness" (Luminosidade):-45 para suavizar um pouco os reflexos.

salvamos o ficheiro como "specular_map.kra" e exportamos o ficheiro no formato jpeg como "specular_map.jpg".

Com este tutorial está finalizada a primeira parte do minicurso, no próximo episódio falaremos sobre deslocamento no Blender, onde começaremos a usar um dos mapas aqui criados, o "mapa de deslocamento" Blender: como criar os tijolos da parede com o modificador de deslocamento. Até breve!

Se você gostou do artigo, compartilhe com um amigo:

 

Regressar ao índice de tutoriais: > Krita <