Materiales
Aprende qué propiedades de material y textures son compatibles en modelos 3D importados a Decentraland.
Los materiales están incrustados en un .gltf o .glb archivo.
Este documento se refiere a materiales que se importan en un modelo 3D. Para materiales definidos mediante código para aplicar sobre formas primitivas, vea materials .
📔 Nota: Actualmente no se pueden cambiar dinámicamente los materiales de un modelo 3D desde el código de tu escena, a menos que sea una forma primitiva.
Compatibilidad de shaders
No todos los shaders se pueden usar en modelos que se importan en Decentraland. Asegúrate de usar uno de los siguientes:
Materiales estándar: cualquier shader 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 un material interactúa con la luz.
La imagen a continuación 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 emissiveness. El modelo de la derecha utiliza todos los estándar materiales, algunos de ellos incluyen transparencia 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 mundo de pruebas para encontrar diferentes objetos y materiales y cómo interactúan con las luces y el entorno del mundo.

Base/Diffuse Color
Define el color base de la superficie del objeto. Por sí solo no tiene ninguna influencia en 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 cualidades brillantes y reflectantes características 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 una gama de "suavidad" o "rugosidad" en sus superficies. Normalmente se usa una textura 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 proporciona una reflexión totalmente especular 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.
Specular
En un shader Physically-Based Rendering (PBR), las propiedades specular 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 de manera especular. Materiales como los metales suelen tener una alta reflexión especular, creando brillos nítidos y brillantes, mientras que materiales no metálicos como los plásticos tienen una reflexión especular menor, resultando en brillos más amplios y suaves.

Alpha
Puedes configurar un material como transparent. Los materiales transparentes pueden verse a través en distintos grados, dependiendo de su alpha. Para hacer esto, activa la propiedad de transparencia del material y luego ajusta su alpha a la cantidad deseada. Un alpha de 1 hará que el material sea completamente opaco, un alpha de 0 lo hará invisible.
La imagen a continuación muestra dos modelos idénticos creados con materiales estándar. El de la izquierda usa solo materiales opacos, el de la derecha usa tanto materiales 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. Trata de mantener los materiales transparentes lo más bajos 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 encima del 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 final puede verse significativamente afectado 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 (pixel) 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 lo mejor posible.
Emissive
También puedes hacer que un material sea emissive. Los materiales emisivos emiten su propia luz. Ten en cuenta que al renderizarse, en realidad no iluminan los objetos cercanos en la escena, solo parecen tener un resplandor difuso alrededor.
La imagen a continuación 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 agrega un emission shader al material.
Emissive Strenght
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, que sea ‘shadeless’.

Puedes comprobar en el mundo de pruebas cómo se comporta la intensidad de 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á soportada actualmente 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 posible y tratar de reutilizarlos tanto como sea posible empleando técnicas como Texture Atlases; esto también beneficiará a la escena al tener un estilo cohesionado entre los assets de tu escena.
Nombrado de materiales
Para tener una pipeline de arte organizada y saludable recomendamos nombrar tus materiales correctamente. Una forma de hacerlo es usando este método de convención.
Por ejemplo, digamos 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 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 por 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 estará incrustada, asegúrate de que ese archivo no sea movido ni renombrado, 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 siempre usar Alpha clip en lugar de Alpha blend, a menos que necesites específicamente tener un material parcialmente transparente (como 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 solo renderizará la cara visible de tus modelos. Solo desactiva backface culling en caso de que necesites que un modelo se renderice por ambos lados (por ejemplo, un grupo de hojas de un árbol hechas con planos 3D).

Usa las default textures de Decentraland, que 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 pipeline 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