> 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-es/modelado-y-animaciones-3d/textures.md).

# Texturas

Aprende cómo funcionan las texturas en Decentraland

Las Textures son una parte clave del flujo de trabajo de arte 3D para lograr el aspecto y la sensación que quieres para tu scene. En esta sección encontrarás todo lo que necesitas saber para crear tus textures, sus limitaciones, los nodes en Blender y cómo optimizarlas para que rindan al máximo.

{% hint style="info" %}
**💡 Consejo**: Instala el [plugin de Decentraland Tools para Blender](https://extensions.blender.org/add-ons/decentraland-tools/). Incluye varias funciones útiles para ayudarte a editar y exportar modelos 3D, wearables y emotes.
{% endhint %}

## Limitaciones

### Restricciones de tamaño de texture

Actualmente, el Decentraland Explorer comprime las textures a un máximo de 1024px con fines de optimización usando un Asset Bundle Converter después de que la scene se haya subido a los content servers. ¡Asegúrate de tener en cuenta estas limitaciones al crear tus assets!

Otro punto importante a tener en cuenta es que las textures siempre deben ser power of two; cualquier texture que no siga esta especificación puede causar problemas al renderizar la scene.

Los tamaños de texture deben usar números de ancho y alto (en píxeles) que coincidan con los siguientes números:

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

> Esta secuencia está compuesta por potencias de dos: `f(x) = 2 ^ x` . **1024 es el número máximo que permitimos para el tamaño de una texture.** Este es un requisito bastante común entre otros rendering engines; existe debido a optimizaciones internas de los procesadores gráficos.

El ancho y el alto no necesitan tener el mismo número, pero ambos deben pertenecer a esta secuencia.

**El tamaño recomendado para las textures es 1024x1024**, hemos comprobado que este es el tamaño óptimo para transportarse a través de redes domésticas y ofrecer experiencias razonables de carga/calidad.

Ejemplos de otros tamaños válidos:

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

Por otro lado, hay un límite de textures por parcel:

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

## UVMapping

UVmapping es el proceso de desplegar las faces de tu modelo 3D en una coordenada 2D que luego se usará para añadir los distintos maps a tus assets. Es una parte clave del proceso de creación. Hacer un correcto unwrap de tus modelos es un factor clave para aprovechar al máximo la resolución de tus modelos y además organizará tus maps para que sean flexibles de modificar.

Para saber más sobre UV Unwrapping puedes ver este increíble video hecho por la Blender Foundation:

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

También hay otro excelente tutorial de nivel intermedio para hacer unwrap de UVs hecho por \[Blender Guru] (<https://www.youtube.com/@blenderguru>) que explica cómo desplegar un modelo más complejo:

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

## Maps

En la [sección de materials](https://docs.decentraland.org/creator/3d-modeling/materials/) explicamos cómo funciona Decentraland con los shaders PBR. En esta sección te mostraremos cómo cada texture map modifica el shader y el aspecto y la sensación del objeto 3D que luego se exportará al world.

## Diffuse Maps

Este es el color base de la surface del objeto. Tener una paleta de color equilibrada entre tus models es clave para lograr un aspecto y una sensación coherentes en tu experiencia.

![](https://1216664193-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)

Aquí tienes un generador de paletas gratis muy práctico por si lo necesitas.

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

O algo de inspiración de paletas proporcionada por películas increíbles:

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

## Metallic Maps

En un Metallic map, el mapa en escala de grises representa el grado de metalness que posee un objeto; blanco es totalmente metálico y negro no metálico. En el siguiente ejemplo vemos cómo la luz afecta al model y cómo interactúa con el entorno.

![](https://1216664193-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)

*En la imagen podemos ver cómo las partes oscuras de la texture afectan al model. Las franjas oscuras son opacas, mientras que la franja blanca se comporta según las propiedades del shader metálico y el gris es una mezcla entre ambos.*

## Roughness Maps

En un roughness map, las áreas más oscuras corresponden a surfaces más suaves, mientras que las áreas más brillantes corresponden a surfaces más rugosas. Esta representación en escala de grises se utiliza en los rendering engines para determinar cómo debe dispersarse o reflejarse la luz en distintos puntos de la surface.

![](https://1216664193-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://1216664193-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)

## Transparent Maps

### Alpha Clip

Alpha Clip en Blender, cuando se usa con una texture, implica usar el canal alpha de la texture para determinar qué partes del material deben ser visibles. Los píxeles con valores alpha por encima de un umbral especificado se muestran, mientras que los que están por debajo del umbral se descartan, creando un efecto de recorte basado en la información de transparencia de la texture.

En el siguiente ejemplo usamos un material con alpha clip, utilizando 2 textures: el color difuso y la texture alpha en blanco y negro, conectando el color al canal alpha.

![](https://1216664193-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://1216664193-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://1216664193-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 las áreas pintadas en negro se descartan, mientras que el área blanca se renderiza.*

### Alpha Blend

*Alpha Blend* te permite elegir valores intermedios por región.

Alpha Blend en Blender, cuando se usa con una texture, implica mezclar las áreas transparentes y opacas de la texture según su canal alpha. Esto permite que la texture combine suavemente tanto las partes visibles como las transparentes, interactuando de forma natural con el fondo u otros objetos de la scene.

![](https://1216664193-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)

*Mientras que Alpha Clip renderiza valores 0 o 1 (en un umbral específico), Alpha Blend interpola los valores entre 0 y 1. En el ejemplo anterior, el material de alpha blend muestra la transición completa del gradiente, mientras que alpha clip excluye parte del conjunto de textures definido por el umbral de recorte.*

{% hint style="warning" %}
**🔥Consejo de optimización🔥**

* Ten en cuenta que las textures transparentes (RGB+A) siempre son más costosas en términos de rendimiento que usar un valor en escala de grises para las transparencias.
* La transparencia siempre es una operación costosa al renderizar la scene. Intenta mantener siempre las transparencias al mínimo y usar Alpha Blend solo cuando sea necesario; de lo contrario, se prefiere Alpha Clip en lugar de Alpha Blend.
  {% endhint %}

## Emissive Maps

Un emissive map es un tipo de texture map usado para controlar la autoiluminación o la luz emitida por una surface en una scene 3D. Es un componente del shader que determina cuánta luz (y de qué color) emite una parte concreta de un modelo 3D, independientemente de las fuentes de luz externas. Los emissive maps se usan comúnmente para simular materials u objetos que parecen emitir su propia luz.

![](https://1216664193-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)

*En este ejemplo podemos ver el uso de un emissive map combinado con emissive strength en un entorno que utiliza glow postprocessing para probar aproximadamente cómo se comporta el emissive en el world.*

## Normal Maps

Un normal map es un tipo de texture usado en gráficos 3D para simular detalles finos de la surface y crear la ilusión de geometría compleja sin alterar realmente la geometría subyacente de un model. Se usa comúnmente para mejorar el realismo de models low-poly añadiendo la apariencia de bultos, grietas y otras irregularidades de la surface. También te permite mantener los objetos más ligeros, ya que muchos detalles pueden proporcionarse en la capa del normal map en lugar de mediante geometría compleja.

![](https://1216664193-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://1216664193-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 añadir un normal map a tu material usando el *Shader Editor*, necesitarás conectar el ***Normal Map*** node entre la texture y el *Principled BSDF* shader.

![](https://1216664193-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 uses una texture como albedo y normal al mismo tiempo porque puede crear problemas al renderizar la scene.
{% endhint %}

## Optimizando Textures

El proceso de optimización de textures aporta muchas ventajas al renderizar la scene en el Explorer, pero además es una buena forma de mantener el estilo de tu scene coherente y más flexible durante el proceso de diseño. Algunas de estas ventajas son:

* Tener textures optimizadas en tamaño y compresión hará que la scene funcione de forma mucho más fluida y rápida, haciendo que se descargue más rápido y sea más fácil de renderizar (especialmente para players con una conexión a internet lenta).
* Reduce la cantidad de memoria y potencia de procesamiento necesaria para renderizar tu experiencia, lo que resulta en una mejor user experience para tus players.
* Ahorra almacenamiento en los community content servers.
* Usando **Texture Atlases** y/o **Trim Sheets** te dará más flexibilidad para iterar la creación de tu scene y coherencia de estilo entre los objetos. Usando estas técnicas puedes cambiar fácilmente textures, ajustar colores o patrones en lugar de hacerlo individualmente para cada model.
* Compartir textures entre models permite tener menos textures por scene, reduciendo drásticamente los draw calls en el juego. Si estás trabajando con glbs (con textures embebidas) encontrarás una herramienta de extracción en las siguientes pautas para extraer las textures de ellos, redirigiendo los models para usar la misma texture.

## Textures compartidas entre modelos glTF

Una práctica sabia y común para optimizar tu scene es compartir textures y materials entre models de toda la scene. Hacer esto reducirá drásticamente los draw calls y tu scene de Decentraland funcionará mucho más fluida.

La siguiente herramienta basada en [**glTF pipeline**](https://github.com/AnalyticalGraphicsInc/gltf-pipeline)**,** ofrece algunas optimizaciones que harán que los modelos 3D sean más ligeros y más rápidos de descargar para los players en tu 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)

Convierte el formato .gltf en .glb, que es binario y por eso ocupa mucho menos. También coloca los archivos de texture fuera del modelo 3D, lo que te permite usar la misma texture en múltiples models.

> 📔 Nota: el formato .glb por defecto siempre tiene las textures incrustadas en el archivo. El engine no puede reconocer dos textures incrustadas como si fueran la misma; necesitan ser archivos externos que compartan el mismo hash.

### Cómo usar GLB Texture Extractor

En este ejemplo de scene, tenemos una simple scene sci-fi en Blender.

![](https://1216664193-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 contiene el entorno base para los models estáticos, pero también hay otros dos assets: un droid y una spaceship que queremos exportar por separado para moverlos más tarde mediante código, de modo que puedan interactuar con los players. En este caso usamos 4 textures (una para el floor, un atlas de color para la mayoría de los assets, una emissive y una texture sci-fi de UI para los panels)

![](https://1216664193-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://1216664193-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)

Una vez exportamos todos estos assets a la carpeta de models tenemos 3 models: la scene estática del entorno, la spaceship y el droid.

![](https://1216664193-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)

Pero tenemos un problema: los archivos .glb tienen las textures incrustadas, así que si estás exportando distintos assets que reutilizan las textures, estas se duplicarán cada vez que haya un nuevo asset en la carpeta. Para evitar tener textures duplicadas podemos usar esta útil herramienta.

{% hint style="warning" %}
⚠️ NOTA IMPORTANTE: Antes de usar la herramienta haz una COPIA DE SEGURIDAD de tus models, ¡por si acaso algo sale mal!
{% endhint %}

**En Mac**

Una vez que hayas exportado todos los assets a tu carpeta de models, puedes arrastrar el archivo script hasta ella.

![](https://1216664193-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 - Abre la carpeta en el terminal arrastrando la carpeta hasta él.

![](https://1216664193-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 - Arrastra texture-extractor.sh al terminal.

![](https://1216664193-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 - Ejecuta el comando. Puede tardar unos segundos en procesar todos los assets. Después de eso, verás algo así:

![](https://1216664193-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 - Ve a tu carpeta de models y habrá una nueva carpeta llamada "out" en la que verás tus nuevos assets con las textures extraídas.

![](https://1216664193-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 - ¡Reemplaza todos los assets por los nuevos! Además, una vez que termines, borra "texture-extractor.sh" y la carpeta vacía "out".

![](https://1216664193-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)

**En Windows**

Una vez que hayas exportado todos los assets a tu carpeta de models, puedes arrastrar el archivo script dentro de ella.

![](https://1216664193-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 - Haz doble clic en glb\_texture\_extract.bat para extraer los archivos. Si Windows te advierte sobre una app no reconocida, ve a **Más información** y luego **Ejecutar de todos modos**.

![](https://1216664193-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://1216664193-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 - El script generará una carpeta llamada out, allí encontrarás todos los nuevos archivos .glb con sus textures extraídas.

![](https://1216664193-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 - Reemplaza todos los assets por los nuevos. Una vez terminado, elimina el script "texture-extractor.bat" y la carpeta vacía "out".

Si sigues todos los pasos, ¡tu scene será mucho más rápida ahora y los assets compartirán la misma texture! Cuando trabajamos con varios assets y scenes grandes, ¡la mejora es muy notable! Con esta herramienta puedes ahorrar bastantes megabytes de información.

{% hint style="warning" %}
⚠️ Después de completar este paso, es crucial comprobar que cada texture siga las pautas. Si las textures no siguen las pautas o son demasiado pesadas, optimízalas para que sean más ligeras antes de deployar. El tamaño de texture recomendado para scenes con buen rendimiento es 1024x1024. Comprueba también la resolución; las imágenes con más de 72 DPI afectarían al rendimiento y no harán que la imagen se vea mejor.
{% endhint %}

## Texture Atlas/ Trim Sheets

Un texture atlas es un solo archivo de imagen que contiene datos de varias imágenes más pequeñas empaquetadas juntas. En lugar de tener una texture para cada mesh, varios meshes comparten una texture más grande.

Puedes crear un texture atlas antes de hacer el asset, lo que significa que el asset se hace UV-unwrapped según el texture atlas. Esto requiere cierta planificación temprana al crear la texture.

Alternativamente, puedes crear el texture atlas después de terminar el asset fusionando textures en un software de pintura. Sin embargo, esto también significa que las UV islands deben reorganizarse según la texture.

A continuación hay una imagen que muestra varios objetos 3D que usan un solo conjunto de textures:

![](https://1216664193-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://1216664193-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)

Otra forma de hacer Atlases es usar Trim Sheets, una técnica común en modelado 3D y desarrollo de juegos que los grandes estudios y la industria del juego utilizan para asegurar coherencia visual y un flujo de trabajo artístico eficiente. Trim Sheets es el uso de una sola imagen o texture que contiene múltiples pequeños detalles o elementos que pueden aplicarse a distintas partes de un model. Esta técnica es muy útil al crear scenes grandes y debe considerarse en la primera etapa del flujo de trabajo de arte.

![](https://1216664193-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)

*Un ejemplo en collage de un Trim Sheet que usa una texture difusa, normal y emissive.*

Hay un gran [tutorial](https://www.artstation.com/blogs/jennifermcgarry/yd4Q/jenns-guide-to-trim-sheets) de [Jennifer McGarry](https://www.artstation.com/jennifermcgarry/blog) que explica el uso de Trim Sheets usando Blender.

## Nomenclatura de Textures

**Es crucial nombrar correctamente nuestras textures.** Tener una nomenclatura correcta para la texture:

* Haré que tu flujo de trabajo artístico sea más eficiente, flexible, organizado, fácil de localizar y modificar si es necesario.
* Evitará que se superpongan textures con el mismo nombre al usar el texture extractor u otras herramientas.
* Evitará problemas de superposición de textures al usar Asset Bundles.
* Una forma más eficiente de solucionar problemas en puntos críticos al analizar la scene.

**Cómo nombrar correctamente tus Textures:**

* **Nombre del asset** debe representar claramente qué es la texture.
* El nombre de las Textures debe comenzar con el prefijo `T_`.
* El nombre de la texture debe terminar con el sufijo que define el tipo de texture:
  * `_D` - **Diffuse/ Color Map**
  * `_A` - **Alpha Texture**
  * `_MT` - **Metallic**
  * `_R` - **Roughness**
  * `_N` **- Normal Map**
  * `_E` - **Emission**

Ejemplo: si es un diffuse map de textura de ladrillo para una pared, el nombre `T_BrickWall_D` podría ser adecuado. Si es un Normal Map del mismo asset, el nombre podría ser `T_BrickWall_N`

**Ejemplos:**

* 🟢 **Prefiere** comenzar el nombre de la texture con - `T_Parquet_D`, `T_Floor_R`, `T_Pipes_MT`,
* 🔴 **Evita** comenzar el nombre de la texture con - `Image_`, `sprite_`,`Untitled`

## Herramientas opcionales

Hay muchos addons y herramientas externas que facilitan el trabajo al crear assets para hacer el flujo de trabajo más rápido y eficiente; algunas son gratis y otras de pago, por nombrar algunas:

### UVTools

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

### Compresores de imágenes

Hay varios compresores de imágenes en línea que puedes usar para hacer tus textures más ligeras. Por nombrar algunos:

* **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-es/modelado-y-animaciones-3d/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.
