Ao criar ativos 3D, você pode descobrir que precisa da capacidade de definir diferentes tipos de superfície no mesmo material. Uma maneira simples e barata de conseguir isso é usar uma máscara de textura, que define quais partes de uma superfície devem ser afetadas por qual seção do material.
Este tutorial aborda como você pode usar a máscara de textura dentro dos seus materiais do Unreal Engine.
Máscaras de textura
Máscara de textura é uma textura em escala de cinza ou um único canal (R, G, B ou A) de uma textura, usada para limitar a área de um efeito dentro de um material.
Máscaras geralmente estão contidas em um único canal de outra textura, como o canal alfa do mapa difuso ou mapa de normais. Em outros casos, um único arquivo de imagem geralmente contém as máscaras Rugosidade, Metálico e Oclusão de ambiente, cada uma ocupando um único canal.
Isso é chamado de empacotamento de canal e é uma boa maneira de melhorar o desempenho do material ao reduzir o número de amostras de textura exigidas por ele. Tecnicamente, qualquer canal de qualquer textura pode ser pensado e usado como uma máscara de textura.
Aqui está um exemplo de como é a máscara de textura para a malha estática SM_Chair do Conteúdo inicial.
Na verdade, este arquivo de imagem contém uma máscara em preto e branco diferente em cada um dos quatro canais de cores (RGBA).
Como criar uma máscara de textura
Você pode criar uma máscara de textura em qualquer programa de manipulação de imagens 2D. Também pode criar máscaras diretamente da geometria em seu programa de criação de conteúdo principal ou com uma ferramenta de texturização dedicada, como o Marmoset Toolbag, o Xnormal ou o Substance Painter/Designer.
Ao criar máscaras manualmente, você geralmente começa com uma imagem que mostra o layout de UV da sua malha. Neste exemplo, a intenção é mascarar as almofadas do assento. Os UVs correspondentes estão realçados na imagem abaixo. Para mascarar uma parte específica do modelo, você precisa pintar essa região da imagem de branco puro, deixando todas as outras áreas pretas.
Conforme mostrado acima, isso permite aplicar propriedades de superfície específicas à região mascarada. Neste caso, a máscara é usada para dar às almofadas uma cor alaranjada.
Ao criar uma máscara de textura, você sempre deve usar preto ou branco puro e nunca informações de cores. O uso de qualquer outro tipo de cor pode resultar em artefatos estranhos ao usar a máscara dentro do Unreal.
Como exportar máscara de textura
Quando terminar de pintar a textura da máscara, você pode exportá-la como uma única imagem ou agrupar várias máscaras nos canais R, G, B e A de uma única imagem e exportá-la. Isso é comumente referido como compactação de canais RGB e é o método preferido ao criar máscaras, pois oferece desempenho considerável e economia de memória com muito pouco trabalho extra.
Se você compactar algo no canal alfa de uma textura, lembre-se de habilitar a exportação de alfa em qualquer software de manipulação de imagem 2D que usar. Caso contrário, você corre o risco de o canal alfa não ser exportado com a textura.
Usando máscaras de textura
Você pode usar texturas de máscara de várias maneiras diferentes dentro do Editor de material do Unreal. Os usos comuns incluem definir uma fonte de luz emissiva, definir quais partes de uma malha são metálicas e não metálicas ou mapear diferentes cores para diferentes partes de um modelo, conforme mostrado no exemplo da cadeira.
A seção a seguir demonstra algumas das formas mais comuns de usar a máscara de textura no Unreal Engine.
Máscara emissiva
Um dos usos mais comuns para uma textura de máscara é controlar as seções emissivas de um material. Isso geralmente é feito criando primeiro uma textura de máscara emissiva, que usa branco puro para definir as seções do material que devem emitir luz. Dois parâmetros geralmente acompanham uma máscara emissiva:
Para alterar a cor da emissão de luz, você pode multiplicar a máscara emissiva por uma cor definida por um parâmetro de vetor.
Para alterar a intensidade da luz emissiva, você pode multiplicá-la por um parâmetro escalar. Aumente o valor no parâmetro Escalar para aumentar o brilho da emissão.
Os quatro nós destacados no gráfico abaixo mostram uma máscara emissiva multiplicada por parâmetros que controlam a cor e o brilho da luz. A esfera só emite luz nas regiões que correspondem às partes brancas da máscara emissiva. O restante da esfera exibe a textura da cor base.
Mascaramento de material
Um segundo uso comum para máscaras de textura é armazenar diferentes tipos de informações de textura dentro dos canais individuais R, G, B e Alfa. O material na malha estática SM_Chair que acompanham o Conteúdo inicial é um exemplo perfeito dessa técnica.
Você pode encontrar SM_Chair e todo o conteúdo que o acompanha selecionando primeiro a pasta Conteúdo Inicial no Navegador de Conteúdo e digitando "cadeira" na caixa de pesquisa. Isso exibirá todo o conteúdo relacionado à cadeira. Se você não vir a cadeira, provavelmente significa que você não incluiu o Conteúdo Inicial no seu projeto. Para corrigir isso, você precisará criar um novo projeto ou tentar a ferramenta de migração de recursos para mover o conteúdo da cadeira de outro projeto neste.
Abrindo o material de cadeira, M_Chair, podemos ver um exemplo perfeito de mapeamento de texturas em ação.
Nesse material, a textura de máscara, T_Chair_M, é usada para mapear propriedades de superfície específicas para diferentes regiões na malha. A máscara de textura ajuda a definir quais seções são metálicas ou não metálicas e também é usada para atribuir diferentes valores de rugosidade e cor a diferentes partes da cadeira.
Na imagem a seguir, você pode ver um detalhamento de como cada canal na textura da máscara é usado. No lado esquerdo está a imagem RGB composta, ou a aparência da imagem se você a visualizar como uma textura. A coluna do meio mostra as máscaras de preto e branco contidas em cada canal de cor (R, G, B, A de cima para baixo). As imagens na extrema direita mostram qual parte da cadeira é o alvo da máscara; as partes brancas da cadeira correspondem à parte branca da máscara.
Aqui está um detalhamento dos tipos de informações que são armazenados dentro de cada canal da textura da máscara de cadeira.
Canal vermelho: informações sobre a oclusão de ambiente. No Material, isso é usado para ajudar a adicionar sombras de contato sutis nos pontos em que duas superfícies estão próximas.
Canal verde: máscara metálica. No material, isso é usado para definir quais partes devem ser de metal. Isso também é usado para ajudar a definir a cor que o metal deve ter.
Canal azul: máscara não metálica. No material, isso é usado para definir quais peças não são metálicas. Essa máscara também ajuda a definir a cor das partes não metálicas.
Canal alfa: máscara de objeto inteiro. Não é usada atualmente pelo material.
Juntando tudo, a cadeira tem a seguinte aparência em um nível do Unreal:
Dicas e truques de mascaramento
O mascaramento de texturas é uma ferramenta muito poderosa, especialmente quando combinada com outras ferramentas no Unreal Engine. A seção a seguir apresenta algumas dicas e truques para aproveitar ao máximo o mascaramento de texturas no seu trabalho.
Mascaramento de textura e material separados
Usar o mascaramento de texturas e instâncias de materiais juntos é uma ótima maneira de adicionar uma quantidade quase infinita de variedade a qualquer recurso. Por exemplo, você pode usar uma máscara de textura para definir quais áreas devem ter certas propriedades, como cor, e depois usar diferentes instâncias de material para personalizar essas propriedades no Editor de instância. Saiba mais sobre instanciação de material aqui.
Quando máscaras de material são usadas junto com a instanciação de materiais, você pode permitir que os artistas alterem a cor e outros valores de maneira rápida e fácil dentro do material. Essa abordagem produz ativos altamente personalizáveis, como visto com SM_Chair na imagem acima.
Mascaramento e artefatos de canal
Devido a uma peculiaridade do DirectX, o canal verde de uma textura geralmente oferece a melhor compactação. Se alguma de suas máscaras sofrer muito com artefatos de compactação, primeiro tente colocar as informações no canal verde da imagem para ver se isso ajuda. Se isso não resolver o problema, tente usar o canal Alfa para armazenar a máscara.
Tenha cuidado ao tentar usar o canal alfa de uma textura para armazenar informações de máscara. Adicionar um canal alfa a uma textura aumentará muito o consumo de memória dessa textura e, se você fizer isso o suficiente, poderá perder toda a economia obtida ao compactar diferentes máscaras nos canais RGB da textura.
Texturas de máscara e sRGB
Ao compactar várias texturas de máscara em uma única textura, você deve desmarcar sRGB no Editor de texturas, pois as máscaras não devem ter correção de gama.
Se você desabilitar o sRGB para uma textura cuja amostra foi anteriormente obtida em um material, o tipo da amostra não será atualizado automaticamente nos nós existentes da Amostra de Textura 2D. Você precisa certificar-se de ajustar o tipo de nó em quaisquer nós de Amostra de Textura 2D existentes. Se você não alterar o tipo de amostrador, a compilação do seu material falhará, e a seguinte mensagem será exibida no registro de estatísticas.
Para corrigir esse erro, tudo o que você precisa fazer é alterar o Tipo de amostrador do padrão de Cor para Cor linear, e o aviso desaparecerá. Para garantir, você deve recompilar o material para certificar-se de que as alterações tenham sido bem-sucedidas. Quando terminar de fazer isso, o aviso desaparecerá.
Conclusão
O mascaramento de texturas é um conceito muito poderoso que, uma vez dominado, permite criar uma quantidade quase infinita de variações com muito pouco conteúdo de origem. Lembre-se de que você só tem quatro canais disponíveis em qualquer arquivo de imagem para usar em máscaras de textura, então use cada um com sabedoria. Não se esqueça de desabilitar o sRGB nas texturas da máscara, pois isso pode ajudar muito a aumentar sua nitidez.