Get Lifetime Access And Unlock All Stylised Packs Today!Claim Deal - Just $69!
Asset packs

Configurator packs: swapping material zones

Discover named materials in a configurator GLB and recolour individual product zones safely at runtime.

AP
Aron Prins
Founder · Updated Aug 11, 2026 · 2 min read
On this page (5)

Configurator GLBs expose separate named materials for areas such as body, doors, handle, or trim. Changing one material updates that zone without rebuilding the model. Zone names and availability vary by asset, so use the downloaded component or README as the authority.

Inspect the available zones#

With React Three Fiber, useGLTF exposes the materials by name:

inspect-zones.tsx
// In the bundle this file lives at glb/configurator/fridge_freezer.glb
const { materials } = useGLTF('/glb/configurator/fridge_freezer.glb')

console.log(Object.keys(materials))
// Example: ['body', 'doors', 'handle', 'trim']

Configurator models sit in their own glb/configurator/ folder rather than at the pack root, so copy that folder into your public directory and load from wherever you put it. An included component may preload a flat path such as /fridge_freezer.glb, which assumes the file was copied to your public root; adjust the URL to match your own layout.

In packs that ship both an environment and a configurator version of the same product, the configurator component carries a Cfg suffix — FridgeUpright.tsx for the fixed-colour model, FridgeUprightCfg.tsx for the zoned one. Where a pack is configurator-only, the components use the plain name.

Current configurator source GLBs are commonly uncompressed and use material base colours rather than vertex colours. Check the specific file before assuming that no decoder or textures are required.

Recolour a zone#

Changing a cached material changes every model instance that shares it:

shared-colour.tsx
const { materials } = useGLTF('/glb/configurator/fridge_freezer.glb')

materials.body.color.set('#2f3b44')
materials.doors.color.set('#e7e2d6')
materials.handle.color.set('#b9944f')

That behaviour is useful when one configurator controls every instance. For independent instances, clone each material before changing it:

independent-colour.tsx
const { nodes, materials } = useGLTF('/glb/configurator/fridge_freezer.glb')
const bodyMaterial = useMemo(() => materials.body.clone(), [materials.body])

useEffect(() => {
  bodyMaterial.color.set(bodyColour)
}, [bodyMaterial, bodyColour])

return (
  <mesh
    geometry={nodes.fridge_freezer_body.geometry}
    material={bodyMaterial}
  />
)

Dispose cloned materials when the component unmounts if you create them outside React Three Fiber's normal disposal flow.

Components and pivots#

An included component may expose typed nodes and materials, or it may wrap the GLB more generally. Inspect the downloaded file for the exact API. Configurator pivots can differ from environment-asset pivots, so verify the model's origin before building a turntable or placement tool.

Rigged character packs apply the same idea to a person rather than a product, with zones such as skin, hair, and top_main driving colour. Their zone names are listed in that pack's README.

Preview the product#

Some configurator bundles include a showroom or inspector, but this is optional and its dependencies vary. Build customer-facing controls from the GLB's named materials rather than depending on the included preview page.

Next steps#

Still stuck?

Ask us directly — we answer support mail ourselves.

Contact support
Share
Configurator packs: swapping material zones — threejsassets.com