@tonybfox/threejs-tools 1.0.4 → 1.0.5

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.
@@ -40,6 +40,10 @@ var import_GLTFLoader = require("three/examples/jsm/loaders/GLTFLoader.js");
40
40
  var import_FBXLoader = require("three/examples/jsm/loaders/FBXLoader.js");
41
41
  var import_OBJLoader = require("three/examples/jsm/loaders/OBJLoader.js");
42
42
  var import_USDLoader = require("three/examples/jsm/loaders/USDLoader.js");
43
+ var import_ColladaLoader = require("three/examples/jsm/loaders/ColladaLoader.js");
44
+ var import_STLLoader = require("three/examples/jsm/loaders/STLLoader.js");
45
+ var import_PLYLoader = require("three/examples/jsm/loaders/PLYLoader.js");
46
+ var import_MFLoader = require("three/examples/jsm/loaders/3MFLoader.js");
43
47
  var AssetLoader = class extends THREE.EventDispatcher {
44
48
  constructor() {
45
49
  super();
@@ -53,6 +57,10 @@ var AssetLoader = class extends THREE.EventDispatcher {
53
57
  this.fbxLoader = new import_FBXLoader.FBXLoader();
54
58
  this.objLoader = new import_OBJLoader.OBJLoader();
55
59
  this.usdLoader = new import_USDLoader.USDLoader();
60
+ this.colladaLoader = new import_ColladaLoader.ColladaLoader();
61
+ this.stlLoader = new import_STLLoader.STLLoader();
62
+ this.plyLoader = new import_PLYLoader.PLYLoader();
63
+ this.threeMFLoader = new import_MFLoader.ThreeMFLoader();
56
64
  }
57
65
  /**
58
66
  * Create a placeholder cube with shader effect
@@ -180,7 +188,7 @@ var AssetLoader = class extends THREE.EventDispatcher {
180
188
  const center = boundingBox.getCenter(new THREE.Vector3());
181
189
  const bottomCenter = new THREE.Vector3(
182
190
  center.x,
183
- boundingBox.min.y + 0.01,
191
+ boundingBox.min.y - 0.01,
184
192
  center.z
185
193
  );
186
194
  if (!Number.isFinite(bottomCenter.x) || !Number.isFinite(bottomCenter.y) || !Number.isFinite(bottomCenter.z)) {
@@ -222,6 +230,7 @@ var AssetLoader = class extends THREE.EventDispatcher {
222
230
  size,
223
231
  lowResUrl,
224
232
  enableCaching = true,
233
+ disablePlaceholder = false,
225
234
  placeholderColor = 5227511,
226
235
  placeholderOpacity = 0.4,
227
236
  errorColor = 16729156,
@@ -241,7 +250,7 @@ var AssetLoader = class extends THREE.EventDispatcher {
241
250
  }
242
251
  this.errorColor = errorColor;
243
252
  this.errorOpacity = errorOpacity;
244
- if (size) {
253
+ if (size && !disablePlaceholder) {
245
254
  this.placeholder = this.createPlaceholder(
246
255
  size,
247
256
  placeholderColor,
@@ -348,6 +357,59 @@ var AssetLoader = class extends THREE.EventDispatcher {
348
357
  onError
349
358
  );
350
359
  break;
360
+ case "dae":
361
+ this.colladaLoader.load(
362
+ url,
363
+ (collada) => {
364
+ const scene = collada.scene;
365
+ this.positionAssetAtBottomCenter(scene);
366
+ resolve(scene);
367
+ },
368
+ onProgress,
369
+ onError
370
+ );
371
+ break;
372
+ case "stl":
373
+ this.stlLoader.load(
374
+ url,
375
+ (geometry) => {
376
+ const material = new THREE.MeshStandardMaterial({
377
+ color: 8947848
378
+ });
379
+ const mesh = new THREE.Mesh(geometry, material);
380
+ this.positionAssetAtBottomCenter(mesh);
381
+ resolve(mesh);
382
+ },
383
+ onProgress,
384
+ onError
385
+ );
386
+ break;
387
+ case "ply":
388
+ this.plyLoader.load(
389
+ url,
390
+ (geometry) => {
391
+ const material = new THREE.MeshStandardMaterial({
392
+ vertexColors: true
393
+ });
394
+ const mesh = new THREE.Mesh(geometry, material);
395
+ this.positionAssetAtBottomCenter(mesh);
396
+ resolve(mesh);
397
+ },
398
+ onProgress,
399
+ onError
400
+ );
401
+ break;
402
+ case "3mf":
403
+ this.threeMFLoader.load(
404
+ url,
405
+ (object) => {
406
+ this.positionAssetAtBottomCenter(object);
407
+ resolve(object);
408
+ },
409
+ onProgress,
410
+ onError
411
+ );
412
+ break;
351
413
  default:
352
414
  reject(new Error(`Unsupported asset type: ${type}`));
353
415
  }
@@ -19,13 +19,14 @@ interface AssetLoaderEventMap {
19
19
  lowRes: THREE.Object3D;
20
20
  };
21
21
  }
22
- type AssetType = 'gltf' | 'fbx' | 'obj' | 'usd' | 'usdz';
22
+ type AssetType = 'gltf' | 'fbx' | 'obj' | 'usd' | 'usdz' | 'dae' | 'stl' | 'ply' | '3mf';
23
23
  interface AssetLoaderOptions {
24
24
  type: AssetType;
25
25
  url: string;
26
26
  size?: [number, number, number];
27
27
  lowResUrl?: string;
28
28
  enableCaching?: boolean;
29
+ disablePlaceholder?: boolean;
29
30
  placeholderColor?: number;
30
31
  placeholderOpacity?: number;
31
32
  errorColor?: number;
@@ -37,6 +38,10 @@ declare class AssetLoader extends THREE.EventDispatcher<AssetLoaderEventMap> {
37
38
  private fbxLoader;
38
39
  private objLoader;
39
40
  private usdLoader;
41
+ private colladaLoader;
42
+ private stlLoader;
43
+ private plyLoader;
44
+ private threeMFLoader;
40
45
  private placeholder;
41
46
  private loadedAsset;
42
47
  private lowResAsset;
@@ -19,13 +19,14 @@ interface AssetLoaderEventMap {
19
19
  lowRes: THREE.Object3D;
20
20
  };
21
21
  }
22
- type AssetType = 'gltf' | 'fbx' | 'obj' | 'usd' | 'usdz';
22
+ type AssetType = 'gltf' | 'fbx' | 'obj' | 'usd' | 'usdz' | 'dae' | 'stl' | 'ply' | '3mf';
23
23
  interface AssetLoaderOptions {
24
24
  type: AssetType;
25
25
  url: string;
26
26
  size?: [number, number, number];
27
27
  lowResUrl?: string;
28
28
  enableCaching?: boolean;
29
+ disablePlaceholder?: boolean;
29
30
  placeholderColor?: number;
30
31
  placeholderOpacity?: number;
31
32
  errorColor?: number;
@@ -37,6 +38,10 @@ declare class AssetLoader extends THREE.EventDispatcher<AssetLoaderEventMap> {
37
38
  private fbxLoader;
38
39
  private objLoader;
39
40
  private usdLoader;
41
+ private colladaLoader;
42
+ private stlLoader;
43
+ private plyLoader;
44
+ private threeMFLoader;
40
45
  private placeholder;
41
46
  private loadedAsset;
42
47
  private lowResAsset;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AssetLoader
3
- } from "../chunk-27WUVRGX.mjs";
3
+ } from "../chunk-LUE7VHLK.mjs";
4
4
  export {
5
5
  AssetLoader
6
6
  };
@@ -4,6 +4,10 @@ import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js";
4
4
  import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader.js";
5
5
  import { OBJLoader } from "three/examples/jsm/loaders/OBJLoader.js";
6
6
  import { USDLoader } from "three/examples/jsm/loaders/USDLoader.js";
7
+ import { ColladaLoader } from "three/examples/jsm/loaders/ColladaLoader.js";
8
+ import { STLLoader } from "three/examples/jsm/loaders/STLLoader.js";
9
+ import { PLYLoader } from "three/examples/jsm/loaders/PLYLoader.js";
10
+ import { ThreeMFLoader } from "three/examples/jsm/loaders/3MFLoader.js";
7
11
  var AssetLoader = class extends THREE.EventDispatcher {
8
12
  constructor() {
9
13
  super();
@@ -17,6 +21,10 @@ var AssetLoader = class extends THREE.EventDispatcher {
17
21
  this.fbxLoader = new FBXLoader();
18
22
  this.objLoader = new OBJLoader();
19
23
  this.usdLoader = new USDLoader();
24
+ this.colladaLoader = new ColladaLoader();
25
+ this.stlLoader = new STLLoader();
26
+ this.plyLoader = new PLYLoader();
27
+ this.threeMFLoader = new ThreeMFLoader();
20
28
  }
21
29
  /**
22
30
  * Create a placeholder cube with shader effect
@@ -144,7 +152,7 @@ var AssetLoader = class extends THREE.EventDispatcher {
144
152
  const center = boundingBox.getCenter(new THREE.Vector3());
145
153
  const bottomCenter = new THREE.Vector3(
146
154
  center.x,
147
- boundingBox.min.y + 0.01,
155
+ boundingBox.min.y - 0.01,
148
156
  center.z
149
157
  );
150
158
  if (!Number.isFinite(bottomCenter.x) || !Number.isFinite(bottomCenter.y) || !Number.isFinite(bottomCenter.z)) {
@@ -186,6 +194,7 @@ var AssetLoader = class extends THREE.EventDispatcher {
186
194
  size,
187
195
  lowResUrl,
188
196
  enableCaching = true,
197
+ disablePlaceholder = false,
189
198
  placeholderColor = 5227511,
190
199
  placeholderOpacity = 0.4,
191
200
  errorColor = 16729156,
@@ -205,7 +214,7 @@ var AssetLoader = class extends THREE.EventDispatcher {
205
214
  }
206
215
  this.errorColor = errorColor;
207
216
  this.errorOpacity = errorOpacity;
208
- if (size) {
217
+ if (size && !disablePlaceholder) {
209
218
  this.placeholder = this.createPlaceholder(
210
219
  size,
211
220
  placeholderColor,
@@ -312,6 +321,59 @@ var AssetLoader = class extends THREE.EventDispatcher {
312
321
  onError
313
322
  );
314
323
  break;
324
+ case "dae":
325
+ this.colladaLoader.load(
326
+ url,
327
+ (collada) => {
328
+ const scene = collada.scene;
329
+ this.positionAssetAtBottomCenter(scene);
330
+ resolve(scene);
331
+ },
332
+ onProgress,
333
+ onError
334
+ );
335
+ break;
336
+ case "stl":
337
+ this.stlLoader.load(
338
+ url,
339
+ (geometry) => {
340
+ const material = new THREE.MeshStandardMaterial({
341
+ color: 8947848
342
+ });
343
+ const mesh = new THREE.Mesh(geometry, material);
344
+ this.positionAssetAtBottomCenter(mesh);
345
+ resolve(mesh);
346
+ },
347
+ onProgress,
348
+ onError
349
+ );
350
+ break;
351
+ case "ply":
352
+ this.plyLoader.load(
353
+ url,
354
+ (geometry) => {
355
+ const material = new THREE.MeshStandardMaterial({
356
+ vertexColors: true
357
+ });
358
+ const mesh = new THREE.Mesh(geometry, material);
359
+ this.positionAssetAtBottomCenter(mesh);
360
+ resolve(mesh);
361
+ },
362
+ onProgress,
363
+ onError
364
+ );
365
+ break;
366
+ case "3mf":
367
+ this.threeMFLoader.load(
368
+ url,
369
+ (object) => {
370
+ this.positionAssetAtBottomCenter(object);
371
+ resolve(object);
372
+ },
373
+ onProgress,
374
+ onError
375
+ );
376
+ break;
315
377
  default:
316
378
  reject(new Error(`Unsupported asset type: ${type}`));
317
379
  }