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


Várias aplicações e fluxos de trabalho estão disponíveis para criar texturas PBR. Você pode usar essas 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 malha para usar mapas de textura PBR, e descreve casos de uso comuns e as melhores práticas para os mapas de textura suportados pelo PBR no Roblox. Ao criar suas próprias superfícies, veja referências de materiais para valores de materiais comuns, comparações de imagens e exemplos de roupas.
Ativar aparência da superfície
Você pode adicionar texturas PBR a qualquer MeshPart adicionando um objeto SurfaceAppearance que substitui a textura originalmente atribuída. De maneira geral, você não pode modificar as propriedades de SurfaceAppearance por scripts durante um jogo porque o mecanismo exige algum pré-processamento para exibir esses gráficos. Semelhante a adicionar uma textura básica, cada imagem de mapa de textura deve apontar para o ID de ativo de imagem carregado apropriado.
Para ativar a aparência da superfície para um MeshPart:
Na janela Explorer, passe o mouse sobre o MeshPart e clique no botão ⊕.
Insira um SurfaceAppearance a partir do menu contextual.

Quando você 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 metalicidade. Cada um desses mapas corresponde a um aspecto importante da aparência da superfície do objeto. Os mapas de textura apenas alteram a aparência visual e não afetam a geometria do objeto MeshPart.
Veja os seguintes exemplos para uma visão geral dos mapas de textura 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 cor, ou albedo, mapa 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 Alpha
Para objetos que requerem seções parciais ou completas de transparência, como grama, folhas, renda ou decalques como sujeira ou desgaste, você pode usar vários modos alpha para aplicar transparência ao seu mapa de cor. Se o formato da imagem do seu mapa de cor suporta 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 se aplica 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 subjacente. Mapas de cor usando o modo de sobreposição revelam a cor base da malha em qualquer lugar 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 da malha original 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 é considerado como 1 (totalmente opaco).
O exemplo a seguir 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 Color da malha para tons de pele personalizados ou outras situações com cores exclusivas.
O exemplo a seguir demonstra como o modo Overlay funciona usando uma esfera branca como referência:


O exemplo a seguir 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 renda ou rede, removendo partes visíveis da malha como uma alternativa ao modelar a geometria da malha. Como isso não afeta a geometria do objeto da malha, isso pode permitir que você crie objetos detalhados sem o impacto no desempenho de um modelo de malha intrincado.
O exemplo a seguir demonstra como a transparência parcial e total neste modo remove visualmente seções da malha:



Existem dois resultados do modo Transparency, dependendo se o MeshPart.Transparency é definido como 0 ou pelo menos 0.02, embora a precisão numérica possa resultar em pequenos valores como 0.01 ativando a transparência opaca.
- Quando o alpha é usado para cortar a forma de objetos em sua maioria opacos com bordas duras, como folhagens, tecido rendado e malha, defina o MeshPart.Transparency para 0. Quando partes da superfície são totalmente opacas, o mecanismo Roblox pode renderizá-las com a oclusão baseada em profundidade adequada. Superfícies opacas também funcionam geralmente 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 de transparência suaves, defina o MeshPart.Transparency para pelo menos 0.02. Isso melhora a qualidade da mistura para objetos como janelas sujas e penas de bordas suaves, mas não funcionará com todos os efeitos.
Máscara de Tinta
Você pode usar o modo Enum.AlphaMode.TintMask para aplicar coloração SurfaceAppearance.Color a áreas seletivas de uma superfície. A coloração é mais forte onde o canal alpha é totalmente visível e não é aplicada onde o canal alpha é transparente.

Coloração da tinta
Você pode aplicar uma coloração 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 tonalidades. Use a coloração para criar variações de baixo custo entre suas texturas PBR MeshPart ou para modificar programaticamente as cores de suas superfícies PBR em tempo real.



A coloração SurfaceAppearance.Color se aplica como um multiplicador, então a aparência final é uma função de Color3 (cor texel) vezes SurfaceAppearance.Color. Isso significa que autorar seu original SurfaceAppearance.ColorMap em cores em escala de cinza próximo ao branco cria o efeito de coloração mais forte quando essa propriedade é aplicada.
A coloração se aplica apenas ao SurfaceAppearance.ColorMap e não ao MeshPart.Color. Você pode continuar a usar canais alpha ao aplicar transparência.
Quando SurfaceAppearance.AlphaMode é definido como Overlay e um canal alpha está presente, a MeshPart.Color subjacente é revelada e a coloração SurfaceAppearance.Color se aplica apenas ao mapa de cor SurfaceAppearance visível.
Quando SurfaceAppearance.AlphaMode é definido como TintMask e um canal alpha está presente, o canal alpha controla a quantidade de coloração SurfaceAppearance.Color. A coloração é mais forte 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 de textura à sua superfície e se comporta de maneira semelhante a um mapa de altura. Como resultado, o efeito pode desvanecer 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 de 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 da cor [127, 127, 255] traduz-se para um mapa normal completamente plano. O Roblox suporta apenas mapas normais OpenGL format - Tangent Space.
Mapas normais afetam proeminentemente a superfície visual de uma malha e podem acentuar emendas estranhas em sua textura. Sempre que possível, mantenha as emendas de textura ocultas para evitar problemas visuais com sua malha.
Rugosidade
Rugosidade, ou microsuperfície, mapas determinam como a luz é espalhada pela superfície do seu modelo. Quando a rugosidade está em 0.0, a superfície não dispersa luz nenhuma, resultando em um reflexo e uma brilhante aparência aguda no seu material. Em 1.0, a luz e os reflexos se dispersam uniformemente sobre o modelo resultando em uma superfície fosca menos reflexiva.
A rugosidade pode impactar o quão reflexivo um objeto é em diferentes ângulos, referindo-se ao efeito Fresnel. Veja fresnel para mais detalhes e melhores práticas para manter um comportamento refletivo consistente.
A figura a seguir mostra comparações de vários valores de mapas de rugosidade:



Fresnel
Fresnel refere-se à quantidade de reflexão de uma superfície em referência ao ângulo de visão atual. O processamento de Fresnel do Studio visa precisão física do 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 maneira consistente entre seu software de conteúdo de textura, como o Substance Painter, e o Studio. Veja exemplos de roupas para diferenças na renderização entre aplicações.
Metalicidade
Metalicidade determina a refletividade de uma superfície. Os valores de metalicidade variam entre 0.0 e 1.0. O Roblox define o valor padrão como 0.0 se um mapa de metalicidade não estiver presente.
Veja a figura a seguir para comparações de vários valores de mapas de metalicidade:



Diferentes renderizadores PBR usam vários fluxos de trabalho para processar a refletividade. O Studio usa apenas o fluxo de trabalho de metalicidade que determina se um material é um não-metal ou um metal, às vezes referido como um isolante ou conductor.
Na maioria dos casos, você deve definir este valor como 0.0 (não-metal) ou 1.0 (metal). Você pode usar valores de metalicidade parcial ao criar superfícies mais incomuns com propriedades reflexivas moderadas, como cetim ou seda. Essa prática pode simular sutilmente os reflexos no material para realçar a cor do mapa de cor/albedo em relação às cores refletidas no ambiente.

