@base2datadesign/viewer-kit 0.1.2 → 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.
Files changed (41) hide show
  1. package/dist/engine/types.d.ts +64 -0
  2. package/dist/engine/types.d.ts.map +1 -1
  3. package/dist/index.d.ts +9 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +6 -0
  6. package/dist/materials/architectural.d.ts +6 -0
  7. package/dist/materials/architectural.d.ts.map +1 -0
  8. package/dist/materials/architectural.js +169 -0
  9. package/dist/materials/catalogue-data.d.ts +149 -0
  10. package/dist/materials/catalogue-data.d.ts.map +1 -0
  11. package/dist/materials/catalogue-data.js +158 -0
  12. package/dist/materials/catalogue.d.ts +5 -0
  13. package/dist/materials/catalogue.d.ts.map +1 -0
  14. package/dist/materials/catalogue.js +23 -0
  15. package/dist/materials/presets.d.ts +21 -0
  16. package/dist/materials/presets.d.ts.map +1 -0
  17. package/dist/materials/presets.js +217 -0
  18. package/dist/materials/renderMetadata.d.ts +15 -0
  19. package/dist/materials/renderMetadata.d.ts.map +1 -0
  20. package/dist/materials/renderMetadata.js +64 -0
  21. package/dist/materials/types.d.ts +50 -0
  22. package/dist/materials/types.d.ts.map +1 -0
  23. package/dist/materials/types.js +1 -0
  24. package/dist/presets/sciencePresets.d.ts +7 -0
  25. package/dist/presets/sciencePresets.d.ts.map +1 -0
  26. package/dist/presets/sciencePresets.js +473 -0
  27. package/dist/sky/scienceSky.d.ts +10 -0
  28. package/dist/sky/scienceSky.d.ts.map +1 -0
  29. package/dist/sky/scienceSky.js +68 -0
  30. package/dist/systems/debugSystem.d.ts.map +1 -1
  31. package/dist/systems/debugSystem.js +32 -9
  32. package/dist/systems/environmentSystem.d.ts +1 -0
  33. package/dist/systems/environmentSystem.d.ts.map +1 -1
  34. package/dist/systems/environmentSystem.js +19 -0
  35. package/dist/systems/lightingSystem.d.ts +1 -0
  36. package/dist/systems/lightingSystem.d.ts.map +1 -1
  37. package/dist/systems/lightingSystem.js +27 -0
  38. package/dist/systems/postfxSystem.d.ts +5 -0
  39. package/dist/systems/postfxSystem.d.ts.map +1 -1
  40. package/dist/systems/postfxSystem.js +57 -4
  41. package/package.json +1 -1
@@ -29,6 +29,11 @@ export type SkyHdrConfig = {
29
29
  src: string;
30
30
  exposure?: number;
31
31
  rotationY?: number;
32
+ rotation?: {
33
+ yaw?: number;
34
+ pitch?: number;
35
+ roll?: number;
36
+ };
32
37
  showBackground?: boolean;
33
38
  showLighting?: boolean;
34
39
  pmremResolution?: 256 | 512 | 1024;
@@ -43,6 +48,11 @@ export type SkyCubeConfig = {
43
48
  nz: string;
44
49
  exposure?: number;
45
50
  rotationY?: number;
51
+ rotation?: {
52
+ yaw?: number;
53
+ pitch?: number;
54
+ roll?: number;
55
+ };
46
56
  showBackground?: boolean;
47
57
  showLighting?: boolean;
48
58
  pmremResolution?: 256 | 512 | 1024;
@@ -82,6 +92,14 @@ export type LightingRigConfig = {
82
92
  intensity: number;
83
93
  position: [number, number, number];
84
94
  };
95
+ shadow?: {
96
+ cameraSize?: number;
97
+ near?: number;
98
+ far?: number;
99
+ bias?: number;
100
+ radius?: number;
101
+ mapSize?: number;
102
+ };
85
103
  };
86
104
  export type PostFxConfig = {
87
105
  ao?: {
@@ -91,19 +109,63 @@ export type PostFxConfig = {
91
109
  distanceFalloff?: number;
92
110
  halfRes?: boolean;
93
111
  };
112
+ bloom?: {
113
+ enabled: boolean;
114
+ intensity?: number;
115
+ radius?: number;
116
+ threshold?: number;
117
+ smoothing?: number;
118
+ };
119
+ vignette?: {
120
+ enabled: boolean;
121
+ offset?: number;
122
+ darkness?: number;
123
+ };
94
124
  };
95
125
  export type SceneExtrasConfig = {
96
126
  grid?: boolean;
97
127
  ground?: boolean;
98
128
  axes?: boolean;
99
129
  origin?: boolean;
130
+ lightTarget?: [number, number, number];
131
+ groundColor?: number;
132
+ groundRoughness?: number;
133
+ groundMetalness?: number;
134
+ groundSize?: number;
135
+ gridColor?: number;
136
+ gridColorSecondary?: number;
137
+ gridOpacity?: number;
138
+ gridDivisions?: number;
139
+ gridSize?: number;
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
+ };
152
+ originColor?: number;
153
+ originSize?: number;
154
+ axesPosition?: [number, number, number];
100
155
  };
101
156
  export type RenderPresetDefinition = {
102
157
  id: string;
103
158
  label?: string;
159
+ materialsPresetId?: string;
104
160
  renderer?: RendererConfig;
105
161
  sky?: SkyDefinition;
106
162
  lighting?: LightingRigConfig;
163
+ interiorLights?: Array<{
164
+ position: [number, number, number];
165
+ intensity: number;
166
+ color?: string;
167
+ distance?: number;
168
+ }>;
107
169
  postfx?: PostFxConfig;
108
170
  sceneExtras?: SceneExtrasConfig;
109
171
  };
@@ -123,6 +185,8 @@ export type ViewerSnapshot = {
123
185
  };
124
186
  postfx: {
125
187
  aoEnabled: boolean;
188
+ bloomEnabled: boolean;
189
+ vignetteEnabled: boolean;
126
190
  };
127
191
  };
128
192
  export type CameraState = {
@@ -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
- export type { ViewerCreateOptions, ViewerHandle, ViewerSnapshot, CameraState, RenderPresetDefinition, PresetCatalog, } from "./engine/types";
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,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"}