> 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/materials.md).

# Materiales

Aprende qué propiedades de material y texturas son compatibles con los modelos 3D importados a Decentraland.

Los materiales están incrustados en un *.gltf* o *.glb* thumbnail.png.

{% hint style="info" %}
**💡 Consejo**: Instala el [plugin 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 %}

Este documento se refiere a materiales que se importan en un modelo 3D. Para materiales definidos mediante código que se apliquen sobre formas primitivas, consulta [**materials**](https://docs.decentraland.org/creator/development-guide/materials/) .

{% hint style="warning" %}
**📔 Nota**: Actualmente no puedes cambiar dinámicamente los materiales de un modelo 3D desde el código de tu escena, a menos que se trate de una forma primitiva.
{% endhint %}

## Compatibilidad de Shader

No todos los shaders pueden usarse en modelos que se importan en Decentraland. Asegúrate de usar uno de los siguientes:

* **Materiales estándar:** se admiten todos los shaders, por ejemplo diffuse, specular, transparency, etc.
* **Materiales PBR (Physically Based Rendering)**: Este shader es más flexible, ya que incluye propiedades como diffuse, roughness, metalness y emission que te permiten configurar cómo interactúa un material con la luz.

La imagen de abajo muestra dos modelos idénticos, creados con los mismos colores y texturas. El modelo de la izquierda usa todos los *PBR* materiales, algunos de ellos incluyen *metalness*, *transparencia*, y *emisividad*. El modelo de la derecha usa todos los *estándar* materiales, algunos incluyendo *transparencia* y *emisividad*.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-738840e87d1016d69373d87362184c128540bb34%2F30-materials.png?alt=media\&token=95bf7877-e0b9-4633-8ea4-b05b0701cb84)

### Propiedades PBR que actualmente funcionan con Decentraland Engine

> * Color base
> * Metálico
> * Rugosidad
> * Especular
> * Emisivo
> * Intensidad de emisión
> * Alfa
> * Normal

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-4f7c30911e7f3f423d3bf4232caf391c4f3c21ea%2F60-principledBSDF.png?alt=media\&token=9b405e12-51d2-4624-bc81-e7bbcba52b04)

Para visualizar cómo se comportan estas propiedades en el world puedes ir a este [world de prueba](decentraland://?realm=TestEnvironment.dcl.eth) para encontrar distintos objetos y materiales y ver cómo interactúan con las luces y el entorno del world.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-59533ef54ae1e8b023b1aac7c29c2e946bee5c6c%2F55-testing-environment.png?alt=media\&token=c5a58e89-8858-44d4-9bf6-2020c2a865f2)

### Color base/difuso

Define el color base de la superficie del objeto. Por sí solo no recibe afectación por la iluminación, por eso se combina con otros nodos como roughness, metallic, specular, etc.

### Metálico

Un shader metálico se refiere a un tipo de técnica de renderizado usada para simular la apariencia de superficies metálicas. Un shader metálico tiene en cuenta las propiedades físicas de los metales y cómo interactúan con la luz para producir las cualidades brillantes y reflectantes características del metal.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-72df7dbe44a99add0601d2210ac6c8158cec7bd1%2F61-metallic-material.png?alt=media\&token=dbe9ebe8-ffe6-495c-b5b4-84f3476f99d2)

### Rugosidad

Los materiales de rugosidad están relacionados con la simulación realista de cómo la luz interactúa con la superficie del material. Normalmente los mapas de rugosidad se usan para dar a los modelos un rango de "suavidad" o "rugosidad" en sus superficies. Normalmente se usa un mapa de textura en escala de grises para proporcionar información de este tipo.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-9b8a24c451b1e14c95191185dccb686499f8a4ac%2F63-roughness.png?alt=media\&token=985a3a6a-48ca-49b9-95ec-29c3bb90c6f5)

Esta propiedad mezcla entre un modelo de material no metálico y uno metálico. Un valor de 1.0 da una reflexión especular totalmente teñida con el color base, sin reflexión difusa ni transmisión. En 0.0 el material consiste en una capa base difusa o transmisiva, con una capa de reflexión especular encima.

### Especular

En un shader Physically-Based Rendering (PBR), las propiedades especulares se refieren a cómo la luz interactúa con una superficie en términos de su reflectividad y brillo. La reflexión especular es la reflexión tipo espejo de la luz sobre una superficie. En PBR, esta propiedad se usa para controlar cuánta luz refleja una superficie de manera similar a un espejo. Materiales como los metales suelen tener una alta reflexión especular, creando resaltados nítidos y brillantes, mientras que los materiales no metálicos como los plásticos tienen una reflexión especular menor, lo que da como resultado resaltados más amplios y suaves.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-912bbeaffb8c4725d9f60b946fc7fe5775df37bb%2F62-specular.png?alt=media\&token=a4191c28-b26d-47e3-acd3-881bcbfe7932)

### Alfa

Puedes establecer un material como *transparente*. Los materiales transparentes pueden verse a través de ellos en distintos grados, dependiendo de su *alpha*. Para hacer esto, activa la propiedad de transparencia del material y luego establece su *alpha* al valor deseado. Un alpha de 1 hará que el material sea completamente opaco, un alpha de 0 lo hará invisible.

La imagen de abajo muestra dos modelos idénticos creados con materiales estándar. El de la izquierda usa solo materiales opacos, el de la derecha usa materiales transparentes y opacos en algunas de sus partes.

{% hint style="warning" %}
💡 Recuerda que usar materiales transparentes siempre es más costoso en términos de rendimiento que usar materiales difusos. Intenta mantener siempre los materiales transparentes lo más bajos posible.
{% endhint %}

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-694975c9963d924b8da300a18d8a47e2025e1fdb%2F31-transparent-materials.png?alt=media\&token=1e3e274e-aa56-42cb-ad6b-55aa737ce3fa)

Hay dos modos principales de transparencia distintos: *Alpha Clip* y *Alpha Blend*. Las diferencias principales son:

* **Alpha Clip:** Alpha Clip renderiza valores absolutos siendo 0 o 1 dado un umbral de recorte de un valor en escala de grises. El color anterior será sobrescrito por el color de la superficie, pero solo si el valor de alpha está por encima del valor de Clip Threshold.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-b8eaf93cbe426a7c331301aed0a8da693bae547c%2F33-alpha-clip.png?alt=media\&token=42ae0e0d-cfaf-4326-b977-96dad3aa0ae2)

* **Alpha Blend:** Alpha Blend interpola los valores entre 0 y 1. Puedes usar alpha blending para superponer el color de la superficie sobre el color anterior.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-87bb91f45cccee6600d3251887c7ae629b726336%2F34-alpha-blend.png?alt=media\&token=ceb355aa-473d-41d9-8b85-c592709dda6b)

{% hint style="warning" %}
**🔥Consejo de optimización🔥** A menos que específicamente quieras poder tener un nivel intermedio de transparencia, **siempre es más eficiente para el render usar \_Alpha Clip***\*\* en lugar de \*\****Alpha Blend**\_**.**
{% endhint %}

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

Cuando uses modos de mezcla transparentes en tu juego, es crucial considerar el orden en que se produce la mezcla de colores. Esto se debe a que el color final de salida puede verse significativamente afectado por el orden de mezcla. Actualmente, el engine solo admite ordenamiento por objeto, lo que significa que ordena automáticamente todas las superficies transparentes según el origen del objeto. Sin embargo, el ordenamiento por fragmento (pixel) y el ordenamiento por triángulo no están admitidos actualmente.

Para evitar problemas relacionados con el ordenamiento, lo mejor es evitar usar objetos con alpha clip y alpha blend en la misma mesh. Esto puede ayudar a prevenir artefactos de mezcla inesperados y garantizar que tu juego se vea lo mejor posible.
{% endhint %}

### Emisivo

También puedes hacer un material *emisivo*. Los materiales emisivos emiten su propia luz. Ten en cuenta que, al renderizarse, en realidad no iluminan los objetos cercanos de la escena, solo parecen tener un resplandor difuso a su alrededor.

La imagen de abajo muestra dos modelos idénticos creados con materiales estándar. El de la derecha tiene materiales emisivos brillantes en algunas de sus superficies.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-116cf9169c3fda356bf068bd4cab46462e0828fe%2F34-emissive-materials.png?alt=media\&token=f7d29865-054f-4af2-8332-921865b00577) ![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-bdb40cfa388909cc3ada13c89fff4b3aa9b5f46e%2F35-emissive-nodes.png?alt=media\&token=5981d050-b6c3-47a9-b245-63274e7489ed)

*Para hacer un material emisivo en Blender, simplemente añade un `shader de emisión` al material.*

### Intensidad emisiva

Fuerza de la luz emitida. Un valor de 1.0 garantizará que el objeto de la imagen tenga exactamente el mismo color que el Emission Color, es decir, que quede ‘sin sombreado’.

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-d7442e553d308821f6f2069fced7e8139a562396%2F52-emissive-materials.png?alt=media\&token=2f790c5f-b75f-45ad-afea-1c2d3cec2ef8)

*Puedes comprobar en el* [*world de prueba*](decentraland://?realm=TestEnvironment.dcl.eth) *cómo se comporta la intensidad de emisión en el world*

### Normal

El nodo "normal" en un shader PBR es un componente fundamental usado para controlar las normales de superficie de un material. Las normales son vectores que definen la dirección perpendicular a una superficie en un punto específico, y desempeñan un papel crucial a la hora de determinar cómo la luz interactúa con la superficie.

![](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)

## Pintura de vértices

La pintura de vértices de modelos 3D no está admitida actualmente por el engine de Decentraland.

## Limitaciones de materiales

Ten en cuenta que los límites de materiales por parcel son:

> log2(n+1) x 20 Cantidad de materiales en la escena. Incluye los materiales importados como parte de modelos.

Es importante tener en cuenta que cada material representa una draw call por objeto, así que es crucial mantener la cantidad de materiales lo más baja posible e intentar reutilizar materiales tanto como sea posible utilizando técnicas como Texture Atlases; esto también beneficiará a la escena al tener un estilo cohesivo entre los recursos de tu escena.

## Nomenclatura de materiales

Para tener un pipeline de arte organizado y saludable recomendamos nombrar tus materiales correctamente. Una forma de hacerlo es usando este método de convención.

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

Por ejemplo, supongamos que hicimos 2 árboles diferentes, uno que es emisivo y brillante para primavera y otro frío y metálico para invierno. Podríamos nombrar los materiales: *"TreeSpring\_Emissive\_MAT"* y otro *"TreeWinter\_Metallic\_MAT"*

En conclusión,

* 🟢 **Prefiere** usar nombres que comiencen con el objeto y la clasificación: *"Wood\_Oak\_MAT"*, *"SciFiFence\_Metallic\_MAT"*, etc.
* 🔴 **Evita** usar nombres como *"Material009"*, *"material1"*, lo que hace que sea realmente difícil seguir y analizar la escena y los modelos.

## Sobrescribir materiales glTF

Puedes sobrescribir los materiales de un *glTF* modelo usando el [GltfNodeModifiers](/creator/content-creator-es/scenes-sdk7/fundamentos-del-contenido-3d/materials.md#modify-gltf-materials) componente en el código de tu escena. Consulta [Modificar materiales glTF](/creator/content-creator-es/scenes-sdk7/fundamentos-del-contenido-3d/materials.md#modify-gltf-materials) para más detalles.

## Mejores prácticas para materiales

* Si tu escena incluye varios modelos que usan la misma textura, referencia la textura como un archivo externo en lugar de tenerla incrustada en el modelo 3D.

Las texturas incrustadas se duplican para cada modelo y aumentan el tamaño de la escena. *.glb* Los archivos tienen sus texturas incrustadas por defecto, pero puedes usar [**glTF pipeline**](https://github.com/AnalyticalGraphicsInc/gltf-pipeline) para extraerla fuera.

> Nota: Después de referenciar un archivo para una textura que no se incrustará, asegúrate de que ese archivo no se mueva ni se renombre, ya que de lo contrario se perderá la referencia al archivo. El archivo también debe estar dentro de la carpeta de la escena para que se suba junto con la escena.

* Al establecer la transparencia de un material, intenta usar siempre *Alpha clip* en lugar de *Alpha blend*, a menos que necesites específicamente tener un material parcialmente transparente (como el vidrio). Esto evitará problemas en los que el engine renderiza el modelo incorrecto delante del otro.
* Como regla general, recuerda establecer siempre *backface culling* en tus materiales. Esto hará que tu escena sea más eficiente, ya que el engine solo renderizará la cara visible de tus modelos. Desactívalo solo *backface culling* en caso de que necesites que un modelo se renderice por ambos lados (por ejemplo, un grupo de hojas de un árbol hecho con planos 3D).

![](https://1216664193-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoPnXBby9S6MrsW83Y9qZ%2Fuploads%2Fgit-blob-8039927ba106b4fd2df524ed0986d877aca0a70e%2F59-backface-culling.png?alt=media\&token=6d513fca-f727-4178-87c9-4efe7f0a26ed)

* Usa las texturas predeterminadas de Decentraland [**predeterminadas**](https://github.com/decentraland/builder-assets/tree/master/textures) , que ya están precargadas por los jugadores, haciendo que tus recursos se rendericen mucho más rápido.
* Lee [**este artículo**](https://www.khronos.org/blog/art-pipeline-for-gltf) para una descripción detallada de un pipeline artístico completo que usa texturas PBR en modelos glTF.
* Puedes encontrar una referencia detallada sobre cómo crear materiales compatibles con glTF con Blender en [**la documentación de Blender**](https://docs.blender.org/manual/en/latest/addons/import_export/scene_gltf2.html) .
* Encuentra texturas PBR gratuitas y de alta calidad en [**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 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/materials.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.
