@base2datadesign/viewer-kit 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -127,6 +127,7 @@ export type SceneExtrasConfig = {
127
127
  ground?: boolean;
128
128
  axes?: boolean;
129
129
  origin?: boolean;
130
+ lightTarget?: [number, number, number];
130
131
  groundColor?: number;
131
132
  groundRoughness?: number;
132
133
  groundMetalness?: number;
@@ -137,6 +138,17 @@ export type SceneExtrasConfig = {
137
138
  gridDivisions?: number;
138
139
  gridSize?: number;
139
140
  gridHeightOffset?: number;
141
+ originHighlight?: boolean;
142
+ originLineColor?: number;
143
+ originLineLength?: number;
144
+ originLineThickness?: number;
145
+ axisLabelScale?: number;
146
+ axesLabels?: {
147
+ lowerCase?: boolean;
148
+ upperCase?: boolean;
149
+ offset?: number;
150
+ secondaryOffset?: number;
151
+ };
140
152
  originColor?: number;
141
153
  originSize?: number;
142
154
  axesPosition?: [number, number, number];
@@ -144,6 +156,7 @@ export type SceneExtrasConfig = {
144
156
  export type RenderPresetDefinition = {
145
157
  id: string;
146
158
  label?: string;
159
+ materialsPresetId?: string;
147
160
  renderer?: RendererConfig;
148
161
  sky?: SkyDefinition;
149
162
  lighting?: LightingRigConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,12 @@
1
1
  export type { ViewerCreateOptions, ViewerHandle, ViewerSnapshot, CameraState, RenderPresetDefinition, PresetCatalog, LightingRigConfig, PostFxConfig, SceneExtrasConfig, SkyDefinition, SkyHdrConfig, SkyCubeConfig, } from "./engine/types";
2
2
  export { createViewer } from "./engine/createViewer";
3
3
  export { DEFAULT_PRESET_ID, DEFAULT_PRESETS } from "./presets/defaults";
4
+ export { SCIENCE_PRESETS, SCIENCE_PRESET_SUMMARIES, SCIENCE_DEFAULT_PRESET_ID, buildViewerPresets, buildSciencePresets, } from "./presets/sciencePresets";
5
+ export { listScienceSkyOptions, getScienceSkyOption } from "./sky/scienceSky";
6
+ export type { ScienceSkyOption } from "./sky/scienceSky";
7
+ export type { MaterialCatalogue, MaterialDefinition, MaterialId, MaterialColor, SurfaceMaterialConfig, MaterialsConfig, } from "./materials/types";
8
+ export { getMaterialCatalogue, findMaterial, listMaterialsByCategory } from "./materials/catalogue";
9
+ export { getRenderMaterialMetadata } from "./materials/renderMetadata";
10
+ export { BASELINE_MATERIAL_PRESET_ID, MATERIAL_PRESET_DATA, listMaterialPresets, getMaterialPreset, resolveMaterialSlot, resolveMaterialPresetMaterials, } from "./materials/presets";
11
+ export { applyMaterialsToGroup, buildSurfaceMaterial, buildCatalogMaterial } from "./materials/architectural";
4
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,8 @@
1
1
  export { createViewer } from "./engine/createViewer";
2
2
  export { DEFAULT_PRESET_ID, DEFAULT_PRESETS } from "./presets/defaults";
3
+ export { SCIENCE_PRESETS, SCIENCE_PRESET_SUMMARIES, SCIENCE_DEFAULT_PRESET_ID, buildViewerPresets, buildSciencePresets, } from "./presets/sciencePresets";
4
+ export { listScienceSkyOptions, getScienceSkyOption } from "./sky/scienceSky";
5
+ export { getMaterialCatalogue, findMaterial, listMaterialsByCategory } from "./materials/catalogue";
6
+ export { getRenderMaterialMetadata } from "./materials/renderMetadata";
7
+ export { BASELINE_MATERIAL_PRESET_ID, MATERIAL_PRESET_DATA, listMaterialPresets, getMaterialPreset, resolveMaterialSlot, resolveMaterialPresetMaterials, } from "./materials/presets";
8
+ export { applyMaterialsToGroup, buildSurfaceMaterial, buildCatalogMaterial } from "./materials/architectural";
@@ -0,0 +1,6 @@
1
+ import * as THREE from "three";
2
+ import type { MaterialId, MaterialsConfig, SurfaceMaterialConfig } from "./types";
3
+ export declare function buildSurfaceMaterial(surface: "walls" | "floor" | "ceiling", config: SurfaceMaterialConfig): THREE.MeshStandardMaterial;
4
+ export declare function buildCatalogMaterial(materialId: MaterialId, overrides?: Partial<SurfaceMaterialConfig>): THREE.MeshStandardMaterial;
5
+ export declare function applyMaterialsToGroup(group: THREE.Group, materialsConfig?: MaterialsConfig | null, floorLevel?: number, ceilingHeight?: number): void;
6
+ //# sourceMappingURL=architectural.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architectural.d.ts","sourceRoot":"","sources":["../../src/materials/architectural.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AA6GlF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,EAAE,MAAM,EAAE,qBAAqB,8BAEzG;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,8BAiBtG;AA4BD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,EACxC,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CA+BN"}
@@ -0,0 +1,169 @@
1
+ import * as THREE from "three";
2
+ import { findMaterial } from "./catalogue";
3
+ import { getRenderMaterialMetadata } from "./renderMetadata";
4
+ const clamp01 = (value) => Math.min(Math.max(value, 0), 1);
5
+ const colorFromRGB = (rgb) => new THREE.Color(rgb.r / 255, rgb.g / 255, rgb.b / 255);
6
+ const textureLoader = new THREE.TextureLoader();
7
+ const textureCache = new Map();
8
+ const loadTexture = (path, scale) => {
9
+ if (!path)
10
+ return undefined;
11
+ const cached = textureCache.get(path);
12
+ if (cached)
13
+ return cached;
14
+ const texture = textureLoader.load(path, () => {
15
+ texture.needsUpdate = true;
16
+ });
17
+ texture.wrapS = THREE.RepeatWrapping;
18
+ texture.wrapT = THREE.RepeatWrapping;
19
+ if (scale) {
20
+ texture.repeat.set(scale[0], scale[1]);
21
+ }
22
+ texture.flipY = false;
23
+ textureCache.set(path, texture);
24
+ return texture;
25
+ };
26
+ const applyTexturesToMaterial = (material, textures) => {
27
+ if (!textures)
28
+ return;
29
+ let changed = false;
30
+ if (textures.albedo) {
31
+ const map = loadTexture(textures.albedo, textures.scale);
32
+ if (map) {
33
+ map.colorSpace = THREE.SRGBColorSpace;
34
+ material.map = map;
35
+ changed = true;
36
+ }
37
+ }
38
+ if (textures.normal) {
39
+ const map = loadTexture(textures.normal, textures.scale);
40
+ if (map) {
41
+ map.colorSpace = THREE.LinearSRGBColorSpace;
42
+ material.normalMap = map;
43
+ changed = true;
44
+ }
45
+ }
46
+ if (textures.roughness) {
47
+ const map = loadTexture(textures.roughness, textures.scale);
48
+ if (map) {
49
+ map.colorSpace = THREE.LinearSRGBColorSpace;
50
+ material.roughnessMap = map;
51
+ changed = true;
52
+ }
53
+ }
54
+ if (textures.ao) {
55
+ const map = loadTexture(textures.ao, textures.scale);
56
+ if (map) {
57
+ map.colorSpace = THREE.LinearSRGBColorSpace;
58
+ material.aoMap = map;
59
+ changed = true;
60
+ }
61
+ }
62
+ if (changed) {
63
+ material.needsUpdate = true;
64
+ }
65
+ };
66
+ const buildMaterial = (surface, config) => {
67
+ const isCustom = config.type === "custom";
68
+ const catalogueMaterial = !isCustom ? findMaterial(config.type) : undefined;
69
+ const renderMetadata = !isCustom ? getRenderMaterialMetadata(config.type) : undefined;
70
+ const hasAlbedoTexture = Boolean(renderMetadata?.textures?.albedo) || Boolean(catalogueMaterial?.pbr?.texture);
71
+ const baseColor = catalogueMaterial && hasAlbedoTexture
72
+ ? new THREE.Color(catalogueMaterial.pbr.baseColor)
73
+ : colorFromRGB(config.color);
74
+ const material = new THREE.MeshStandardMaterial({
75
+ color: baseColor.clone(),
76
+ roughness: clamp01(config.roughness ?? catalogueMaterial?.pbr.roughness ?? 0.6),
77
+ metalness: clamp01(catalogueMaterial?.pbr.metalness ?? 0),
78
+ emissive: new THREE.Color(catalogueMaterial?.pbr.emissive ?? "#ffffff"),
79
+ emissiveIntensity: clamp01(catalogueMaterial?.pbr.emissiveIntensity ?? 0.05),
80
+ depthWrite: true,
81
+ depthTest: true,
82
+ side: THREE.DoubleSide,
83
+ });
84
+ material.envMapIntensity = clamp01(config.reflectance ?? 0.5);
85
+ if (catalogueMaterial?.pbr.transparent || typeof catalogueMaterial?.pbr.opacity === "number") {
86
+ material.transparent = catalogueMaterial?.pbr.transparent ?? true;
87
+ material.opacity = clamp01(catalogueMaterial?.pbr.opacity ?? 1);
88
+ material.depthWrite = false;
89
+ }
90
+ if (!isCustom) {
91
+ if (renderMetadata?.doubleSided === false) {
92
+ material.side = THREE.FrontSide;
93
+ }
94
+ applyTexturesToMaterial(material, renderMetadata?.textures);
95
+ }
96
+ material.name = `${surface}-material`;
97
+ return material;
98
+ };
99
+ export function buildSurfaceMaterial(surface, config) {
100
+ return buildMaterial(surface, config);
101
+ }
102
+ export function buildCatalogMaterial(materialId, overrides) {
103
+ const definition = findMaterial(materialId);
104
+ const fallbackColor = definition?.baseline?.color ?? "#ffffff";
105
+ const color = overrides?.color ?? {
106
+ r: parseInt(fallbackColor.slice(1, 3), 16),
107
+ g: parseInt(fallbackColor.slice(3, 5), 16),
108
+ b: parseInt(fallbackColor.slice(5, 7), 16),
109
+ };
110
+ const config = {
111
+ type: materialId,
112
+ color,
113
+ reflectance: overrides?.reflectance ?? 0.5,
114
+ roughness: overrides?.roughness ?? definition?.pbr?.roughness ?? 0.6,
115
+ pattern: overrides?.pattern,
116
+ patternScale: overrides?.patternScale,
117
+ };
118
+ return buildMaterial(materialId, config);
119
+ }
120
+ const classifySurfaceWorld = (bboxWorld, floorY, ceilingY) => {
121
+ const dx = bboxWorld.max.x - bboxWorld.min.x;
122
+ const dy = bboxWorld.max.y - bboxWorld.min.y;
123
+ const dz = bboxWorld.max.z - bboxWorld.min.z;
124
+ const centerY = (bboxWorld.min.y + bboxWorld.max.y) / 2;
125
+ const midY = (floorY + ceilingY) / 2;
126
+ const isBroadHorizontal = dy <= 0.35 && dx >= 0.8 && dz >= 0.8;
127
+ if (isBroadHorizontal) {
128
+ return centerY <= midY ? "floor" : "ceiling";
129
+ }
130
+ const isSlabLike = dy <= 1.0 && dx >= 0.8 && dz >= 0.8;
131
+ if (isSlabLike) {
132
+ if (bboxWorld.max.y <= floorY + 0.6)
133
+ return "floor";
134
+ if (bboxWorld.min.y >= ceilingY - 0.6)
135
+ return "ceiling";
136
+ return centerY <= midY ? "floor" : "ceiling";
137
+ }
138
+ return "walls";
139
+ };
140
+ export function applyMaterialsToGroup(group, materialsConfig, floorLevel, ceilingHeight) {
141
+ const floorY = typeof floorLevel === "number" ? floorLevel : 0;
142
+ const ceilingY = typeof ceilingHeight === "number" ? floorY + ceilingHeight : undefined;
143
+ const materialSet = materialsConfig
144
+ ? {
145
+ walls: buildSurfaceMaterial("walls", materialsConfig.walls),
146
+ floor: buildSurfaceMaterial("floor", materialsConfig.floor),
147
+ ceiling: buildSurfaceMaterial("ceiling", materialsConfig.ceiling),
148
+ }
149
+ : null;
150
+ group.updateMatrixWorld(true);
151
+ group.traverse((child) => {
152
+ if (!(child instanceof THREE.Mesh))
153
+ return;
154
+ child.castShadow = true;
155
+ child.receiveShadow = true;
156
+ child.geometry.computeBoundingBox();
157
+ const bbox = child.geometry.boundingBox;
158
+ const taggedMaterialId = typeof child.userData?.material === "string" ? child.userData.material : null;
159
+ if (taggedMaterialId && findMaterial(taggedMaterialId)) {
160
+ child.material = buildCatalogMaterial(taggedMaterialId);
161
+ }
162
+ else if (bbox && materialSet && typeof ceilingY === "number") {
163
+ const bboxWorld = bbox.clone().applyMatrix4(child.matrixWorld);
164
+ const surface = classifySurfaceWorld(bboxWorld, floorY, ceilingY);
165
+ child.material = materialSet[surface].clone();
166
+ }
167
+ child.geometry.computeVertexNormals();
168
+ });
169
+ }
@@ -0,0 +1,149 @@
1
+ export declare const MATERIAL_CATALOGUE: {
2
+ readonly version: 1;
3
+ readonly materials: readonly [{
4
+ readonly materialId: "white_wall";
5
+ readonly label: "white plaster wall";
6
+ readonly category: "walls";
7
+ readonly baseline: {
8
+ readonly color: "#F5F5F5";
9
+ readonly finish: "matte";
10
+ };
11
+ readonly pbr: {
12
+ readonly baseColor: "#FFFFFF";
13
+ readonly roughness: 0.65;
14
+ readonly metalness: 0;
15
+ readonly emissive: "#FFFFFF";
16
+ readonly emissiveIntensity: 0.05;
17
+ };
18
+ }, {
19
+ readonly materialId: "acoustic_ceiling_white";
20
+ readonly label: "acoustic ceiling tile";
21
+ readonly category: "ceiling";
22
+ readonly baseline: {
23
+ readonly color: "#FAFAFA";
24
+ readonly finish: "matte";
25
+ };
26
+ readonly pbr: {
27
+ readonly baseColor: "#F8F8F8";
28
+ readonly roughness: 0.7;
29
+ readonly metalness: 0;
30
+ readonly emissive: "#FFFFFF";
31
+ readonly emissiveIntensity: 0.04;
32
+ };
33
+ }, {
34
+ readonly materialId: "timber_floor_warm";
35
+ readonly label: "warm timber floor";
36
+ readonly category: "floor";
37
+ readonly baseline: {
38
+ readonly color: "#B9854A";
39
+ readonly finish: "semi_gloss";
40
+ };
41
+ readonly pbr: {
42
+ readonly baseColor: "#B27943";
43
+ readonly roughness: 0.45;
44
+ readonly metalness: 0;
45
+ readonly emissive: "#000000";
46
+ readonly emissiveIntensity: 0;
47
+ readonly texture: {
48
+ readonly type: "wood";
49
+ readonly scale: 1;
50
+ };
51
+ };
52
+ }, {
53
+ readonly materialId: "glazing_clear";
54
+ readonly label: "clear glazing";
55
+ readonly category: "apertures";
56
+ readonly baseline: {
57
+ readonly color: "#D8F0FF";
58
+ readonly finish: "glass";
59
+ };
60
+ readonly pbr: {
61
+ readonly baseColor: "#E0F5FF";
62
+ readonly roughness: 0.05;
63
+ readonly metalness: 0;
64
+ readonly opacity: 0.25;
65
+ readonly transparent: true;
66
+ readonly ior: 1.5;
67
+ readonly emissive: "#000000";
68
+ readonly emissiveIntensity: 0;
69
+ };
70
+ }, {
71
+ readonly materialId: "metal_trim_brushed";
72
+ readonly label: "brushed metal trim";
73
+ readonly category: "trim";
74
+ readonly baseline: {
75
+ readonly color: "#A0A5AE";
76
+ readonly finish: "metal";
77
+ };
78
+ readonly pbr: {
79
+ readonly baseColor: "#9DA3AE";
80
+ readonly roughness: 0.35;
81
+ readonly metalness: 0.9;
82
+ readonly emissive: "#000000";
83
+ readonly emissiveIntensity: 0;
84
+ };
85
+ }, {
86
+ readonly materialId: "concrete_charcoal";
87
+ readonly label: "charcoal architectural concrete";
88
+ readonly category: "walls";
89
+ readonly baseline: {
90
+ readonly color: "#30343A";
91
+ readonly finish: "matte";
92
+ };
93
+ readonly pbr: {
94
+ readonly baseColor: "#30343A";
95
+ readonly roughness: 0.5;
96
+ readonly metalness: 0.05;
97
+ readonly emissive: "#000000";
98
+ readonly emissiveIntensity: 0;
99
+ };
100
+ }, {
101
+ readonly materialId: "stone_dark";
102
+ readonly label: "dark graphite stone";
103
+ readonly category: "floor";
104
+ readonly baseline: {
105
+ readonly color: "#1C1F26";
106
+ readonly finish: "matte";
107
+ };
108
+ readonly pbr: {
109
+ readonly baseColor: "#1C1F26";
110
+ readonly roughness: 0.65;
111
+ readonly metalness: 0.02;
112
+ readonly emissive: "#000000";
113
+ readonly emissiveIntensity: 0;
114
+ };
115
+ }, {
116
+ readonly materialId: "stone_light";
117
+ readonly label: "light limestone";
118
+ readonly category: "floor";
119
+ readonly baseline: {
120
+ readonly color: "#D1C9BB";
121
+ readonly finish: "matte";
122
+ };
123
+ readonly pbr: {
124
+ readonly baseColor: "#D1C9BB";
125
+ readonly roughness: 0.6;
126
+ readonly metalness: 0.02;
127
+ readonly emissive: "#000000";
128
+ readonly emissiveIntensity: 0;
129
+ };
130
+ }, {
131
+ readonly materialId: "glass_structural_clear";
132
+ readonly label: "structural clear glass";
133
+ readonly category: "ceiling";
134
+ readonly baseline: {
135
+ readonly color: "#E6EEF5";
136
+ readonly finish: "gloss";
137
+ };
138
+ readonly pbr: {
139
+ readonly baseColor: "#E6EEF5";
140
+ readonly roughness: 0.05;
141
+ readonly metalness: 0;
142
+ readonly transparent: true;
143
+ readonly opacity: 0.22;
144
+ readonly emissive: "#000000";
145
+ readonly emissiveIntensity: 0;
146
+ };
147
+ }];
148
+ };
149
+ //# sourceMappingURL=catalogue-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogue-data.d.ts","sourceRoot":"","sources":["../../src/materials/catalogue-data.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6JrB,CAAC"}
@@ -0,0 +1,158 @@
1
+ export const MATERIAL_CATALOGUE = {
2
+ "version": 1,
3
+ "materials": [
4
+ {
5
+ "materialId": "white_wall",
6
+ "label": "white plaster wall",
7
+ "category": "walls",
8
+ "baseline": {
9
+ "color": "#F5F5F5",
10
+ "finish": "matte"
11
+ },
12
+ "pbr": {
13
+ "baseColor": "#FFFFFF",
14
+ "roughness": 0.65,
15
+ "metalness": 0.0,
16
+ "emissive": "#FFFFFF",
17
+ "emissiveIntensity": 0.05
18
+ }
19
+ },
20
+ {
21
+ "materialId": "acoustic_ceiling_white",
22
+ "label": "acoustic ceiling tile",
23
+ "category": "ceiling",
24
+ "baseline": {
25
+ "color": "#FAFAFA",
26
+ "finish": "matte"
27
+ },
28
+ "pbr": {
29
+ "baseColor": "#F8F8F8",
30
+ "roughness": 0.7,
31
+ "metalness": 0.0,
32
+ "emissive": "#FFFFFF",
33
+ "emissiveIntensity": 0.04
34
+ }
35
+ },
36
+ {
37
+ "materialId": "timber_floor_warm",
38
+ "label": "warm timber floor",
39
+ "category": "floor",
40
+ "baseline": {
41
+ "color": "#B9854A",
42
+ "finish": "semi_gloss"
43
+ },
44
+ "pbr": {
45
+ "baseColor": "#B27943",
46
+ "roughness": 0.45,
47
+ "metalness": 0.0,
48
+ "emissive": "#000000",
49
+ "emissiveIntensity": 0.0,
50
+ "texture": {
51
+ "type": "wood",
52
+ "scale": 1.0
53
+ }
54
+ }
55
+ },
56
+ {
57
+ "materialId": "glazing_clear",
58
+ "label": "clear glazing",
59
+ "category": "apertures",
60
+ "baseline": {
61
+ "color": "#D8F0FF",
62
+ "finish": "glass"
63
+ },
64
+ "pbr": {
65
+ "baseColor": "#E0F5FF",
66
+ "roughness": 0.05,
67
+ "metalness": 0.0,
68
+ "opacity": 0.25,
69
+ "transparent": true,
70
+ "ior": 1.5,
71
+ "emissive": "#000000",
72
+ "emissiveIntensity": 0.0
73
+ }
74
+ },
75
+ {
76
+ "materialId": "metal_trim_brushed",
77
+ "label": "brushed metal trim",
78
+ "category": "trim",
79
+ "baseline": {
80
+ "color": "#A0A5AE",
81
+ "finish": "metal"
82
+ },
83
+ "pbr": {
84
+ "baseColor": "#9DA3AE",
85
+ "roughness": 0.35,
86
+ "metalness": 0.9,
87
+ "emissive": "#000000",
88
+ "emissiveIntensity": 0.0
89
+ }
90
+ },
91
+ {
92
+ "materialId": "concrete_charcoal",
93
+ "label": "charcoal architectural concrete",
94
+ "category": "walls",
95
+ "baseline": {
96
+ "color": "#30343A",
97
+ "finish": "matte"
98
+ },
99
+ "pbr": {
100
+ "baseColor": "#30343A",
101
+ "roughness": 0.5,
102
+ "metalness": 0.05,
103
+ "emissive": "#000000",
104
+ "emissiveIntensity": 0.0
105
+ }
106
+ },
107
+ {
108
+ "materialId": "stone_dark",
109
+ "label": "dark graphite stone",
110
+ "category": "floor",
111
+ "baseline": {
112
+ "color": "#1C1F26",
113
+ "finish": "matte"
114
+ },
115
+ "pbr": {
116
+ "baseColor": "#1C1F26",
117
+ "roughness": 0.65,
118
+ "metalness": 0.02,
119
+ "emissive": "#000000",
120
+ "emissiveIntensity": 0.0
121
+ }
122
+ },
123
+ {
124
+ "materialId": "stone_light",
125
+ "label": "light limestone",
126
+ "category": "floor",
127
+ "baseline": {
128
+ "color": "#D1C9BB",
129
+ "finish": "matte"
130
+ },
131
+ "pbr": {
132
+ "baseColor": "#D1C9BB",
133
+ "roughness": 0.6,
134
+ "metalness": 0.02,
135
+ "emissive": "#000000",
136
+ "emissiveIntensity": 0.0
137
+ }
138
+ },
139
+ {
140
+ "materialId": "glass_structural_clear",
141
+ "label": "structural clear glass",
142
+ "category": "ceiling",
143
+ "baseline": {
144
+ "color": "#E6EEF5",
145
+ "finish": "gloss"
146
+ },
147
+ "pbr": {
148
+ "baseColor": "#E6EEF5",
149
+ "roughness": 0.05,
150
+ "metalness": 0.0,
151
+ "transparent": true,
152
+ "opacity": 0.22,
153
+ "emissive": "#000000",
154
+ "emissiveIntensity": 0.0
155
+ }
156
+ }
157
+ ]
158
+ };
@@ -0,0 +1,5 @@
1
+ import type { MaterialCatalogue, MaterialDefinition, MaterialId } from "./types";
2
+ export declare function getMaterialCatalogue(): MaterialCatalogue;
3
+ export declare function findMaterial(materialId: MaterialId): MaterialDefinition | undefined;
4
+ export declare function listMaterialsByCategory(category: string): MaterialDefinition[];
5
+ //# sourceMappingURL=catalogue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../src/materials/catalogue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKjF,wBAAgB,oBAAoB,IAAI,iBAAiB,CAUxD;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,kBAAkB,GAAG,SAAS,CAGnF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAG9E"}
@@ -0,0 +1,23 @@
1
+ import { MATERIAL_CATALOGUE } from "./catalogue-data";
2
+ let cachedCatalogue = null;
3
+ let logged = false;
4
+ export function getMaterialCatalogue() {
5
+ if (!cachedCatalogue) {
6
+ cachedCatalogue = MATERIAL_CATALOGUE;
7
+ if (process.env.NODE_ENV !== "production" && !logged) {
8
+ const count = cachedCatalogue.materials.length;
9
+ console.log(`[MaterialCatalogue] loaded ${count} calibrated materials (v${cachedCatalogue.version}).`);
10
+ logged = true;
11
+ }
12
+ }
13
+ return cachedCatalogue;
14
+ }
15
+ export function findMaterial(materialId) {
16
+ const catalogue = getMaterialCatalogue();
17
+ return catalogue.materials.find((material) => material.materialId === materialId);
18
+ }
19
+ export function listMaterialsByCategory(category) {
20
+ const catalogue = getMaterialCatalogue();
21
+ return catalogue.materials.filter((material) => material.category === category);
22
+ }
23
+ getMaterialCatalogue();
@@ -0,0 +1,21 @@
1
+ import type { MaterialId, MaterialsConfig, SurfaceMaterialConfig } from "./types";
2
+ export type MaterialSlotReference = {
3
+ catalogId: MaterialId;
4
+ overrides?: Partial<SurfaceMaterialConfig>;
5
+ };
6
+ export type MaterialPresetDefinition = {
7
+ id: string;
8
+ label: string;
9
+ materials: {
10
+ walls: MaterialSlotReference;
11
+ floor: MaterialSlotReference;
12
+ ceiling: MaterialSlotReference;
13
+ };
14
+ };
15
+ export declare const BASELINE_MATERIAL_PRESET_ID = "calenv-baseline";
16
+ export declare const MATERIAL_PRESET_DATA: Record<string, MaterialPresetDefinition>;
17
+ export declare function resolveMaterialSlot(slot: MaterialSlotReference): SurfaceMaterialConfig;
18
+ export declare function resolveMaterialPresetMaterials(preset: MaterialPresetDefinition): MaterialsConfig;
19
+ export declare function listMaterialPresets(): MaterialPresetDefinition[];
20
+ export declare function getMaterialPreset(id: string): MaterialPresetDefinition;
21
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/materials/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGlF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE;QACT,KAAK,EAAE,qBAAqB,CAAC;QAC7B,KAAK,EAAE,qBAAqB,CAAC;QAC7B,OAAO,EAAE,qBAAqB,CAAC;KAChC,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAO7D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAuKzE,CAAC;AA+BF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB,CAGtF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,wBAAwB,GAAG,eAAe,CAMhG;AAED,wBAAgB,mBAAmB,IAAI,wBAAwB,EAAE,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,wBAAwB,CAMtE"}