Renderização Baseada em Físicas (PBR) texturas permitem que você represente sombreamento e iluminação realistas utilizando múltiplos tipos de imagens de textura, ou mapas, em um único objeto. Combinar múltiplos mapas de textura pode simular de forma mais precisa a cor, rugosidade e refletividade em qualquer ambiente de iluminação e pode melhorar os elementos visuais dos seus ativos e ambiente.


Vários aplicativos e fluxos de trabalho estão disponíveis para criar texturas PBR. Você pode usar esses durante as fases de modelagem e texturização da criação de objetos 3D personalizados, desde que o Roblox Studio suporte os mapas de textura específicos que você está usando.
Este guia fornece instruções sobre como configurar seus objetos de malha para usar mapas de textura PBR e descreve casos de uso comuns e melhores práticas para os mapas de textura PBR suportados pelo Roblox. Ao criar suas próprias superfícies, veja referências de materiais para valores comuns de materiais, comparações de imagens e exemplos de roupas.
Habilitar aparência da superfície
Você pode adicionar texturas PBR a qualquer MeshPart adicionando um objeto SurfaceAppearance que sobrescreve a textura original atribuída. Em geral, você não pode modificar as propriedades de SurfaceAppearance por scripts durante uma experiência porque o motor requer algum pré-processamento para exibir esses gráficos. Similar a adicionar uma textura básica, cada mapa de imagem de textura deve apontar para o ID do ativo de imagem carregado apropriado.
Para habilitar a aparência da superfície para um MeshPart:
Insira um SurfaceAppearance no menu contextual.

Quando estiver pronto para adicionar mapas de textura ao objeto SurfaceAppearance, você pode clicar em cada propriedade de mapa na janela Properties e inserir um ID de ativo.
Mapas de textura
O Studio atualmente suporta 4 tipos de mapas de textura PBR: cor, normal, rugosidade e metalidade. Cada um desses mapas corresponde a um aspecto importante da aparência da superfície do objeto. Os mapas de textura apenas mudam a aparência visual e não afetam a geometria do objeto MeshPart.
Veja os exemplos a seguir para uma visão geral dos mapas de texto suportados pelo Roblox e recursos adicionais:
A propriedade ColorMap define os dados de cor da superfície, incluindo qualquer transparência presente no mapa. Veja cor (albedo) para informações adicionais.



Cor (albedo)
O mapa de cor, ou albedo, determina a cor da sua textura e consiste principalmente em informações de cor com pouca ou nenhuma informação de iluminação ou textura. Para personalização adicional, você também pode adicionar transparência na sua textura albedo adicionando opacidade ao seu mapa de imagem.
Modos de alpha
Para objetos que requerem seções parciais ou completas de transparência, como grama, folhas, rendas ou decalques como sujeira ou grunge, você pode usar vários modos de alpha para aplicar transparência ao seu mapa de cor. Se o formato da imagem do seu mapa de cor suportar canais alpha, você pode aplicar um mapa alpha em escala de cinza onde 0.0 é transparente e 1.0 é opaco. Da mesma forma, ao usar um formato de imagem como um .png, qualquer opacidade no mapa de cor é aplicada como transparência no ativo.
Você pode aplicar transparência em dois comportamentos diferentes definindo os seguintes valores de AlphaMode:
- Sobreposição — Sobrepõe o ColorMap sobre a MeshPart.Color da malha subjacente. Mapas de cor que usam o modo de sobreposição revelam a cor base da malha onde quer que a transparência esteja presente. Esta é a configuração padrão.
- Transparência — Remove a malha visível com base na transparência no ColorMap. Isso torna a malha transparente e não revela a cor original da malha sempre que a transparência está presente.
Opaco
Você pode usar o modo Enum.AlphaMode.Opaque para ignorar completamente o canal alpha do ColorMap. Nesse caso, o valor alpha é assumido como 1 (totalmente opaco).
O seguinte exemplo demonstra como o modo Opaque funciona usando um objeto branco como referência:


Sobreposição
Você pode usar Enum.AlphaMode.Overlay para revelar seções da cor original da malha. Como as áreas transparentes do mapa de cor expõem a cor subjacente, você pode projetar um mapa de textura exclusivo que revela parcial ou totalmente a propriedade de cor da Color da malha para tons de pele personalizados ou outras situações com cores únicas.
O seguinte exemplo demonstra como o modo Overlay funciona usando uma esfera branca como referência:


O seguinte exemplo usa o modo Overlay para personagens personalizados, revelando o tom de pele original do personagem:


Veja tom de pele personalizado para detalhes adicionais sobre como otimizar uma sobreposição para pele e aplicações semelhantes.
Transparência
Você pode usar o modo Enum.AlphaMode.Transparency para criar objetos complexos ou extremamente finos, como rendas ou redes, removendo partes visíveis da malha como uma alternativa à escultura da geometria da malha. Como isso não afeta a geometria do objeto de malha, isso permite que você crie objetos detalhados sem o impacto de desempenho de um modelo de malha intrincado.
O seguinte exemplo demonstra como uma transparência parcial e total neste modo remove visualmente seções da malha:



Existem dois resultados do modo Transparency, dependendo se o MeshPart.Transparency está definido como 0 ou pelo menos 0.02, embora a precisão numérica possa resultar em pequenos valores como 0.01 acionando a transparência opaca.
- Quando o alpha é usado para recortar a forma de objetos em sua maioria opacos com bordas duras, como folhagem, tecido de renda e redes, defina o MeshPart.Transparency como 0. Quando partes da superfície são totalmente opacas, o motor Roblox pode renderizá-las com a oclusão baseada em profundidade apropriada. Superfícies opacas também geralmente funcionam melhor com efeitos baseados em profundidade, como DepthOfFieldEffect, refração de vidro e água e reflexão da água.
- Quando o alpha é usado para adicionar detalhes a objetos semi-transparentes ou objetos com gradientes suaves de transparência, defina o MeshPart.Transparency para pelo menos 0.02. Isso melhora a qualidade de mistura para objetos, como janelas sujas e penas de bordas suaves, mas não funcionará com todos os efeitos.
TintMask
Você pode usar o modo Enum.AlphaMode.TintMask para aplicar coloração SurfaceAppearance.Color em áreas seletivas de uma superfície. A coloração é mais intensa onde o canal alpha é totalmente visível e não é aplicada onde o canal alpha é transparente.

Coloração de tinta
Você pode aplicar uma tinta ao seu mapa de cor modificando a propriedade SurfaceAppearance.Color. A coloração não afeta o desempenho e você pode economizar memória reutilizando um único mapa de cor com diferentes tintas. Use a coloração de tinta para criar variação adicional de baixo custo entre suas texturas PBR de MeshPart ou para modificar programaticamente as cores de superfície PBR em tempo real.



A coloração SurfaceAppearance.Color é aplicada como um multiplicador, então a aparência final é uma função de Color3 (cor do texel) multiplicada por SurfaceAppearance.Color. Isso significa que criar seu SurfaceAppearance.ColorMap original em cores de escala de cinza quase brancas cria o efeito de coloração mais forte quando essa propriedade é aplicada.
A coloração só se aplica ao SurfaceAppearance.ColorMap e não à MeshPart.Color. Você pode continuar a usar canais alpha ao aplicar transparência.
Quando SurfaceAppearance.AlphaMode está configurado para Overlay e um canal alpha está presente, a MeshPart.Color subjacente é revelada e a coloração SurfaceAppearance.Color só se aplica ao mapa de cor da SurfaceAppearance visível.
Quando SurfaceAppearance.AlphaMode está configurado para TintMask e um canal alpha está presente, o canal alpha controla a quantidade de coloração SurfaceAppearance.Color. A coloração é mais intensa onde o canal alpha é totalmente visível e não é aplicada onde o canal alpha é transparente.

Normal
O mapa normal, ou superfície, adiciona profundidade à textura da sua superfície e se comporta de maneira semelhante a um mapa de altura. Como resultado, o efeito pode desaparecer ou intensificar dependendo do ângulo de visão e do ambiente de iluminação. Quando um mapa normal não está presente, o valor é definido como 0.0.
Na figura a seguir, você pode alternar entre a referência da malha e a referência do mapa para comparações dos valores do mapa normal:



Os canais R, G e B da imagem correspondem, respectivamente, aos componentes X, Y e Z do vetor de superfície local. Uma imagem uniforme de cor [127, 127, 255] traduz-se em um mapa normal completamente plano. O Roblox suporta apenas mapas normais OpenGL formato - Espaço Tangente.
Os mapas normais afetam proeminentemente a superfície visual de uma malha e podem acentuar costuras inconvenientes em sua textura. Sempre que possível, mantenha suas costuras de textura ocultas para evitar problemas visuais com sua malha.
Rugosidade
Rugosidade, ou microsuperfície, mapas determinam como a luz se espalha pela superfície do seu modelo. Quando a rugosidade está em 0.0, a superfície não dispersa luz, resultando em um reflexo e brilho muito mais nítidos em seu material. Em 1.0, a luz e os reflexos se dispersam uniformemente pelo modelo, resultando em uma superfície menos reflexiva e com aparência fosca.
A rugosidade pode impactar quão reflexivo um objeto é em diferentes ângulos, referida como efeito Fresnel. Veja fresnel para mais detalhes e melhores práticas para manter um comportamento reflexivo consistente.
A figura a seguir mostra comparações de vários valores de mapa de rugosidade:



Fresnel
Fresnel refere-se à quantidade de reflexão de uma superfície em relação ao ângulo de visão atual. O processamento Fresnel do Studio busca precisão física no mundo real, embora você possa obter uma contribuição especular inesperada em certos ângulos, mesmo com superfícies rugosas. Em alguns casos, você pode compensar tornando seu mapa de rugosidade em torno de 0,1 mais rugoso para alcançar uma resposta de iluminação consistente com seus materiais.
Embora o Roblox renderize esse efeito de iluminação com precisão, o brilho e a refletividade de uma superfície podem não responder de forma consistente entre seu software de criação de conteúdo de textura, como Substance Painter, e o Studio. Veja exemplos de roupas para diferenças na renderização entre aplicações.
Metalidade
Metalidade determina a refletividade de uma superfície. Os valores de metalidade variam entre 0.0 e 1.0. O Roblox configura o valor padrão para 0.0 se um mapa de metalidade não estiver presente.
Veja a figura a seguir para comparações de vários valores de mapa de metalidade:



Diferentes renderizadores PBR usam vários fluxos de trabalho para processar a refletividade. O Studio usa apenas o fluxo de trabalho de metalidade, que determina se um material é um não-metal ou um metal, às vezes referido como um isolante ou condutor.
Na maioria dos casos, você deve definir esse valor como 0.0 (não-metal) ou 1.0 (metal). Você pode usar valores de metalidade parciais ao criar superfícies menos comuns com propriedades reflexivas moderadas, como cetim ou seda. Esta prática pode simular sutilmente os reflexos no material para destacar a cor do mapa de cor/albedo sobre as cores refletidas no ambiente.

