Matériaux
Introduction
Cette section explique comment utiliser les matériaux dans Studio.
Types de matériaux
Matériau ou matériau standard
Un matériau standard PBR.
Voir les propriétés ici.
Matériau non éclairé
Le matériau n'est pas affecté par l'éclairage ou les ombres. Les couleurs restent constantes, pas de prise en charge du rendu physique (PBR).
Voir les propriétés ici.
Propriétés des matériaux
Les matériaux peuvent être configurés soit par le biais du code, soit directement dans le composant Mesh de l'éditeur.
Configurer les matériaux par le code
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"
})
Charger une texture
Le chargement d'une texture nécessite un actif ou une url indépendante qui sert d'image. Vous pouvez consulter la section de l'API consacrée aux matériaux et aux matériaux non éclairés pour en savoir plus sur les différents types de cartes de texture pris en charge.
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)
})
}
})
Matériaux spéciaux
Matériau de l'ombre
Matériau qui ne rend que lorsqu'une ombre est projetée sur lui.
ecs.ShadowMaterial.set(world, component.eid, {r: 0, g: 250, b: 0, opacity: 1, side: 'front', depthTest: true, depthWrite: true})
Matériau du cache
Matériau qui cache les objets situés derrière lui.
ecs.HiderMaterial.set(world, component.eid)