@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.
- package/dist/asset-loader/index.cjs +64 -2
- package/dist/asset-loader/index.d.mts +6 -1
- package/dist/asset-loader/index.d.ts +6 -1
- package/dist/asset-loader/index.mjs +1 -1
- package/dist/{chunk-27WUVRGX.mjs → chunk-LUE7VHLK.mjs} +64 -2
- package/dist/index.cjs +470 -69
- package/dist/index.d.mts +169 -1
- package/dist/index.d.ts +169 -1
- package/dist/index.mjs +339 -1
- package/package.json +1 -1
|
@@ -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
|
|
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;
|
|
@@ -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
|
|
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
|
}
|