Blender tutorial: material PBR para parede de tijolos
Neste quarto tutorial do mini-curso em português para Blender "Curso de Blender: da foto à parede 3D", veremos como criar um material PBR para a parede que estamos fazendo, utilizando os mapas que havíamos salvo anteriormente.
Um material PBR (Physically Based Rendering) é um material que deve levar em conta as características físicas do objeto, mas estamos no mundo da representação artística então usaremos "shaders", componentes que simulam sombras e sombreados, aproximando o que acontece sobre ele quando é atingido por um raio de luz na realidade.
Em particular, usaremos o shader representado pelo nó "Principled BSDF", chamado de "Principled" porque não aproxima a física de forma rigorosa, mas segue os princípios (alguns parâmetros intuitivos que levam a um resultado plausível, ao invés de física parâmetros) formulados inicialmente por Disney que formalizou este modelo, e "BSDF" (função de distribuição de espalhamento bidirecional) porque, a partir de um feixe de luz incidente, tanto a distribuição de todos os raios refletidos quanto a de todos aqueles transmitidos no interior são calculadas de o material.
Nos tutoriais anteriores construímos a forma aproximada dos tijolos usando dois métodos, aquele com o displace modifier ("Blender: tijolos da parede com o modificador displace") e outro com a subdivisão adaptativa ("Blender: tijolos com adaptive subdivision/microdisplacement"), salvando os resultados nos dois arquivos "displacemodifier.blend" e "adaptive_subdivision_microdisplacement.blend".
Neste tutorial usaremos os mapas criados com o Krita neste tutorial "Krita Tutorial: como criar mapas de deslocamento, de altura, de normais", mas as texturas baixadas da Internet ou criadas com outros programas também podem funcionar (falaremos sobre isso mais tarde, na parte inferior da página no final deste tutorial)
Material de tijolos PBR com displace modifier, "base color":
Carregamos o arquivo "displacemodifier.blend"
vamos desativar o modificador "Displace" por enquanto,
e selecione a área de trabalho "Shading"
No "Shader Editor" abaixo, caso não esteja presente, crie o nó para a textura (Add > Texture > Image Texture), carregue a textura "diffuse_map.jpg" representando a foto inicial da parede e conecte a "Image Texture" para o nó "Principled" (no momento deixamos as configurações padrão do nó "Principled" inalteradas) na porta "base color" para indicar que esta textura é usada para dar a cor base ao objeto associado ao material
conecte ao nó "Image Texture" o nó "Texture Coordinate" (Add > Input > Texture Coordinate), que define inequivocamente o tipo de mapeamento usado, e o nó "Mapping" (Add > Vector > Mapping) que neste tutorial não é necessário, mas é sempre útil redimensionar a textura em determinadas situações (vamos usar em outra lição para redimensionar/girar uma escrita na parede).
Na pré-visualização vemos agora
como entrada para a porta "base color", usamos uma foto não processada, se a tivéssemos transformado em uma textura "albedo" antes, teríamos que misturá-la (usando um nó Add > Color > MixRGB) com seu mapa "Ambient Occlusion"(AO) adicional, que força a presença de sombras calculando onde os volumes param os raios de luz
modificando o fator "Fac" de acordo com as características da imagem "albedo", a foto original da qual o mapa foi tirado e o resultado a ser obtido.
A jusante da textura, podemos adicionar um nó "Hue/Saturation" (Add > Color > Hue/Saturation) ou um "RGB Curves" (Add > Color > RGB Curves)
se houver necessidade de adicionar ou remover contraste à imagem, ou tornar os tijolos menos vermelhos
esses modificadores podem ser usados diretamente ou para que o resultado final seja misturado, através do nó MixRGB (Add > Color > MixRGB)
no nó "Image Texture", para que as imagens sejam exibidas em um monitor, em "Color Space" você deve sempre definir a opção sRGB, que é o espaço de cores codificado RGB otimizado para exibição (portanto usado para monitores), na verdade uma textura contém informações que um olho humano não pode ver, uma conversão é então realizada para que as cores e os tons de cinza sejam exibidos da melhor maneira possível.
Mapa de altura e mapa normal no material PBR:
Com o modificador "Displace" definimos grosseiramente a forma dos tijolos, agora com o mapa de altura e o mapa normal adicionaremos detalhes, como arranhões de tijolos ou porosidade.
Vamos alterar algumas configurações: nas "Render properties" definimos um número de samples 150 para "Viewport" (para o Blender da versão 3.0 definimos esse valor em "Max Samples")
e desconecte as texturas da porta "base color".
Para adicionar detalhes aos tijolos usamos os dois mapas que criamos com o Krita: "normal_map.jpg" e "height_map.jpg".
Para esses mapas e para os outros que veremos mais adiante, o espaço de cores "Color Space" deve ser definido como "Non-Color", pois os dados devem ser lidos do mapa como estão, uma possível conversão para sRGB seria alterada incorretamente as informações nele contidas.
Para ler os dados do mapa e criar a perturbação nas normais, o que adicionará detalhes "virtuais" (modificando localmente as formas como as sombras são criadas quando o objeto é atingido pela luz), usamos o nó "Normal Map" (Add > Vector > Normal Map) que, como podemos ver, recebe as cores do mapa como entrada (através da porta "color") e retorna os "vetores" na saída (através da porta "normal")
No nó "Normal Map" existem três parâmetros para definir: no menu drop-down você especifica o tipo de mapa normal que estamos usando ("Tangent Space", "Object Space", "World Space", "Blender Object Space", "Blender World Space")
escolhemos "Tangent Space", porque no Krita construímos um mapa normal do espaço tangente.
Devemos então escolher o UVMap a usar, geralmente é o do objeto no qual o mapa deve ser aplicado, no nosso caso existe apenas um que é "UVMap", o do nosso plano, previamente criado e configurado pelo addon "Images as Planes" com a qual importamos a foto da parede.
o último parâmetro, "Strength", indica quão perceptível será o efeito do mapa normal. Se definirmos por exemplo o valor de Strength:3 teremos como resultado
com apenas uma deformação aparente da malha, feita com luzes e sombras, de fato, se olharmos o plano de lado, notamos que nenhum relevo foi criado, ao contrário do que aconteceu com o modificador "Displace".
Para adicionar os detalhes aos tijolos podemos usar um mapa normal ou o "height_map.jpg" (a ser adicionado com Color Space:"Non-Color"), que criamos no outro tutorial para o Krita, colocando a jusante um nó Bump (Add > Vector > Bump), ou podemos combinar os efeitos dos dois mapas juntos, concatenando os nós
O nó Bump é regulado por três parâmetros: uma opção "Invert" que permite inverter a interpretação das alturas do mapa, "Strength" que determina a força do efeito dos mapas (na prática, visualmente, colore as sombras mais claras ou mais escuras ), "Distance" um multiplicador do valor da altura de entrada para controlar a distância que queremos simular.
Também conectamos os nós do mapa de altura e do mapa normal ao nó "Mapping"
na pré-visualização da área de trabalho "Shading" vemos, com os valores de "Strength" definidos nas imagens anteriores, que os relevos dos tijolos estão mais definidos
você pode variar os parâmetros de acordo com o tipo de material, a distância do objeto, o efeito que deseja obter
Mapa de rugosidade em material PBR:
O parâmetro "Roughness" é usado para indicar a rugosidade do objeto, que pode ser empoeirado ou poroso, fragmentando e refletindo o raio de luz que o atinge em várias partes.
Com o mapa normal (com Strength:0.6) e o mapa de altura conectado ao nó "Principled", através do nó "Bump" o efeito de um mapa de rugosidade será pouco evidente, pois o mapa normal já influencia luzes e sombras no objeto.
no entanto, se desconectarmos o nó "Bump" do nó "Principled", um reflexo do sol aparecerá atingindo o tijolo de cima.
Agora vamos ver como gerenciar essa reflexão: no nó "Principled" o parâmetro "Specular" está definido em 0.5, deixamos esse valor inalterado, pois o material é dielétrico, enquanto o parâmetro "Roughness" está definido em 0.5 por padrão.
Agora vamos adicionar o mapa "roughness_map.jpg", criado no outro tutorial do Krita junto com os outros mapas, usando o nó "Image Texture" (Add > Texture > Image Texture), também aqui com "Color Space: Non-Color" porque é um mapa que deve ser lido sem filtros e modificações,
e já veremos uma melhoria, com um reflexo acima do tijolo que leva em conta a luz que vem de cima, mas mais difusa do que antes
Podemos eventualmente colocar um nó "ColorRamp" (Add > Converter > ColorRamp) para diminuir a influência da rugosidade por parte da textura, aumentando assim a concentração de reflexos
ou para aumentar a rugosidade
Considerando também o fato de termos que reinserir os mapas bump/normal, escolhemos os valores que nos permitirão obter um bom resultado para nosso projeto.
Com este mapa de rugosidade finalizamos o tutorial do material PBR básico para os tijolos de parede. Abaixo você pode clicar na imagem para ver todo o diagrama de nós criado.
Com o displace modifier
Aqui está o exemplo depois de seguir o tutorial sobre subdivisão adaptativa
Você pode baixar os arquivos do projeto aqui:
diffuse_map.jpg
displacement_map.jpg
height_map.jpg
normal_map.jpg
roughness_map.jpg
blender_wall_pbr_material_adaptive_subdivision.blend
blender_wall_pbr_material_displace_modificator.blend
world hdri
Agora vamos ver algumas sugestões de como acelerar a criação de nós, fazer configurações e depurar.
Como acelerar o trabalho:
No tutorial, criamos os nós contendo os mapas usando a função de menu apropriada (Add > Texture > Image Texture), mas podemos acelerar o processo arrastando as texturas ou do "file browser" da área de trabalho "Shading".
ou do navegador de arquivos do nosso sistema operacional.
O nó "Image Texture" será criado automaticamente, basta selecionar "Color Space: Non-Color" ou "Color Space:sRGB" e conectá-lo aos demais.
O complemento Node Wrangler:
Um addon que pode nos ajudar a gerenciar nós é sem dúvida o "Node Wrangler", já fornecido por padrão ao Blender. Podemos ativá-lo em "Edit > Preferences" selecionando a guia "Add-ons"
Este addon é importante, pois fornece funções úteis que permitem acelerar o seu trabalho de fato, por exemplo, selecionando um nó "Principled", pressionando as teclas "Ctrl+Shift+t", selecionando os vários mapas com o botão "File Browser", carrega e vincula automaticamente "diffuse", "normal map", "roughness map" etc.
ou pressionando as teclas "Ctrl+Shift" e clicando com o botão esquerdo do mouse em uma textura, podemos ver uma prévia dela (útil para entender como alterar as configurações de alguns mapas do nosso material PBR)
Para saber mais sobre outras funções, consulte o "Guia addon Node Wrangler para Blender e pdf atalhos"
Como criar mapas/texturas:
Vimos em um dos tutoriais anteriores como criar mapas com o Krita e de forma semelhante podemos construí-los com outros softwares gráficos 2D generalistas, como GIMP ou Photoshop.
No entanto, também existem softwares dedicados, como Materialize (código aberto) https://boundingboxsoftware.com/materialize/, ou Crazybump http://www.crazybump.com/, mas também serviços online como NormalMap-Online, onde você só precisa carregar a textura difusa para obter automaticamente todos os outros mapas.
Onde baixar os mapas/texturas:
Se por algum motivo você não conseguir construir suas texturas a partir de uma foto, você pode baixá-las de alguns sites dedicados. Por exemplo, em ambientcg.com, polyhaven.com, sharetextures.com, cgbookcase.com, 3dtextures.me estão disponíveis pacotes gratuitos que contêm vários mapas para representar vários materiais, como paredes, pisos, casca de árvore e muito mais. Geralmente, em cada pacote existem vários arquivos: uma textura de cor que pode aparecer com vários nomes ("color", "basecolor", "diffuse" etc.), um mapa para oclusão de ambiente (às vezes indicado com AO), um mapa para deslocamento (que pode ser referido como "displacement" ou "height"), um ou mais mapas normais, um mapa para rugosidade e, às vezes, um mapa especular.
Em alguns casos, arquivos em formato usd também podem ser disponibilizados, enquanto Polyhaven.com também fornece os arquivos relativos em formato .blend e .gltf para simplificar certas operações.
Às vezes, mais texturas são fornecidas representando mapas normais, pois foram codificados de acordo com dois padrões diferentes, DirectX e OpenGL, e os nomes dos arquivos relacionados têm palavras como "normaldirectx" e "normalopengl", ou mais brevemente "normaldx" e "normalgl " que identificam o respectivo formato. Esses dois mapas diferem pelo fato de o canal verde do mapa RGB com o qual foram codificados ter o bit invertido em relação um ao outro. Como resultado, observá-los mostra que as partes elevadas de um aparecem afundadas no outro e, inversamente, suas partes afundadas aparecem elevadas no segundo mapa, semelhante a quando criamos o mapa normal com o Krita em um dos tutoriais. onde tivemos que escolher Y- em vez de Y+ para ver em qual direção interpretar os vetores para as luzes e sombras.
Portanto, caso o mapa normal, baixado de um site, dê um resultado indesejável
teremos que adicionar um nó "RGB Curves" (Add > Color > RGB Curves) para inverter o canal "Green"
obtendo assim
Para este tutorial sobre como fazer um material PBR para uma parede de tijolos, isso é tudo. A seguir veremos como adicionar imperfeições como manchas úmidas (Blender tutorial: como adicionar sujeira a uma parede) e escrita. Happy blending!
Volta ao curso "Curso de Blender: da foto à parede 3D"