Texturização ou o que você precisa saber para se tornar um Artista de Superfície. Parte 3. PBR e materiais

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 aqui
Parte 2. Máscaras e texturas aqui
Parte 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:

imagem

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 usaremos
Usaremos 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:
imagem

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:
imagem

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

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:
imagem

E transfira-o para o parâmetro Normal:
imagem

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):

imagem

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:

imagem

E o resultado:

imagem

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):

imagem

Selecione metálico e obtenha o seguinte resultado:

imagem

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:

imagem

Visualmente, a cadeira consiste em 3 materiais:

  1. Pele.
  2. Rebites de metal.
  3. 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:

imagem

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:

  1. Asfalto.
  2. Sujeira.
  3. 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:

imagem

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:

imagem

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

imagem

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:

imagem

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):

imagem

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):

imagem

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:

imagem

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

imagem

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:

imagem

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:

imagem

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:

imagem

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:

imagem

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

imagem

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

imagem

Ligue o asfalto e veja nosso trabalho:

imagem

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:

imagem

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:

imagem

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:

imagem

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:

imagem

E veja o resultado:

imagem

, . 0.05 — .

, , . , .

?

. .

. , ? Metallic Roughness. , 0.15.

Color, , :

imagem

? . , , . , , =)

imagem

: , , . , — , , . ? , =)



, . , , - .

, PBR.

PBR . , .

. — , , .

, . , - -, , .

, , ( ), , , — UE4.

Quixel Substance Painter

, ( ), Quixel. , , , Substance Painter.

Substance Painter, , Substance Designer. Designer . , « », , . , « » — , , , Designer.

Painter, . , Painter. Designer , , , , Painter.

PBR

PBR , . , , « » , , . = 1, , 1, , , - . , PBR, , .

, . , ?

Source: https://habr.com/ru/post/pt458696/


All Articles