@treasuryspatial/viewer-kit 0.2.45 → 0.2.50

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 (68) hide show
  1. package/dist/autoGenerate.d.ts.map +1 -1
  2. package/dist/autoGenerate.js +7 -1
  3. package/dist/camera.d.ts +1 -0
  4. package/dist/camera.d.ts.map +1 -1
  5. package/dist/camera.js +8 -1
  6. package/dist/engine/ViewerEngine.d.ts +20 -0
  7. package/dist/engine/ViewerEngine.d.ts.map +1 -1
  8. package/dist/engine/ViewerEngine.js +254 -63
  9. package/dist/engine/types.d.ts +69 -3
  10. package/dist/engine/types.d.ts.map +1 -1
  11. package/dist/exports/download.d.ts +6 -0
  12. package/dist/exports/download.d.ts.map +1 -1
  13. package/dist/exports/download.js +142 -0
  14. package/dist/exports/three-export.d.ts +4 -1
  15. package/dist/exports/three-export.d.ts.map +1 -1
  16. package/dist/exports/three-export.js +138 -4
  17. package/dist/index.d.ts +13 -9
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +5 -4
  20. package/dist/materials/architectural.d.ts +3 -3
  21. package/dist/materials/architectural.d.ts.map +1 -1
  22. package/dist/materials/architectural.js +295 -37
  23. package/dist/materials/catalogue-data.d.ts +15 -0
  24. package/dist/materials/catalogue-data.d.ts.map +1 -1
  25. package/dist/materials/catalogue-data.js +16 -0
  26. package/dist/materials/presets.d.ts +15 -8
  27. package/dist/materials/presets.d.ts.map +1 -1
  28. package/dist/materials/presets.js +140 -39
  29. package/dist/materials/resolve.d.ts +42 -0
  30. package/dist/materials/resolve.d.ts.map +1 -1
  31. package/dist/materials/resolve.js +228 -13
  32. package/dist/materials/types.d.ts +32 -3
  33. package/dist/materials/types.d.ts.map +1 -1
  34. package/dist/presets/defaults.d.ts.map +1 -1
  35. package/dist/presets/defaults.js +17 -1
  36. package/dist/presets/sciencePresets.d.ts.map +1 -1
  37. package/dist/presets/sciencePresets.js +167 -50
  38. package/dist/scene.d.ts +28 -4
  39. package/dist/scene.d.ts.map +1 -1
  40. package/dist/scene.js +196 -31
  41. package/dist/sceneSemanticRegistry.d.ts +64 -0
  42. package/dist/sceneSemanticRegistry.d.ts.map +1 -0
  43. package/dist/sceneSemanticRegistry.js +199 -0
  44. package/dist/sky/scienceSky.d.ts.map +1 -1
  45. package/dist/sky/scienceSky.js +16 -0
  46. package/dist/systems/debugSystem.d.ts +24 -1
  47. package/dist/systems/debugSystem.d.ts.map +1 -1
  48. package/dist/systems/debugSystem.js +324 -77
  49. package/dist/systems/environmentSystem.d.ts +5 -4
  50. package/dist/systems/environmentSystem.d.ts.map +1 -1
  51. package/dist/systems/environmentSystem.js +138 -62
  52. package/dist/systems/lightingSystem.d.ts +10 -1
  53. package/dist/systems/lightingSystem.d.ts.map +1 -1
  54. package/dist/systems/lightingSystem.js +118 -17
  55. package/dist/systems/postfxSystem.d.ts +5 -1
  56. package/dist/systems/postfxSystem.d.ts.map +1 -1
  57. package/dist/systems/postfxSystem.js +84 -1
  58. package/dist/systems/rendererSystem.d.ts.map +1 -1
  59. package/dist/systems/rendererSystem.js +1 -0
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/dist/uploads/geometry3dm.d.ts.map +1 -1
  62. package/dist/uploads/geometry3dm.js +1 -0
  63. package/dist/uploads/grasshopper.d.ts.map +1 -1
  64. package/dist/uploads/grasshopper.js +63 -5
  65. package/dist/uploads/mesh.js +5 -5
  66. package/dist/uploads/types.d.ts +4 -0
  67. package/dist/uploads/types.d.ts.map +1 -1
  68. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/materials/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,GAAG,EAAE,iBAAiB,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,EAAE,qBAAqB,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/materials/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/presets/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,aA2C7B,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/presets/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,aA2D7B,CAAC"}
@@ -8,6 +8,7 @@ export const DEFAULT_PRESETS = {
8
8
  toneMappingExposure: 1.0,
9
9
  outputColorSpace: "srgb",
10
10
  maxPixelRatio: 1.75,
11
+ powerPreference: "high-performance",
11
12
  antialias: true,
12
13
  alpha: true,
13
14
  shadowMap: {
@@ -31,6 +32,7 @@ export const DEFAULT_PRESETS = {
31
32
  hemisphere: { skyColor: "#ffffff", groundColor: "#f4f4f4", intensity: 1.2 },
32
33
  key: { color: "#ffffff", intensity: 1.6, position: [10, 15, 5], castShadow: true },
33
34
  fill: { color: "#ffffff", intensity: 0.6, position: [-10, 10, -5] },
35
+ shadow: { autoFit: true, cameraSize: 25, near: 0.1, far: 60, bias: -0.0001, normalBias: 0.035, radius: 3 },
34
36
  },
35
37
  postfx: {
36
38
  ao: { enabled: false, intensity: 1.0, radius: 2.0, distanceFalloff: 1.0, halfRes: false },
@@ -38,8 +40,22 @@ export const DEFAULT_PRESETS = {
38
40
  sceneExtras: {
39
41
  grid: true,
40
42
  ground: true,
43
+ groundMode: "infinite",
44
+ gridMode: "infinite",
41
45
  axes: false,
42
- origin: true,
46
+ origin: false,
47
+ originHighlight: false,
48
+ groundColor: 0xf2f1ec,
49
+ gridColor: 0xd7d3ca,
50
+ gridColorSecondary: 0xe4e0d7,
51
+ gridUnit: 1,
52
+ gridMajorEvery: 5,
53
+ gridSuperMajorEvery: 10,
54
+ gridOpacity: 0.055,
55
+ gridMajorOpacity: 0.12,
56
+ gridSuperMajorOpacity: 0.2,
57
+ gridSize: 120,
58
+ gridHeightOffset: 0.035,
43
59
  },
44
60
  },
45
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sciencePresets.d.ts","sourceRoot":"","sources":["../../src/presets/sciencePresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAOd,MAAM,iBAAiB,CAAC;AAkgBzB,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAE3D,CAAC;AAEF,eAAO,MAAM,yBAAyB,kBAA6B,CAAC;AAEpE,wBAAgB,kBAAkB,IAAI,aAAa,CA6BlD;AAGD,eAAO,MAAM,mBAAmB,2BAAqB,CAAC;AAEtD,eAAO,MAAM,eAAe,eAAuB,CAAC"}
1
+ {"version":3,"file":"sciencePresets.d.ts","sourceRoot":"","sources":["../../src/presets/sciencePresets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAOd,MAAM,iBAAiB,CAAC;AA+nBzB,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAE3D,CAAC;AAEF,eAAO,MAAM,yBAAyB,kBAA6B,CAAC;AAEpE,wBAAgB,kBAAkB,IAAI,aAAa,CA6BlD;AAGD,eAAO,MAAM,mBAAmB,2BAAqB,CAAC;AAEtD,eAAO,MAAM,eAAe,eAAuB,CAAC"}
@@ -1,18 +1,26 @@
1
- import { BASELINE_MATERIAL_PRESET_ID } from "../materials/presets";
1
+ import { ARCHITECTURAL_WHITE_MATERIAL_PRESET_ID, MONOCHROME_CLAY_MATERIAL_PRESET_ID, } from "../materials/presets";
2
2
  const DEFAULT_LIGHTING_PRESET_ID = "architectural";
3
3
  const DEFAULT_ENVIRONMENT_PRESET_ID = "architectural";
4
4
  const DEFAULT_SCENE_EXTRAS = {
5
5
  ground: true,
6
+ groundMode: "infinite",
7
+ gridMode: "infinite",
6
8
  grid: true,
7
- axes: true,
8
- origin: true,
9
- gridOpacity: 0.12,
10
- gridDivisions: 80,
11
- gridSize: 80,
9
+ axes: false,
10
+ origin: false,
11
+ gridUnit: 1,
12
+ gridMajorEvery: 5,
13
+ gridSuperMajorEvery: 10,
14
+ gridOpacity: 0.055,
15
+ gridMajorOpacity: 0.12,
16
+ gridSuperMajorOpacity: 0.2,
17
+ gridSize: 120,
18
+ gridPlane: "floor",
19
+ gridHeightOffset: 0.035,
12
20
  groundRoughness: 0.8,
13
21
  groundMetalness: 0.05,
14
22
  lightTarget: [0, 1.5, 0],
15
- originHighlight: true,
23
+ originHighlight: false,
16
24
  originLineColor: 0x94a3b8,
17
25
  originLineLength: 40,
18
26
  originLineThickness: 0.06,
@@ -27,23 +35,66 @@ const DEFAULT_SCENE_EXTRAS = {
27
35
  const PRESET_SCENE_EXTRAS = {
28
36
  architectural: {
29
37
  ground: true,
38
+ groundMode: "infinite",
30
39
  grid: true,
31
- axes: true,
32
- origin: true,
33
- groundColor: 0xf5f5f5,
34
- groundRoughness: 0.75,
40
+ axes: false,
41
+ origin: false,
42
+ groundColor: 0xf2f1ec,
43
+ groundRoughness: 0.82,
35
44
  groundMetalness: 0.0,
36
- gridColor: 0xdedede,
37
- gridColorSecondary: 0xeaeaea,
38
- gridOpacity: 0.12,
39
- gridDivisions: 100,
40
- gridSize: 100,
41
- gridHeightOffset: 0.09,
45
+ gridColor: 0xd7d3ca,
46
+ gridColorSecondary: 0xe4e0d7,
47
+ gridOpacity: 0.055,
48
+ gridMajorOpacity: 0.12,
49
+ gridSuperMajorOpacity: 0.2,
50
+ gridSize: 120,
51
+ gridHeightOffset: 0.035,
52
+ },
53
+ "monochrome-clay": {
54
+ ground: true,
55
+ groundMode: "infinite",
56
+ grid: true,
57
+ axes: false,
58
+ origin: false,
59
+ groundColor: 0xefeee8,
60
+ groundRoughness: 0.86,
61
+ groundMetalness: 0.0,
62
+ gridColor: 0xd8d5cc,
63
+ gridColorSecondary: 0xe5e2da,
64
+ gridOpacity: 0.05,
65
+ gridMajorOpacity: 0.11,
66
+ gridSuperMajorOpacity: 0.18,
67
+ gridSize: 120,
68
+ gridHeightOffset: 0.035,
69
+ outline: false,
70
+ },
71
+ "outline-monochrome": {
72
+ ground: true,
73
+ groundMode: "infinite",
74
+ grid: true,
75
+ axes: false,
76
+ origin: false,
77
+ groundColor: 0xf3f2ed,
78
+ groundRoughness: 0.88,
79
+ groundMetalness: 0.0,
80
+ gridColor: 0xd6d2c8,
81
+ gridColorSecondary: 0xe7e3da,
82
+ gridOpacity: 0.045,
83
+ gridMajorOpacity: 0.105,
84
+ gridSuperMajorOpacity: 0.17,
85
+ gridSize: 120,
86
+ gridHeightOffset: 0.035,
87
+ outline: true,
88
+ outlineColor: 0x1f2937,
89
+ outlineOpacity: 0.34,
90
+ outlineThresholdAngle: 32,
91
+ outlineDepthTest: true,
42
92
  },
43
93
  studio: {
44
94
  ground: true,
95
+ groundMode: "infinite",
45
96
  grid: true,
46
- axes: true,
97
+ axes: false,
47
98
  origin: false,
48
99
  groundColor: 0x1f2024,
49
100
  groundRoughness: 0.9,
@@ -53,9 +104,10 @@ const PRESET_SCENE_EXTRAS = {
53
104
  },
54
105
  daylight: {
55
106
  ground: true,
107
+ groundMode: "infinite",
56
108
  grid: true,
57
- axes: true,
58
- origin: true,
109
+ axes: false,
110
+ origin: false,
59
111
  groundColor: 0xe2d5c2,
60
112
  groundRoughness: 0.7,
61
113
  groundMetalness: 0.04,
@@ -64,8 +116,9 @@ const PRESET_SCENE_EXTRAS = {
64
116
  },
65
117
  "gallery-spot": {
66
118
  ground: true,
119
+ groundMode: "infinite",
67
120
  grid: true,
68
- axes: true,
121
+ axes: false,
69
122
  origin: false,
70
123
  groundColor: 0x131419,
71
124
  groundRoughness: 0.85,
@@ -76,9 +129,10 @@ const PRESET_SCENE_EXTRAS = {
76
129
  },
77
130
  "lab-neutral": {
78
131
  ground: true,
132
+ groundMode: "infinite",
79
133
  grid: true,
80
- axes: true,
81
- origin: true,
134
+ axes: false,
135
+ origin: false,
82
136
  groundColor: 0xf4f5f7,
83
137
  groundRoughness: 0.78,
84
138
  groundMetalness: 0.03,
@@ -87,8 +141,9 @@ const PRESET_SCENE_EXTRAS = {
87
141
  },
88
142
  "atrium-suntrack": {
89
143
  ground: true,
144
+ groundMode: "infinite",
90
145
  grid: true,
91
- axes: true,
146
+ axes: false,
92
147
  origin: false,
93
148
  groundColor: 0xe3c7a4,
94
149
  groundRoughness: 0.72,
@@ -98,8 +153,9 @@ const PRESET_SCENE_EXTRAS = {
98
153
  },
99
154
  "flow-horizon": {
100
155
  ground: true,
156
+ groundMode: "infinite",
101
157
  grid: true,
102
- axes: true,
158
+ axes: false,
103
159
  origin: false,
104
160
  groundColor: 0x1c212f,
105
161
  groundRoughness: 0.82,
@@ -111,9 +167,10 @@ const PRESET_SCENE_EXTRAS = {
111
167
  },
112
168
  "biophilic-soft": {
113
169
  ground: true,
170
+ groundMode: "infinite",
114
171
  grid: true,
115
- axes: true,
116
- origin: true,
172
+ axes: false,
173
+ origin: false,
117
174
  groundColor: 0xcad8c9,
118
175
  groundRoughness: 0.78,
119
176
  groundMetalness: 0.02,
@@ -124,6 +181,8 @@ const PRESET_SCENE_EXTRAS = {
124
181
  };
125
182
  const PRESET_SKY_OVERRIDES = {
126
183
  architectural: { mode: "gradient" },
184
+ "monochrome-clay": { mode: "gradient" },
185
+ "outline-monochrome": { mode: "gradient" },
127
186
  studio: { mode: "gradient" },
128
187
  daylight: { mode: "gradient" },
129
188
  "gallery-spot": { mode: "gradient" },
@@ -139,7 +198,9 @@ const DEFAULT_INTERIOR_LIGHTS = [
139
198
  { position: [-4, 2.5, -4], intensity: 0.55, distance: 25, color: COOL_WHITE },
140
199
  ];
141
200
  const PRESET_MATERIAL_OVERRIDES = {
142
- architectural: BASELINE_MATERIAL_PRESET_ID,
201
+ architectural: ARCHITECTURAL_WHITE_MATERIAL_PRESET_ID,
202
+ "monochrome-clay": MONOCHROME_CLAY_MATERIAL_PRESET_ID,
203
+ "outline-monochrome": MONOCHROME_CLAY_MATERIAL_PRESET_ID,
143
204
  studio: "studio",
144
205
  daylight: "daylight",
145
206
  "gallery-spot": "gallery-spot",
@@ -152,18 +213,51 @@ const LIGHTING_PRESET_DATA = {
152
213
  architectural: {
153
214
  id: "architectural",
154
215
  label: "architectural white",
155
- description: "bright diffuse envelope with matte walls and calibrated AO",
156
- includeInteriorLights: true,
216
+ description: "neutral off-axis daylight with balanced fill, no cast shadows, and controlled AO for clean architectural reading",
217
+ includeInteriorLights: false,
157
218
  config: {
158
219
  background: 0xffffff,
159
- ambient: { color: 0xf5fbff, intensity: 1.0 },
160
- hemisphere: { sky: 0xf8fbff, ground: 0xf1f4f8, intensity: 1.3 },
161
- key: { color: 0xf8fcff, intensity: 2.0, position: [10, 15, 5] },
162
- fill: { color: 0xeaf2ff, intensity: 0.85, position: [-10, 10, -5] },
163
- shadows: true,
164
- shadow: { cameraSize: 28, near: 0.5, far: 80, bias: -0.00008, radius: 2.5 },
165
- ao: { enabled: true, intensity: 2.5, radius: 4.0, distanceFalloff: 1.0, halfRes: false },
166
- toneMappingExposure: 1.05,
220
+ ambient: { color: 0xfffcf6, intensity: 0.9 },
221
+ hemisphere: { sky: 0xf4f7fb, ground: 0xd4d0c8, intensity: 0.75 },
222
+ key: { color: 0xfff7ed, intensity: 1.55, position: [18, 24, 16] },
223
+ fill: { color: 0xdcecff, intensity: 0.65, position: [-10, 10, -8] },
224
+ shadows: false,
225
+ ao: { enabled: true, intensity: 1.25, radius: 1.6, distanceFalloff: 0.85, halfRes: false },
226
+ toneMappingExposure: 1.03,
227
+ },
228
+ },
229
+ "monochrome-clay": {
230
+ id: "monochrome-clay",
231
+ label: "monochrome clay",
232
+ description: "stable Rhino-style clay/white model view with soft AO, finite ground, and no outline overlay",
233
+ includeInteriorLights: false,
234
+ config: {
235
+ background: 0xf7f6f1,
236
+ ambient: { color: 0xffffff, intensity: 0.95 },
237
+ hemisphere: { sky: 0xf7f8fb, ground: 0xdedbd2, intensity: 0.82 },
238
+ key: { color: 0xfffbf2, intensity: 1.35, position: [16, 22, 14] },
239
+ fill: { color: 0xe7f0ff, intensity: 0.55, position: [-10, 8, -8] },
240
+ shadows: false,
241
+ shadow: { autoFit: true, cameraSize: 28, near: 0.2, far: 120, bias: -0.00008, normalBias: 0.035, radius: 2.5, mapSize: 1024 },
242
+ ao: { enabled: true, intensity: 1.35, radius: 1.35, distanceFalloff: 0.9, halfRes: false },
243
+ toneMappingExposure: 1.0,
244
+ },
245
+ },
246
+ "outline-monochrome": {
247
+ id: "outline-monochrome",
248
+ label: "outline monochrome",
249
+ description: "monochrome model inspection view with edge overlay for reading segmented meshes and apertures",
250
+ includeInteriorLights: false,
251
+ config: {
252
+ background: 0xf8f7f2,
253
+ ambient: { color: 0xffffff, intensity: 0.98 },
254
+ hemisphere: { sky: 0xf8f9fb, ground: 0xdedbd2, intensity: 0.86 },
255
+ key: { color: 0xfffbf2, intensity: 1.32, position: [16, 22, 14] },
256
+ fill: { color: 0xe7f0ff, intensity: 0.56, position: [-10, 8, -8] },
257
+ shadows: false,
258
+ shadow: { autoFit: true, cameraSize: 28, near: 0.2, far: 120, bias: -0.00008, normalBias: 0.035, radius: 2.5, mapSize: 1024 },
259
+ ao: { enabled: true, intensity: 1.25, radius: 1.2, distanceFalloff: 0.9, halfRes: false },
260
+ toneMappingExposure: 1.0,
167
261
  },
168
262
  },
169
263
  studio: {
@@ -178,7 +272,7 @@ const LIGHTING_PRESET_DATA = {
178
272
  key: { color: 0xffffff, intensity: 1.8, position: [12, 14, 8] },
179
273
  fill: { color: 0xffffff, intensity: 0.9, position: [-8, 6, -6] },
180
274
  shadows: true,
181
- shadow: { cameraSize: 24, near: 0.4, far: 70, bias: -0.00006, radius: 2 },
275
+ shadow: { autoFit: true, cameraSize: 24, near: 0.4, far: 70, bias: -0.00006, normalBias: 0.035, radius: 2 },
182
276
  ao: { enabled: true, intensity: 3.0, radius: 3.0, distanceFalloff: 1.2, halfRes: false },
183
277
  toneMappingExposure: 1.1,
184
278
  },
@@ -195,7 +289,7 @@ const LIGHTING_PRESET_DATA = {
195
289
  key: { color: 0xfff5e1, intensity: 2.0, position: [20, 30, 15] },
196
290
  fill: { color: 0xadd8e6, intensity: 0.3, position: [-5, 5, -10] },
197
291
  shadows: true,
198
- shadow: { cameraSize: 32, near: 0.5, far: 90, bias: -0.00008, radius: 2.8 },
292
+ shadow: { autoFit: true, cameraSize: 32, near: 0.5, far: 90, bias: -0.00008, normalBias: 0.04, radius: 2.8 },
199
293
  ao: { enabled: true, intensity: 1.8, radius: 3.5, distanceFalloff: 1.0, halfRes: true },
200
294
  toneMappingExposure: 1.2,
201
295
  },
@@ -212,7 +306,7 @@ const LIGHTING_PRESET_DATA = {
212
306
  key: { color: 0xfff1d6, intensity: 2.6, position: [6, 7, 2] },
213
307
  fill: { color: 0x4f5a6a, intensity: 0.9, position: [-4, 5, -3] },
214
308
  shadows: true,
215
- shadow: { cameraSize: 18, near: 0.3, far: 45, bias: -0.00002, radius: 1.5 },
309
+ shadow: { autoFit: true, cameraSize: 18, near: 0.3, far: 45, bias: -0.00002, normalBias: 0.025, radius: 1.5 },
216
310
  ao: { enabled: true, intensity: 3.2, radius: 3.2, distanceFalloff: 1.4, halfRes: false },
217
311
  toneMappingExposure: 1.15,
218
312
  },
@@ -229,7 +323,7 @@ const LIGHTING_PRESET_DATA = {
229
323
  key: { color: 0xf8fbff, intensity: 1.2, position: [8, 6, 4] },
230
324
  fill: { color: 0xebeff5, intensity: 0.9, position: [-6, 5, -4] },
231
325
  shadows: false,
232
- shadow: { cameraSize: 24, near: 0.5, far: 60, bias: -0.00005, radius: 2 },
326
+ shadow: { autoFit: true, cameraSize: 24, near: 0.5, far: 60, bias: -0.00005, normalBias: 0.035, radius: 2 },
233
327
  ao: { enabled: true, intensity: 1.2, radius: 2.5, distanceFalloff: 0.9, halfRes: true },
234
328
  toneMappingExposure: 0.95,
235
329
  },
@@ -246,7 +340,7 @@ const LIGHTING_PRESET_DATA = {
246
340
  key: { color: 0xfff1cc, intensity: 2.4, position: [0, 18, 0] },
247
341
  fill: { color: 0xd6e4f7, intensity: 0.6, position: [-10, 8, -5] },
248
342
  shadows: true,
249
- shadow: { cameraSize: 26, near: 0.4, far: 75, bias: -0.00004, radius: 2.3 },
343
+ shadow: { autoFit: true, cameraSize: 26, near: 0.4, far: 75, bias: -0.00004, normalBias: 0.035, radius: 2.3 },
250
344
  ao: { enabled: true, intensity: 2.2, radius: 3.8, distanceFalloff: 1.1, halfRes: false },
251
345
  toneMappingExposure: 1.08,
252
346
  },
@@ -263,7 +357,7 @@ const LIGHTING_PRESET_DATA = {
263
357
  key: { color: 0xffcba8, intensity: 2.2, position: [15, 6, -4] },
264
358
  fill: { color: 0x93b6ff, intensity: 0.7, position: [-10, 4, 6] },
265
359
  shadows: true,
266
- shadow: { cameraSize: 18, near: 0.3, far: 45, bias: -0.00002, radius: 1.4 },
360
+ shadow: { autoFit: true, cameraSize: 18, near: 0.3, far: 45, bias: -0.00002, normalBias: 0.03, radius: 1.4 },
267
361
  ao: { enabled: true, intensity: 2.6, radius: 3.0, distanceFalloff: 1.3, halfRes: false },
268
362
  toneMappingExposure: 1.05,
269
363
  },
@@ -280,7 +374,7 @@ const LIGHTING_PRESET_DATA = {
280
374
  key: { color: 0xffefd6, intensity: 1.9, position: [8, 9, 5] },
281
375
  fill: { color: 0xb7d7ff, intensity: 0.7, position: [-6, 6, -4] },
282
376
  shadows: true,
283
- shadow: { cameraSize: 24, near: 0.4, far: 65, bias: -0.00005, radius: 2.2 },
377
+ shadow: { autoFit: true, cameraSize: 24, near: 0.4, far: 65, bias: -0.00005, normalBias: 0.035, radius: 2.2 },
284
378
  ao: { enabled: true, intensity: 2.1, radius: 3.5, distanceFalloff: 1.05, halfRes: false },
285
379
  toneMappingExposure: 1.03,
286
380
  },
@@ -291,11 +385,31 @@ const ENVIRONMENT_PRESET_DATA = {
291
385
  id: "architectural",
292
386
  label: "architectural horizon",
293
387
  topColor: 0xffffff,
294
- horizonColor: 0xd8d8d8,
295
- sunPosition: [0.3, 0.8, 0.4],
296
- sunIntensity: 0.15,
388
+ horizonColor: 0xe5e1d8,
389
+ sunPosition: [0.35, 0.82, 0.35],
390
+ sunIntensity: 0.12,
297
391
  sunSize: 0.08,
298
- groundColor: 0xf5f5f5,
392
+ groundColor: 0xf2f1ec,
393
+ },
394
+ "monochrome-clay": {
395
+ id: "monochrome-clay",
396
+ label: "monochrome horizon",
397
+ topColor: 0xffffff,
398
+ horizonColor: 0xe9e6de,
399
+ sunPosition: [0.34, 0.82, 0.34],
400
+ sunIntensity: 0.1,
401
+ sunSize: 0.07,
402
+ groundColor: 0xefeee8,
403
+ },
404
+ "outline-monochrome": {
405
+ id: "outline-monochrome",
406
+ label: "outline horizon",
407
+ topColor: 0xffffff,
408
+ horizonColor: 0xe9e6de,
409
+ sunPosition: [0.34, 0.82, 0.34],
410
+ sunIntensity: 0.1,
411
+ sunSize: 0.07,
412
+ groundColor: 0xf3f2ed,
299
413
  },
300
414
  studio: {
301
415
  id: "studio",
@@ -407,12 +521,14 @@ const buildLightingRig = (preset) => ({
407
521
  color: colorToHex(preset.config.key.color),
408
522
  intensity: preset.config.key.intensity,
409
523
  position: preset.config.key.position,
524
+ positionMode: "target-offset",
410
525
  castShadow: preset.config.shadows,
411
526
  },
412
527
  fill: {
413
528
  color: colorToHex(preset.config.fill.color),
414
529
  intensity: preset.config.fill.intensity,
415
530
  position: preset.config.fill.position,
531
+ positionMode: "target-offset",
416
532
  },
417
533
  shadow: preset.config.shadow,
418
534
  });
@@ -421,6 +537,7 @@ const buildRendererConfig = (preset) => ({
421
537
  toneMappingExposure: preset.config.toneMappingExposure,
422
538
  outputColorSpace: "srgb",
423
539
  maxPixelRatio: 1.75,
540
+ powerPreference: "high-performance",
424
541
  antialias: true,
425
542
  shadowMap: {
426
543
  enabled: preset.config.shadows,
@@ -468,7 +585,7 @@ export function buildViewerPresets() {
468
585
  color: colorToHex(light.color ?? 0xffffff),
469
586
  }))
470
587
  : undefined,
471
- materialsPresetId: PRESET_MATERIAL_OVERRIDES[id] ?? BASELINE_MATERIAL_PRESET_ID,
588
+ materialsPresetId: PRESET_MATERIAL_OVERRIDES[id] ?? ARCHITECTURAL_WHITE_MATERIAL_PRESET_ID,
472
589
  };
473
590
  });
474
591
  return presets;
package/dist/scene.d.ts CHANGED
@@ -1,31 +1,55 @@
1
1
  import * as THREE from "three";
2
- import type { ViewerHandle } from "./engine/types";
2
+ import type { CameraKind, ViewerHandle } from "./engine/types";
3
3
  import type { CameraFrameConfig, CameraNormalizationConfig, CameraNormalizationResult } from "./camera";
4
- import type { MaterialsConfig } from "./materials/types";
4
+ import type { MaterialApplicationPolicy, MaterialsConfig } from "./materials/types";
5
5
  export type CameraRigConfig = CameraFrameConfig & CameraNormalizationConfig;
6
6
  export declare const DEFAULT_CAMERA_RIG: CameraRigConfig;
7
7
  export type SceneStats = {
8
8
  meshCount: number;
9
9
  vertexCount: number;
10
10
  triangleCount: number;
11
+ shadowCastingMeshCount: number;
12
+ shadowReceivingMeshCount: number;
11
13
  size: {
12
14
  x: number;
13
15
  y: number;
14
16
  z: number;
15
17
  };
16
18
  };
19
+ export type SceneClippingConfig = {
20
+ nearSafety?: number;
21
+ farSafety?: number;
22
+ minimumFar?: number;
23
+ };
24
+ export type ScenePresentationPolicy = {
25
+ kind?: "object3d" | "plan2d";
26
+ cameraKind?: CameraKind;
27
+ clipping?: SceneClippingConfig;
28
+ };
29
+ export declare const resolveSceneUnitScale: (units?: string | null) => number;
30
+ export declare const applyUnitScaleToGroup: (group?: THREE.Group | null, units?: string | null) => number;
17
31
  export declare function computeSceneStats(root?: THREE.Object3D | null): SceneStats;
18
- export declare const setCameraToBounds: (handle: ViewerHandle, bounds: THREE.Box3, config?: CameraFrameConfig) => void;
19
- export declare const setCameraTopDown: (handle: ViewerHandle, bounds: THREE.Box3) => void;
32
+ export declare const setCameraToBounds: (handle: ViewerHandle, bounds: THREE.Box3, config?: CameraFrameConfig, options?: {
33
+ kind?: CameraKind;
34
+ clipping?: SceneClippingConfig;
35
+ }) => void;
36
+ export declare const setCameraTopDown: (handle: ViewerHandle, bounds: THREE.Box3, options?: {
37
+ kind?: CameraKind;
38
+ clipping?: SceneClippingConfig;
39
+ }) => void;
20
40
  export type ApplyGroupToViewerOptions = {
21
41
  viewer?: ViewerHandle | null;
22
42
  group: THREE.Group;
23
43
  cameraRig?: CameraRigConfig;
44
+ preserveSceneAnchor?: boolean;
24
45
  viewMode?: "2d" | "3d" | "auto";
25
46
  frameConfig?: CameraFrameConfig;
47
+ presentation?: ScenePresentationPolicy;
26
48
  materialsConfig?: MaterialsConfig | null;
49
+ materialsPolicy?: MaterialApplicationPolicy;
27
50
  floorLevel?: number;
28
51
  ceilingHeight?: number;
52
+ preserveCamera?: boolean;
29
53
  };
30
54
  export type ApplyGroupToViewerResult = {
31
55
  bounds: THREE.Box3;
@@ -1 +1 @@
1
- {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAExG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,yBAAyB,CAAC;AAE5E,eAAO,MAAM,kBAAkB,EAAE,eAMhC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,UAAU,CA0C1E;AAED,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,YAAY,EACpB,QAAQ,KAAK,CAAC,IAAI,EAClB,SAAS,iBAAiB,SA0B3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,QAAQ,YAAY,EAAE,QAAQ,KAAK,CAAC,IAAI,SA0BxE,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IACnB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,aAAa,EAAE,yBAAyB,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,WAcrE,CAAC;AAyEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,UAAS,qBAA0B,SAYnG,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,GAAG,IAAI,CA2CjC"}
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"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"}