redhotmagma-visualization 1.41.0 → 1.42.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 (67) hide show
  1. package/AlignTargetProvider.js +50 -79
  2. package/CommonUtils/Deferred.js +11 -38
  3. package/CommonUtils/Observable.js +29 -48
  4. package/CommonUtils/PropertyObserver.js +10 -17
  5. package/CommonUtils/SyncCurrentFunction.js +33 -42
  6. package/CommonUtils/SyncObservableEvent.js +2 -6
  7. package/CommonUtils/pointerEvent.js +50 -98
  8. package/Constants.js +6 -6
  9. package/DevApp.js +187 -309
  10. package/ExposedModules.js +2 -9
  11. package/FallbackVisualization.js +4 -10
  12. package/PrintingEffects/ColorEmbossingEffect.js +15 -26
  13. package/PrintingEffects/DomingEffect.js +29 -52
  14. package/PrintingEffects/EmbossingEffect.js +17 -29
  15. package/PrintingEffects/EmbroideryEffect.js +251 -362
  16. package/PrintingEffects/EngravingEffect.js +17 -29
  17. package/PrintingEffects/PrintingEffects.js +44 -73
  18. package/PrintingEffects/PrintingEffectsUtils.js +1 -7
  19. package/React/ReactBase.js +15 -47
  20. package/Three/Controls/OrbitControls.js +105 -126
  21. package/Three/Exporters/glTFExporter.js +2 -6
  22. package/Three/Loaders/ColladaLoader.js +202 -550
  23. package/Three/Loaders/MTLLoader.js +33 -64
  24. package/Three/Loaders/OBJLoader.js +48 -80
  25. package/Three/Three2D.js +750 -1014
  26. package/Three/Three2DLayers.js +217 -341
  27. package/Three/Three3D.js +530 -800
  28. package/Three/Three3DScene.js +484 -780
  29. package/Three/ThreeBase.js +145 -230
  30. package/Utils/DesignArea/getDesignAreaCanvasSize.js +3 -11
  31. package/Utils/TextureBuilder/createTextureBuilder.js +133 -193
  32. package/Utils/TextureBuilder/textureBuilderFunctions.js +11 -27
  33. package/Utils/alignToElement.js +13 -24
  34. package/Utils/canvasBlur.js +27 -45
  35. package/Utils/createAlphaMapFromAlphaChannel.js +11 -21
  36. package/Utils/createBakedShadow.js +38 -42
  37. package/Utils/createCache.js +0 -4
  38. package/Utils/createCanvas.js +3 -9
  39. package/Utils/createImageRepository.js +63 -87
  40. package/Utils/disposeMaterial.js +4 -14
  41. package/Utils/getImageSize.js +1 -2
  42. package/Utils/imagePreloader.js +36 -48
  43. package/Utils/initTextureCanvas.js +6 -18
  44. package/Utils/isMobileDevice.js +3 -7
  45. package/Utils/optimizeTextureImage.js +13 -29
  46. package/Utils/rememberCameraViewOffset.js +8 -11
  47. package/Utils/removeObject.js +0 -4
  48. package/Utils/restrictCameraMovement.js +2 -12
  49. package/Utils/setLightShadow.js +3 -5
  50. package/Utils/setOrthographicCameraSize.js +0 -1
  51. package/Utils/updateFitSizeToElement.js +4 -9
  52. package/VisualizationContainer.js +37 -90
  53. package/VisualizationInterface.js +32 -67
  54. package/VisualizationProvider.js +5 -15
  55. package/index.js +2 -9
  56. package/package.json +6 -7
  57. package/scripts/cpPublicLocal.js +7 -2
  58. package/src/CommonUtils/Observable.js +1 -0
  59. package/src/CommonUtils/pointerEvent.js +17 -0
  60. package/src/Constants.js +2 -0
  61. package/src/DevApp.js +1 -2
  62. package/src/Three/Three2D.js +105 -1
  63. package/src/Three/ThreeBase.js +31 -3
  64. package/src/Utils/TextureBuilder/createTextureBuilder.js +12 -3
  65. package/src/VisualizationContainer.js +8 -2
  66. package/src/index.js +2 -3
  67. package/visualizationAdapterCreator.js +6 -23
@@ -1,21 +1,20 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
-
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = void 0;
9
-
10
8
  var THREE_imp = _interopRequireWildcard(require("three"));
11
-
12
9
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
-
14
10
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
-
16
11
  /* eslint-disable */
12
+
17
13
  // original source: three/examples/js/loaders/MTLLoader
18
- var THREE = THREE_imp; // important: update file from here if needed
14
+
15
+ var THREE = THREE_imp;
16
+
17
+ // important: update file from here if needed
19
18
 
20
19
  /**
21
20
  * Loads a Wavefront .mtl file specifying materials
@@ -26,11 +25,9 @@ var THREE = THREE_imp; // important: update file from here if needed
26
25
  THREE.MTLLoader = function (manager) {
27
26
  THREE.Loader.call(this, manager);
28
27
  };
29
-
30
28
  THREE.MTLLoader.prototype = {
31
29
  constructor: THREE.MTLLoader,
32
30
  crossOrigin: "anonymous",
33
-
34
31
  /**
35
32
  * Loads and parses a MTL asset from a URL.
36
33
  *
@@ -53,7 +50,6 @@ THREE.MTLLoader.prototype = {
53
50
  onLoad(scope.parse(text, path));
54
51
  }, onProgress, onError);
55
52
  },
56
-
57
53
  /**
58
54
  * Set base path for resolving references.
59
55
  * If set this path will be prepended to each loaded and found reference.
@@ -70,7 +66,6 @@ THREE.MTLLoader.prototype = {
70
66
  this.path = path;
71
67
  return this;
72
68
  },
73
-
74
69
  /**
75
70
  * Set base path for additional resources like textures.
76
71
  *
@@ -99,7 +94,6 @@ THREE.MTLLoader.prototype = {
99
94
  this.materialOptions = value;
100
95
  return this;
101
96
  },
102
-
103
97
  /**
104
98
  * Parses a MTL file.
105
99
  *
@@ -116,24 +110,21 @@ THREE.MTLLoader.prototype = {
116
110
  var info = {};
117
111
  var delimiter_pattern = /\s+/;
118
112
  var materialsInfo = {};
119
-
120
113
  for (var i = 0; i < lines.length; i++) {
121
114
  var line = lines[i];
122
115
  line = line.trim();
123
-
124
116
  if (line.length === 0 || line.charAt(0) === "#") {
125
117
  // Blank line or comment ignore
126
118
  continue;
127
119
  }
128
-
129
120
  var pos = line.indexOf(" ");
130
121
  var key = pos >= 0 ? line.substring(0, pos) : line;
131
122
  key = key.toLowerCase();
132
123
  var value = pos >= 0 ? line.substring(pos + 1) : "";
133
124
  value = value.trim();
134
-
135
125
  if (key === "newmtl") {
136
126
  // New material
127
+
137
128
  info = {
138
129
  name: value
139
130
  };
@@ -147,7 +138,6 @@ THREE.MTLLoader.prototype = {
147
138
  }
148
139
  }
149
140
  }
150
-
151
141
  var materialCreator = new THREE.MTLLoader.MaterialCreator(this.resourcePath || path, this.materialOptions);
152
142
  materialCreator.setCrossOrigin(this.crossOrigin);
153
143
  materialCreator.setManager(this.manager);
@@ -155,6 +145,7 @@ THREE.MTLLoader.prototype = {
155
145
  return materialCreator;
156
146
  }
157
147
  };
148
+
158
149
  /**
159
150
  * Create a new THREE-MTLLoader.MaterialCreator
160
151
  * @param baseUrl - Url relative to which textures are loaded
@@ -180,7 +171,6 @@ THREE.MTLLoader.MaterialCreator = function (baseUrl, options) {
180
171
  this.side = this.options && this.options.side ? this.options.side : THREE.FrontSide;
181
172
  this.wrap = this.options && this.options.wrap ? this.options.wrap : THREE.RepeatWrapping;
182
173
  };
183
-
184
174
  THREE.MTLLoader.MaterialCreator.prototype = {
185
175
  constructor: THREE.MTLLoader.MaterialCreator,
186
176
  crossOrigin: "anonymous",
@@ -200,46 +190,41 @@ THREE.MTLLoader.MaterialCreator.prototype = {
200
190
  convert: function convert(materialsInfo) {
201
191
  if (!this.options) return materialsInfo;
202
192
  var converted = {};
203
-
204
193
  for (var mn in materialsInfo) {
205
194
  // Convert materials info into normalized form based on options
195
+
206
196
  var mat = materialsInfo[mn];
207
197
  var covmat = {};
208
198
  converted[mn] = covmat;
209
-
210
199
  for (var prop in mat) {
211
200
  var save = true;
212
201
  var value = mat[prop];
213
202
  var lprop = prop.toLowerCase();
214
-
215
203
  switch (lprop) {
216
204
  case "kd":
217
205
  case "ka":
218
206
  case "ks":
219
207
  // Diffuse color (color under white light) using RGB values
208
+
220
209
  if (this.options && this.options.normalizeRGB) {
221
210
  value = [value[0] / 255, value[1] / 255, value[2] / 255];
222
211
  }
223
-
224
212
  if (this.options && this.options.ignoreZeroRGBs) {
225
213
  if (value[0] === 0 && value[1] === 0 && value[2] === 0) {
226
214
  // ignore
215
+
227
216
  save = false;
228
217
  }
229
218
  }
230
-
231
219
  break;
232
-
233
220
  default:
234
221
  break;
235
222
  }
236
-
237
223
  if (save) {
238
224
  covmat[lprop] = value;
239
225
  }
240
226
  }
241
227
  }
242
-
243
228
  return converted;
244
229
  },
245
230
  preload: function preload() {
@@ -252,38 +237,35 @@ THREE.MTLLoader.MaterialCreator.prototype = {
252
237
  },
253
238
  getAsArray: function getAsArray() {
254
239
  var index = 0;
255
-
256
240
  for (var mn in this.materialsInfo) {
257
241
  this.materialsArray[index] = this.create(mn);
258
242
  this.nameLookup[mn] = index;
259
243
  index++;
260
244
  }
261
-
262
245
  return this.materialsArray;
263
246
  },
264
247
  create: function create(materialName) {
265
248
  if (this.materials[materialName] === undefined) {
266
249
  this.createMaterial_(materialName);
267
250
  }
268
-
269
251
  return this.materials[materialName];
270
252
  },
271
253
  createMaterial_: function createMaterial_(materialName) {
272
254
  // Create material
255
+
273
256
  var scope = this;
274
257
  var mat = this.materialsInfo[materialName];
275
258
  var params = {
276
259
  name: materialName,
277
260
  side: this.side
278
261
  };
279
-
280
262
  function resolveURL(baseUrl, url) {
281
- if (typeof url !== "string" || url === "") return ""; // Absolute URL
263
+ if (typeof url !== "string" || url === "") return "";
282
264
 
265
+ // Absolute URL
283
266
  if (/^https?:\/\//i.test(url)) return url;
284
267
  return baseUrl + url;
285
268
  }
286
-
287
269
  function setMapForType(mapType, value) {
288
270
  if (params[mapType]) return; // Keep the first encountered texture
289
271
 
@@ -295,106 +277,99 @@ THREE.MTLLoader.MaterialCreator.prototype = {
295
277
  map.wrapT = scope.wrap;
296
278
  params[mapType] = map;
297
279
  }
298
-
299
280
  for (var prop in mat) {
300
281
  var value = mat[prop];
301
282
  var n;
302
283
  if (value === "") continue;
303
-
304
284
  switch (prop.toLowerCase()) {
305
285
  // Ns is material specular exponent
286
+
306
287
  case "kd":
307
288
  // Diffuse color (color under white light) using RGB values
289
+
308
290
  params.color = new THREE.Color().fromArray(value);
309
291
  break;
310
-
311
292
  case "ks":
312
293
  // Specular color (color when light is reflected from shiny surface) using RGB values
313
294
  params.specular = new THREE.Color().fromArray(value);
314
295
  break;
315
-
316
296
  case "ke":
317
297
  // Emissive using RGB values
318
298
  params.emissive = new THREE.Color().fromArray(value);
319
299
  break;
320
-
321
300
  case "map_kd":
322
301
  // Diffuse texture map
302
+
323
303
  setMapForType("map", value);
324
304
  break;
325
-
326
305
  case "map_ks":
327
306
  // Specular map
307
+
328
308
  setMapForType("specularMap", value);
329
309
  break;
330
-
331
310
  case "map_ke":
332
311
  // Emissive map
312
+
333
313
  setMapForType("emissiveMap", value);
334
314
  break;
335
-
336
315
  case "norm":
337
316
  setMapForType("normalMap", value);
338
317
  break;
339
-
340
318
  case "map_bump":
341
319
  case "bump":
342
320
  // Bump texture map
321
+
343
322
  setMapForType("bumpMap", value);
344
323
  break;
345
-
346
324
  case "map_d":
347
325
  // Alpha map
326
+
348
327
  setMapForType("alphaMap", value);
349
328
  params.transparent = true;
350
329
  break;
351
-
352
330
  case "map_pm":
353
331
  // Metalness map
354
- setMapForType("metalnessMap", value); // fine-tune the metalness value if needed
332
+
333
+ setMapForType("metalnessMap", value);
334
+
335
+ // fine-tune the metalness value if needed
355
336
  //params.metalness = 0.2;
356
337
 
357
338
  break;
358
-
359
339
  case "map_pr":
360
340
  // Roughness map
361
- setMapForType("roughnessMap", value); // fine-tune the roughness value if needed
341
+
342
+ setMapForType("roughnessMap", value);
343
+
344
+ // fine-tune the roughness value if needed
362
345
  //params.roughness = 0.1;
363
346
 
364
347
  break;
365
-
366
348
  case "ns":
367
349
  // The specular exponent (defines the focus of the specular highlight)
368
350
  // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.
351
+
369
352
  params.shininess = parseFloat(value);
370
353
  break;
371
-
372
354
  case "d":
373
355
  n = parseFloat(value);
374
-
375
356
  if (n < 1) {
376
357
  params.opacity = n;
377
358
  params.transparent = true;
378
359
  }
379
-
380
360
  break;
381
-
382
361
  case "tr":
383
362
  n = parseFloat(value);
384
363
  if (this.options && this.options.invertTrProperty) n = 1 - n;
385
-
386
364
  if (n > 0) {
387
365
  params.opacity = 1 - n;
388
366
  params.transparent = true;
389
367
  }
390
-
391
368
  break;
392
-
393
369
  default:
394
370
  break;
395
371
  }
396
372
  }
397
-
398
373
  this.materials[materialName] = new THREE.MeshStandardMaterial(params);
399
374
  return this.materials[materialName];
400
375
  },
@@ -406,21 +381,17 @@ THREE.MTLLoader.MaterialCreator.prototype = {
406
381
  var items = value.split(/\s+/);
407
382
  var pos;
408
383
  pos = items.indexOf("-bm");
409
-
410
384
  if (pos >= 0) {
411
385
  matParams.bumpScale = parseFloat(items[pos + 1]);
412
386
  items.splice(pos, 2);
413
387
  }
414
-
415
388
  pos = items.indexOf("-s");
416
-
417
389
  if (pos >= 0) {
418
390
  texParams.scale.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));
419
391
  items.splice(pos, 4); // we expect 3 parameters here!
420
392
  }
421
393
 
422
394
  pos = items.indexOf("-o");
423
-
424
395
  if (pos >= 0) {
425
396
  texParams.offset.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));
426
397
  items.splice(pos, 4); // we expect 3 parameters here!
@@ -433,17 +404,15 @@ THREE.MTLLoader.MaterialCreator.prototype = {
433
404
  var texture;
434
405
  var manager = this.manager !== undefined ? this.manager : THREE.DefaultLoadingManager;
435
406
  var loader = manager.getHandler(url);
436
-
437
407
  if (loader === null) {
438
408
  loader = new THREE.TextureLoader(manager);
439
409
  }
440
-
441
410
  if (loader.setCrossOrigin) loader.setCrossOrigin(this.crossOrigin);
442
411
  texture = loader.load(url, onLoad, onProgress, onError);
443
412
  if (mapping !== undefined) texture.mapping = mapping;
444
413
  return texture;
445
414
  }
446
- }; // important: don't forget to export it
415
+ };
447
416
 
448
- var _default = THREE.MTLLoader;
449
- exports["default"] = _default;
417
+ // important: don't forget to export it
418
+ var _default = exports["default"] = THREE.MTLLoader;