Materiais

Saiba quais propriedades de material e texturas são suportadas em modelos 3D importados para o Decentraland.

Os materiais são incorporados em um .gltf ou .glb arquivo.

Este documento refere-se a materiais que são importados em um modelo 3D. Para materiais definidos via código para aplicar em formas primitivas, veja materialsarrow-up-right .

circle-exclamation

Suporte a Shader

Nem todos os shaders podem ser usados em modelos que são importados para Decentraland. Certifique-se de usar um dos seguintes:

  • Materiais padrão: qualquer shader é suportado, por exemplo diffuse, specular, transparency, etc.

  • Materiais PBR (Physically Based Rendering): Este shader é mais flexível, pois inclui propriedades como diffuse, roughness, metalness e emission que permitem configurar como um material interage com a luz.

A imagem abaixo mostra dois modelos idênticos, criados com as mesmas cores e texturas. O modelo à esquerda usa todos os PBR materiais, alguns deles incluem metalness, transparency, e emissiveness. O modelo à direita usa todos os standard materiais, alguns incluindo transparency e emissiveness.



Propriedades PBR que atualmente funcionam com o Decentraland Engine

  • Base Color

  • Metallic

  • Roughness

  • Specular

  • Emissive

  • Emission Strength

  • Alpha

  • Normal



Para visualizar como essas propriedades se comportam no mundo você pode ir para este testing worldarrow-up-right para encontrar diferentes objetos e materiais e como eles interagem com luzes e ambiente do mundo.



Base/Diffuse Color

Define a cor base da superfície do objeto. Por si só não sofre qualquer influência da iluminação, por isso é combinada com outros nós como roughness, metallic, specular, etc.

Metallic

Um shader metallic refere-se a um tipo de técnica de renderização usada para simular a aparência de superfícies metálicas. Um shader metallic leva em conta as propriedades físicas dos metais e como eles interagem com a luz para produzir as qualidades características brilhantes e reflexivas do metal.



Roughness

Materiais de roughness estão relacionados à simulação realista de como a luz interage com a superfície do material. Normalmente mapas de roughness são usados para dar aos modelos uma faixa de "suavidade" ou "rugosidade" em suas superfícies. Normalmente usa-se um mapa de textura em tons de cinza para fornecer esse tipo de informação.



Esta propriedade faz uma mistura entre um modelo de material não metálico e metálico. Um valor de 1.0 dá uma reflexão totalmente specular tingida com a cor base, sem reflexão difusa ou transmissão. Em 0.0 o material consiste em uma camada base difusa ou transmissiva, com uma camada de reflexão specular por cima.

Specular

Em um shader PBR (Physically-Based Rendering), as propriedades specular referem-se a como a luz interage com uma superfície em termos de sua refletividade e brilho. A reflexão specular é a reflexão em espelho da luz sobre uma superfície. No PBR, essa propriedade é usada para controlar quanto a superfície reflete a luz de forma espelhada. Materiais como metais tipicamente têm alta reflexão specular, criando destaques nítidos e brilhantes, enquanto materiais não metálicos como plásticos têm reflexão specular mais baixa, resultando em destaques mais amplos e suaves.



Alpha

Você pode definir um material como transparent. Materiais transparentes podem ser vistos através em graus variados, dependendo do seu alpha. Para fazer isso, ative a propriedade de transparência do material e então defina seu alpha para a quantidade desejada. Um alpha de 1 tornará o material completamente opaco, um alpha de 0 o tornará invisível.

A imagem abaixo mostra dois modelos idênticos criados com materiais standard. O da esquerda usa apenas materiais opacos, o da direita usa materiais tanto transparentes quanto opacos em algumas de suas partes.

circle-exclamation


Existem dois modos principais de transparência diferentes: Alpha Clip e Alpha Blend. As principais diferenças são:

  • Alpha Clip: Alpha Clip renderiza valores absolutos sendo 0 ou 1 dado um limiar de corte (clip threshold) de um valor em escala de cinza. A cor anterior será sobrescrita pela cor da superfície, mas somente se o valor alpha estiver acima do valor Clip Threshold.


  • Alpha Blend: Alpha Blend interpola os valores entre 0 e 1. Você pode usar alpha blending para sobrepor a cor da superfície sobre a cor anterior.


circle-exclamation
circle-exclamation

Emissive

Você também pode tornar um material emissive. Materiais emissive emitem sua própria luz. Observe que quando renderizados, eles não iluminam realmente objetos próximos na cena, apenas parecem ter um brilho borrado ao redor.

A imagem abaixo mostra dois modelos idênticos criados com materiais standard. O da direita tem materiais emissive brilhantes em algumas de suas superfícies.




Para tornar um material emissive no Blender, simplesmente adicione um emission shader ao material.

Emissive Strenght

Força da luz emitida. Um valor de 1.0 garantirá que o objeto na imagem tenha exatamente a mesma cor que a Emission Color, ou seja, torná-lo 'shadeless'.



Você pode checar no testing worldarrow-up-right como o emission strenght se comporta no mundo

Normal

O nó "normal" em um shader PBR é um componente fundamental usado para controlar as normais de superfície de um material. Normais são vetores que definem a direção perpendicular a uma superfície em um ponto específico, e desempenham um papel crucial em determinar como a luz interage com a superfície.



Vertex Painting

Pintura de vértices (vertex painting) de modelos 3D não é atualmente suportada pelo engine do Decentraland.

Limitações de Material

Tenha em conta que os limites de materiais por parcel são:

log2(n+1) x 20 Quantidade de materiais na cena. Inclui materiais importados como parte de modelos.

É importante considerar que cada material representa uma draw call por objeto, então é crucial manter os materiais no mínimo possível e tentar reutilizar materiais tanto quanto possível usando técnicas como Texture Atlases; isso também beneficiará a cena tendo um estilo coeso entre os assets da sua cena.

Nomeação de Materiais

Para ter um pipeline de arte organizado e saudável recomendamos nomear seus materiais adequadamente. Uma forma de fazer isso é usar este método de convenção.

Então, por exemplo, digamos que fizemos 2 árvores diferentes, uma que é emissive e brilhante para a primavera e outra fria e metálica para o inverno. Poderíamos nomear os materiais: "TreeSpring_Emissive_MAT" e outra "TreeWinter_Metallic_MAT"

Em conclusão,

  • 🟢 Prefira usar nomes começando com o objeto e a classificação: "Wood_Oak_MAT", "SciFiFence_Metallic_MAT", etc.

  • 🔴 Evite usar nomes como "Material009", "material1", o que torna a cena e os modelos realmente difíceis de rastrear e analisar.

Substituir materiais glTF

Você pode sobrescrever os materiais de um arquivo glTF model por meio do uso do GltfNodeModifiers componente no código da sua cena. Veja Modify glTF materials para mais detalhes.

Melhores Práticas para Materiais

  • Se sua cena inclui múltiplos modelos que usam a mesma textura, referencie a textura como um arquivo externo em vez de tê-la incorporada no modelo 3D.

Texturas incorporadas são duplicadas para cada modelo e aumentam o tamanho da cena. .glb arquivos têm suas texturas incorporadas por padrão, mas você pode usar glTF pipelinearrow-up-right para extraí-la para fora.

Nota: Após referenciar um arquivo para uma textura que não será incorporada, certifique-se de que esse arquivo não será movido ou renomeado, caso contrário a referência ao arquivo será perdida. O arquivo também deve estar dentro da pasta da cena para que seja enviado junto com a cena.

  • Ao definir a transparência de um material, tente sempre usar Alpha clip em vez de Alpha blend, a menos que você precise especificamente ter um material parcialmente transparente (como vidro). Isso evitará problemas onde o engine renderiza o modelo errado na frente do outro.

  • Como regra prática, lembre-se de sempre definir backface culling em seus materiais. Isso tornará sua cena mais performante, já que o engine irá renderizar apenas a face visível dos seus modelos. Apenas desmarque backface culling caso você precise que um modelo seja renderizado em ambos os lados (por exemplo, um conjunto de folhas de uma árvore feito por planos 3D).



Atualizado