Skip to content
On this page

Materials

Material objects represent a material in a scene which are attached to mesh primitives. They define the appearance of a surface when rendered. This includes properties like color, texture, shininess, transparency, and more.

typescript
// Create a new Material object
const material = world.createMaterial({
  baseColorFactor: [1, 0, 0, 1], // aRGB Red color
  metallicFactor: 1, // Fully metallic
  roughnessFactor: 0, // Completely smooth
});

// You can then set the material of a MeshPrimitive
mesh.primitives[0].material = material;

Unlit and Lit Materials

In many 3D graphics systems, materials can be either "lit" or "unlit". Lit materials are affected by lights in the scene, while an unlit material is not. A lit material is created by calling world.createMaterial. To create unlit materials, world.createUnlitMaterial can be used.

typescript
// Create a new UnlitMaterial object
const material = world.createUnlitMaterial({
  baseColorFactor: [1, 1, 1, 1],
});

// The material will now not be affected by lights in the scene

Material Properties

Materials have many properties that can be used to control the appearance of a surface. Here are a few examples:

  • baseColorFactor: This is a Color object representing the base color of the material.
  • metallicFactor: This is a number representing the metallicness of the material.
  • roughnessFactor: This is a number representing the roughness of the material.
  • emissiveFactor: This is a Color object representing the color of the light emitted by the material.
typescript
// Create a new Material object
const material = world.createMaterial();

// Set some properties of the material
material.baseColorFactor = [1, 0, 0, 1]; // Red color
material.metallicFactor = 1; // Fully metallic
material.roughnessFactor = 0; // Completely smooth
material.emissiveFactor = [0, 0, 1, 1]; // Blue light