Materiales
Aprende qué propiedades de materiales y texturas son compatibles en modelos 3D importados a Decentraland.
Los materiales están incrustados en un .gltf u .glb archivo.
Este documento se refiere a materiales que se importan en un modelo 3D. Para materiales definidos mediante código para aplicar en formas primitivas, vea materials .
📔 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.
Compatibilidad de sombreadores
No todos los sombreadores se pueden usar en modelos que se importan en Decentraland. Asegúrate de usar uno de los siguientes:
Materiales estándar: cualquier sombreador es compatible, 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, transparency, y emissiveness. El modelo de la derecha usa todos los estándar materiales, algunos incluyendo transparency y emissiveness.

Propiedades PBR que actualmente funcionan con Decentraland Engine
Base Color
Metallic
Roughness
Specular
Emissive
Emission Strength
Alpha
Normal

Para visualizar cómo se comportan estas propiedades en el mundo puedes ir a este testing world para encontrar diferentes objetos y materiales y cómo interactúan con las luces y el entorno del mundo.

Color Base/Difuso
Define el color base de la superficie del objeto. Por sí solo no se ve afectado por la iluminación, por eso se combina con otros nodos como roughness, metallic, specular, etc.
Metallic
Un shader metallic se refiere a un tipo de técnica de renderizado utilizada para simular la apariencia de superficies metálicas. Un metallic shader tiene en cuenta las propiedades físicas de los metales y cómo interactúan con la luz para producir las características cualidades brillantes y reflectantes del metal.

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

Esta propiedad mezcla entre un modelo de material no metálico y metálico. Un valor de 1.0 da una reflexión completamente especular tintada con el color base, sin reflexión difusa ni transmisión. A 0.0 el material consiste en una capa base difusa o transmisiva, con una capa de reflexión especular encima.
Specular
En un shader 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 en una superficie. En PBR, esta propiedad se usa para controlar cuánto refleja una superficie la luz de forma espejo. Materiales como los metales típicamente tienen alta reflexión especular, creando reflejos agudos y brillantes, mientras que materiales no metálicos como los plásticos tienen menor reflexión especular, resultando en reflejos más amplios y suaves.

Alpha
Puedes configurar un material para que sea transparent. Los materiales transparentes se pueden ver a través en distintos grados, dependiendo de su alpha. Para hacerlo, activa la propiedad de transparencia del material y luego ajusta su alpha al nivel 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 tanto transparentes como opacos en algunas de sus partes.
💡 Recuerda que usar materiales transparentes siempre es más costoso en términos de rendimiento que los materiales diffuse. Procura mantener la cantidad de materiales transparentes lo más baja posible.

Hay dos modos principales de transparencia diferentes: Alpha Clip y Alpha Blend. Las principales diferencias 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 previo será sobrescrito por el color de la superficie, pero solo si el valor alpha está por encima del Clip Threshold.

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 previo.

🔥Consejo de optimización🔥 A menos que específicamente quieras tener un nivel intermedio de transparencia, siempre es más eficiente para el renderizado usar _Alpha Clip** en lugar de **Alpha Blend_.
⚠️ Problemas de ordenamiento
Cuando usas modos de mezcla transparentes en tu juego, es crucial considerar el orden en que tiene lugar la mezcla de colores. Esto se debe a que el color de salida final puede verse afectado significativamente por el orden de mezcla. Actualmente, el engine solo soporta 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 (píxel) y por triángulo no están soportados actualmente.
Para evitar problemas relacionados con el ordenamiento, es mejor evitar usar objetos con alpha clip y alpha blend en la misma malla. Esto puede ayudar a prevenir artefactos de mezcla inesperados y asegurar que tu juego se vea de la mejor manera.
Emissive
También puedes hacer que un material sea emissive. Los materiales emisivos emiten su propia luz. Ten en cuenta que al renderizar, en realidad no iluminan los objetos cercanos en la escena; simplemente parecen tener un resplandor difuso 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.


Para hacer un material emisivo en Blender, simplemente añade un emission shader al material.
Fuerza emisiva
Intensidad de la luz emitida. Un valor de 1.0 asegurará que el objeto en la imagen tenga exactamente el mismo color que el Emission Color, es decir, hacerlo 'shadeless'.

Puedes comprobar en el testing world cómo se comporta la intensidad de la emisión en el mundo
Normal
El nodo "normal" en un shader PBR es un componente fundamental usado para controlar las normales de la superficie de un material. Las normales son vectores que definen la dirección perpendicular a una superficie en un punto específico, y juegan un papel crucial en determinar cómo la luz interactúa con la superficie.

Vertex Painting
La pintura de vértices de modelos 3D no está actualmente soportada por el engine de Decentraland.
Limitaciones de materiales
Ten en cuenta que los límites de materiales por parcela son:
log2(n+1) x 20 Cantidad de materiales en la escena. Incluye materiales importados como parte de modelos.
Es importante tener en cuenta que cada material representa una draw call por objeto, por lo que es crucial mantener los materiales al mínimo y tratar de reutilizarlos tanto como sea posible usando técnicas como Texture Atlases; esto también beneficiará a la escena al tener un estilo cohesivo entre los assets de tu escena.
Nombrado de materiales
Para tener una canalización de arte organizada y saludable recomendamos nombrar tus materiales adecuadamente. Una forma de hacerlo es usando este método de convención.
Entonces por ejemplo, digamos que hicimos 2 árboles distintos, uno que es emisivo y brillante para la primavera y otro frío y metálico para el 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", que hacen que la escena y los modelos sean realmente difíciles de rastrear y analizar.
Sobrescribir materiales glTF
Puedes sobrescribir los materiales de un glTF modelo usando el componente GltfNodeModifiers en el código de tu escena. Ver Modificar materiales glTF para más detalles.
Mejores prácticas para materiales
Si tu escena incluye múltiples 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 para extraerlas fuera.
Nota: Después de referenciar un archivo para una textura que no se incrustará, asegúrate de que ese archivo no será movido ni renombrado, ya que de lo contrario la referencia al archivo se perderá. El archivo también debe estar dentro de la carpeta de la escena para que se suba junto con la escena.
Al configurar la transparencia de un material, intenta siempre usar Alpha clip en lugar de Alpha blend, a menos que necesites específicamente tener un material que sea parcialmente transparente (como el vidrio). Esto evitará problemas donde el engine renderice el modelo equivocado delante del otro.
Como regla general recuerda siempre activar backface culling en tus materiales. Esto hará que tu escena sea más performant dado que el engine renderizará solo la cara visible de tus modelos. Solo desactívalo backface culling en caso de que necesites que un modelo se renderice por ambos lados (por ejemplo, un conjunto de hojas de un árbol hechas con planos 3D).

Usa las default textures de Decentraland, las cuales son pre-cargadas por los jugadores, haciendo que tus assets se rendericen mucho más rápido.
Leer este artículo para una visión detallada de una canalización de arte completa que usa texturas PBR en modelos glTF.
Puedes encontrar una referencia detallada sobre cómo crear materiales compatibles con glTF en Blender en la documentación de Blender .
Encuentra texturas PBR gratuitas y de alta calidad en cgbookcase .
Última actualización