Materiales
Introducción
En esta sección se explica cómo utilizar los materiales en Studio.
Tipos de material
Material o Material estándar
Un material estándar PBR.
Ver propiedades aquí.
Material no iluminado
El material no se ve afectado por la iluminación ni las sombras. El color se mantiene consistente, sin soporte para Physical Based Rendering (PBR).
Ver propiedades aquí.
Propiedades de los materiales
Los materiales pueden configurarse mediante código o directamente en el componente Malla del editor.
Configuración de materiales mediante código
ecs.Material.set(world, component.eid, {
r: 255,
g: 128,
b: 64,
roughness: 0.5,
metalness: 0.8,
opacity: 1.0,
side: "front"
})
ecs.UnlitMaterial.set(world, component.eid, {
r: 255,
g: 0,
b: 128,
opacity: 1.0,
side: "double"
})
Cargar una textura
Cargar una textura requiere un asset o una url independiente que sirva una imagen. Puedes visitar la sección de la API sobre Material y Material no iluminado para obtener más información sobre los distintos tipos de mapas de textura compatibles.
import * as ecs from '@8thwall/ecs'
ecs.registerComponent({
name: 'apply-texture-to-material',
schema: {
// @asset
myTexture: ecs.string,
},
add: (world, component) => {
const { myTexture } = component.schemaAttribute.get(component.eid)
ecs.assets.load({ url: myTexture })
.then((result) => {
ecs.Material.set(world, component.eid, {
r: 255,
g: 128,
b: 64,
textureSrc: `${result.remoteUrl}`,
roughness: 0.5,
metalness: 0.8,
opacity: 1.0,
side: "back"
})
})
.catch((error) => {
console.error('Failed to load texture:', error)
})
}
})
Materiales especiales
Material de sombra
Material que sólo se renderiza cuando se proyecta una sombra sobre él.
ecs.ShadowMaterial.set(world, component.eid, {r: 0, g: 250, b: 0, opacity: 1, side: 'front', depthTest: true, depthWrite: true})
Material del ocultador
Material que oculta cualquier objeto que se encuentre detrás de él.
ecs.HiderMaterial.set(world, component.eid)