Materials
Aprende qué propiedades de material y Textures se admiten en modelos 3D importados a Decentraland.
Los materials están incrustados en un archivo .gltf o .glb .
💡 Consejo: instala el plugin Decentraland Tools Blender plugin. Incluye varias funciones útiles para ayudarte a editar y exportar modelos 3D, wearables y emotes.
Este documento se refiere a los materials que se importan en un modelo 3D. Para los materials definidos mediante código para aplicarse sobre formas primitivas, consulta materials .
📔 Nota: actualmente no puedes cambiar dinámicamente los materials de un modelo 3D desde el código de tu scene, a menos que sea una forma primitiva.
Compatibilidad de shaders
No todos los shaders se pueden usar en modelos que se importan a Decentraland. Asegúrate de usar uno de los siguientes:
Standard materials: se admite cualquier shader, por ejemplo diffuse, specular, transparency, etc.
materials 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 textures. El modelo de la izquierda usa todos los PBR materials, algunos de ellos incluyen metalness, transparency, y emissiveness. El modelo de la derecha usa todos standard materials, algunos incluyen transparency y emissiveness.

Propiedades PBR que actualmente funcionan con Decentraland Engine
Color base
Metálico
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 materials, y cómo interactúan con las luces y el entorno del mundo.

Color base/diffuse
Define el color base de la superficie del objeto. Por sí solo no tiene ningún efecto por la iluminación, por eso se combina con otros nodos como roughness, metallic, specular, etc.
Metálico
Un shader metallic se refiere a un tipo de técnica de renderizado utilizada para simular la apariencia de superficies metálicas. Un shader metallic 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 materials roughness están relacionados con la simulación realista de cómo interactúa la luz con la superficie del material. Normalmente, los mapas de roughness se usan para dar a los modelos un rango de "suavidad" o "aspereza" en sus superficies. Normalmente se usa un mapa de textura con valores en escala de grises para proporcionar información de este tipo.

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 diffuse ni transmisión. En 0.0 el material consiste en una capa base diffuse o transmisiva, con una capa de reflexión specular encima.
Specular
En un shader de 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 specular es la reflexión de la luz similar a un espejo sobre una superficie. En PBR, esta propiedad se usa para controlar cuánta luz refleja una superficie de manera similar a un espejo. Los materials como los metales normalmente tienen una reflexión specular alta, creando brillos intensos y definidos, mientras que los materials no metálicos como los plásticos tienen una reflexión specular más baja, lo que da como resultado brillos más amplios y suaves.

Alpha
Puedes configurar un material para que sea transparente. Los materials 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 establece 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 de abajo muestra dos modelos idénticos creados con standard materials. El de la izquierda usa solo materials opacos; el de la derecha usa tanto materials transparentes como opacos en algunas de sus partes.
💡 Recuerda que usar materials transparentes siempre es más costoso en términos de rendimiento que los materials diffuse. Intenta siempre mantener los materials transparentes tan bajos como puedas.

Hay dos modos principales de transparencia diferentes: Alpha Clip y Alpha Blend. Las principales diferencias son:
Alpha Clip: Alpha Clip renderiza valores absolutos, 0 o 1, dados por un umbral de clip de un valor en escala de grises. El color anterior será sobrescrito por el color de la superficie, pero solo si el valor alpha está por encima del valor de 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 anterior.

🔥Consejo de optimización🔥 A menos que específicamente quieras poder tener un nivel intermedio de transparencia, siempre es más eficiente para Render usar _Alpha Clip** en lugar de **Alpha Blend_.
⚠️ Problemas de sorting
Cuando usas modos de mezcla transparentes en tu juego, es crucial considerar el orden en que ocurre 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 sorting por objeto, lo que significa que ordena automáticamente todas las superficies transparentes según el origen del objeto. Sin embargo, actualmente no se admite sorting por fragmento (pixel) ni sorting por triángulo.
Para evitar problemas relacionados con el sorting, es mejor evitar usar objetos con alpha clip y alpha blend en el mismo Mesh. 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 emisivo. Los materiales emisivos emiten su propia luz. Ten en cuenta que, al renderizarse, en realidad no iluminan los objetos cercanos en la scene; solo parece que tienen un resplandor difuminado a su alrededor.
La imagen de abajo muestra dos modelos idénticos creados con standard materials. El de la derecha tiene materiales emisivos brillantes en algunas de sus superficies.


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

Puedes comprobar en el testing world cómo se comporta la emission strength en el mundo
Normal
El nodo "normal" en un shader PBR es un componente fundamental utilizado 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 desempeñan un papel crucial para determinar cómo interactúa la luz con la superficie.

Vertex Painting
El Vertex Painting de modelos 3D no es actualmente compatible con el engine de Decentraland.
Limitaciones de Materials
Ten en cuenta que los límites de materials por parcel son:
log2(n+1) x 20 cantidad de materials en la scene. Incluye los materials importados como parte de los modelos.
Es importante tener en cuenta que cada material representa un draw call por objeto, por lo que es crucial mantener los materials al mínimo posible e intentar reutilizarlos tanto como sea posible usando técnicas como Texture Atlases. Esto también beneficiará a la scene al tener un estilo cohesivo entre los assets de tu scene.
Nomenclatura de Materials
Para tener un pipeline de arte organizado y saludable, recomendamos nombrar tus materials correctamente. Una forma de hacerlo es usando este método de convención.
Por ejemplo, supongamos que hicimos 2 árboles diferentes, uno que es emissive y brillante para primavera y otro frío y metallic para invierno. Podríamos nombrar los materials así: "TreeSpring_Emissive_MAT" y otro "TreeWinter_Metallic_MAT"
En conclusión,
🟢 Prefiere usar nombres que empiecen 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 scene y los modelos sean realmente difíciles de rastrear y analizar.
Sobrescribir materials de glTF
Puedes sobrescribir los materials de un modelo glTF usando el componente GltfNodeModifiers en el código de tu scene. Consulta Modificar materials de glTF para más detalles.
Buenas prácticas para Materials
Si tu scene incluye varios modelos que usan la misma texture, referencia la texture como un archivo externo en lugar de tenerla incrustada en el modelo 3D.
Las textures incrustadas se duplican para cada modelo y aumentan el tamaño de la scene. .glb los archivos tienen sus textures incrustadas por defecto, pero puedes usar glTF pipeline para extraerla fuera.
Nota: después de referenciar un archivo para una texture que no estará incrustada, 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 scene para que se suba junto con la scene.
Al establecer la transparencia de un material, intenta usar siempre Alpha clip en lugar de Alpha blend, a menos que específicamente necesites tener un material que sea 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 materials. Esto hará que tu scene tenga mejor rendimiento, dado que el engine solo va a renderizar la cara visible de tus modelos. Solo desactívalo backface culling en caso de que necesites que un modelo se renderice en ambos lados (por ejemplo, un grupo de hojas de un árbol hechas con planos 3D).

Usa las default textures de Decentraland, que ya están precargadas por los jugadores, haciendo que tus assets se rendericen mucho más rápido.
Lee este artículo para una descripción detallada de un pipeline de arte completo que usa textures PBR en modelos glTF.
Puedes encontrar una referencia detallada sobre cómo crear materials compatibles con glTF con Blender en la documentación de Blender .
Encuentra textures PBR gratuitas y de alta calidad en cgbookcase .
Última actualización