> 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-3d-e-animacoes/textures.md).

# Texturas

Saiba como as texturas funcionam no Decentraland

As texturas são uma parte fundamental do pipeline de arte 3D para alcançar a aparência e a sensação que você deseja para sua scene. Nesta seção, você encontrará tudo o que precisa saber para criar suas texturas, limitações, nodes no Blender e como otimizá-las para funcionarem da melhor forma possível!

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

## Limitações

### Restrições de Tamanho de Textura

Atualmente, o Decentraland Explorer comprime as texturas para no máximo 1024px para fins de otimização usando um Asset Bundle Converter depois que a scene é enviada para os content servers. Certifique-se de levar essa limitação em conta ao criar seus assets!

Outro ponto importante a considerar é que as textures devem ser sempre potência de dois; quaisquer textures que não sigam essa especificação podem causar problemas ao renderizar a scene.

Os tamanhos de texture devem usar números de largura e altura (em pixels) que correspondam aos seguintes números:

```
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024
```

> Esta sequência é composta por potências de dois: `f(x) = 2 ^ x` . **1024 é o número máximo que permitimos para o tamanho de uma texture.** Este é um requisito bastante comum entre outros rendering engines; ele existe devido a otimizações internas dos processadores gráficos.

A largura e a altura não precisam ter o mesmo número, mas ambas precisam pertencer a esta sequência.

**O tamanho recomendado para textures é 1024x1024**, descobrimos que esse é o tamanho ideal para ser transportado por redes domésticas e para proporcionar experiências razoáveis de carregamento/qualidade.

Exemplos de outros tamanhos válidos:

```
32x32px
64x32px
512x256px
512x512px
1024x1024px
```

Por outro lado, há um limite de textures por parcel:

```
log2(n+1) x 10 Quantidade de textures por parcel. Inclui textures importadas como parte de modelos.
```

## UVMapping

UVmapping é o processo de desdobrar as faces do seu modelo 3D em uma coordenada 2D que será usada depois para adicionar os diferentes maps aos seus assets. É uma parte fundamental do processo de criação. Fazer um unwrap correto dos seus modelos é um fator-chave para aproveitar a resolução dos modelos e também organizar seus maps para que sejam flexíveis para modificação.

Para saber mais sobre UV Unwrapping, você pode ver este vídeo incrível feito pela Blender Foundation:

[![Video Preview](https://i.ytimg.com/vi/Y7M-B6xnaEM/maxresdefault.jpg)](https://youtu.be/Y7M-B6xnaEM?si=qMnWTMsXxC-vxZAH)

Há outro ótimo tutorial de nível intermediário para unwrap de UVs feito por \[Blender Guru] (<https://www.youtube.com/@blenderguru>) que explica como desdobrar um modelo mais complexo:

[![Video Preview](https://i.ytimg.com/vi/scPSP_U858k/maxresdefault.jpg)](https://youtu.be/scPSP_U858k?si=Uw0xHbv9jtqVstDS)

## Maps

Na [seção de materiais](https://docs.decentraland.org/creator/3d-modeling/materials/) explicamos como Decentraland funciona com os shaders PBR. Nesta seção, vamos mostrar como cada texture map modifica o shader e a aparência do objeto 3D que depois será exportado para o World.

## Diffuse Maps

Esta é a cor base da superfície do objeto. Ter uma paleta de cores equilibrada entre os seus modelos é fundamental para alcançar uma aparência coesa para a sua experiência.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-082485ff5c6515c1ff70e8cdea3481ceb1f00daf%2F58-difusemap.png?alt=media\&token=20f8725b-9a28-48bc-a475-7cdda1e25af0)

Aqui vai um gerador de paletas gratuito e legal caso você precise!

* **Coolors:** <https://coolors.co/>

Ou alguma inspiração de paleta fornecida por filmes incríveis:

* **Movies in Color:** <https://moviesincolor.com/>

## Metallic Maps

Em um mapa Metallic, o mapa em tons de cinza representa o grau de metalicidade que um objeto possui, sendo branco totalmente metálico e preto não metálico. No exemplo a seguir, vemos como a luz afeta o modelo e como interage com o ambiente.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-940b5a7f16290e63bce2002acc9851492a95e280%2F64-metallic-map.png?alt=media\&token=1de2c1cf-69c8-458a-a716-0656cf499b3f)

*Na imagem podemos ver como as partes escuras da texture afetam o modelo. As faixas escuras são opacas, enquanto a faixa branca se comporta de acordo com as propriedades do shader metálico, e o cinza sendo uma mistura entre ambos.*

## Roughness Maps

Em um mapa de roughness, áreas mais escuras correspondem a superfícies mais suaves, enquanto áreas mais claras correspondem a superfícies mais ásperas. Essa representação em tons de cinza é usada pelos rendering engines para determinar como a luz deve ser dispersa ou refletida em diferentes pontos da superfície.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5b1c0831ee575f6d338e36bea0ad524cb11234f3%2F48-roughness.png?alt=media\&token=5422fad3-2349-49f0-abf7-d09504c86586) ![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-6c2ac22efcec5853d4d0c74442c8875af3b74bb4%2F49-roughness.gif?alt=media\&token=152f9d13-15d8-42ca-8f50-b49437632ae1)

## Mapas Transparentes

### Alpha Clip

Alpha Clip no Blender, quando usado com uma texture, envolve usar o canal alpha da texture para determinar quais partes do material devem ser visíveis. Pixels com valores alpha acima de um limite especificado são exibidos, enquanto os abaixo desse limite são descartados, criando um efeito de recorte com base nas informações de transparência da texture.

No exemplo a seguir, usamos um material com alpha clip, utilizando 2 textures, a cor difusa e a texture alpha em preto e branco, conectando a cor ao canal alpha.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-3dd720ef70aa23ce8f81586df52a17d23fc9ea45%2F33-alpha-clip-leave.jpeg?alt=media\&token=861a7b16-a83e-41a4-8c2f-61b82d87c938) ![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-ad0aa8f8c1af4f38fddb769be98d92b9692afb8f%2F33-alpha-clip-mask.jpeg?alt=media\&token=1680a605-073b-4651-b07b-20a702469951)

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5e7675fecbf72c5c637b1dc5688349e0830e7777%2F33-alpha-blender.png?alt=media\&token=6e8da099-aa47-40b8-9296-4c06af958e1d)

*Como resultado, podemos ver que as áreas pintadas de preto são descartadas, enquanto a área branca está sendo renderizada*

### Alpha Blend

*Alpha Blend* permite que você escolha valores intermediários por região.

Alpha Blend no Blender, quando usado com uma texture, envolve misturar as áreas transparentes e opacas da texture com base em seu canal alpha. Isso permite que a texture combine suavemente tanto partes visíveis quanto translúcidas, interagindo naturalmente com o background ou com outros objetos na scene.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-5d905cd398beddec84820f474e90cc9d8f0be614%2F33-alpha-blend.png?alt=media\&token=ed88d410-bd1c-45cb-b5f3-bfba018a7597)

*Enquanto o Alpha Clip renderiza valores 0 ou 1 (em um limite específico), o Alpha Blend interpola os valores entre 0 e 1. No exemplo acima, o material alpha blend mostra a transição completa em gradiente, enquanto o alpha clip exclui parte da texture definida pelo limite de clip*

{% hint style="warning" %}
**🔥Dica de otimização🔥**

* Leve em conta que textures transparentes (RGB+A) são sempre mais caras em termos de desempenho do que usar um valor em tons de cinza para transparências.
* A transparência é sempre uma operação cara ao renderizar a scene. Tente sempre manter as transparências no mínimo e use Alpha Blend apenas quando for necessário; caso contrário, Alpha Clip é preferível em vez de Alpha Blend.
  {% endhint %}

## Emissive Maps

Um mapa emissive é um tipo de texture map usado para controlar a autiluminação ou a luz emitida por uma superfície em uma scene 3D. Ele é um componente do shader que determina quanta luz (e qual cor de luz) uma parte específica de um modelo 3D emite, independentemente de fontes de luz externas. Emissive maps são comumente usados para simular materiais ou objetos que parecem emitir sua própria luz.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-6feb4f69267949ee907f39fe867377396b8fa1f6%2F57-emissive-map.gif?alt=media\&token=3d5bfa7b-563c-4e09-b8b1-c2b23954368e)

*Neste exemplo, podemos ver o uso de um emissive map combinado com emissive strength em um ambiente que usa glow postprocessing para testar aproximadamente como o emissive se comporta no World.*

## Normal Maps

Um normal map é um tipo de texture usada em gráficos 3D para simular detalhes finos de superfície e criar a ilusão de geometria complexa sem realmente alterar a geometria subjacente de um modelo. Ele é comumente usado para aumentar o realismo de modelos low-poly ao adicionar a aparência de relevos, fendas e outras irregularidades da superfície. Ele também permite manter os objetos mais leves, já que muitos detalhes podem ser fornecidos na camada de normal map em vez de geometria complexa.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-a01cce23a0225aba58245fe46db1e03abc54252d%2F51-normal-map.png?alt=media\&token=8c00afdd-46d9-4c70-9ce6-5c4cd899fa49) ![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-13d87ebefb8dbb8b4ddc2d72b2d6d3db7181872f%2F50-normal.gif?alt=media\&token=ed3eb3fa-ce46-43ed-aa87-fc7e2e865bf9)

Para adicionar um normal map ao seu material usando o *Shader Editor*, você precisará conectar o ***Normal Map*** node entre a texture e o *Principled BSDF* shader.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-28db25db5fcad571186fdbe87a7749a75133540e%2F56-normal-map.png?alt=media\&token=cc411143-767c-4501-a131-54a1f30d7317)

{% hint style="warning" %}
**⚠️Importante⚠️:** Nunca use uma texture como albedo e normal ao mesmo tempo, porque isso pode criar problemas ao renderizar a scene.
{% endhint %}

## Otimizando Textures

O processo de otimização de textures traz muitos benefícios ao renderizar a scene no Explorer, mas também é uma boa forma de manter o estilo da sua scene consistente e mais flexível no processo de design. Alguns desses benefícios são:

* Ter textures otimizadas em tamanho e compressão fará com que a scene rode de forma muito mais suave e rápida, tornando o download mais rápido e a renderização mais fácil (especialmente para players com conexão de internet lenta).
* Isso reduz a quantidade de memória e poder de processamento necessários para renderizar sua experiência, resultando em uma melhor experiência de usuário para seus players.
* Isso economiza armazenamento nos servidores de conteúdo da comunidade.
* Usar **Texture Atlases** e/ou **Trim Sheets** lhe dará mais flexibilidade para iterar a criação da sua scene e consistência de estilo entre os objetos. Usando essas técnicas, você pode trocar textures facilmente, ajustar cores ou padrões em vez de fazer isso individualmente para cada modelo.
* Compartilhar textures entre modelos permite ter menos textures por scene, reduzindo drasticamente as draw calls no jogo. Se você estiver trabalhando com glbs (com textures incorporadas), encontrará um extrator nas diretrizes a seguir para extrair as textures deles, redirecionando os modelos para usar a mesma texture.

## Texturas Compartilhadas Entre Modelos glTF

Uma prática sábia e comum para otimizar sua scene é compartilhar textures e materials entre modelos ao longo da scene. Fazer isso reduzirá drasticamente as draw calls e sua scene Decentraland rodará muito mais suavemente.

A seguinte ferramenta baseada em [**glTF pipeline**](https://github.com/AnalyticalGraphicsInc/gltf-pipeline)**,** oferece algumas otimizações que deixarão os modelos 3D mais leves e mais rápidos de baixar para os players na sua scene.

**Mac:** [MAC GLB Extractor](https://github.com/decentraland/docs/blob/main/creator/images/3d-models-and-animations/glb-extractor/texture_extractor.sh)

**PC:** [PC GLB Extractor](https://github.com/decentraland/docs/blob/main/creator/images/3d-models-and-animations/glb-extractor/glb_texture_extract.bat)

Ela converte o formato .gltf em .glb, que é binário e, portanto, ocupa muito menos espaço. Também coloca os arquivos de texture fora do modelo 3D, o que permite usar a mesma texture em vários modelos.

> 📔 Nota: o formato .glb, por padrão, sempre tem textures incorporadas no arquivo. O engine não consegue reconhecer duas textures incorporadas como sendo a mesma; elas precisam ser arquivos externos que compartilhem o mesmo hash.

### Como Usar o GLB Texture Extractor

Nesta scene de exemplo, temos uma scene sci-fi simples no Blender.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-d575f4ffe6da295ae53b389c1750eb0840abd219%2F01-scene-base.png?alt=media\&token=b428ad11-ff8a-46f8-808c-2c32cb9b8fda)

Esta scene contém o ambiente base para os modelos estáticos, mas também há outros dois assets, um droid e uma nave espacial, que queremos exportar separadamente para movê-los depois por código, para que possam interagir com os players. Neste caso, usamos 4 textures (uma para o floor, um atlas de mapa de cores para a maioria dos assets, uma emissive e uma texture de UI sci-fi para os painéis)

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-b5ae85bb52a317d7d3b912719f7af6fa68b486b4%2F02-model-01.png?alt=media\&token=54b6e2c8-1bad-4726-93db-5f850ca9344f) ![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-66e7694ca025484b771513bd34eb2aa2a14e170e%2F03-model-02.png?alt=media\&token=e1bb9700-57df-4343-931b-d2ba207ae0c0)

Depois de exportarmos todos esses assets para a pasta de models, temos 3 models: a scene estática do ambiente, a nave espacial e o droid.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-69ff6c40205c8fd498908024c05d3264ce0de238%2F04-models-folder.png?alt=media\&token=9ba0d479-6b3d-4242-a3f2-c8adda7312de)

Mas temos um problema: os arquivos .glb têm as textures incorporadas, então, se você estiver exportando assets diferentes que reutilizam as textures, elas serão duplicadas cada vez que houver um novo asset na pasta. Para evitar textures duplicadas, podemos usar esta ferramenta útil.

{% hint style="warning" %}
⚠️ NOTA IMPORTANTE: antes de usar a ferramenta, faça um BACKUP dos seus models, só por precaução caso algo dê errado!!!
{% endhint %}

**No Mac**

Depois de exportar todos os assets para a pasta de models, você pode arrastar o arquivo de script para ela.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-23acc844e0c391e705ae38b4d8faf68f098ed761%2F05-texture-extractor.png?alt=media\&token=5c617c68-663a-4b24-a820-9535adabee59)

1 - Abra a pasta no terminal arrastando a pasta para ele.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-79d1c0f266230d5034fd344431403779bb20d08e%2F06-move-to-terminal.png?alt=media\&token=a8c0b06c-4c56-4e57-a2d0-879156fc8a29)

2 - Arraste o texture-extractor.sh para o terminal.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-f7e370bb546859650efe900f42039f1a90fc14df%2F06-terminal.png?alt=media\&token=b87e4e2a-1186-47c9-bcf5-74ddb3390066)

3 - Execute o comando. Pode levar alguns segundos para processar todos os assets. Depois disso, você verá algo assim:

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-599d9f4378fa9d37c84a049eaefc0862ccfca295%2F07-run-terminal.png?alt=media\&token=3f68da6a-798a-4dc4-8f3e-8bb4cd3dc0d0)

4 - Vá para a pasta de models e haverá uma nova pasta chamada "out", na qual você verá seus novos assets com as textures extraídas.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-f1d505887c8a5d4a2aa6773e0da76ca852bffa6a%2F08-out-folder.png?alt=media\&token=628443a9-08d0-4603-95bc-4c2665077589)

5 - Substitua todos os assets pelos novos! Além disso, quando terminar, apague o "texture-extractor.sh" e a pasta vazia "out".

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-df02204ffa5207d1385b235de809f66f8ef9129e%2F09-replace-assets.png?alt=media\&token=3fa6dbd7-c26a-4de8-bf70-20318ad857e8)

**No Windows**

Depois de exportar todos os assets para a pasta de models, você pode arrastar o arquivo de script para ela.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-4990daa279b27670ced263e8f16487a978da7229%2F10-windows-01.png?alt=media\&token=a15ce8b4-9318-43b6-9a20-ce2c90898b90)

1 - Clique duas vezes em glb\_texture\_extract.bat para extrair os arquivos. Se o Windows avisar sobre um aplicativo não reconhecido, vá para **Mais informações** e depois **Executar mesmo assim**.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-550a0241a9125dccf5192e0813dbb64fcd94a0ba%2F11-windows-02.png?alt=media\&token=e1ccc106-c39d-4636-b460-335089f24bd0) ![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-c069eba1ab8124f6c0ec5a695000fbb1621535de%2F12-windows-03.png?alt=media\&token=e0c3e415-2e6e-414f-ac90-1b9aff209457)

2 - O script gerará uma pasta chamada out, onde você encontrará todos os novos arquivos .glb com suas textures extraídas.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-853904a4678b2554c8c3e612d6cea23db7b42735%2F13-windows-03.png?alt=media\&token=94f6e635-ec1a-47c6-a42d-36239b33dc35)

5 - Substitua todos os assets pelos novos. Ao terminar, exclua o script "texture-extractor.bat" e a pasta vazia "out".

Se você seguir todas as etapas, sua scene ficará muito mais rápida agora e os assets compartilharão a mesma texture! Quando trabalhamos com vários assets e scenes grandes, a melhoria é bastante perceptível! Com esta ferramenta, você pode economizar uma boa quantidade de megabytes de informação!

{% hint style="warning" %}
⚠️ Após concluir esta etapa, é crucial verificar se cada texture segue as diretrizes. Se as textures não seguirem as diretrizes ou estiverem muito pesadas, otimize-as para ficarem mais leves antes do deploy. O tamanho de texture recomendado para scenes performáticas é 1024x1024. Verifique também a resolução; imagens com mais de 72 DPI afetariam o desempenho e não fariam a imagem parecer melhor.
{% endhint %}

## Texture Atlas/ Trim Sheets

Um texture atlas é um único arquivo de imagem que contém dados de várias imagens menores agrupadas. Em vez de ter uma texture para cada mesh, várias meshes compartilham uma texture maior.

Você pode criar um texture atlas antes de fazer o asset, o que significa que o asset é desdobrado em UV de acordo com o texture atlas. Isso requer algum planejamento antecipado ao criar a texture.

Alternativamente, você pode criar o texture atlas depois que o asset estiver pronto, mesclando as textures em um software de pintura. No entanto, isso também significa que as ilhas UV devem ser reorganizadas de acordo com a texture.

Abaixo há uma imagem mostrando vários objetos 3D que usam um único conjunto de textures:

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-9f156c42d55defe8f368ba8b5989ce694868fae9%2F37-atlas-texture.png?alt=media\&token=45e355e0-613e-437b-aeea-b50112319d6d) ![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-9d0189a956bccdbf9a4218e4f09910501899cd47%2F38-uv-atlas.png?alt=media\&token=a67045f4-cf2d-448b-a9a5-20269828b1d6)

Outra maneira de fazer Atlases é usar Trim Sheets, uma técnica comum em modelagem 3D e desenvolvimento de jogos que grandes estúdios e a indústria de jogos usam para garantir consistência visual e um pipeline de arte eficiente. Trim Sheets é o uso de uma única imagem ou texture que contém vários pequenos detalhes ou elementos que podem ser aplicados a diferentes partes de um modelo. Essa técnica é muito útil ao criar scenes grandes e precisa ser considerada na primeira etapa do pipeline de arte.

![](https://2402076176-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-c54001f41883c274490680f8eb40bac5272efb69%2F39-trim-sheets.png?alt=media\&token=3c864897-4117-40e0-b9ed-eb6d660f6078)

*Um exemplo de colagem de um Trim Sheet que usa uma texture diffuse, normal e emissive.*

Há um ótimo [tutorial](https://www.artstation.com/blogs/jennifermcgarry/yd4Q/jenns-guide-to-trim-sheets) de [Jennifer McGarry](https://www.artstation.com/jennifermcgarry/blog) que explica o uso de Trim Sheets usando Blender!

## Nomeação de Textures

**É crucial nomear nossas textures corretamente.** Ter uma nomeação correta para a texture vai:

* Tornar seu pipeline de arte mais eficiente, flexível, organizado, fácil de direcionar e modificar se necessário.
* Evitar sobrepor textures com o mesmo nome ao usar o texture extractor ou outras ferramentas.
* Evitar problemas de sobreposição de textures ao usar Asset Bundles.
* Forma mais eficiente de resolver problemas pontuais ao analisar a scene.

**Como nomear corretamente suas Textures:**

* **Nome do asset** deve representar claramente o que a texture é.
* O nome das textures deve começar com o prefixo `T_`.
* O nome da texture deve terminar com o sufixo que define o tipo de texture:
  * `_D` - **Mapa Diffuse/ Color**
  * `_A` - **Texture Alpha**
  * `_MT` - **Metallic**
  * `_R` - **Roughness**
  * `_N` **- Normal Map**
  * `_E` - **Emission**

Exemplo: se for um mapa diffuse de texture de tijolo para uma parede, o nome `T_BrickWall_D` poderia ser apropriado. Se for um Normal Map do mesmo asset, o nome poderia ser `T_BrickWall_N`

**Exemplos:**

* 🟢 **Prefira** começar o nome da texture com - `T_Parquet_D`, `T_Floor_R`, `T_Pipes_MT`,
* 🔴 **Evite** começar o nome da texture com - `Image_`, `sprite_`,`Untitled`

## Ferramentas Opcionais

Existem muitos addons e ferramentas externas que facilitam o trabalho ao criar assets para tornar o pipeline mais rápido e eficiente; algumas são gratuitas e outras pagas, para citar algumas:

### UVTools

* **UV Packer (Gratuito)**:<https://www.uv-packer.com/blender/>
* **Zen UV:** <https://blendermarket.com/products/zen-uv>
* **Uvpackmaster 3:** <https://blendermarket.com/products/uvpackmaster>

### Compressor de Imagens

Existem vários compressores de imagem online que você pode usar para tornar suas textures mais leves. Para citar alguns:

* **CompressPNG:** <https://compresspng.com/>
* **TinyPNG:** <https://tinypng.com/>
* **FreeConvert:** <https://www.freeconvert.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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
