> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/creator/content-creator-pt/modelacao-e-animacoes-3d/materials.md).

# Materials

Os materiais são incorporados num *.gltf* ou *.glb* ficheiro.

{% hint style="info" %}
**💡 Dica**: Instale o [plugin Decentraland Tools Blender](https://extensions.blender.org/add-ons/decentraland-tools/). Inclui várias funções úteis para o ajudar a editar e exportar modelos 3D, wearables e emotes.
{% endhint %}

Este documento refere-se a materiais que são importados num modelo 3D. Para materiais definidos via código para aplicar em formas primitivas, consulte [**materiais**](https://docs.decentraland.org/creator/development-guide/materials/) .

{% hint style="warning" %}
**📔 Nota**: Atualmente, não pode alterar dinamicamente os materiais de um modelo 3D a partir do código da sua cena, a menos que seja uma forma primitiva.
{% endhint %}

## Suporte de Shader

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

* **Materiais standard:** quaisquer shaders são suportados, 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 textures. O modelo à esquerda usa apenas *PBR* materiais, alguns deles incluem *metalness*, *transparency*, e *emissiveness*. O modelo à direita usa apenas *standard* materiais, alguns incluindo *transparency* e *emissiveness*.

![](/files/be87fbc5a9f64098e729ff06d3726a23d423e7aa)

### Propriedades PBR que atualmente funcionam com a Engine do Decentraland

> * Base Color
> * Metallic
> * Roughness
> * Specular
> * Emissive
> * Emission Strength
> * Alpha
> * Normal

![](/files/62f056a814595233a14fe3a8c72e2a149b8adf29)

Para visualizar como estas propriedades se comportam no mundo, pode ir a este [mundo de teste](decentraland://?realm=TestEnvironment.dcl.eth) para encontrar diferentes objetos e materiais e ver como interagem com as luzes e com o ambiente do mundo.

![](/files/d41efd56257e9be1ceaa57c99a54b21b684bfc1a)

### Base/Diffuse Color

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

### Metallic

Um metallic shader refere-se a um tipo de técnica de rendering usada para simular o aspeto de superfícies metálicas. Um metallic shader tem em conta as propriedades físicas dos metais e a forma como interagem com a luz para produzir as qualidades brilhantes e refletoras características do metal.

![](/files/3eb7caed8a3340ef8b9e22311f526b72c21fb101)

### Roughness

Os materiais roughness estão relacionados com a simulação realista de como a luz interage com a superfície do material. Normalmente, os roughness maps são usados para dar aos modelos um intervalo de "suavidade" ou "rugosidade" nas suas superfícies. Normalmente é usado um texture map em escala de cinzentos para fornecer informação deste tipo.

![](/files/b5ac9fc739e785ecb285d70178d4d6376facd2b2)

Esta propriedade mistura entre um modelo de material não metálico e metálico. Um valor de 1.0 proporciona uma reflexão specular totalmente tingida com a base color, sem reflexão diffuse nem transmissão. Em 0.0, o material consiste numa camada base diffuse ou transmissiva, com uma camada de reflexão specular por cima.

### Specular

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

![](/files/5368f77d677882b94c11638dd09bff7be5e16320)

### Alpha

Pode definir um material como *transparente*. Os materiais transparentes podem ser vistos através em graus variados, dependendo do seu *alpha*. Para fazer isto, ative a propriedade de transparência do material e depois defina o seu *alpha* para a quantidade desejada. Um alpha de 1 tornará o material completamente opaco, um alpha de 0 torná-lo-á 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 transparentes e opacos em algumas das suas partes.

{% hint style="warning" %}
💡 Lembre-se de que usar materiais transparentes é sempre mais dispendioso em termos de desempenho do que materiais diffuse. Tente sempre manter os materiais transparentes o mais reduzidos possível.
{% endhint %}

![](/files/262b105228a22c00874b6bed13e7df202ed1489a)

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

* **Alpha Clip:** O Alpha Clip renderiza valores absolutos de 0 ou 1, dado um limiar de corte de um valor em escala de cinzentos. A cor anterior será substituída pela cor da superfície, mas apenas se o valor de alpha estiver acima do valor de Clip Threshold.

![](/files/a63a3d8b8297101f21acd78c6b62ceca54e5afc1)

* **Alpha Blend:** O Alpha Blend interpola os valores entre 0 e 1. Pode usar alpha blending para sobrepor a cor da superfície à cor anterior.

![](/files/5506170c6481d65d8233a6cd5c205e51b26ece86)

{% hint style="warning" %}
**🔥Dica de otimização🔥** A menos que queira especificamente poder ter um nível intermédio de transparência, **é sempre mais performante para o rendering usar \_Alpha Clip***\*\* em vez de \*\****Alpha Blend**\_**.**
{% endhint %}

{% hint style="warning" %}
**⚠️ Problemas de Sorting**

Quando usa modos de transparent blend no seu jogo, é crucial considerar a ordem pela qual a mistura de cores acontece. Isto porque a cor final resultante pode ser significativamente afetada pela ordem da mistura. Atualmente, a Engine apenas suporta sorting por objeto, o que significa que ordena automaticamente todas as superfícies transparentes com base na origem do objeto. No entanto, sorting por fragmento (pixel) e sorting por triângulo não são atualmente suportados.

Para evitar problemas relacionados com sorting, o melhor é evitar usar objetos com alpha clip e alpha blend na mesma mesh. Isto pode ajudar a prevenir artefactos inesperados de blending e garantir que o seu jogo tem o melhor aspeto possível.
{% endhint %}

### Emissive

Também pode tornar um material *emissive*. Os materiais emissive emitem a sua própria luz. Note que, quando renderizados, não iluminam realmente os objetos próximos na cena; apenas parecem ter um brilho difuso à sua volta.

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

![](/files/189aa6caf0096d7e4caf247372988e0144577671) ![](/files/5950e85ae2f993ad321e436068822d7688b0113d)

*Para tornar um material emissive no Blender, basta adicionar um shader de `emission` ao material.*

### Intensidade Emissive

Intensidade 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".

![](/files/fb1a7040463f8862e33f17a97fe3fe9bfd0c2cca)

*Pode verificar no* [*mundo de teste*](decentraland://?realm=TestEnvironment.dcl.eth) *como a emission strength se comporta no mundo*

### Normal

O node "normal" num shader PBR é um componente fundamental usado para controlar as normais da superfície de um material. As normais são vetores que definem a direção perpendicular a uma superfície num ponto específico, e desempenham um papel crucial na determinação de como a luz interage com a superfície.

![](/files/65eff5555ac0154986e79ca0cb744beb3b6befac)

## Vertex Painting

O vertex painting de modelos 3D não é atualmente suportado pela Engine do Decentraland.

## Limitações de materiais

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 ter em conta que cada material representa um draw call por objeto, por isso é crucial manter os materiais no mínimo possível e tentar reutilizá-los tanto quanto possível, recorrendo a técnicas como Texture Atlases; isto também beneficiará a cena, dando um estilo coeso entre os assets da sua cena.

## Nomeação de materiais

Para ter um pipeline artístico organizado e saudável, recomendamos que dê nomes adequados aos seus materiais. Uma forma de o fazer é usar este método de convenção.

```
<Object>_<Classification>_<Sub-Classification(optional)>_<_MAT>
```

Assim, por exemplo, digamos que fizemos 2 árvores diferentes, uma 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 que comecem 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 acompanhar e analisar.

## Substituir materiais glTF

Pode substituir os materiais de um *glTF* modelo usando o [GltfNodeModifiers](/creator/content-creator-pt/scenes-sdk7/essenciais-de-conteudo-3d/materials.md#modify-gltf-materials) component no código da sua cena. Consulte [Modificar materiais glTF](/creator/content-creator-pt/scenes-sdk7/essenciais-de-conteudo-3d/materials.md#modify-gltf-materials) para mais detalhes.

## Boas práticas para materiais

* Se a sua cena incluir vários modelos que usam a mesma Texture, referencie a Texture como um ficheiro externo em vez de a ter incorporada no modelo 3D.

As textures incorporadas são duplicadas para cada modelo e aumentam o tamanho da cena. *.glb* os ficheiros têm as suas textures incorporadas por predefinição, mas pode usar [**glTF pipeline**](https://github.com/AnalyticalGraphicsInc/gltf-pipeline) para a extrair para fora.

> Nota: Depois de referenciar um ficheiro para uma texture que não será incorporada, certifique-se de que esse ficheiro não será movido nem renomeado, caso contrário a referência ao ficheiro será perdida. O ficheiro também tem de estar dentro da pasta da cena para que seja carregado juntamente com a cena.

* Ao definir a transparência de um material, tente usar sempre *Alpha clip* em vez de *Alpha blend*, a menos que precise especificamente de ter um material parcialmente transparente (como vidro). Isto evitará problemas em que a Engine renderiza o modelo errado à frente do outro.
* Como regra geral, lembre-se de definir sempre *backface culling* nos seus materiais. Isto tornará a sua cena mais performante, dado que a Engine irá renderizar apenas a face visível dos seus modelos. Só desative *backface culling* caso precise que um modelo seja renderizado em ambos os lados (por exemplo, um grupo de folhas de uma árvore feito com planos 3D).

![](/files/f8dbd206973dadc16e8eb49fd4a172f755cf6f7a)

* Use as [**default textures**](https://github.com/decentraland/builder-assets/tree/master/textures) , que são pré-carregadas pelos jogadores, fazendo com que os seus assets renderizem muito mais depressa.
* Leia [**este artigo**](https://www.khronos.org/blog/art-pipeline-for-gltf) para uma visão detalhada de um pipeline artístico completo que usa textures PBR em modelos glTF.
* Pode encontrar uma referência detalhada sobre como criar materiais compatíveis com glTF com o Blender em [**a documentação do Blender**](https://docs.blender.org/manual/en/latest/addons/import_export/scene_gltf2.html) .
* Encontre textures PBR gratuitas e de alta qualidade em [**cgbookcase**](https://cgbookcase.com/) .


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-pt/modelacao-e-animacoes-3d/materials.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
