Na última parte do tutorial, examinamos o princípio de operação de máscaras, o que é uma "textura", e os canais são usados para absolutamente tudo - parâmetros de pixel. Agora vamos dar uma olhada na PBR favorita de todos e coletar texturas para criar asfalto molhado e sujo.
Nesta lição, vou me referir muito a outros tutoriais e fontes de informações para minimizar o volume do tutorial. A maioria dos links será fornecida no início do tutorial, portanto, se você não entender nenhum deste tutorial, siga os links e leia as informações. Quando estiver pronto - retorne ao tutorial e continue aprendendo o básico do artista nas superfícies. Se algum link não estiver disponível, informe-me no PM ou nos comentários. Definitivamente vou corrigir esse mal-entendido.
Além disso, se algo for completamente incompreensível - peço que o relate, para que eu possa expandir esse tópico com mais detalhes.
Parte 1. Pixel aquiParte 2. Máscaras e texturas aquiParte 3. PBR e Materiais - você lê.
Parte 4. Modelos, normais e varra aqui .
Parte 5. Sistema de material aqui .
PBR
Essa abreviação é descriptografada da seguinte maneira:
Renderização com base física . O que significa "renderização baseada em física".
Como todos sabemos, não poderíamos ver um único objeto se os objetos não refletissem a luz que incide sobre eles. Tudo isso funciona de maneira muito simples - um raio de luz atinge a mesa, quica e atinge sua retina.
Dependendo da superfície, de sua condição (se reflete como um espelho ou tem uma rugosidade, se há gotas de sujeira / água / café na superfície), um feixe já modificado entra em seu olho (digamos assim). Além disso, um raio não está totalmente correto, pois já se sabe que a luz também é uma onda. Mas isso já é muito profundo para nós, e aqui posso estar errado.
Mas a essência permanece inalterada - a maneira como vemos os objetos é construída a partir da maneira como a luz é refletida na superfície. E o padrão PBR descreve quais parâmetros devem ser levados em consideração para que a luz pareça o mais cinematográfica possível.
Não começarei a escrever sobre as regras pelas quais a luz é construída, como é refletida e se é refletida. Sobre como a luz funciona no nível da física, há vários artigos:
- O artigo básico dos criadores do Substance Painter / Designer está aqui . E a tradução de 2015 está aqui . Um link para a segunda parte da tradução está na mesma página.
- Um artigo do Google sobre o desenvolvimento de PBR (os mesmos testículos, apenas em perfil com outras fórmulas) está aqui .
- Um artigo de MrShoor , que revisou o PBR sobre programação de shader de baixo nível aqui .
Parâmetros Ou como o PBR está configurado.
Consideraremos a PBR do ponto de vista do conceito geral e no nível do trabalho com cada parâmetro separadamente por meio de canais de pixel.
Na última parte do tutorial, lembre-se de que o PBR é realmente criado através da soma de parâmetros (você não deve entrar nas fórmulas). Ou seja, o PBR consiste em um conjunto de parâmetros:
- Cor (Cor Base / Albedo).
- Metálico
- Specular
- Rugosidade.
- Brilho
- Oclusão ambiental (doravante AO).
- Altura
- Mapa normal.
Todos os parâmetros, exceto o mapa Cor e Normal, usam 1 canal e Mapa Cor e Normal - 3 canais cada:
- A cor usa 3 canais - RGB para modelar a cor do pixel.
- O mapa normal usa 3 canais para simular a inclinação da superfície. Cada canal é responsável pela inclinação vertical, horizontal e de profundidade, respectivamente.
Offtop. Mapa normal.Quanto ao Mapa Normal, sua implementação técnica (quais canais são responsáveis por qual inclinação) difere das configurações de renderização. Assim, por exemplo, no Unreal Engine 4, o Green Channel é responsável pelo valor negativo da inclinação vertical e, no Unity, pelo positivo.
Mais informações podem ser encontradas
aqui .
Há também um artigo abrangente e abrangente sobre como criar o Mapa Normal e como trabalhar com ele no site render.ru
aqui .
Link para o fórum de discussão dos mapas normal e de altura (parâmetro Height)
aqui .
E a descrição da Wikipedia sobre texturas em relevo
aqui .
Agora, vale a pena notar que a renderização (exibição), baseada na física, tem várias implementações diferentes. Todos eles são semelhantes entre si e usam os mesmos canais de pixel para ajustar o resultado final. Geralmente, 2 tipos de implementação são compartilhados:

No primeiro tipo, os parâmetros
Cor-Metal-Rugosidade são levados em consideração, no segundo -
Brilho difuso-especular .
Ambos os tipos de implementação usam os mesmos três parâmetros -
AO, mapa normal, altura .
Offtopic sobre qual padrão usaremosUsaremos a primeira opção, pois, no futuro, transferiremos nosso treinamento para o Unreal Engine 4, e esse mecanismo usará a primeira variante de combinações + possui um parâmetro especular adicional, que mais uma vez mostra que o PBR é uma convenção.
Além disso, no PBR moderno, o parâmetro Height é misto e oculto no Mapa Normal. De fato, é mais fácil expressar irregularidades por meio de um mapa normal do que calcular também a profundidade / altura de um pixel ou qualquer outra coisa em canais adicionais. Tudo é mais simples do que parece, e é melhor não ser inteligente com dezenas de parâmetros.
Embora, ao criar texturas no Substance Painter, o parâmetro Height seja retirado separadamente, ao assar texturas, ele é costurado no mapa normal (você ainda pode selecioná-lo em um canal separado).
Total, o resultado final da imagem consiste em sobrepor parâmetros em um pixel:

Vamos ver agora como isso funciona no Substance Painter. Para fazer isso, criamos novamente um novo projeto com as configurações normais de playan e padrão (falei sobre eles na segunda parte dos tutoriais). E crie uma nova camada de preenchimento:

Agora, vejamos a textura normal padrão do conjunto
“Niche Rectangle Top Wide” do Pintor de substâncias, localizado sob a tag
Hard Surface :

Em seguida, transferiremos esse mapa normal para o parâmetro da camada Cor base (da lição anterior, devemos lembrar como fazer isso). É assim que o mapa normal se parece, se você o levar como uma imagem (imagem acima). Mas agora vamos removê-lo do parâmetro BaseColor (fizemos isso para familiarização geral) clicando na cruz no parâmetro:

E transfira-o para o parâmetro Normal:

Seu resultado final é atualizado imediatamente. Agora, se você pressionar Alt e LMB, poderá girar a câmera e observar os planos de diferentes ângulos. A luz refletida nos pixels começará a brilhar, criando a ilusão de profundidade. É como se realmente houvesse cavidades e protuberâncias no prato. Tudo isso é perceptível em um ângulo de 90 a 140-150 graus. E quanto maior o ângulo de inclinação, mais fica claro que este é um cálculo de uma placa de vídeo, que determina como cada pixel deve refletir a luz para criar essa ilusão. Como valores iniciais, transferimos 3 parâmetros para a placa de vídeo na forma de canais de pixels (em outras palavras, a textura do mapa Normal):

Agora vamos ser pervertidos. Removeremos esta placa do parâmetro Normal e a indicamos no canal metálico. Metálico possui um canal e o mapa normal possui 3 canais, respectivamente. Ao inserir um mapa normal nesse parâmetro, o Substance Painter cortará 2 canais extras (presumo que GB) e deixará apenas um para cálculos:

E o resultado:

O resultado final agora mostra que não há mais protuberâncias e depressões, mas a superfície começou a parecer algum tipo de placa de metal. Você também pode ver como o Metallic se parecerá com um, sem outros parâmetros (BaseColor e outros), alternando o modo de exibição para 1 canal Metallic (se você não tiver alterado nada, na janela de exibição no canto superior direito há a opção de alternar a exibição):

Selecione metálico e obtenha o seguinte resultado:

Como você pode ver, esse é um canal em escala de cinza, que determina quais pixels devem parecer metal, quais são médios e quais não são de metal. 0 não é metal. 1 - metal.
Da mesma forma com o canal Rugosidade - qualquer textura é adequada para trabalhar com ele. Depende do resultado final que você precisa. Você pode tentar colar qualquer textura disponível no canal de Rugosidade e ver o resultado.
Materiais sofisticados
A palavra "material" geralmente significa uma coleção de parâmetros prontos, cuja combinação fornece um resultado cinematográfico - material (em outras palavras, textura, superfície).
Tome, por exemplo, esta cadeira de couro:

Visualmente, a cadeira consiste em 3 materiais:
- Pele.
- Rebites de metal.
- Pernas de plástico (possivelmente de madeira).
Cada material possui seus próprios parâmetros:
- Cor (por exemplo, o couro é quase preto com manchas de rachaduras e fascinante é uma cor dourada com algumas manchas de sujeira).
- Metálico (no couro é quase 0 e nos rebites é próximo de 1).
- Rugosidade (na pele é mais próxima de 1 e nos rebites mais perto de 0).
- Mapa Normal (Na capa, o mapa normal exibe rachaduras e sua profundidade, e nos rebites - recortes / aparências técnicas).
- AO (na pele exibirá a correção do sombreamento das fendas e nos rebites - recortes).
E assim os parâmetros da pele ficam visualmente:
Para resumir o subtotal:Agora sabemos:
- O princípio de operação da PBR. E como gerenciá-lo através dos canais.
- Como todos os parâmetros funcionam e como podemos influenciá-los através de texturas.
- O princípio de construir materiais complexos.
- Como misturar materiais usando máscaras.
Com base nisso, agora podemos imaginar como criar asfalto molhado e sujo com marcas de pneus. Podemos?
Prática
E o que precisamos para coletar asfalto molhado com marcas de pneus?
Para começar, precisamos determinar a quantidade de materiais que serão usados em nosso tutorial:
- Asfalto.
- Sujeira.
- Marcas de pneus (em outras palavras, borracha).
Em seguida, adicione-os ao projeto Pintor de substâncias.
Onde conseguir os materiais?Surgiu a questão - onde conseguir esses materiais? Você pode sofrer um pouco e criar uma coleção de parâmetros para cada material manualmente. Por exemplo, encontre uma imagem de asfalto. Corte-o em um quadrado e faça-o como BaseColor. Em seguida, através de programas especiais (por exemplo, xNormal), crie um mapa normal a partir desta imagem. Através do mapa normal, ajuste Metálico e Rugosidade (você também pode usar BaseColor). Como resultado, passe várias horas criando o material asfáltico ideal, verificando os parâmetros corretos quanto a metal e rugosidade.
E você pode simplificar tudo.
Como eu disse acima, a maioria dos materiais já está preparada para você há muito tempo. Sua tarefa é apenas encontrar soluções prontas que atendam aos seus requisitos, fazer o download e instalá-los. Se você usa o Substance Painter, o allegorithmic (agora Adobe) possui um repositório especializado de materiais acabados que podem ser baixados. O acesso a eles é pago e gratuito.
Se você usa o Quixel, centenas de materiais diferentes já estão incluídos neste programa e você só precisa especificá-los e começar a trabalhar com máscaras. O que, aliás, é muito conveniente para iniciantes; portanto, se você acabou de dominar a texturização e ainda não está pronto para trabalhar com a geração de materiais - recomendo começar com o Quixel. O princípio é o mesmo, outro invólucro. Os tutores do programa estão na Internet.
Aqui (
Link ), você pode baixar a textura dos materiais que usaremos em nossa prática.
Nosso objetivo agora não é criar texturas de alta qualidade, mas nos familiarizar com como criar algo interessante usando parâmetros e máscaras de PBR. Portanto, nesta fase, não usaremos geradores de máscaras ou sujeira, mas faremos tudo manualmente para entender a essência. Quando você entende a
essência , a base de tudo isso, pode usar os geradores com muito mais eficiência do que começar a torcer na esperança de obter a máscara / material perfeito.
Se você já examinou os arquivos, provavelmente prestou atenção na máscara de pneu. Ele foi preparado separadamente, já que não era possível gerá-lo em movimento no Substance Painter, então usei o padrão de pneu encontrado na Internet e o preparei no Photoshop para trabalhar no Substance Painter:

Agora crie um novo projeto e adicione todos os nossos arquivos. Para fazer isso, selecionamos as configurações padrão, mas agora precisamos especificar nossos mapas de textura ao criar o projeto:

No projeto, crie 3 pastas para cada material e renomeie-as para não confundir:

No nosso caso, a hierarquia de pastas é muito importante (e não apenas na nossa, mas sempre importante). A hierarquia determina o nível do material, em outras palavras, o que está no quê. O asfalto em nosso exemplo é o fundo. Traços de pneus permanecem nele. Mas a sujeira pode estar nos trilhos dos pneus e na calçada. Portanto, a sujeira estará acima de tudo.
Agora, vamos esconder imediatamente tudo o que deve ser escondido e deixar apenas o asfalto. Ou seja, crie máscaras pretas nas pastas Borracha e Sujeira:

Agora crie em cada pasta a 1ª camada. Ou melhor, crie camadas e distribua-as em pastas. Não se esqueça de nomear, para não se confundir mais tarde (apesar do fato de que não é visualmente claro que as camadas estejam em pastas - acredite, elas estão em pastas):

Todas as novas camadas têm parâmetros médios básicos. Portanto, a cor base é cinza, o normal não exibe saliências e metálico e aspereza não criam a impressão de nenhum material.
E agora precisamos corrigir isso indicando em cada parâmetro a textura correspondente (usando o asfalto como exemplo):

Sua tarefa agora é distribuir todas as texturas dos materiais nos parâmetros desejados da camada. Depois de fazer tudo isso, atribua uma máscara para a borracha e crie o efeito de traços. Como já temos uma máscara preta na pasta, precisamos conectar o arquivo com os traços das rodas a essa máscara. Para fazer isso, clique em RMB na máscara e selecione Adicionar preenchimento:

E nos parâmetros GrayScale, especifique a máscara:

Como resultado, vestígios de borracha aparecerão no asfalto, mas será muito difícil identificá-lo, pois ainda é PBR e cinematografia (!!!). Para vê-los, você precisa girar o plano em um determinado ângulo:

Agora essas duas camadas (asfalto e borracha) estão no mesmo nível. Mas sabemos que a borracha está
no asfalto, o que significa que a camada de borracha deve ser fisicamente mais alta. E agora vamos usar o próprio parâmetro Height.
Encontre-o nas opções da camada Borracha e desaparafuse-o ao máximo para sentir como funciona. Gire a câmera para ver como a luz começou a processar os pixels que você definiu. Sinta seu poder! =)
Bem, agora alinhe o parâmetro como 0.1 para que não seja tão explícito e mais crível:

Nós poderíamos desaparafusá-lo em -0.1, para que tenhamos poços, como depois dos carros na lama, mas isso é asfalto e não falha tão facilmente.
Agora prepare a sujeira. Com base na realidade, pode-se supor que a sujeira deve entupir as fendas do asfalto em primeiro lugar. Mas não temos uma máscara para mostrar uma camada de sujeira nas rachaduras. No entanto, existe uma solução - podemos pegar o asfalto BaseColor e fazer uma máscara de sujeira em sua base.
Como isso funciona? Se você observar o asfalto BaseColor, poderá notar que quanto mais escuro o pixel, mais ele se parece com uma rachadura. Ou seja, nesta imagem, tudo que é escuro é rachadura e tudo que é luz é a superfície. E se quisermos usar a imagem como uma máscara, seria suficiente invertermos os pixels das cores (escuro para iluminar e vice-versa) e obter uma máscara para a sujeira.
Para fazer isso, desative a exibição da camada de asfalto (clicando no olho da pasta com asfalto) para facilitar a percepção do que estamos fazendo.
Em seguida, indicamos que o arquivo deve estar na máscara de lama e anexamos o arquivo Asphalt_BaseColor a ele:

Como escrevi acima, o asfalto era claro e as rachaduras, escuras. Consequentemente, a sujeira começou a aparecer em grandes superfícies e a cor cinza básica (parâmetros básicos / fundo) predomina nas rachaduras.
Agora, nossa tarefa é fazer com que essa textura seja percebida de maneira diferente - inverter as cores e fortalecê-las para que a máscara mostre sujeira nas rachaduras. A maneira mais fácil de fazer isso é com o efeito "Níveis" adicionais. Adicione um filtro adicional "Níveis" à máscara da mesma maneira que adicionamos
Preenchimento (RMB - Adicionar níveis). E torcemos os parâmetros aproximadamente, como na figura abaixo:

E clique no botão "Inverter" abaixo para inverter os níveis de intensidade do canal:

Agora a sujeira está localizada exatamente onde precisamos dela - nas fendas do asfalto:

Ligue o asfalto e veja nosso trabalho:

Mas é simples demais. Portanto, agora vamos adicionar marcas laranja ao nosso asfalto. Para fazer isso, precisaremos de:
- Crie uma nova pasta e nomeie-a Road_Line.
- Adicione uma máscara preta à pasta.
- Adicione uma nova camada à pasta e nomeie-a Layer_RoadLine.
- Para a camada nos parâmetros BaseColor, especifique a cor laranja diretamente:

Você também pode ajustar Metálico e Rugosidade ao seu gosto para criar uma pintura realista. Não fiz isso para reduzir o tempo do tutor.
Agora, lembrando as regras da hierarquia de camadas, organizaremos uma pasta com uma linha de estrada entre asfalto e borracha:

Chegou a hora do desenho à mão. Selecione a máscara da pasta RoadLine e desenhe uma faixa de marcação no avião. Eu tenho algo parecido com isto:

Agora vale a pena adicionar outra máscara à própria camada de tinta para criar uma sensação de tinta caindo. Para fazer isso, não criaremos uma pasta, mas criaremos uma máscara diretamente na camada e adicionaremos qualquer máscara padrão do Substance Painter. Para fazer isso, adicione uma máscara e adicione um preenchimento (RMB por máscara e Adicionar preenchimento). No preenchimento, especifique Dirt 4 Texture, que está sob a tag Procedural:

E veja o resultado:

, . 0.05 — .
, , . , .
?.
.
. , ? Metallic Roughness. , 0.15.
Color, , :

? . , , . , , =)

: , , . , — , , . ? , =)
, . , , - .
, PBR.
PBR . , .
. — , , .
, . , - -, , .
, , ( ), , , — UE4.
Quixel Substance Painter, ( ), Quixel. , , , Substance Painter.
Substance Painter, , Substance Designer. Designer . , « », , . , « » — , , , Designer.
Painter, . , Painter. Designer , , , , Painter.
PBRPBR , . , , « » , , . = 1, , 1, , , - . , PBR, , .
, . , ?