MaterialSpec.maps ​

Contract 2.0.0 · package sha256 a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e · generated from configurator-runtime.d.ts by services/onsite-scripter/scripts/build-contract-docs.mjs; edit the source, not this file.

Property of MaterialSpec · inherited by MaterialInput · stable · since 2.0.0

ts
maps?: Partial<Record<MapSlot, TextureSlot>>;

Per slot. Slots merge one by one: a slot left out keeps what is underneath, the GLB's map included, so a plain finish names every slot it turns off. An 'orm' texture also fills the occlusion, roughness and metallic channels its own layer leaves empty, over the maps underneath (MapSlot). Not for: a finish with no GLB map at all, which is a Material or { ref } that replaces the worn material (MaterialInput).

Default: {}

Example ​

Imports: values (has, validate, the Holo*Error classes, the pure helpers) from @holostep-configurators/runtime-client, types from @holostep-configurators/runtime-client/contract, /math and /testing names from those entries; boot from the runtime module the root's loadRuntimeAtFloor resolves to. A type your page defines is your app's: declare it there, never import it from the package.

Compiled under the contract's strict settings (examples/declaration/08-MaterialSpec.maps.ts):

ts
import type { Session } from '@holostep-configurators/runtime-client/contract';
declare const session: Session;
declare const signal: AbortSignal;
// a plain colour that keeps the GLB's normal and occlusion maps
await session.find({ slot: 'frame' }).set({
  material: {
    baseColor: '#2b2b2b',
    maps: {
      baseColor: 'none', metallic: 'none', roughness: 'none', orm: 'none', emissive: 'none',
      alpha: 'none', clearcoat: 'none', clearcoatRoughness: 'none', clearcoatNormal: 'none',
      sheenColor: 'none', sheenRoughness: 'none', specular: 'none', specularColor: 'none',
    },
  },
});

Generic-API test (spec 3.1) ​

Rule Result
1. Neutral name pass: maps names no product
2. A precedent pass: CSS cascade (ordered, persistent rules) (row G8); Blender Principled BSDF (Metallic, Roughness inputs) (row K16)
3. Two apps, or labs pass: 3 apps (ledger: app-e61a0b42ad, app-fc07850558, app-fc306ec3dc; fleet cross-check: app-fc07850558)
4. The cheaper fix first decided per need in Appendix B: rows G8, K16 at tier stable (a member only where no rule, data, asset or app code serves the need)