@jdultra/threedtiles 13.0.13 → 13.0.15
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/entry.d.ts +1 -0
- package/dist/splats/SplatsMesh.d.ts +3 -1
- package/dist/threedtiles.cjs.js +44 -34
- package/dist/threedtiles.cjs.js.map +1 -1
- package/dist/threedtiles.es.js +683 -662
- package/dist/threedtiles.es.js.map +1 -1
- package/dist/threedtiles.umd.js +44 -34
- package/dist/threedtiles.umd.js.map +1 -1
- package/package.json +9 -7
package/dist/threedtiles.es.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
var Wt = Object.defineProperty;
|
|
2
2
|
var Xt = (o, e, a) => e in o ? Wt(o, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : o[e] = a;
|
|
3
3
|
var ge = (o, e, a) => Xt(o, typeof e != "symbol" ? e + "" : e, a);
|
|
4
|
-
import * as
|
|
5
|
-
import { Matrix3 as
|
|
6
|
-
class
|
|
4
|
+
import * as E from "three";
|
|
5
|
+
import { Matrix3 as Ra, Vector3 as S, Box3 as Sa, Matrix4 as je, Ray as Zt, BufferGeometry as va, BufferAttribute as le, TrianglesDrawMode as $t, TriangleFanDrawMode as Qa, TriangleStripDrawMode as It, Loader as Fa, LoaderUtils as Pe, FileLoader as Be, Color as he, LinearSRGBColorSpace as K, SpotLight as eA, PointLight as aA, DirectionalLight as tA, MeshBasicMaterial as Le, SRGBColorSpace as re, MeshPhysicalMaterial as ee, Vector2 as pt, Quaternion as Ct, InstancedMesh as AA, InstancedBufferAttribute as ya, Object3D as Bt, TextureLoader as iA, ImageBitmapLoader as sA, InterleavedBuffer as rA, InterleavedBufferAttribute as nA, LinearFilter as Ce, LinearMipmapLinearFilter as $e, RepeatWrapping as wa, NearestFilter as M, PointsMaterial as oA, Material as aa, LineBasicMaterial as cA, MeshStandardMaterial as Ua, DoubleSide as dA, PropertyBinding as bA, SkinnedMesh as lA, Mesh as xa, LineSegments as hA, Line as gA, LineLoop as fA, Points as uA, Group as ta, PerspectiveCamera as IA, MathUtils as pA, OrthographicCamera as mt, Skeleton as CA, AnimationClip as BA, Bone as mA, InterpolateLinear as Et, ColorManagement as ka, NearestMipmapNearestFilter as EA, LinearMipmapNearestFilter as QA, NearestMipmapLinearFilter as yA, ClampToEdgeWrapping as wA, MirroredRepeatWrapping as xA, InterpolateDiscrete as kA, FrontSide as Ze, Texture as Na, VectorKeyframeTrack as Pa, NumberKeyframeTrack as _a, QuaternionKeyframeTrack as Ha, Sphere as DA, Interpolant as jA, CompressedCubeTexture as MA, CompressedArrayTexture as RA, CompressedTexture as qa, RGBAFormat as $, RGBA_ASTC_4x4_Format as Qt, RGB_BPTC_UNSIGNED_Format as SA, RGBA_BPTC_Format as vA, RGBA_ETC2_EAC_Format as FA, RGBA_PVRTC_4BPPV1_Format as TA, RGBA_S3TC_DXT5_Format as LA, RGB_ETC1_Format as GA, RGB_ETC2_Format as UA, RGB_PVRTC_4BPPV1_Format as NA, RGBA_S3TC_DXT1_Format as PA, UnsignedByteType as X, HalfFloatType as xe, FloatType as v, DataTexture as Ge, Data3DTexture as _A, NoColorSpace as HA, RGFormat as Ue, RedFormat as Ne, RGBA_ASTC_6x6_Format as Oa, WebGL3DRenderTarget as ne, ShaderMaterial as Aa, InstancedBufferGeometry as Ja, DynamicDrawUsage as Ka, Scene as qA, PlaneGeometry as OA } from "three";
|
|
6
|
+
class es {
|
|
7
7
|
constructor() {
|
|
8
|
-
this.cullMap = [], this.cullMaterial = new
|
|
8
|
+
this.cullMap = [], this.cullMaterial = new E.MeshBasicMaterial({ vertexColors: !0 }), this.cullMaterial.side = E.FrontSide, this.cullTarget = this._createCullTarget(), this.cullPixels = new Uint8Array(4 * this.cullTarget.width * this.cullTarget.height);
|
|
9
9
|
}
|
|
10
10
|
setSide(e) {
|
|
11
11
|
this.cullMaterial.side = e;
|
|
12
12
|
}
|
|
13
13
|
_createCullTarget() {
|
|
14
|
-
const e = new
|
|
15
|
-
return e.texture.format =
|
|
14
|
+
const e = new E.WebGLRenderTarget(Math.floor(0.05 * window.innerWidth), Math.floor(0.05 * window.innerHeight));
|
|
15
|
+
return e.texture.format = E.RGBAFormat, e.texture.colorSpace = E.LinearSRGBColorSpace, e.texture.minFilter = E.NearestFilter, e.texture.magFilter = E.NearestFilter, e.texture.generateMipmaps = !1, e.stencilBuffer = !1, e.depthBuffer = !0, e.depthTexture = new E.DepthTexture(), e.depthTexture.format = E.DepthFormat, e.depthTexture.type = E.UnsignedShortType, e;
|
|
16
16
|
}
|
|
17
17
|
update(e, a, t) {
|
|
18
18
|
let A = a.getRenderTarget(), i = e.overrideMaterial;
|
|
19
19
|
e.overrideMaterial = this.cullMaterial, a.setRenderTarget(this.cullTarget), a.render(e, t), e.overrideMaterial = i, a.setRenderTarget(A), a.readRenderTargetPixels(this.cullTarget, 0, 0, this.cullTarget.width, this.cullTarget.height, this.cullPixels), this.cullMap = [];
|
|
20
20
|
for (let s = 0; s < this.cullPixels.length; s += 4) {
|
|
21
|
-
const r =
|
|
21
|
+
const r = E.MathUtils.clamp(this.cullPixels[s], 0, 255) << 16 ^ E.MathUtils.clamp(this.cullPixels[s + 1], 0, 255) << 8 ^ E.MathUtils.clamp(this.cullPixels[s + 2], 0, 255);
|
|
22
22
|
this.cullMap[r] = !0;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -26,10 +26,10 @@ class Zi {
|
|
|
26
26
|
return this.cullMap[e];
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
const J = new
|
|
29
|
+
const J = new Ra(), G = new S(), za = new S(), Va = new Sa(), Ke = new je(), Ya = new je(), Wa = new Zt();
|
|
30
30
|
class se {
|
|
31
31
|
constructor(e) {
|
|
32
|
-
this.center = new S(e[0], e[1], e[2]), this.e1 = new S(e[3], e[4], e[5]), this.e2 = new S(e[6], e[7], e[8]), this.e3 = new S(e[9], e[10], e[11]), this.halfSize = new S(this.e1.length(), this.e2.length(), this.e3.length()), this.e1.normalize(), this.e2.normalize(), this.e3.normalize(), this.rotationMatrix = new
|
|
32
|
+
this.center = new S(e[0], e[1], e[2]), this.e1 = new S(e[3], e[4], e[5]), this.e2 = new S(e[6], e[7], e[8]), this.e3 = new S(e[9], e[10], e[11]), this.halfSize = new S(this.e1.length(), this.e2.length(), this.e3.length()), this.e1.normalize(), this.e2.normalize(), this.e3.normalize(), this.rotationMatrix = new Ra(), this.rotationMatrix.set(this.e1.x, this.e1.y, this.e1.z, this.e2.x, this.e2.y, this.e2.z, this.e3.x, this.e3.y, this.e3.z);
|
|
33
33
|
}
|
|
34
34
|
copy(e) {
|
|
35
35
|
this.center.copy(e.center), this.rotationMatrix.copy(e.rotationMatrix), this.halfSize.copy(e.halfSize);
|
|
@@ -159,14 +159,14 @@ class yt {
|
|
|
159
159
|
return Array.from(this.keys()).map((a) => ({ key: a, value: this.get(a) }));
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
-
const
|
|
162
|
+
const JA = new TextDecoder();
|
|
163
163
|
class wt {
|
|
164
164
|
constructor(e, a, t, A) {
|
|
165
165
|
this.buffer = e, this.binOffset = a + t, this.binLength = A;
|
|
166
166
|
let i = null;
|
|
167
167
|
if (t !== 0) try {
|
|
168
168
|
const s = new Uint8Array(e, a, t);
|
|
169
|
-
i = JSON.parse(
|
|
169
|
+
i = JSON.parse(JA.decode(s));
|
|
170
170
|
} catch {
|
|
171
171
|
i = {};
|
|
172
172
|
}
|
|
@@ -202,43 +202,43 @@ class wt {
|
|
|
202
202
|
default:
|
|
203
203
|
throw new Error(`FeatureTable : Feature type not provided for "${e}".`);
|
|
204
204
|
}
|
|
205
|
-
const f = c + b,
|
|
205
|
+
const f = c + b, I = a * g;
|
|
206
206
|
switch (l) {
|
|
207
207
|
case "BYTE":
|
|
208
|
-
h = new Int8Array(r, f,
|
|
208
|
+
h = new Int8Array(r, f, I);
|
|
209
209
|
break;
|
|
210
210
|
case "UNSIGNED_BYTE":
|
|
211
|
-
h = new Uint8Array(r, f,
|
|
211
|
+
h = new Uint8Array(r, f, I);
|
|
212
212
|
break;
|
|
213
213
|
case "SHORT":
|
|
214
|
-
h = new Int16Array(r, f,
|
|
214
|
+
h = new Int16Array(r, f, I);
|
|
215
215
|
break;
|
|
216
216
|
case "UNSIGNED_SHORT":
|
|
217
|
-
h = new Uint16Array(r, f,
|
|
217
|
+
h = new Uint16Array(r, f, I);
|
|
218
218
|
break;
|
|
219
219
|
case "INT":
|
|
220
|
-
h = new Int32Array(r, f,
|
|
220
|
+
h = new Int32Array(r, f, I);
|
|
221
221
|
break;
|
|
222
222
|
case "UNSIGNED_INT":
|
|
223
|
-
h = new Uint32Array(r, f,
|
|
223
|
+
h = new Uint32Array(r, f, I);
|
|
224
224
|
break;
|
|
225
225
|
case "FLOAT":
|
|
226
|
-
h = new Float32Array(r, f,
|
|
226
|
+
h = new Float32Array(r, f, I);
|
|
227
227
|
break;
|
|
228
228
|
case "DOUBLE":
|
|
229
|
-
h = new Float64Array(r, f,
|
|
229
|
+
h = new Float64Array(r, f, I);
|
|
230
230
|
break;
|
|
231
231
|
default:
|
|
232
232
|
throw new Error(`FeatureTable : Feature component type not provided for "${e}".`);
|
|
233
233
|
}
|
|
234
|
-
if (f +
|
|
234
|
+
if (f + I * h.BYTES_PER_ELEMENT > c + n) throw new Error("FeatureTable: Feature data read outside binary body length.");
|
|
235
235
|
return h;
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
238
|
return s;
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
|
-
class
|
|
241
|
+
class KA extends wt {
|
|
242
242
|
constructor(e, a, t, A, i) {
|
|
243
243
|
super(e, t, A, i), this.batchSize = a;
|
|
244
244
|
}
|
|
@@ -273,7 +273,7 @@ function Xa(o) {
|
|
|
273
273
|
}
|
|
274
274
|
function Za(o, e) {
|
|
275
275
|
if (e === $t) return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), o;
|
|
276
|
-
if (e ===
|
|
276
|
+
if (e === Qa || e === It) {
|
|
277
277
|
let a = o.getIndex();
|
|
278
278
|
if (a === null) {
|
|
279
279
|
const s = [], r = o.getAttribute("position");
|
|
@@ -282,7 +282,7 @@ function Za(o, e) {
|
|
|
282
282
|
o.setIndex(s), a = o.getIndex();
|
|
283
283
|
}
|
|
284
284
|
const t = a.count - 2, A = [];
|
|
285
|
-
if (e ===
|
|
285
|
+
if (e === Qa) for (let s = 1; s <= t; s++) A.push(a.getX(0)), A.push(a.getX(s)), A.push(a.getX(s + 1));
|
|
286
286
|
else for (let s = 0; s < t; s++) s % 2 == 0 ? (A.push(a.getX(s)), A.push(a.getX(s + 1)), A.push(a.getX(s + 2))) : (A.push(a.getX(s + 2)), A.push(a.getX(s + 1)), A.push(a.getX(s)));
|
|
287
287
|
A.length / 3 !== t && console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");
|
|
288
288
|
const i = o.clone();
|
|
@@ -297,7 +297,7 @@ class xt {
|
|
|
297
297
|
this.gltfLoader.hasDracoLoader && !this.gltfLoader.dracoLoader || this.gltfLoader.hasKTX2Loader && !this.gltfLoader.ktx2Loader || (clearInterval(a), e());
|
|
298
298
|
}, 10);
|
|
299
299
|
}));
|
|
300
|
-
this.gltfLoader = e, this.tempMatrix = new
|
|
300
|
+
this.gltfLoader = e, this.tempMatrix = new E.Matrix4(), this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1);
|
|
301
301
|
}
|
|
302
302
|
parseB3DM(e, a, t, A) {
|
|
303
303
|
const i = this, s = new DataView(e), r = String.fromCharCode(s.getUint8(0)) + String.fromCharCode(s.getUint8(1)) + String.fromCharCode(s.getUint8(2)) + String.fromCharCode(s.getUint8(3));
|
|
@@ -305,14 +305,14 @@ class xt {
|
|
|
305
305
|
const c = s.getUint32(8, !0);
|
|
306
306
|
console.assert(c === e.byteLength);
|
|
307
307
|
const n = s.getUint32(12, !0), b = s.getUint32(16, !0), d = s.getUint32(20, !0), l = s.getUint32(24, !0), g = new wt(e, 28, n, b), h = 28 + n + b;
|
|
308
|
-
new
|
|
309
|
-
const f = h + d + l,
|
|
310
|
-
return new Promise(async (
|
|
311
|
-
await this.checkLoaderInitialized(), this.gltfLoader.parse(
|
|
308
|
+
new KA(e, g.getData("BATCH_LENGTH"), h, d, l);
|
|
309
|
+
const f = h + d + l, I = new Uint8Array(e, f, c - f).slice().buffer;
|
|
310
|
+
return new Promise(async (u, p) => {
|
|
311
|
+
await this.checkLoaderInitialized(), this.gltfLoader.parse(I, null, (B) => {
|
|
312
312
|
const C = g.getData("RTC_CENTER");
|
|
313
313
|
C ? (this.tempMatrix.makeTranslation(C[0], C[1], C[2]), B.scene.applyMatrix4(this.tempMatrix)) : B.userData.gltfExtensions && B.userData.gltfExtensions.CESIUM_RTC && (this.tempMatrix.makeTranslation(B.userData.gltfExtensions.CESIUM_RTC.center[0], B.userData.gltfExtensions.CESIUM_RTC.center[1], B.userData.gltfExtensions.CESIUM_RTC.center[2]), B.scene.applyMatrix4(this.tempMatrix)), t && B.scene.applyMatrix4(i.zUpToYUpMatrix), B.scene.asset = B.asset, B.scene.traverse((w) => {
|
|
314
314
|
w.isMesh && (A && w.applyMatrix4(i.zUpToYUpMatrix), a && a(w));
|
|
315
|
-
}),
|
|
315
|
+
}), u(B.scene);
|
|
316
316
|
}, (B) => {
|
|
317
317
|
console.error(B);
|
|
318
318
|
});
|
|
@@ -331,7 +331,7 @@ class xt {
|
|
|
331
331
|
}), d.forEach((h) => {
|
|
332
332
|
l.forEach((f) => {
|
|
333
333
|
if (!h.attributes[f]) {
|
|
334
|
-
const
|
|
334
|
+
const I = function(p) {
|
|
335
335
|
switch (p) {
|
|
336
336
|
case "position":
|
|
337
337
|
case "normal":
|
|
@@ -343,90 +343,90 @@ class xt {
|
|
|
343
343
|
default:
|
|
344
344
|
throw new Error(`Unknown attribute ${p}`);
|
|
345
345
|
}
|
|
346
|
-
}(f),
|
|
347
|
-
h.setAttribute(f, new
|
|
346
|
+
}(f), u = new Float32Array(I * h.getAttribute("position").count).fill(0);
|
|
347
|
+
h.setAttribute(f, new E.BufferAttribute(u, I));
|
|
348
348
|
}
|
|
349
349
|
});
|
|
350
350
|
}), function(h, f = !1) {
|
|
351
|
-
const
|
|
351
|
+
const I = h[0].index !== null, u = new Set(Object.keys(h[0].attributes)), p = new Set(Object.keys(h[0].morphAttributes)), B = {}, C = {}, w = h[0].morphTargetsRelative, x = new va();
|
|
352
352
|
let y = 0;
|
|
353
|
-
for (let
|
|
354
|
-
const Q = h[
|
|
353
|
+
for (let m = 0; m < h.length; ++m) {
|
|
354
|
+
const Q = h[m];
|
|
355
355
|
let k = 0;
|
|
356
|
-
if (
|
|
356
|
+
if (I !== (Q.index !== null)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."), null;
|
|
357
357
|
for (const D in Q.attributes) {
|
|
358
|
-
if (!
|
|
358
|
+
if (!u.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + '. All geometries must have compatible attributes; make sure "' + D + '" attribute exists among all geometries, or in none of them.'), null;
|
|
359
359
|
B[D] === void 0 && (B[D] = []), B[D].push(Q.attributes[D]), k++;
|
|
360
360
|
}
|
|
361
|
-
if (k !==
|
|
362
|
-
if (w !== Q.morphTargetsRelative) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " +
|
|
361
|
+
if (k !== u.size) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". Make sure all geometries have the same number of attributes."), null;
|
|
362
|
+
if (w !== Q.morphTargetsRelative) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". .morphTargetsRelative must be consistent throughout all geometries."), null;
|
|
363
363
|
for (const D in Q.morphAttributes) {
|
|
364
|
-
if (!p.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " +
|
|
364
|
+
if (!p.has(D)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". .morphAttributes must be consistent throughout all geometries."), null;
|
|
365
365
|
C[D] === void 0 && (C[D] = []), C[D].push(Q.morphAttributes[D]);
|
|
366
366
|
}
|
|
367
367
|
if (f) {
|
|
368
368
|
let D;
|
|
369
|
-
if (
|
|
369
|
+
if (I) D = Q.index.count;
|
|
370
370
|
else {
|
|
371
|
-
if (Q.attributes.position === void 0) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " +
|
|
371
|
+
if (Q.attributes.position === void 0) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + m + ". The geometry must have either an index or a position attribute"), null;
|
|
372
372
|
D = Q.attributes.position.count;
|
|
373
373
|
}
|
|
374
|
-
x.addGroup(y, D,
|
|
374
|
+
x.addGroup(y, D, m), y += D;
|
|
375
375
|
}
|
|
376
376
|
}
|
|
377
|
-
if (
|
|
378
|
-
let
|
|
377
|
+
if (I) {
|
|
378
|
+
let m = 0;
|
|
379
379
|
const Q = [];
|
|
380
380
|
for (let k = 0; k < h.length; ++k) {
|
|
381
381
|
const D = h[k].index;
|
|
382
|
-
for (let
|
|
383
|
-
|
|
382
|
+
for (let F = 0; F < D.count; ++F) Q.push(D.getX(F) + m);
|
|
383
|
+
m += h[k].attributes.position.count;
|
|
384
384
|
}
|
|
385
385
|
x.setIndex(Q);
|
|
386
386
|
}
|
|
387
|
-
for (const
|
|
388
|
-
const Q = Xa(B[
|
|
389
|
-
if (!Q) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " +
|
|
390
|
-
x.setAttribute(
|
|
387
|
+
for (const m in B) {
|
|
388
|
+
const Q = Xa(B[m]);
|
|
389
|
+
if (!Q) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + m + " attribute."), null;
|
|
390
|
+
x.setAttribute(m, Q);
|
|
391
391
|
}
|
|
392
|
-
for (const
|
|
393
|
-
const Q = C[
|
|
392
|
+
for (const m in C) {
|
|
393
|
+
const Q = C[m][0].length;
|
|
394
394
|
if (Q === 0) break;
|
|
395
|
-
x.morphAttributes = x.morphAttributes || {}, x.morphAttributes[
|
|
395
|
+
x.morphAttributes = x.morphAttributes || {}, x.morphAttributes[m] = [];
|
|
396
396
|
for (let k = 0; k < Q; ++k) {
|
|
397
397
|
const D = [];
|
|
398
|
-
for (let _ = 0; _ < C[
|
|
399
|
-
const
|
|
400
|
-
if (!
|
|
401
|
-
x.morphAttributes[
|
|
398
|
+
for (let _ = 0; _ < C[m].length; ++_) D.push(C[m][_][k]);
|
|
399
|
+
const F = Xa(D);
|
|
400
|
+
if (!F) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the " + m + " morphAttribute."), null;
|
|
401
|
+
x.morphAttributes[m].push(F);
|
|
402
402
|
}
|
|
403
403
|
}
|
|
404
404
|
return x;
|
|
405
405
|
}(d, !0);
|
|
406
406
|
}(c);
|
|
407
|
-
return r = new
|
|
407
|
+
return r = new E.InstancedMesh(b, n, t), r.baseMatrix = new E.Matrix4().identity(), r;
|
|
408
408
|
});
|
|
409
409
|
}
|
|
410
410
|
}
|
|
411
|
-
var
|
|
412
|
-
function
|
|
413
|
-
if (!
|
|
414
|
-
return
|
|
411
|
+
var ia, zA = new Uint8Array(16);
|
|
412
|
+
function VA() {
|
|
413
|
+
if (!ia && !(ia = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto < "u" && typeof msCrypto.getRandomValues == "function" && msCrypto.getRandomValues.bind(msCrypto))) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
414
|
+
return ia(zA);
|
|
415
415
|
}
|
|
416
|
-
const
|
|
417
|
-
for (var T = [],
|
|
418
|
-
function
|
|
416
|
+
const YA = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
|
|
417
|
+
for (var T = [], sa = 0; sa < 256; ++sa) T.push((sa + 256).toString(16).substr(1));
|
|
418
|
+
function WA(o) {
|
|
419
419
|
var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, a = (T[o[e + 0]] + T[o[e + 1]] + T[o[e + 2]] + T[o[e + 3]] + "-" + T[o[e + 4]] + T[o[e + 5]] + "-" + T[o[e + 6]] + T[o[e + 7]] + "-" + T[o[e + 8]] + T[o[e + 9]] + "-" + T[o[e + 10]] + T[o[e + 11]] + T[o[e + 12]] + T[o[e + 13]] + T[o[e + 14]] + T[o[e + 15]]).toLowerCase();
|
|
420
420
|
if (!function(t) {
|
|
421
|
-
return typeof t == "string" &&
|
|
421
|
+
return typeof t == "string" && YA.test(t);
|
|
422
422
|
}(a)) throw TypeError("Stringified UUID is invalid");
|
|
423
423
|
return a;
|
|
424
424
|
}
|
|
425
425
|
function kt(o, e, a) {
|
|
426
|
-
var t = (o = o || {}).random || (o.rng ||
|
|
427
|
-
return t[6] = 15 & t[6] | 64, t[8] = 63 & t[8] | 128,
|
|
426
|
+
var t = (o = o || {}).random || (o.rng || VA)();
|
|
427
|
+
return t[6] = 15 & t[6] | 64, t[8] = 63 & t[8] | 128, WA(t);
|
|
428
428
|
}
|
|
429
|
-
class
|
|
429
|
+
class XA {
|
|
430
430
|
constructor(e, a) {
|
|
431
431
|
ge(this, "checkLoaderInitialized", async () => {
|
|
432
432
|
const e = this;
|
|
@@ -456,15 +456,17 @@ class ZA {
|
|
|
456
456
|
class Dt extends Fa {
|
|
457
457
|
constructor(e) {
|
|
458
458
|
super(e), this.dracoLoader = null, this.ktx2Loader = null, this.meshoptDecoder = null, this.pluginCallbacks = [], this.register(function(a) {
|
|
459
|
+
return new ti(a);
|
|
460
|
+
}), this.register(function(a) {
|
|
459
461
|
return new Ai(a);
|
|
460
462
|
}), this.register(function(a) {
|
|
461
|
-
return new
|
|
463
|
+
return new li(a);
|
|
462
464
|
}), this.register(function(a) {
|
|
463
465
|
return new hi(a);
|
|
464
466
|
}), this.register(function(a) {
|
|
465
467
|
return new gi(a);
|
|
466
468
|
}), this.register(function(a) {
|
|
467
|
-
return new
|
|
469
|
+
return new si(a);
|
|
468
470
|
}), this.register(function(a) {
|
|
469
471
|
return new ri(a);
|
|
470
472
|
}), this.register(function(a) {
|
|
@@ -472,21 +474,19 @@ class Dt extends Fa {
|
|
|
472
474
|
}), this.register(function(a) {
|
|
473
475
|
return new oi(a);
|
|
474
476
|
}), this.register(function(a) {
|
|
475
|
-
return new
|
|
476
|
-
}), this.register(function(a) {
|
|
477
|
-
return new ti(a);
|
|
478
|
-
}), this.register(function(a) {
|
|
479
|
-
return new di(a);
|
|
477
|
+
return new ai(a);
|
|
480
478
|
}), this.register(function(a) {
|
|
481
|
-
return new
|
|
479
|
+
return new ci(a);
|
|
482
480
|
}), this.register(function(a) {
|
|
483
|
-
return new
|
|
481
|
+
return new ii(a);
|
|
484
482
|
}), this.register(function(a) {
|
|
485
483
|
return new bi(a);
|
|
486
484
|
}), this.register(function(a) {
|
|
487
|
-
return new
|
|
485
|
+
return new di(a);
|
|
488
486
|
}), this.register(function(a) {
|
|
489
|
-
return new
|
|
487
|
+
return new $A(a);
|
|
488
|
+
}), this.register(function(a) {
|
|
489
|
+
return new fi(a);
|
|
490
490
|
}), this.register(function(a) {
|
|
491
491
|
return new ui(a);
|
|
492
492
|
});
|
|
@@ -496,13 +496,13 @@ class Dt extends Fa {
|
|
|
496
496
|
let s;
|
|
497
497
|
if (this.resourcePath !== "") s = this.resourcePath;
|
|
498
498
|
else if (this.path !== "") {
|
|
499
|
-
const n =
|
|
500
|
-
s =
|
|
501
|
-
} else s =
|
|
499
|
+
const n = Pe.extractUrlBase(e);
|
|
500
|
+
s = Pe.resolveURL(n, this.path);
|
|
501
|
+
} else s = Pe.extractUrlBase(e);
|
|
502
502
|
this.manager.itemStart(e);
|
|
503
503
|
const r = function(n) {
|
|
504
504
|
A ? A(n) : console.error(n), i.manager.itemError(e), i.manager.itemEnd(e);
|
|
505
|
-
}, c = new
|
|
505
|
+
}, c = new Be(this.manager);
|
|
506
506
|
c.setPath(this.path), c.setResponseType("arraybuffer"), c.setRequestHeader(this.requestHeader), c.setWithCredentials(this.withCredentials), c.load(e, function(n) {
|
|
507
507
|
try {
|
|
508
508
|
i.parse(n, s, function(b) {
|
|
@@ -535,7 +535,7 @@ class Dt extends Fa {
|
|
|
535
535
|
else if (e instanceof ArrayBuffer)
|
|
536
536
|
if (c.decode(new Uint8Array(e, 0, 4)) === jt) {
|
|
537
537
|
try {
|
|
538
|
-
s[j.KHR_BINARY_GLTF] = new
|
|
538
|
+
s[j.KHR_BINARY_GLTF] = new Ci(e);
|
|
539
539
|
} catch (b) {
|
|
540
540
|
return void (A && A(b));
|
|
541
541
|
}
|
|
@@ -543,7 +543,7 @@ class Dt extends Fa {
|
|
|
543
543
|
} else i = JSON.parse(c.decode(e));
|
|
544
544
|
else i = e;
|
|
545
545
|
if (i.asset === void 0 || i.asset.version[0] < 2) return void (A && A(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));
|
|
546
|
-
const n = new
|
|
546
|
+
const n = new Si(i, { path: a || this.resourcePath || "", crossOrigin: this.crossOrigin, requestHeader: this.requestHeader, manager: this.manager, ktx2Loader: this.ktx2Loader, meshoptDecoder: this.meshoptDecoder });
|
|
547
547
|
n.fileLoader.setRequestHeader(this.requestHeader);
|
|
548
548
|
for (let b = 0; b < this.pluginCallbacks.length; b++) {
|
|
549
549
|
const d = this.pluginCallbacks[b](n);
|
|
@@ -553,16 +553,16 @@ class Dt extends Fa {
|
|
|
553
553
|
const d = i.extensionsUsed[b], l = i.extensionsRequired || [];
|
|
554
554
|
switch (d) {
|
|
555
555
|
case j.KHR_MATERIALS_UNLIT:
|
|
556
|
-
s[d] = new
|
|
556
|
+
s[d] = new ei();
|
|
557
557
|
break;
|
|
558
558
|
case j.KHR_DRACO_MESH_COMPRESSION:
|
|
559
|
-
s[d] = new
|
|
559
|
+
s[d] = new Bi(i, this.dracoLoader);
|
|
560
560
|
break;
|
|
561
561
|
case j.KHR_TEXTURE_TRANSFORM:
|
|
562
562
|
s[d] = new mi();
|
|
563
563
|
break;
|
|
564
564
|
case j.KHR_MESH_QUANTIZATION:
|
|
565
|
-
s[d] = new
|
|
565
|
+
s[d] = new Ei();
|
|
566
566
|
break;
|
|
567
567
|
default:
|
|
568
568
|
l.indexOf(d) >= 0 && r[d] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + d + '".');
|
|
@@ -577,7 +577,7 @@ class Dt extends Fa {
|
|
|
577
577
|
});
|
|
578
578
|
}
|
|
579
579
|
}
|
|
580
|
-
function
|
|
580
|
+
function ZA() {
|
|
581
581
|
let o = {};
|
|
582
582
|
return { get: function(e) {
|
|
583
583
|
return o[e];
|
|
@@ -590,7 +590,7 @@ function $A() {
|
|
|
590
590
|
} };
|
|
591
591
|
}
|
|
592
592
|
const j = { KHR_BINARY_GLTF: "KHR_binary_glTF", KHR_DRACO_MESH_COMPRESSION: "KHR_draco_mesh_compression", KHR_LIGHTS_PUNCTUAL: "KHR_lights_punctual", KHR_MATERIALS_CLEARCOAT: "KHR_materials_clearcoat", KHR_MATERIALS_DISPERSION: "KHR_materials_dispersion", KHR_MATERIALS_IOR: "KHR_materials_ior", KHR_MATERIALS_SHEEN: "KHR_materials_sheen", KHR_MATERIALS_SPECULAR: "KHR_materials_specular", KHR_MATERIALS_TRANSMISSION: "KHR_materials_transmission", KHR_MATERIALS_IRIDESCENCE: "KHR_materials_iridescence", KHR_MATERIALS_ANISOTROPY: "KHR_materials_anisotropy", KHR_MATERIALS_UNLIT: "KHR_materials_unlit", KHR_MATERIALS_VOLUME: "KHR_materials_volume", KHR_TEXTURE_BASISU: "KHR_texture_basisu", KHR_TEXTURE_TRANSFORM: "KHR_texture_transform", KHR_MESH_QUANTIZATION: "KHR_mesh_quantization", KHR_MATERIALS_EMISSIVE_STRENGTH: "KHR_materials_emissive_strength", EXT_MATERIALS_BUMP: "EXT_materials_bump", EXT_TEXTURE_WEBP: "EXT_texture_webp", EXT_TEXTURE_AVIF: "EXT_texture_avif", EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression", EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing" };
|
|
593
|
-
class
|
|
593
|
+
class $A {
|
|
594
594
|
constructor(e) {
|
|
595
595
|
this.parser = e, this.name = j.KHR_LIGHTS_PUNCTUAL, this.cache = { refs: {}, uses: {} };
|
|
596
596
|
}
|
|
@@ -635,12 +635,12 @@ class ei {
|
|
|
635
635
|
});
|
|
636
636
|
}
|
|
637
637
|
}
|
|
638
|
-
class
|
|
638
|
+
class ei {
|
|
639
639
|
constructor() {
|
|
640
640
|
this.name = j.KHR_MATERIALS_UNLIT;
|
|
641
641
|
}
|
|
642
642
|
getMaterialType() {
|
|
643
|
-
return
|
|
643
|
+
return Le;
|
|
644
644
|
}
|
|
645
645
|
extendParams(e, a, t) {
|
|
646
646
|
const A = [];
|
|
@@ -656,7 +656,7 @@ class ai {
|
|
|
656
656
|
return Promise.all(A);
|
|
657
657
|
}
|
|
658
658
|
}
|
|
659
|
-
class
|
|
659
|
+
class ai {
|
|
660
660
|
constructor(e) {
|
|
661
661
|
this.parser = e, this.name = j.KHR_MATERIALS_EMISSIVE_STRENGTH;
|
|
662
662
|
}
|
|
@@ -667,7 +667,7 @@ class ti {
|
|
|
667
667
|
return A !== void 0 && (a.emissiveIntensity = A), Promise.resolve();
|
|
668
668
|
}
|
|
669
669
|
}
|
|
670
|
-
class
|
|
670
|
+
class ti {
|
|
671
671
|
constructor(e) {
|
|
672
672
|
this.parser = e, this.name = j.KHR_MATERIALS_CLEARCOAT;
|
|
673
673
|
}
|
|
@@ -686,7 +686,7 @@ class Ai {
|
|
|
686
686
|
return Promise.all(i);
|
|
687
687
|
}
|
|
688
688
|
}
|
|
689
|
-
class
|
|
689
|
+
class Ai {
|
|
690
690
|
constructor(e) {
|
|
691
691
|
this.parser = e, this.name = j.KHR_MATERIALS_DISPERSION;
|
|
692
692
|
}
|
|
@@ -701,7 +701,7 @@ class ii {
|
|
|
701
701
|
return a.dispersion = A.dispersion !== void 0 ? A.dispersion : 0, Promise.resolve();
|
|
702
702
|
}
|
|
703
703
|
}
|
|
704
|
-
class
|
|
704
|
+
class ii {
|
|
705
705
|
constructor(e) {
|
|
706
706
|
this.parser = e, this.name = j.KHR_MATERIALS_IRIDESCENCE;
|
|
707
707
|
}
|
|
@@ -716,7 +716,7 @@ class si {
|
|
|
716
716
|
return s.iridescenceFactor !== void 0 && (a.iridescence = s.iridescenceFactor), s.iridescenceTexture !== void 0 && i.push(t.assignTexture(a, "iridescenceMap", s.iridescenceTexture)), s.iridescenceIor !== void 0 && (a.iridescenceIOR = s.iridescenceIor), a.iridescenceThicknessRange === void 0 && (a.iridescenceThicknessRange = [100, 400]), s.iridescenceThicknessMinimum !== void 0 && (a.iridescenceThicknessRange[0] = s.iridescenceThicknessMinimum), s.iridescenceThicknessMaximum !== void 0 && (a.iridescenceThicknessRange[1] = s.iridescenceThicknessMaximum), s.iridescenceThicknessTexture !== void 0 && i.push(t.assignTexture(a, "iridescenceThicknessMap", s.iridescenceThicknessTexture)), Promise.all(i);
|
|
717
717
|
}
|
|
718
718
|
}
|
|
719
|
-
class
|
|
719
|
+
class si {
|
|
720
720
|
constructor(e) {
|
|
721
721
|
this.parser = e, this.name = j.KHR_MATERIALS_SHEEN;
|
|
722
722
|
}
|
|
@@ -737,7 +737,7 @@ class ri {
|
|
|
737
737
|
return s.sheenRoughnessFactor !== void 0 && (a.sheenRoughness = s.sheenRoughnessFactor), s.sheenColorTexture !== void 0 && i.push(t.assignTexture(a, "sheenColorMap", s.sheenColorTexture, re)), s.sheenRoughnessTexture !== void 0 && i.push(t.assignTexture(a, "sheenRoughnessMap", s.sheenRoughnessTexture)), Promise.all(i);
|
|
738
738
|
}
|
|
739
739
|
}
|
|
740
|
-
class
|
|
740
|
+
class ri {
|
|
741
741
|
constructor(e) {
|
|
742
742
|
this.parser = e, this.name = j.KHR_MATERIALS_TRANSMISSION;
|
|
743
743
|
}
|
|
@@ -752,7 +752,7 @@ class ni {
|
|
|
752
752
|
return s.transmissionFactor !== void 0 && (a.transmission = s.transmissionFactor), s.transmissionTexture !== void 0 && i.push(t.assignTexture(a, "transmissionMap", s.transmissionTexture)), Promise.all(i);
|
|
753
753
|
}
|
|
754
754
|
}
|
|
755
|
-
class
|
|
755
|
+
class ni {
|
|
756
756
|
constructor(e) {
|
|
757
757
|
this.parser = e, this.name = j.KHR_MATERIALS_VOLUME;
|
|
758
758
|
}
|
|
@@ -769,7 +769,7 @@ class oi {
|
|
|
769
769
|
return a.attenuationColor = new he().setRGB(r[0], r[1], r[2], K), Promise.all(i);
|
|
770
770
|
}
|
|
771
771
|
}
|
|
772
|
-
class
|
|
772
|
+
class oi {
|
|
773
773
|
constructor(e) {
|
|
774
774
|
this.parser = e, this.name = j.KHR_MATERIALS_IOR;
|
|
775
775
|
}
|
|
@@ -784,7 +784,7 @@ class ci {
|
|
|
784
784
|
return a.ior = A.ior !== void 0 ? A.ior : 1.5, Promise.resolve();
|
|
785
785
|
}
|
|
786
786
|
}
|
|
787
|
-
class
|
|
787
|
+
class ci {
|
|
788
788
|
constructor(e) {
|
|
789
789
|
this.parser = e, this.name = j.KHR_MATERIALS_SPECULAR;
|
|
790
790
|
}
|
|
@@ -801,7 +801,7 @@ class di {
|
|
|
801
801
|
return a.specularColor = new he().setRGB(r[0], r[1], r[2], K), s.specularColorTexture !== void 0 && i.push(t.assignTexture(a, "specularColorMap", s.specularColorTexture, re)), Promise.all(i);
|
|
802
802
|
}
|
|
803
803
|
}
|
|
804
|
-
class
|
|
804
|
+
class di {
|
|
805
805
|
constructor(e) {
|
|
806
806
|
this.parser = e, this.name = j.EXT_MATERIALS_BUMP;
|
|
807
807
|
}
|
|
@@ -816,7 +816,7 @@ class bi {
|
|
|
816
816
|
return a.bumpScale = s.bumpFactor !== void 0 ? s.bumpFactor : 1, s.bumpTexture !== void 0 && i.push(t.assignTexture(a, "bumpMap", s.bumpTexture)), Promise.all(i);
|
|
817
817
|
}
|
|
818
818
|
}
|
|
819
|
-
class
|
|
819
|
+
class bi {
|
|
820
820
|
constructor(e) {
|
|
821
821
|
this.parser = e, this.name = j.KHR_MATERIALS_ANISOTROPY;
|
|
822
822
|
}
|
|
@@ -831,7 +831,7 @@ class li {
|
|
|
831
831
|
return s.anisotropyStrength !== void 0 && (a.anisotropy = s.anisotropyStrength), s.anisotropyRotation !== void 0 && (a.anisotropyRotation = s.anisotropyRotation), s.anisotropyTexture !== void 0 && i.push(t.assignTexture(a, "anisotropyMap", s.anisotropyTexture)), Promise.all(i);
|
|
832
832
|
}
|
|
833
833
|
}
|
|
834
|
-
class
|
|
834
|
+
class li {
|
|
835
835
|
constructor(e) {
|
|
836
836
|
this.parser = e, this.name = j.KHR_TEXTURE_BASISU;
|
|
837
837
|
}
|
|
@@ -846,7 +846,7 @@ class hi {
|
|
|
846
846
|
return a.loadTextureImage(e, i.source, s);
|
|
847
847
|
}
|
|
848
848
|
}
|
|
849
|
-
class
|
|
849
|
+
class hi {
|
|
850
850
|
constructor(e) {
|
|
851
851
|
this.parser = e, this.name = j.EXT_TEXTURE_WEBP, this.isSupported = null;
|
|
852
852
|
}
|
|
@@ -874,7 +874,7 @@ class gi {
|
|
|
874
874
|
})), this.isSupported;
|
|
875
875
|
}
|
|
876
876
|
}
|
|
877
|
-
class
|
|
877
|
+
class gi {
|
|
878
878
|
constructor(e) {
|
|
879
879
|
this.parser = e, this.name = j.EXT_TEXTURE_AVIF, this.isSupported = null;
|
|
880
880
|
}
|
|
@@ -902,7 +902,7 @@ class fi {
|
|
|
902
902
|
})), this.isSupported;
|
|
903
903
|
}
|
|
904
904
|
}
|
|
905
|
-
class
|
|
905
|
+
class fi {
|
|
906
906
|
constructor(e) {
|
|
907
907
|
this.name = j.EXT_MESHOPT_COMPRESSION, this.parser = e;
|
|
908
908
|
}
|
|
@@ -941,11 +941,11 @@ class ui {
|
|
|
941
941
|
return s.length < 1 ? null : (s.push(this.parser.createNodeMesh(e)), Promise.all(s).then((c) => {
|
|
942
942
|
const n = c.pop(), b = n.isGroup ? n.children : [n], d = c[0].count, l = [];
|
|
943
943
|
for (const g of b) {
|
|
944
|
-
const h = new
|
|
945
|
-
for (let B = 0; B < d; B++) r.TRANSLATION && f.fromBufferAttribute(r.TRANSLATION, B), r.ROTATION &&
|
|
944
|
+
const h = new je(), f = new S(), I = new Ct(), u = new S(1, 1, 1), p = new AA(g.geometry, g.material, d);
|
|
945
|
+
for (let B = 0; B < d; B++) r.TRANSLATION && f.fromBufferAttribute(r.TRANSLATION, B), r.ROTATION && I.fromBufferAttribute(r.ROTATION, B), r.SCALE && u.fromBufferAttribute(r.SCALE, B), p.setMatrixAt(B, h.compose(f, I, u));
|
|
946
946
|
for (const B in r) if (B === "_COLOR_0") {
|
|
947
947
|
const C = r[B];
|
|
948
|
-
p.instanceColor = new
|
|
948
|
+
p.instanceColor = new ya(C.array, C.itemSize, C.normalized);
|
|
949
949
|
} else B !== "TRANSLATION" && B !== "ROTATION" && B !== "SCALE" && g.geometry.setAttribute(B, r[B]);
|
|
950
950
|
Bt.prototype.copy.call(p, g), this.parser.assignFinalMaterial(p), l.push(p);
|
|
951
951
|
}
|
|
@@ -953,8 +953,8 @@ class ui {
|
|
|
953
953
|
}));
|
|
954
954
|
}
|
|
955
955
|
}
|
|
956
|
-
const jt = "glTF",
|
|
957
|
-
class
|
|
956
|
+
const jt = "glTF", Ii = 1313821514, pi = 5130562;
|
|
957
|
+
class Ci {
|
|
958
958
|
constructor(e) {
|
|
959
959
|
this.name = j.KHR_BINARY_GLTF, this.content = null, this.body = null;
|
|
960
960
|
const a = new DataView(e, 0, 12), t = new TextDecoder();
|
|
@@ -966,10 +966,10 @@ class Bi {
|
|
|
966
966
|
const r = i.getUint32(s, !0);
|
|
967
967
|
s += 4;
|
|
968
968
|
const c = i.getUint32(s, !0);
|
|
969
|
-
if (s += 4, c ===
|
|
969
|
+
if (s += 4, c === Ii) {
|
|
970
970
|
const n = new Uint8Array(e, 12 + s, r);
|
|
971
971
|
this.content = t.decode(n);
|
|
972
|
-
} else if (c ===
|
|
972
|
+
} else if (c === pi) {
|
|
973
973
|
const n = 12 + s;
|
|
974
974
|
this.body = e.slice(n, n + r);
|
|
975
975
|
}
|
|
@@ -978,7 +978,7 @@ class Bi {
|
|
|
978
978
|
if (this.content === null) throw new Error("THREE.GLTFLoader: JSON content not found.");
|
|
979
979
|
}
|
|
980
980
|
}
|
|
981
|
-
class
|
|
981
|
+
class Bi {
|
|
982
982
|
constructor(e, a) {
|
|
983
983
|
if (!a) throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");
|
|
984
984
|
this.name = j.KHR_DRACO_MESH_COMPRESSION, this.json = e, this.dracoLoader = a, this.dracoLoader.preload();
|
|
@@ -986,13 +986,13 @@ class Ei {
|
|
|
986
986
|
decodePrimitive(e, a) {
|
|
987
987
|
const t = this.json, A = this.dracoLoader, i = e.extensions[this.name].bufferView, s = e.extensions[this.name].attributes, r = {}, c = {}, n = {};
|
|
988
988
|
for (const b in s) {
|
|
989
|
-
const d =
|
|
989
|
+
const d = Da[b] || b.toLowerCase();
|
|
990
990
|
r[d] = s[b];
|
|
991
991
|
}
|
|
992
992
|
for (const b in e.attributes) {
|
|
993
|
-
const d =
|
|
993
|
+
const d = Da[b] || b.toLowerCase();
|
|
994
994
|
if (s[b] !== void 0) {
|
|
995
|
-
const l = t.accessors[e.attributes[b]], g =
|
|
995
|
+
const l = t.accessors[e.attributes[b]], g = ke[l.componentType];
|
|
996
996
|
n[d] = g.name, c[d] = l.normalized === !0;
|
|
997
997
|
}
|
|
998
998
|
}
|
|
@@ -1000,8 +1000,8 @@ class Ei {
|
|
|
1000
1000
|
return new Promise(function(d, l) {
|
|
1001
1001
|
A.decodeDracoFile(b, function(g) {
|
|
1002
1002
|
for (const h in g.attributes) {
|
|
1003
|
-
const f = g.attributes[h],
|
|
1004
|
-
|
|
1003
|
+
const f = g.attributes[h], I = c[h];
|
|
1004
|
+
I !== void 0 && (f.normalized = I);
|
|
1005
1005
|
}
|
|
1006
1006
|
d(g);
|
|
1007
1007
|
}, r, n, K, l);
|
|
@@ -1017,7 +1017,7 @@ class mi {
|
|
|
1017
1017
|
return (a.texCoord !== void 0 && a.texCoord !== e.channel || a.offset !== void 0 || a.rotation !== void 0 || a.scale !== void 0) && (e = e.clone(), a.texCoord !== void 0 && (e.channel = a.texCoord), a.offset !== void 0 && e.offset.fromArray(a.offset), a.rotation !== void 0 && (e.rotation = a.rotation), a.scale !== void 0 && e.repeat.fromArray(a.scale), e.needsUpdate = !0), e;
|
|
1018
1018
|
}
|
|
1019
1019
|
}
|
|
1020
|
-
class
|
|
1020
|
+
class Ei {
|
|
1021
1021
|
constructor() {
|
|
1022
1022
|
this.name = j.KHR_MESH_QUANTIZATION;
|
|
1023
1023
|
}
|
|
@@ -1032,29 +1032,29 @@ class Mt extends jA {
|
|
|
1032
1032
|
return a;
|
|
1033
1033
|
}
|
|
1034
1034
|
interpolate_(e, a, t, A) {
|
|
1035
|
-
const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, c = 2 * r, n = 3 * r, b = A - a, d = (t - a) / b, l = d * d, g = l * d, h = e * n, f = h - n,
|
|
1035
|
+
const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, c = 2 * r, n = 3 * r, b = A - a, d = (t - a) / b, l = d * d, g = l * d, h = e * n, f = h - n, I = -2 * g + 3 * l, u = g - l, p = 1 - I, B = u - l + d;
|
|
1036
1036
|
for (let C = 0; C !== r; C++) {
|
|
1037
|
-
const w = s[f + C + r], x = s[f + C + c] * b, y = s[h + C + r],
|
|
1038
|
-
i[C] = p * w + B * x +
|
|
1037
|
+
const w = s[f + C + r], x = s[f + C + c] * b, y = s[h + C + r], m = s[h + C] * b;
|
|
1038
|
+
i[C] = p * w + B * x + I * y + u * m;
|
|
1039
1039
|
}
|
|
1040
1040
|
return i;
|
|
1041
1041
|
}
|
|
1042
1042
|
}
|
|
1043
|
-
const
|
|
1044
|
-
class
|
|
1043
|
+
const Qi = new Ct();
|
|
1044
|
+
class yi extends Mt {
|
|
1045
1045
|
interpolate_(e, a, t, A) {
|
|
1046
1046
|
const i = super.interpolate_(e, a, t, A);
|
|
1047
|
-
return
|
|
1047
|
+
return Qi.fromArray(i).normalize().toArray(i), i;
|
|
1048
1048
|
}
|
|
1049
1049
|
}
|
|
1050
|
-
const H = { FLOAT: 5126, FLOAT_MAT3: 35675, FLOAT_MAT4: 35676, FLOAT_VEC2: 35664, FLOAT_VEC3: 35665, FLOAT_VEC4: 35666, LINEAR: 9729, REPEAT: 10497, SAMPLER_2D: 35678, POINTS: 0, LINES: 1, LINE_LOOP: 2, LINE_STRIP: 3, TRIANGLES: 4, TRIANGLE_STRIP: 5, TRIANGLE_FAN: 6, UNSIGNED_BYTE: 5121, UNSIGNED_SHORT: 5123 },
|
|
1050
|
+
const H = { FLOAT: 5126, FLOAT_MAT3: 35675, FLOAT_MAT4: 35676, FLOAT_VEC2: 35664, FLOAT_VEC3: 35665, FLOAT_VEC4: 35666, LINEAR: 9729, REPEAT: 10497, SAMPLER_2D: 35678, POINTS: 0, LINES: 1, LINE_LOOP: 2, LINE_STRIP: 3, TRIANGLES: 4, TRIANGLE_STRIP: 5, TRIANGLE_FAN: 6, UNSIGNED_BYTE: 5121, UNSIGNED_SHORT: 5123 }, ke = { 5120: Int8Array, 5121: Uint8Array, 5122: Int16Array, 5123: Uint16Array, 5125: Uint32Array, 5126: Float32Array }, $a = { 9728: M, 9729: Ce, 9984: EA, 9985: QA, 9986: yA, 9987: $e }, et = { 33071: wA, 33648: xA, 10497: wa }, ra = { SCALAR: 1, VEC2: 2, VEC3: 3, VEC4: 4, MAT2: 4, MAT3: 9, MAT4: 16 }, Da = { POSITION: "position", NORMAL: "normal", TANGENT: "tangent", TEXCOORD_0: "uv", TEXCOORD_1: "uv1", TEXCOORD_2: "uv2", TEXCOORD_3: "uv3", COLOR_0: "color", WEIGHTS_0: "skinWeight", JOINTS_0: "skinIndex" }, oe = { scale: "scale", translation: "position", rotation: "quaternion", weights: "morphTargetInfluences" }, wi = { CUBICSPLINE: void 0, LINEAR: Et, STEP: kA }, xi = "OPAQUE", ki = "MASK", Di = "BLEND";
|
|
1051
1051
|
function fe(o, e, a) {
|
|
1052
1052
|
for (const t in a.extensions) o[t] === void 0 && (e.userData.gltfExtensions = e.userData.gltfExtensions || {}, e.userData.gltfExtensions[t] = a.extensions[t]);
|
|
1053
1053
|
}
|
|
1054
1054
|
function ie(o, e) {
|
|
1055
1055
|
e.extras !== void 0 && (typeof e.extras == "object" ? Object.assign(o.userData, e.extras) : console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + e.extras));
|
|
1056
1056
|
}
|
|
1057
|
-
function
|
|
1057
|
+
function ji(o, e) {
|
|
1058
1058
|
if (o.updateMorphTargets(), e.weights !== void 0) for (let a = 0, t = e.weights.length; a < t; a++) o.morphTargetInfluences[a] = e.weights[a];
|
|
1059
1059
|
if (e.extras && Array.isArray(e.extras.targetNames)) {
|
|
1060
1060
|
const a = e.extras.targetNames;
|
|
@@ -1064,19 +1064,19 @@ function Mi(o, e) {
|
|
|
1064
1064
|
} else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.");
|
|
1065
1065
|
}
|
|
1066
1066
|
}
|
|
1067
|
-
function
|
|
1067
|
+
function Mi(o) {
|
|
1068
1068
|
let e;
|
|
1069
1069
|
const a = o.extensions && o.extensions[j.KHR_DRACO_MESH_COMPRESSION];
|
|
1070
|
-
if (e = a ? "draco:" + a.bufferView + ":" + a.indices + ":" +
|
|
1070
|
+
if (e = a ? "draco:" + a.bufferView + ":" + a.indices + ":" + na(a.attributes) : o.indices + ":" + na(o.attributes) + ":" + o.mode, o.targets !== void 0) for (let t = 0, A = o.targets.length; t < A; t++) e += ":" + na(o.targets[t]);
|
|
1071
1071
|
return e;
|
|
1072
1072
|
}
|
|
1073
|
-
function
|
|
1073
|
+
function na(o) {
|
|
1074
1074
|
let e = "";
|
|
1075
1075
|
const a = Object.keys(o).sort();
|
|
1076
1076
|
for (let t = 0, A = a.length; t < A; t++) e += a[t] + ":" + o[a[t]] + ";";
|
|
1077
1077
|
return e;
|
|
1078
1078
|
}
|
|
1079
|
-
function
|
|
1079
|
+
function ja(o) {
|
|
1080
1080
|
switch (o) {
|
|
1081
1081
|
case Int8Array:
|
|
1082
1082
|
return 1 / 127;
|
|
@@ -1090,10 +1090,10 @@ function Da(o) {
|
|
|
1090
1090
|
throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.");
|
|
1091
1091
|
}
|
|
1092
1092
|
}
|
|
1093
|
-
const
|
|
1094
|
-
class
|
|
1093
|
+
const Ri = new je();
|
|
1094
|
+
class Si {
|
|
1095
1095
|
constructor(e = {}, a = {}) {
|
|
1096
|
-
this.json = e, this.extensions = {}, this.plugins = {}, this.options = a, this.cache = new
|
|
1096
|
+
this.json = e, this.extensions = {}, this.plugins = {}, this.options = a, this.cache = new ZA(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
|
|
1097
1097
|
let t = !1, A = -1, i = !1, s = -1;
|
|
1098
1098
|
if (typeof navigator < "u") {
|
|
1099
1099
|
const r = navigator.userAgent;
|
|
@@ -1101,7 +1101,7 @@ class Fi {
|
|
|
1101
1101
|
const c = r.match(/Version\/(\d+)/);
|
|
1102
1102
|
A = t && c ? parseInt(c[1], 10) : -1, i = r.indexOf("Firefox") > -1, s = i ? r.match(/Firefox\/([0-9]+)\./)[1] : -1;
|
|
1103
1103
|
}
|
|
1104
|
-
typeof createImageBitmap > "u" || t && A < 17 || i && s < 98 ? this.textureLoader = new iA(this.options.manager) : this.textureLoader = new sA(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new
|
|
1104
|
+
typeof createImageBitmap > "u" || t && A < 17 || i && s < 98 ? this.textureLoader = new iA(this.options.manager) : this.textureLoader = new sA(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new Be(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
|
|
1105
1105
|
}
|
|
1106
1106
|
setExtensions(e) {
|
|
1107
1107
|
this.extensions = e;
|
|
@@ -1244,7 +1244,7 @@ class Fi {
|
|
|
1244
1244
|
if (a.uri === void 0 && e === 0) return Promise.resolve(this.extensions[j.KHR_BINARY_GLTF].body);
|
|
1245
1245
|
const A = this.options;
|
|
1246
1246
|
return new Promise(function(i, s) {
|
|
1247
|
-
t.load(
|
|
1247
|
+
t.load(Pe.resolveURL(a.uri, A.path), i, void 0, function() {
|
|
1248
1248
|
s(new Error('THREE.GLTFLoader: Failed to load buffer "' + a.uri + '".'));
|
|
1249
1249
|
});
|
|
1250
1250
|
});
|
|
@@ -1259,28 +1259,28 @@ class Fi {
|
|
|
1259
1259
|
loadAccessor(e) {
|
|
1260
1260
|
const a = this, t = this.json, A = this.json.accessors[e];
|
|
1261
1261
|
if (A.bufferView === void 0 && A.sparse === void 0) {
|
|
1262
|
-
const s =
|
|
1262
|
+
const s = ra[A.type], r = ke[A.componentType], c = A.normalized === !0, n = new r(A.count * s);
|
|
1263
1263
|
return Promise.resolve(new le(n, s, c));
|
|
1264
1264
|
}
|
|
1265
1265
|
const i = [];
|
|
1266
1266
|
return A.bufferView !== void 0 ? i.push(this.getDependency("bufferView", A.bufferView)) : i.push(null), A.sparse !== void 0 && (i.push(this.getDependency("bufferView", A.sparse.indices.bufferView)), i.push(this.getDependency("bufferView", A.sparse.values.bufferView))), Promise.all(i).then(function(s) {
|
|
1267
|
-
const r = s[0], c =
|
|
1268
|
-
let f,
|
|
1267
|
+
const r = s[0], c = ra[A.type], n = ke[A.componentType], b = n.BYTES_PER_ELEMENT, d = b * c, l = A.byteOffset || 0, g = A.bufferView !== void 0 ? t.bufferViews[A.bufferView].byteStride : void 0, h = A.normalized === !0;
|
|
1268
|
+
let f, I;
|
|
1269
1269
|
if (g && g !== d) {
|
|
1270
|
-
const
|
|
1270
|
+
const u = Math.floor(l / g), p = "InterleavedBuffer:" + A.bufferView + ":" + A.componentType + ":" + u + ":" + A.count;
|
|
1271
1271
|
let B = a.cache.get(p);
|
|
1272
|
-
B || (f = new n(r,
|
|
1273
|
-
} else f = r === null ? new n(A.count * c) : new n(r, l, A.count * c),
|
|
1272
|
+
B || (f = new n(r, u * g, A.count * g / b), B = new rA(f, g / b), a.cache.add(p, B)), I = new nA(B, c, l % g / b, h);
|
|
1273
|
+
} else f = r === null ? new n(A.count * c) : new n(r, l, A.count * c), I = new le(f, c, h);
|
|
1274
1274
|
if (A.sparse !== void 0) {
|
|
1275
|
-
const
|
|
1276
|
-
r !== null && (
|
|
1277
|
-
for (let y = 0,
|
|
1275
|
+
const u = ra.SCALAR, p = ke[A.sparse.indices.componentType], B = A.sparse.indices.byteOffset || 0, C = A.sparse.values.byteOffset || 0, w = new p(s[1], B, A.sparse.count * u), x = new n(s[2], C, A.sparse.count * c);
|
|
1276
|
+
r !== null && (I = new le(I.array.slice(), I.itemSize, I.normalized)), I.normalized = !1;
|
|
1277
|
+
for (let y = 0, m = w.length; y < m; y++) {
|
|
1278
1278
|
const Q = w[y];
|
|
1279
|
-
if (
|
|
1279
|
+
if (I.setX(Q, x[y * c]), c >= 2 && I.setY(Q, x[y * c + 1]), c >= 3 && I.setZ(Q, x[y * c + 2]), c >= 4 && I.setW(Q, x[y * c + 3]), c >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
|
|
1280
1280
|
}
|
|
1281
|
-
|
|
1281
|
+
I.normalized = h;
|
|
1282
1282
|
}
|
|
1283
|
-
return
|
|
1283
|
+
return I;
|
|
1284
1284
|
});
|
|
1285
1285
|
}
|
|
1286
1286
|
loadTexture(e) {
|
|
@@ -1298,7 +1298,7 @@ class Fi {
|
|
|
1298
1298
|
const n = this.loadImageSource(a, t).then(function(b) {
|
|
1299
1299
|
b.flipY = !1, b.name = s.name || r.name || "", b.name === "" && typeof r.uri == "string" && r.uri.startsWith("data:image/") === !1 && (b.name = r.uri);
|
|
1300
1300
|
const d = (i.samplers || {})[s.sampler] || {};
|
|
1301
|
-
return b.magFilter = $a[d.magFilter] ||
|
|
1301
|
+
return b.magFilter = $a[d.magFilter] || Ce, b.minFilter = $a[d.minFilter] || $e, b.wrapS = et[d.wrapS] || wa, b.wrapT = et[d.wrapT] || wa, b.generateMipmaps = !b.isCompressedTexture && b.minFilter !== M && b.minFilter !== Ce, A.associations.set(b, { textures: e }), b;
|
|
1302
1302
|
}).catch(function() {
|
|
1303
1303
|
return null;
|
|
1304
1304
|
});
|
|
@@ -1319,9 +1319,9 @@ class Fi {
|
|
|
1319
1319
|
return new Promise(function(l, g) {
|
|
1320
1320
|
let h = l;
|
|
1321
1321
|
a.isImageBitmapLoader === !0 && (h = function(f) {
|
|
1322
|
-
const
|
|
1323
|
-
|
|
1324
|
-
}), a.load(
|
|
1322
|
+
const I = new Na(f);
|
|
1323
|
+
I.needsUpdate = !0, l(I);
|
|
1324
|
+
}), a.load(Pe.resolveURL(d, i.path), h, void 0, g);
|
|
1325
1325
|
});
|
|
1326
1326
|
}).then(function(d) {
|
|
1327
1327
|
var l;
|
|
@@ -1352,11 +1352,11 @@ class Fi {
|
|
|
1352
1352
|
if (e.isPoints) {
|
|
1353
1353
|
const r = "PointsMaterial:" + t.uuid;
|
|
1354
1354
|
let c = this.cache.get(r);
|
|
1355
|
-
c || (c = new oA(),
|
|
1355
|
+
c || (c = new oA(), aa.prototype.copy.call(c, t), c.color.copy(t.color), c.map = t.map, c.sizeAttenuation = !1, this.cache.add(r, c)), t = c;
|
|
1356
1356
|
} else if (e.isLine) {
|
|
1357
1357
|
const r = "LineBasicMaterial:" + t.uuid;
|
|
1358
1358
|
let c = this.cache.get(r);
|
|
1359
|
-
c || (c = new cA(),
|
|
1359
|
+
c || (c = new cA(), aa.prototype.copy.call(c, t), c.color.copy(t.color), c.map = t.map, this.cache.add(r, c)), t = c;
|
|
1360
1360
|
}
|
|
1361
1361
|
if (A || i || s) {
|
|
1362
1362
|
let r = "ClonedMaterial:" + t.uuid + ":";
|
|
@@ -1389,16 +1389,16 @@ class Fi {
|
|
|
1389
1389
|
})));
|
|
1390
1390
|
}
|
|
1391
1391
|
i.doubleSided === !0 && (r.side = dA);
|
|
1392
|
-
const n = i.alphaMode ||
|
|
1393
|
-
if (n ===
|
|
1392
|
+
const n = i.alphaMode || xi;
|
|
1393
|
+
if (n === Di ? (r.transparent = !0, r.depthWrite = !1) : (r.transparent = !1, n === ki && (r.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && s !== Le && (c.push(a.assignTexture(r, "normalMap", i.normalTexture)), r.normalScale = new pt(1, 1), i.normalTexture.scale !== void 0)) {
|
|
1394
1394
|
const b = i.normalTexture.scale;
|
|
1395
1395
|
r.normalScale.set(b, b);
|
|
1396
1396
|
}
|
|
1397
|
-
if (i.occlusionTexture !== void 0 && s !==
|
|
1397
|
+
if (i.occlusionTexture !== void 0 && s !== Le && (c.push(a.assignTexture(r, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (r.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && s !== Le) {
|
|
1398
1398
|
const b = i.emissiveFactor;
|
|
1399
1399
|
r.emissive = new he().setRGB(b[0], b[1], b[2], K);
|
|
1400
1400
|
}
|
|
1401
|
-
return i.emissiveTexture !== void 0 && s !==
|
|
1401
|
+
return i.emissiveTexture !== void 0 && s !== Le && c.push(a.assignTexture(r, "emissiveMap", i.emissiveTexture, re)), Promise.all(c).then(function() {
|
|
1402
1402
|
const b = new s(r);
|
|
1403
1403
|
return i.name && (b.name = i.name), ie(b, i), a.associations.set(b, { materials: e }), i.extensions && fe(A, b, i), b;
|
|
1404
1404
|
});
|
|
@@ -1416,11 +1416,11 @@ class Fi {
|
|
|
1416
1416
|
}
|
|
1417
1417
|
const s = [];
|
|
1418
1418
|
for (let r = 0, c = e.length; r < c; r++) {
|
|
1419
|
-
const n = e[r], b =
|
|
1419
|
+
const n = e[r], b = Mi(n), d = A[b];
|
|
1420
1420
|
if (d) s.push(d.promise);
|
|
1421
1421
|
else {
|
|
1422
1422
|
let l;
|
|
1423
|
-
l = n.extensions && n.extensions[j.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new
|
|
1423
|
+
l = n.extensions && n.extensions[j.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new va(), n, a), A[b] = { primitive: n, promise: l }, s.push(l);
|
|
1424
1424
|
}
|
|
1425
1425
|
}
|
|
1426
1426
|
return Promise.all(s);
|
|
@@ -1435,22 +1435,22 @@ class Fi {
|
|
|
1435
1435
|
return r.push(a.loadGeometries(s)), Promise.all(r).then(function(n) {
|
|
1436
1436
|
const b = n.slice(0, n.length - 1), d = n[n.length - 1], l = [];
|
|
1437
1437
|
for (let h = 0, f = d.length; h < f; h++) {
|
|
1438
|
-
const
|
|
1438
|
+
const I = d[h], u = s[h];
|
|
1439
1439
|
let p;
|
|
1440
1440
|
const B = b[h];
|
|
1441
|
-
if (
|
|
1442
|
-
else if (
|
|
1443
|
-
else if (
|
|
1444
|
-
else if (
|
|
1441
|
+
if (u.mode === H.TRIANGLES || u.mode === H.TRIANGLE_STRIP || u.mode === H.TRIANGLE_FAN || u.mode === void 0) p = i.isSkinnedMesh === !0 ? new lA(I, B) : new xa(I, B), p.isSkinnedMesh === !0 && p.normalizeSkinWeights(), u.mode === H.TRIANGLE_STRIP ? p.geometry = Za(p.geometry, It) : u.mode === H.TRIANGLE_FAN && (p.geometry = Za(p.geometry, Qa));
|
|
1442
|
+
else if (u.mode === H.LINES) p = new hA(I, B);
|
|
1443
|
+
else if (u.mode === H.LINE_STRIP) p = new gA(I, B);
|
|
1444
|
+
else if (u.mode === H.LINE_LOOP) p = new fA(I, B);
|
|
1445
1445
|
else {
|
|
1446
|
-
if (
|
|
1447
|
-
p = new
|
|
1446
|
+
if (u.mode !== H.POINTS) throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + u.mode);
|
|
1447
|
+
p = new uA(I, B);
|
|
1448
1448
|
}
|
|
1449
|
-
Object.keys(p.geometry.morphAttributes).length > 0 &&
|
|
1449
|
+
Object.keys(p.geometry.morphAttributes).length > 0 && ji(p, i), p.name = a.createUniqueName(i.name || "mesh_" + e), ie(p, i), u.extensions && fe(A, p, u), a.assignFinalMaterial(p), l.push(p);
|
|
1450
1450
|
}
|
|
1451
1451
|
for (let h = 0, f = l.length; h < f; h++) a.associations.set(l[h], { meshes: e, primitives: h });
|
|
1452
1452
|
if (l.length === 1) return i.extensions && fe(A, l[0], i), l[0];
|
|
1453
|
-
const g = new
|
|
1453
|
+
const g = new ta();
|
|
1454
1454
|
i.extensions && fe(A, g, i), a.associations.set(g, { meshes: e });
|
|
1455
1455
|
for (let h = 0, f = l.length; h < f; h++) g.add(l[h]);
|
|
1456
1456
|
return g;
|
|
@@ -1459,7 +1459,7 @@ class Fi {
|
|
|
1459
1459
|
loadCamera(e) {
|
|
1460
1460
|
let a;
|
|
1461
1461
|
const t = this.json.cameras[e], A = t[t.type];
|
|
1462
|
-
if (A) return t.type === "perspective" ? a = new
|
|
1462
|
+
if (A) return t.type === "perspective" ? a = new IA(pA.radToDeg(A.yfov), A.aspectRatio || 1, A.znear || 1, A.zfar || 2e6) : t.type === "orthographic" && (a = new mt(-A.xmag, A.xmag, A.ymag, -A.ymag, A.znear, A.zfar)), t.name && (a.name = this.createUniqueName(t.name)), ie(a, t), Promise.resolve(a);
|
|
1463
1463
|
console.warn("THREE.GLTFLoader: Missing camera parameters.");
|
|
1464
1464
|
}
|
|
1465
1465
|
loadSkin(e) {
|
|
@@ -1471,7 +1471,7 @@ class Fi {
|
|
|
1471
1471
|
const d = s[n];
|
|
1472
1472
|
if (d) {
|
|
1473
1473
|
r.push(d);
|
|
1474
|
-
const l = new
|
|
1474
|
+
const l = new je();
|
|
1475
1475
|
i !== null && l.fromArray(i.array, 16 * n), c.push(l);
|
|
1476
1476
|
} else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', a.joints[n]);
|
|
1477
1477
|
}
|
|
@@ -1481,19 +1481,19 @@ class Fi {
|
|
|
1481
1481
|
loadAnimation(e) {
|
|
1482
1482
|
const a = this.json, t = this, A = a.animations[e], i = A.name ? A.name : "animation_" + e, s = [], r = [], c = [], n = [], b = [];
|
|
1483
1483
|
for (let d = 0, l = A.channels.length; d < l; d++) {
|
|
1484
|
-
const g = A.channels[d], h = A.samplers[g.sampler], f = g.target,
|
|
1485
|
-
f.node !== void 0 && (s.push(this.getDependency("node",
|
|
1484
|
+
const g = A.channels[d], h = A.samplers[g.sampler], f = g.target, I = f.node, u = A.parameters !== void 0 ? A.parameters[h.input] : h.input, p = A.parameters !== void 0 ? A.parameters[h.output] : h.output;
|
|
1485
|
+
f.node !== void 0 && (s.push(this.getDependency("node", I)), r.push(this.getDependency("accessor", u)), c.push(this.getDependency("accessor", p)), n.push(h), b.push(f));
|
|
1486
1486
|
}
|
|
1487
1487
|
return Promise.all([Promise.all(s), Promise.all(r), Promise.all(c), Promise.all(n), Promise.all(b)]).then(function(d) {
|
|
1488
|
-
const l = d[0], g = d[1], h = d[2], f = d[3],
|
|
1488
|
+
const l = d[0], g = d[1], h = d[2], f = d[3], I = d[4], u = [];
|
|
1489
1489
|
for (let p = 0, B = l.length; p < B; p++) {
|
|
1490
|
-
const C = l[p], w = g[p], x = h[p], y = f[p],
|
|
1490
|
+
const C = l[p], w = g[p], x = h[p], y = f[p], m = I[p];
|
|
1491
1491
|
if (C === void 0) continue;
|
|
1492
1492
|
C.updateMatrix && C.updateMatrix();
|
|
1493
|
-
const Q = t._createAnimationTracks(C, w, x, y,
|
|
1494
|
-
if (Q) for (let k = 0; k < Q.length; k++)
|
|
1493
|
+
const Q = t._createAnimationTracks(C, w, x, y, m);
|
|
1494
|
+
if (Q) for (let k = 0; k < Q.length; k++) u.push(Q[k]);
|
|
1495
1495
|
}
|
|
1496
|
-
return new BA(i, void 0,
|
|
1496
|
+
return new BA(i, void 0, u);
|
|
1497
1497
|
});
|
|
1498
1498
|
}
|
|
1499
1499
|
createNodeMesh(e) {
|
|
@@ -1512,7 +1512,7 @@ class Fi {
|
|
|
1512
1512
|
return Promise.all([A, Promise.all(i), r]).then(function(c) {
|
|
1513
1513
|
const n = c[0], b = c[1], d = c[2];
|
|
1514
1514
|
d !== null && n.traverse(function(l) {
|
|
1515
|
-
l.isSkinnedMesh && l.bind(d,
|
|
1515
|
+
l.isSkinnedMesh && l.bind(d, Ri);
|
|
1516
1516
|
});
|
|
1517
1517
|
for (let l = 0, g = b.length; l < g; l++) n.add(b[l]);
|
|
1518
1518
|
return n;
|
|
@@ -1532,16 +1532,16 @@ class Fi {
|
|
|
1532
1532
|
r.push(n);
|
|
1533
1533
|
}), this.nodeCache[e] = Promise.all(r).then(function(n) {
|
|
1534
1534
|
let b;
|
|
1535
|
-
if (b = i.isBone === !0 ? new
|
|
1535
|
+
if (b = i.isBone === !0 ? new mA() : n.length > 1 ? new ta() : n.length === 1 ? n[0] : new Bt(), b !== n[0]) for (let d = 0, l = n.length; d < l; d++) b.add(n[d]);
|
|
1536
1536
|
if (i.name && (b.userData.name = i.name, b.name = s), ie(b, i), i.extensions && fe(t, b, i), i.matrix !== void 0) {
|
|
1537
|
-
const d = new
|
|
1537
|
+
const d = new je();
|
|
1538
1538
|
d.fromArray(i.matrix), b.applyMatrix4(d);
|
|
1539
1539
|
} else i.translation !== void 0 && b.position.fromArray(i.translation), i.rotation !== void 0 && b.quaternion.fromArray(i.rotation), i.scale !== void 0 && b.scale.fromArray(i.scale);
|
|
1540
1540
|
return A.associations.has(b) || A.associations.set(b, {}), A.associations.get(b).nodes = e, b;
|
|
1541
1541
|
}), this.nodeCache[e];
|
|
1542
1542
|
}
|
|
1543
1543
|
loadScene(e) {
|
|
1544
|
-
const a = this.extensions, t = this.json.scenes[e], A = this, i = new
|
|
1544
|
+
const a = this.extensions, t = this.json.scenes[e], A = this, i = new ta();
|
|
1545
1545
|
t.name && (i.name = A.createUniqueName(t.name)), ie(i, t), t.extensions && fe(a, i, t);
|
|
1546
1546
|
const s = t.nodes || [], r = [];
|
|
1547
1547
|
for (let c = 0, n = s.length; c < n; c++) r.push(A.getDependency("node", s[c]));
|
|
@@ -1549,7 +1549,7 @@ class Fi {
|
|
|
1549
1549
|
for (let n = 0, b = c.length; n < b; n++) i.add(c[n]);
|
|
1550
1550
|
return A.associations = ((n) => {
|
|
1551
1551
|
const b = /* @__PURE__ */ new Map();
|
|
1552
|
-
for (const [d, l] of A.associations) (d instanceof
|
|
1552
|
+
for (const [d, l] of A.associations) (d instanceof aa || d instanceof Na) && b.set(d, l);
|
|
1553
1553
|
return n.traverse((d) => {
|
|
1554
1554
|
const l = A.associations.get(d);
|
|
1555
1555
|
l != null && b.set(d, l);
|
|
@@ -1576,7 +1576,7 @@ class Fi {
|
|
|
1576
1576
|
default:
|
|
1577
1577
|
t.itemSize === 1 ? n = _a : n = Pa;
|
|
1578
1578
|
}
|
|
1579
|
-
const b = A.interpolation !== void 0 ?
|
|
1579
|
+
const b = A.interpolation !== void 0 ? wi[A.interpolation] : Et, d = this._getArrayFromAccessor(t);
|
|
1580
1580
|
for (let l = 0, g = c.length; l < g; l++) {
|
|
1581
1581
|
const h = new n(c[l] + "." + oe[i.path], a.array, d, b);
|
|
1582
1582
|
A.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(h), s.push(h);
|
|
@@ -1586,7 +1586,7 @@ class Fi {
|
|
|
1586
1586
|
_getArrayFromAccessor(e) {
|
|
1587
1587
|
let a = e.array;
|
|
1588
1588
|
if (e.normalized) {
|
|
1589
|
-
const t =
|
|
1589
|
+
const t = ja(a.constructor), A = new Float32Array(a.length);
|
|
1590
1590
|
for (let i = 0, s = a.length; i < s; i++) A[i] = a[i] * t;
|
|
1591
1591
|
a = A;
|
|
1592
1592
|
}
|
|
@@ -1594,7 +1594,7 @@ class Fi {
|
|
|
1594
1594
|
}
|
|
1595
1595
|
_createCubicSplineTrackInterpolant(e) {
|
|
1596
1596
|
e.createInterpolant = function(a) {
|
|
1597
|
-
return new (this instanceof Ha ?
|
|
1597
|
+
return new (this instanceof Ha ? yi : Mt)(this.times, this.values, this.getValueSize() / 3, a);
|
|
1598
1598
|
}, e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
|
|
1599
1599
|
}
|
|
1600
1600
|
}
|
|
@@ -1606,7 +1606,7 @@ function at(o, e, a) {
|
|
|
1606
1606
|
});
|
|
1607
1607
|
}
|
|
1608
1608
|
for (const s in t) {
|
|
1609
|
-
const r =
|
|
1609
|
+
const r = Da[s] || s.toLowerCase();
|
|
1610
1610
|
r in o.attributes || A.push(i(t[s], r));
|
|
1611
1611
|
}
|
|
1612
1612
|
if (e.indices !== void 0 && !o.index) {
|
|
@@ -1615,27 +1615,27 @@ function at(o, e, a) {
|
|
|
1615
1615
|
});
|
|
1616
1616
|
A.push(s);
|
|
1617
1617
|
}
|
|
1618
|
-
return
|
|
1619
|
-
const n = r.attributes, b = new
|
|
1618
|
+
return ka.workingColorSpace !== K && "COLOR_0" in t && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ka.workingColorSpace}" not supported.`), ie(o, e), function(s, r, c) {
|
|
1619
|
+
const n = r.attributes, b = new Sa();
|
|
1620
1620
|
if (n.POSITION === void 0) return;
|
|
1621
1621
|
{
|
|
1622
1622
|
const g = c.json.accessors[n.POSITION], h = g.min, f = g.max;
|
|
1623
1623
|
if (h === void 0 || f === void 0) return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1624
1624
|
if (b.set(new S(h[0], h[1], h[2]), new S(f[0], f[1], f[2])), g.normalized) {
|
|
1625
|
-
const
|
|
1626
|
-
b.min.multiplyScalar(
|
|
1625
|
+
const I = ja(ke[g.componentType]);
|
|
1626
|
+
b.min.multiplyScalar(I), b.max.multiplyScalar(I);
|
|
1627
1627
|
}
|
|
1628
1628
|
}
|
|
1629
1629
|
const d = r.targets;
|
|
1630
1630
|
if (d !== void 0) {
|
|
1631
1631
|
const g = new S(), h = new S();
|
|
1632
|
-
for (let f = 0,
|
|
1633
|
-
const
|
|
1634
|
-
if (
|
|
1635
|
-
const p = c.json.accessors[
|
|
1632
|
+
for (let f = 0, I = d.length; f < I; f++) {
|
|
1633
|
+
const u = d[f];
|
|
1634
|
+
if (u.POSITION !== void 0) {
|
|
1635
|
+
const p = c.json.accessors[u.POSITION], B = p.min, C = p.max;
|
|
1636
1636
|
if (B !== void 0 && C !== void 0) {
|
|
1637
1637
|
if (h.setX(Math.max(Math.abs(B[0]), Math.abs(C[0]))), h.setY(Math.max(Math.abs(B[1]), Math.abs(C[1]))), h.setZ(Math.max(Math.abs(B[2]), Math.abs(C[2]))), p.normalized) {
|
|
1638
|
-
const w =
|
|
1638
|
+
const w = ja(ke[p.componentType]);
|
|
1639
1639
|
h.multiplyScalar(w);
|
|
1640
1640
|
}
|
|
1641
1641
|
g.max(h);
|
|
@@ -1650,35 +1650,35 @@ function at(o, e, a) {
|
|
|
1650
1650
|
}(o, e, a), Promise.all(A).then(function() {
|
|
1651
1651
|
return e.targets !== void 0 ? function(s, r, c) {
|
|
1652
1652
|
let n = !1, b = !1, d = !1;
|
|
1653
|
-
for (let f = 0,
|
|
1654
|
-
const
|
|
1655
|
-
if (
|
|
1653
|
+
for (let f = 0, I = r.length; f < I; f++) {
|
|
1654
|
+
const u = r[f];
|
|
1655
|
+
if (u.POSITION !== void 0 && (n = !0), u.NORMAL !== void 0 && (b = !0), u.COLOR_0 !== void 0 && (d = !0), n && b && d) break;
|
|
1656
1656
|
}
|
|
1657
1657
|
if (!n && !b && !d) return Promise.resolve(s);
|
|
1658
1658
|
const l = [], g = [], h = [];
|
|
1659
|
-
for (let f = 0,
|
|
1660
|
-
const
|
|
1659
|
+
for (let f = 0, I = r.length; f < I; f++) {
|
|
1660
|
+
const u = r[f];
|
|
1661
1661
|
if (n) {
|
|
1662
|
-
const p =
|
|
1662
|
+
const p = u.POSITION !== void 0 ? c.getDependency("accessor", u.POSITION) : s.attributes.position;
|
|
1663
1663
|
l.push(p);
|
|
1664
1664
|
}
|
|
1665
1665
|
if (b) {
|
|
1666
|
-
const p =
|
|
1666
|
+
const p = u.NORMAL !== void 0 ? c.getDependency("accessor", u.NORMAL) : s.attributes.normal;
|
|
1667
1667
|
g.push(p);
|
|
1668
1668
|
}
|
|
1669
1669
|
if (d) {
|
|
1670
|
-
const p =
|
|
1670
|
+
const p = u.COLOR_0 !== void 0 ? c.getDependency("accessor", u.COLOR_0) : s.attributes.color;
|
|
1671
1671
|
h.push(p);
|
|
1672
1672
|
}
|
|
1673
1673
|
}
|
|
1674
1674
|
return Promise.all([Promise.all(l), Promise.all(g), Promise.all(h)]).then(function(f) {
|
|
1675
|
-
const
|
|
1676
|
-
return n && (s.morphAttributes.position =
|
|
1675
|
+
const I = f[0], u = f[1], p = f[2];
|
|
1676
|
+
return n && (s.morphAttributes.position = I), b && (s.morphAttributes.normal = u), d && (s.morphAttributes.color = p), s.morphTargetsRelative = !0, s;
|
|
1677
1677
|
});
|
|
1678
1678
|
}(o, e.targets, a) : o;
|
|
1679
1679
|
});
|
|
1680
1680
|
}
|
|
1681
|
-
const
|
|
1681
|
+
const oa = /* @__PURE__ */ new WeakMap();
|
|
1682
1682
|
class Rt extends Fa {
|
|
1683
1683
|
constructor(e) {
|
|
1684
1684
|
super(e), this.decoderPath = "", this.decoderConfig = {}, this.decoderBinary = null, this.decoderPending = null, this.workerLimit = 4, this.workerPool = [], this.workerNextTaskID = 1, this.workerSourceURL = "", this.defaultAttributeIDs = { position: "POSITION", normal: "NORMAL", color: "COLOR", uv: "TEX_COORD" }, this.defaultAttributeTypes = { position: "Float32Array", normal: "Float32Array", color: "Float32Array", uv: "Float32Array" };
|
|
@@ -1693,7 +1693,7 @@ class Rt extends Fa {
|
|
|
1693
1693
|
return this.workerLimit = e, this;
|
|
1694
1694
|
}
|
|
1695
1695
|
load(e, a, t, A) {
|
|
1696
|
-
const i = new
|
|
1696
|
+
const i = new Be(this.manager);
|
|
1697
1697
|
i.setPath(this.path), i.setResponseType("arraybuffer"), i.setRequestHeader(this.requestHeader), i.setWithCredentials(this.withCredentials), i.load(e, (s) => {
|
|
1698
1698
|
this.parse(s, a, A);
|
|
1699
1699
|
}, t, A);
|
|
@@ -1709,8 +1709,8 @@ class Rt extends Fa {
|
|
|
1709
1709
|
}
|
|
1710
1710
|
decodeGeometry(e, a) {
|
|
1711
1711
|
const t = JSON.stringify(a);
|
|
1712
|
-
if (
|
|
1713
|
-
const c =
|
|
1712
|
+
if (oa.has(e)) {
|
|
1713
|
+
const c = oa.get(e);
|
|
1714
1714
|
if (c.key === t) return c.promise;
|
|
1715
1715
|
if (e.byteLength === 0) throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.");
|
|
1716
1716
|
}
|
|
@@ -1720,10 +1720,10 @@ class Rt extends Fa {
|
|
|
1720
1720
|
}))).then((c) => this._createGeometry(c.geometry));
|
|
1721
1721
|
return r.catch(() => !0).then(() => {
|
|
1722
1722
|
A && i && this._releaseTask(A, i);
|
|
1723
|
-
}),
|
|
1723
|
+
}), oa.set(e, { key: t, promise: r }), r;
|
|
1724
1724
|
}
|
|
1725
1725
|
_createGeometry(e) {
|
|
1726
|
-
const a = new
|
|
1726
|
+
const a = new va();
|
|
1727
1727
|
e.index && a.setIndex(new le(e.index.array, 1));
|
|
1728
1728
|
for (let t = 0; t < e.attributes.length; t++) {
|
|
1729
1729
|
const A = e.attributes[t], i = A.name, s = A.array, r = A.itemSize, c = new le(s, r);
|
|
@@ -1734,10 +1734,10 @@ class Rt extends Fa {
|
|
|
1734
1734
|
_assignVertexColorSpace(e, a) {
|
|
1735
1735
|
if (a !== re) return;
|
|
1736
1736
|
const t = new he();
|
|
1737
|
-
for (let A = 0, i = e.count; A < i; A++) t.fromBufferAttribute(e, A),
|
|
1737
|
+
for (let A = 0, i = e.count; A < i; A++) t.fromBufferAttribute(e, A), ka.toWorkingColorSpace(t, re), e.setXYZ(A, t.r, t.g, t.b);
|
|
1738
1738
|
}
|
|
1739
1739
|
_loadLibrary(e, a) {
|
|
1740
|
-
const t = new
|
|
1740
|
+
const t = new Be(this.manager);
|
|
1741
1741
|
return t.setPath(this.decoderPath), t.setResponseType(a), t.setWithCredentials(this.withCredentials), new Promise((A, i) => {
|
|
1742
1742
|
t.load(e, A, void 0, i);
|
|
1743
1743
|
});
|
|
@@ -1794,8 +1794,8 @@ class Rt extends Fa {
|
|
|
1794
1794
|
function vi() {
|
|
1795
1795
|
let o, e;
|
|
1796
1796
|
function a(t, A, i, s, r, c) {
|
|
1797
|
-
const n = c.num_components(), b = i.num_points() * n, d = b * r.BYTES_PER_ELEMENT, l = function(f,
|
|
1798
|
-
switch (
|
|
1797
|
+
const n = c.num_components(), b = i.num_points() * n, d = b * r.BYTES_PER_ELEMENT, l = function(f, I) {
|
|
1798
|
+
switch (I) {
|
|
1799
1799
|
case Float32Array:
|
|
1800
1800
|
return f.DT_FLOAT32;
|
|
1801
1801
|
case Int8Array:
|
|
@@ -1832,7 +1832,7 @@ function vi() {
|
|
|
1832
1832
|
const c = r.draco, n = new c.Decoder();
|
|
1833
1833
|
try {
|
|
1834
1834
|
const b = function(l, g, h, f) {
|
|
1835
|
-
const
|
|
1835
|
+
const I = f.attributeIDs, u = f.attributeTypes;
|
|
1836
1836
|
let p, B;
|
|
1837
1837
|
const C = g.GetEncodedGeometryType(h);
|
|
1838
1838
|
if (C === l.TRIANGULAR_MESH) p = new l.Mesh(), B = g.DecodeArrayToMesh(h, h.byteLength, p);
|
|
@@ -1842,22 +1842,22 @@ function vi() {
|
|
|
1842
1842
|
}
|
|
1843
1843
|
if (!B.ok() || p.ptr === 0) throw new Error("THREE.DRACOLoader: Decoding failed: " + B.error_msg());
|
|
1844
1844
|
const w = { index: null, attributes: [] };
|
|
1845
|
-
for (const x in
|
|
1846
|
-
const y = self[
|
|
1847
|
-
let
|
|
1848
|
-
if (f.useUniqueIDs) Q =
|
|
1845
|
+
for (const x in I) {
|
|
1846
|
+
const y = self[u[x]];
|
|
1847
|
+
let m, Q;
|
|
1848
|
+
if (f.useUniqueIDs) Q = I[x], m = g.GetAttributeByUniqueId(p, Q);
|
|
1849
1849
|
else {
|
|
1850
|
-
if (Q = g.GetAttributeId(p, l[
|
|
1851
|
-
|
|
1850
|
+
if (Q = g.GetAttributeId(p, l[I[x]]), Q === -1) continue;
|
|
1851
|
+
m = g.GetAttribute(p, Q);
|
|
1852
1852
|
}
|
|
1853
|
-
const k = a(l, g, p, x, y,
|
|
1853
|
+
const k = a(l, g, p, x, y, m);
|
|
1854
1854
|
x === "color" && (k.vertexColorSpace = f.vertexColorSpace), w.attributes.push(k);
|
|
1855
1855
|
}
|
|
1856
|
-
return C === l.TRIANGULAR_MESH && (w.index = function(x, y,
|
|
1857
|
-
const Q =
|
|
1858
|
-
y.GetTrianglesUInt32Array(
|
|
1859
|
-
const _ = new Uint32Array(x.HEAPF32.buffer,
|
|
1860
|
-
return x._free(
|
|
1856
|
+
return C === l.TRIANGULAR_MESH && (w.index = function(x, y, m) {
|
|
1857
|
+
const Q = m.num_faces(), k = 3 * Q, D = 4 * k, F = x._malloc(D);
|
|
1858
|
+
y.GetTrianglesUInt32Array(m, D, F);
|
|
1859
|
+
const _ = new Uint32Array(x.HEAPF32.buffer, F, k).slice();
|
|
1860
|
+
return x._free(F), { array: _, itemSize: 1 };
|
|
1861
1861
|
}(l, g, p)), l.destroy(p), w;
|
|
1862
1862
|
}(c, n, new Int8Array(i), s), d = b.attributes.map((l) => l.array.buffer);
|
|
1863
1863
|
b.index && d.push(b.index.array.buffer), self.postMessage({ type: "decode", id: A.id, geometry: b }, d);
|
|
@@ -1870,7 +1870,7 @@ function vi() {
|
|
|
1870
1870
|
}
|
|
1871
1871
|
};
|
|
1872
1872
|
}
|
|
1873
|
-
class
|
|
1873
|
+
class Fi {
|
|
1874
1874
|
constructor(e = 4) {
|
|
1875
1875
|
this.pool = e, this.queue = [], this.workers = [], this.workersResolve = [], this.workerStatus = 0;
|
|
1876
1876
|
}
|
|
@@ -1907,8 +1907,8 @@ class Ti {
|
|
|
1907
1907
|
this.workers.forEach((e) => e.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
|
|
1908
1908
|
}
|
|
1909
1909
|
}
|
|
1910
|
-
const St = 9,
|
|
1911
|
-
class
|
|
1910
|
+
const St = 9, vt = 15, Ft = 16, Tt = 22, Lt = 37, Gt = 43, Ut = 76, Nt = 83, Pt = 97, _t = 100, Ht = 103, qt = 109, Ot = 165, Jt = 166, Ta = 1000066e3;
|
|
1911
|
+
class Ti {
|
|
1912
1912
|
constructor() {
|
|
1913
1913
|
this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = 0, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: 0, descriptorBlockSize: 0, versionNumber: 2, colorModel: 0, colorPrimaries: 1, transferFunction: 2, flags: 0, texelBlockDimension: [0, 0, 0, 0], bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0], samples: [] }], this.keyValue = {}, this.globalData = null;
|
|
1914
1914
|
}
|
|
@@ -1956,30 +1956,30 @@ const U = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
|
|
|
1956
1956
|
function tt(o) {
|
|
1957
1957
|
return new TextDecoder().decode(o);
|
|
1958
1958
|
}
|
|
1959
|
-
let
|
|
1960
|
-
const
|
|
1961
|
-
|
|
1959
|
+
let ca, Ae, Ma;
|
|
1960
|
+
const da = { env: { emscripten_notify_memory_growth: function(o) {
|
|
1961
|
+
Ma = new Uint8Array(Ae.exports.memory.buffer);
|
|
1962
1962
|
} } };
|
|
1963
|
-
class
|
|
1963
|
+
class Li {
|
|
1964
1964
|
init() {
|
|
1965
|
-
return
|
|
1965
|
+
return ca || (ca = typeof fetch < "u" ? fetch("data:application/wasm;base64," + At).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e, da)).then(this._init) : WebAssembly.instantiate(Buffer.from(At, "base64"), da).then(this._init), ca);
|
|
1966
1966
|
}
|
|
1967
1967
|
_init(e) {
|
|
1968
|
-
Ae = e.instance,
|
|
1968
|
+
Ae = e.instance, da.env.emscripten_notify_memory_growth(0);
|
|
1969
1969
|
}
|
|
1970
1970
|
decode(e, a = 0) {
|
|
1971
1971
|
if (!Ae) throw new Error("ZSTDDecoder: Await .init() before decoding.");
|
|
1972
1972
|
const t = e.byteLength, A = Ae.exports.malloc(t);
|
|
1973
|
-
|
|
1974
|
-
const i = Ae.exports.malloc(a), s = Ae.exports.ZSTD_decompress(i, a, A, t), r =
|
|
1973
|
+
Ma.set(e, A), a = a || Number(Ae.exports.ZSTD_findDecompressedSize(A, t));
|
|
1974
|
+
const i = Ae.exports.malloc(a), s = Ae.exports.ZSTD_decompress(i, a, A, t), r = Ma.slice(i, i + s);
|
|
1975
1975
|
return Ae.exports.free(A), Ae.exports.free(i), r;
|
|
1976
1976
|
}
|
|
1977
1977
|
}
|
|
1978
|
-
const At = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", da = /* @__PURE__ */ new WeakMap();
|
|
1979
|
-
let
|
|
1978
|
+
const At = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigCACACaiAAQQZ2IgFBAnRBsB5qKAIAaiAAQSBxIgBFaiABRSAAQQV2cWoFQbh/CwsdACAAKAKQ4gEQWiAAQQA2AqDiASAAQgA3A5DiAQu1AwEFfyMAQZACayIKJABBuH8hBgJAIAVFDQAgBCwAACIIQf8BcSEHAkAgCEF/TARAIAdBgn9qQQF2IgggBU8NAkFsIQYgB0GBf2oiBUGAAk8NAiAEQQFqIQdBACEGA0AgBiAFTwRAIAUhBiAIIQcMAwUgACAGaiAHIAZBAXZqIgQtAABBBHY6AAAgACAGQQFyaiAELQAAQQ9xOgAAIAZBAmohBgwBCwAACwALIAcgBU8NASAAIARBAWogByAKEFMiBhADDQELIAYhBEEAIQYgAUEAQTQQECEJQQAhBQNAIAQgBkcEQCAAIAZqIggtAAAiAUELSwRAQWwhBgwDBSAJIAFBAnRqIgEgASgCAEEBajYCACAGQQFqIQZBASAILQAAdEEBdSAFaiEFDAILAAsLQWwhBiAFRQ0AIAUQFEEBaiIBQQxLDQAgAyABNgIAQQFBASABdCAFayIDEBQiAXQgA0cNACAAIARqIAFBAWoiADoAACAJIABBAnRqIgAgACgCAEEBajYCACAJKAIEIgBBAkkgAEEBcXINACACIARBAWo2AgAgB0EBaiEGCyAKQZACaiQAIAYLxhEBDH8jAEHwAGsiBSQAQWwhCwJAIANBCkkNACACLwAAIQogAi8AAiEJIAIvAAQhByAFQQhqIAQQDgJAIAMgByAJIApqakEGaiIMSQ0AIAUtAAohCCAFQdgAaiACQQZqIgIgChAGIgsQAw0BIAVBQGsgAiAKaiICIAkQBiILEAMNASAFQShqIAIgCWoiAiAHEAYiCxADDQEgBUEQaiACIAdqIAMgDGsQBiILEAMNASAAIAFqIg9BfWohECAEQQRqIQZBASELIAAgAUEDakECdiIDaiIMIANqIgIgA2oiDiEDIAIhBCAMIQcDQCALIAMgEElxBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgCS0AAyELIAcgBiAFQUBrIAgQAkECdGoiCS8BADsAACAFQUBrIAktAAIQASAJLQADIQogBCAGIAVBKGogCBACQQJ0aiIJLwEAOwAAIAVBKGogCS0AAhABIAktAAMhCSADIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgDS0AAyENIAAgC2oiCyAGIAVB2ABqIAgQAkECdGoiAC8BADsAACAFQdgAaiAALQACEAEgAC0AAyEAIAcgCmoiCiAGIAVBQGsgCBACQQJ0aiIHLwEAOwAAIAVBQGsgBy0AAhABIActAAMhByAEIAlqIgkgBiAFQShqIAgQAkECdGoiBC8BADsAACAFQShqIAQtAAIQASAELQADIQQgAyANaiIDIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgACALaiEAIAcgCmohByAEIAlqIQQgAyANLQADaiEDIAVB2ABqEA0gBUFAaxANciAFQShqEA1yIAVBEGoQDXJFIQsMAQsLIAQgDksgByACS3INAEFsIQsgACAMSw0BIAxBfWohCQNAQQAgACAJSSAFQdgAahAEGwRAIAAgBiAFQdgAaiAIEAJBAnRqIgovAQA7AAAgBUHYAGogCi0AAhABIAAgCi0AA2oiACAGIAVB2ABqIAgQAkECdGoiCi8BADsAACAFQdgAaiAKLQACEAEgACAKLQADaiEADAEFIAxBfmohCgNAIAVB2ABqEAQgACAKS3JFBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgACAJLQADaiEADAELCwNAIAAgCk0EQCAAIAYgBUHYAGogCBACQQJ0aiIJLwEAOwAAIAVB2ABqIAktAAIQASAAIAktAANqIQAMAQsLAkAgACAMTw0AIAAgBiAFQdgAaiAIEAIiAEECdGoiDC0AADoAACAMLQADQQFGBEAgBUHYAGogDC0AAhABDAELIAUoAlxBH0sNACAFQdgAaiAGIABBAnRqLQACEAEgBSgCXEEhSQ0AIAVBIDYCXAsgAkF9aiEMA0BBACAHIAxJIAVBQGsQBBsEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiIAIAYgBUFAayAIEAJBAnRqIgcvAQA7AAAgBUFAayAHLQACEAEgACAHLQADaiEHDAEFIAJBfmohDANAIAVBQGsQBCAHIAxLckUEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwNAIAcgDE0EQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwJAIAcgAk8NACAHIAYgBUFAayAIEAIiAEECdGoiAi0AADoAACACLQADQQFGBEAgBUFAayACLQACEAEMAQsgBSgCREEfSw0AIAVBQGsgBiAAQQJ0ai0AAhABIAUoAkRBIUkNACAFQSA2AkQLIA5BfWohAgNAQQAgBCACSSAFQShqEAQbBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2oiACAGIAVBKGogCBACQQJ0aiIELwEAOwAAIAVBKGogBC0AAhABIAAgBC0AA2ohBAwBBSAOQX5qIQIDQCAFQShqEAQgBCACS3JFBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsDQCAEIAJNBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsCQCAEIA5PDQAgBCAGIAVBKGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBKGogAi0AAhABDAELIAUoAixBH0sNACAFQShqIAYgAEECdGotAAIQASAFKAIsQSFJDQAgBUEgNgIsCwNAQQAgAyAQSSAFQRBqEAQbBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2oiACAGIAVBEGogCBACQQJ0aiICLwEAOwAAIAVBEGogAi0AAhABIAAgAi0AA2ohAwwBBSAPQX5qIQIDQCAFQRBqEAQgAyACS3JFBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsDQCADIAJNBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsCQCADIA9PDQAgAyAGIAVBEGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBEGogAi0AAhABDAELIAUoAhRBH0sNACAFQRBqIAYgAEECdGotAAIQASAFKAIUQSFJDQAgBUEgNgIUCyABQWwgBUHYAGoQCiAFQUBrEApxIAVBKGoQCnEgBUEQahAKcRshCwwJCwAACwALAAALAAsAAAsACwAACwALQWwhCwsgBUHwAGokACALC7UEAQ5/IwBBEGsiBiQAIAZBBGogABAOQVQhBQJAIARB3AtJDQAgBi0ABCEHIANB8ARqQQBB7AAQECEIIAdBDEsNACADQdwJaiIJIAggBkEIaiAGQQxqIAEgAhAxIhAQA0UEQCAGKAIMIgQgB0sNASADQdwFaiEPIANBpAVqIREgAEEEaiESIANBqAVqIQEgBCEFA0AgBSICQX9qIQUgCCACQQJ0aigCAEUNAAsgAkEBaiEOQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgASALaiAKNgIAIAVBAWohBSAKIAxqIQoMAQsLIAEgCjYCAEEAIQUgBigCCCELA0AgBSALRkUEQCABIAUgCWotAAAiDEECdGoiDSANKAIAIg1BAWo2AgAgDyANQQF0aiINIAw6AAEgDSAFOgAAIAVBAWohBQwBCwtBACEBIANBADYCqAUgBEF/cyAHaiEJQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgAyALaiABNgIAIAwgBSAJanQgAWohASAFQQFqIQUMAQsLIAcgBEEBaiIBIAJrIgRrQQFqIQgDQEEBIQUgBCAIT0UEQANAIAUgDk9FBEAgBUECdCIJIAMgBEE0bGpqIAMgCWooAgAgBHY2AgAgBUEBaiEFDAELCyAEQQFqIQQMAQsLIBIgByAPIAogESADIAIgARBkIAZBAToABSAGIAc6AAYgACAGKAIENgIACyAQIQULIAZBEGokACAFC8ENAQt/IwBB8ABrIgUkAEFsIQkCQCADQQpJDQAgAi8AACEKIAIvAAIhDCACLwAEIQYgBUEIaiAEEA4CQCADIAYgCiAMampBBmoiDUkNACAFLQAKIQcgBUHYAGogAkEGaiICIAoQBiIJEAMNASAFQUBrIAIgCmoiAiAMEAYiCRADDQEgBUEoaiACIAxqIgIgBhAGIgkQAw0BIAVBEGogAiAGaiADIA1rEAYiCRADDQEgACABaiIOQX1qIQ8gBEEEaiEGQQEhCSAAIAFBA2pBAnYiAmoiCiACaiIMIAJqIg0hAyAMIQQgCiECA0AgCSADIA9JcQRAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAACAGIAVBQGsgBxACQQF0aiIILQAAIQsgBUFAayAILQABEAEgAiALOgAAIAYgBUEoaiAHEAJBAXRqIggtAAAhCyAFQShqIAgtAAEQASAEIAs6AAAgBiAFQRBqIAcQAkEBdGoiCC0AACELIAVBEGogCC0AARABIAMgCzoAACAGIAVB2ABqIAcQAkEBdGoiCC0AACELIAVB2ABqIAgtAAEQASAAIAs6AAEgBiAFQUBrIAcQAkEBdGoiCC0AACELIAVBQGsgCC0AARABIAIgCzoAASAGIAVBKGogBxACQQF0aiIILQAAIQsgBUEoaiAILQABEAEgBCALOgABIAYgBUEQaiAHEAJBAXRqIggtAAAhCyAFQRBqIAgtAAEQASADIAs6AAEgA0ECaiEDIARBAmohBCACQQJqIQIgAEECaiEAIAkgBUHYAGoQDUVxIAVBQGsQDUVxIAVBKGoQDUVxIAVBEGoQDUVxIQkMAQsLIAQgDUsgAiAMS3INAEFsIQkgACAKSw0BIApBfWohCQNAIAVB2ABqEAQgACAJT3JFBEAgBiAFQdgAaiAHEAJBAXRqIggtAAAhCyAFQdgAaiAILQABEAEgACALOgAAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAASAAQQJqIQAMAQsLA0AgBUHYAGoQBCAAIApPckUEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCwNAIAAgCkkEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCyAMQX1qIQADQCAFQUBrEAQgAiAAT3JFBEAgBiAFQUBrIAcQAkEBdGoiCi0AACEJIAVBQGsgCi0AARABIAIgCToAACAGIAVBQGsgBxACQQF0aiIKLQAAIQkgBUFAayAKLQABEAEgAiAJOgABIAJBAmohAgwBCwsDQCAFQUBrEAQgAiAMT3JFBEAgBiAFQUBrIAcQAkEBdGoiAC0AACEKIAVBQGsgAC0AARABIAIgCjoAACACQQFqIQIMAQsLA0AgAiAMSQRAIAYgBUFAayAHEAJBAXRqIgAtAAAhCiAFQUBrIAAtAAEQASACIAo6AAAgAkEBaiECDAELCyANQX1qIQADQCAFQShqEAQgBCAAT3JFBEAgBiAFQShqIAcQAkEBdGoiAi0AACEKIAVBKGogAi0AARABIAQgCjoAACAGIAVBKGogBxACQQF0aiICLQAAIQogBUEoaiACLQABEAEgBCAKOgABIARBAmohBAwBCwsDQCAFQShqEAQgBCANT3JFBEAgBiAFQShqIAcQAkEBdGoiAC0AACECIAVBKGogAC0AARABIAQgAjoAACAEQQFqIQQMAQsLA0AgBCANSQRAIAYgBUEoaiAHEAJBAXRqIgAtAAAhAiAFQShqIAAtAAEQASAEIAI6AAAgBEEBaiEEDAELCwNAIAVBEGoQBCADIA9PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIAYgBUEQaiAHEAJBAXRqIgAtAAAhAiAFQRBqIAAtAAEQASADIAI6AAEgA0ECaiEDDAELCwNAIAVBEGoQBCADIA5PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIANBAWohAwwBCwsDQCADIA5JBEAgBiAFQRBqIAcQAkEBdGoiAC0AACECIAVBEGogAC0AARABIAMgAjoAACADQQFqIQMMAQsLIAFBbCAFQdgAahAKIAVBQGsQCnEgBUEoahAKcSAFQRBqEApxGyEJDAELQWwhCQsgBUHwAGokACAJC8oCAQR/IwBBIGsiBSQAIAUgBBAOIAUtAAIhByAFQQhqIAIgAxAGIgIQA0UEQCAEQQRqIQIgACABaiIDQX1qIQQDQCAFQQhqEAQgACAET3JFBEAgAiAFQQhqIAcQAkEBdGoiBi0AACEIIAVBCGogBi0AARABIAAgCDoAACACIAVBCGogBxACQQF0aiIGLQAAIQggBUEIaiAGLQABEAEgACAIOgABIABBAmohAAwBCwsDQCAFQQhqEAQgACADT3JFBEAgAiAFQQhqIAcQAkEBdGoiBC0AACEGIAVBCGogBC0AARABIAAgBjoAACAAQQFqIQAMAQsLA0AgACADT0UEQCACIAVBCGogBxACQQF0aiIELQAAIQYgBUEIaiAELQABEAEgACAGOgAAIABBAWohAAwBCwsgAUFsIAVBCGoQChshAgsgBUEgaiQAIAILtgMBCX8jAEEQayIGJAAgBkEANgIMIAZBADYCCEFUIQQCQAJAIANBQGsiDCADIAZBCGogBkEMaiABIAIQMSICEAMNACAGQQRqIAAQDiAGKAIMIgcgBi0ABEEBaksNASAAQQRqIQogBkEAOgAFIAYgBzoABiAAIAYoAgQ2AgAgB0EBaiEJQQEhBANAIAQgCUkEQCADIARBAnRqIgEoAgAhACABIAU2AgAgACAEQX9qdCAFaiEFIARBAWohBAwBCwsgB0EBaiEHQQAhBSAGKAIIIQkDQCAFIAlGDQEgAyAFIAxqLQAAIgRBAnRqIgBBASAEdEEBdSILIAAoAgAiAWoiADYCACAHIARrIQhBACEEAkAgC0EDTQRAA0AgBCALRg0CIAogASAEakEBdGoiACAIOgABIAAgBToAACAEQQFqIQQMAAALAAsDQCABIABPDQEgCiABQQF0aiIEIAg6AAEgBCAFOgAAIAQgCDoAAyAEIAU6AAIgBCAIOgAFIAQgBToABCAEIAg6AAcgBCAFOgAGIAFBBGohAQwAAAsACyAFQQFqIQUMAAALAAsgAiEECyAGQRBqJAAgBAutAQECfwJAQYQgKAIAIABHIAAoAgBBAXYiAyABa0F4aiICQXhxQQhHcgR/IAIFIAMQJ0UNASACQQhqC0EQSQ0AIAAgACgCACICQQFxIAAgAWpBD2pBeHEiASAAa0EBdHI2AgAgASAANgIEIAEgASgCAEEBcSAAIAJBAXZqIAFrIgJBAXRyNgIAQYQgIAEgAkH/////B3FqQQRqQYQgKAIAIABGGyABNgIAIAEQJQsLygIBBX8CQAJAAkAgAEEIIABBCEsbZ0EfcyAAaUEBR2oiAUEESSAAIAF2cg0AIAFBAnRB/B5qKAIAIgJFDQADQCACQXhqIgMoAgBBAXZBeGoiBSAATwRAIAIgBUEIIAVBCEsbZ0Efc0ECdEGAH2oiASgCAEYEQCABIAIoAgQ2AgALDAMLIARBHksNASAEQQFqIQQgAigCBCICDQALC0EAIQMgAUEgTw0BA0AgAUECdEGAH2ooAgAiAkUEQCABQR5LIQIgAUEBaiEBIAJFDQEMAwsLIAIgAkF4aiIDKAIAQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgBGBEAgASACKAIENgIACwsgAigCACIBBEAgASACKAIENgIECyACKAIEIgEEQCABIAIoAgA2AgALIAMgAygCAEEBcjYCACADIAAQNwsgAwvhCwINfwV+IwBB8ABrIgckACAHIAAoAvDhASIINgJcIAEgAmohDSAIIAAoAoDiAWohDwJAAkAgBUUEQCABIQQMAQsgACgCxOABIRAgACgCwOABIREgACgCvOABIQ4gAEEBNgKM4QFBACEIA0AgCEEDRwRAIAcgCEECdCICaiAAIAJqQazQAWooAgA2AkQgCEEBaiEIDAELC0FsIQwgB0EYaiADIAQQBhADDQEgB0EsaiAHQRhqIAAoAgAQEyAHQTRqIAdBGGogACgCCBATIAdBPGogB0EYaiAAKAIEEBMgDUFgaiESIAEhBEEAIQwDQCAHKAIwIAcoAixBA3RqKQIAIhRCEIinQf8BcSEIIAcoAkAgBygCPEEDdGopAgAiFUIQiKdB/wFxIQsgBygCOCAHKAI0QQN0aikCACIWQiCIpyEJIBVCIIghFyAUQiCIpyECAkAgFkIQiKdB/wFxIgNBAk8EQAJAIAZFIANBGUlyRQRAIAkgB0EYaiADQSAgBygCHGsiCiAKIANLGyIKEAUgAyAKayIDdGohCSAHQRhqEAQaIANFDQEgB0EYaiADEAUgCWohCQwBCyAHQRhqIAMQBSAJaiEJIAdBGGoQBBoLIAcpAkQhGCAHIAk2AkQgByAYNwNIDAELAkAgA0UEQCACBEAgBygCRCEJDAMLIAcoAkghCQwBCwJAAkAgB0EYakEBEAUgCSACRWpqIgNBA0YEQCAHKAJEQX9qIgMgA0VqIQkMAQsgA0ECdCAHaigCRCIJIAlFaiEJIANBAUYNAQsgByAHKAJINgJMCwsgByAHKAJENgJIIAcgCTYCRAsgF6chAyALBEAgB0EYaiALEAUgA2ohAwsgCCALakEUTwRAIAdBGGoQBBoLIAgEQCAHQRhqIAgQBSACaiECCyAHQRhqEAQaIAcgB0EYaiAUQhiIp0H/AXEQCCAUp0H//wNxajYCLCAHIAdBGGogFUIYiKdB/wFxEAggFadB//8DcWo2AjwgB0EYahAEGiAHIAdBGGogFkIYiKdB/wFxEAggFqdB//8DcWo2AjQgByACNgJgIAcoAlwhCiAHIAk2AmggByADNgJkAkACQAJAIAQgAiADaiILaiASSw0AIAIgCmoiEyAPSw0AIA0gBGsgC0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", ba = /* @__PURE__ */ new WeakMap();
|
|
1979
|
+
let la, ha = 0;
|
|
1980
1980
|
class P extends Fa {
|
|
1981
1981
|
constructor(e) {
|
|
1982
|
-
super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new
|
|
1982
|
+
super(e), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new Fi(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER < "u" && console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.');
|
|
1983
1983
|
}
|
|
1984
1984
|
setTranscoderPath(e) {
|
|
1985
1985
|
return this.transcoderPath = e, this;
|
|
@@ -1995,9 +1995,9 @@ class P extends Fa {
|
|
|
1995
1995
|
}
|
|
1996
1996
|
init() {
|
|
1997
1997
|
if (!this.transcoderPending) {
|
|
1998
|
-
const e = new
|
|
1998
|
+
const e = new Be(this.manager);
|
|
1999
1999
|
e.setPath(this.transcoderPath), e.setWithCredentials(this.withCredentials);
|
|
2000
|
-
const a = e.loadAsync("basis_transcoder.js"), t = new
|
|
2000
|
+
const a = e.loadAsync("basis_transcoder.js"), t = new Be(this.manager);
|
|
2001
2001
|
t.setPath(this.transcoderPath), t.setResponseType("arraybuffer"), t.setWithCredentials(this.withCredentials);
|
|
2002
2002
|
const A = t.loadAsync("basis_transcoder.wasm");
|
|
2003
2003
|
this.transcoderPending = Promise.all([a, A]).then(([i, s]) => {
|
|
@@ -2007,21 +2007,21 @@ class P extends Fa {
|
|
|
2007
2007
|
const n = new Worker(this.workerSourceURL), b = this.transcoderBinary.slice(0);
|
|
2008
2008
|
return n.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: b }, [b]), n;
|
|
2009
2009
|
});
|
|
2010
|
-
}),
|
|
2010
|
+
}), ha > 0 && console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."), ha++;
|
|
2011
2011
|
}
|
|
2012
2012
|
return this.transcoderPending;
|
|
2013
2013
|
}
|
|
2014
2014
|
load(e, a, t, A) {
|
|
2015
2015
|
if (this.workerConfig === null) throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
|
|
2016
|
-
const i = new
|
|
2016
|
+
const i = new Be(this.manager);
|
|
2017
2017
|
i.setResponseType("arraybuffer"), i.setWithCredentials(this.withCredentials), i.load(e, (s) => {
|
|
2018
2018
|
this.parse(s, a, A);
|
|
2019
2019
|
}, t, A);
|
|
2020
2020
|
}
|
|
2021
2021
|
parse(e, a, t) {
|
|
2022
2022
|
if (this.workerConfig === null) throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
|
|
2023
|
-
if (
|
|
2024
|
-
return
|
|
2023
|
+
if (ba.has(e))
|
|
2024
|
+
return ba.get(e).promise.then(a).catch(t);
|
|
2025
2025
|
this._createTexture(e).then((A) => a ? a(A) : null).catch(t);
|
|
2026
2026
|
}
|
|
2027
2027
|
_createTextureFrom(e, a) {
|
|
@@ -2033,17 +2033,17 @@ class P extends Fa {
|
|
|
2033
2033
|
const l = i[0].mipmaps;
|
|
2034
2034
|
d = a.layerCount > 1 ? new RA(l, s, r, a.layerCount, c, n) : new qa(l, s, r, c, n);
|
|
2035
2035
|
}
|
|
2036
|
-
return d.minFilter = i[0].mipmaps.length === 1 ?
|
|
2036
|
+
return d.minFilter = i[0].mipmaps.length === 1 ? Ce : $e, d.magFilter = Ce, d.generateMipmaps = !1, d.needsUpdate = !0, d.colorSpace = it(a), d.premultiplyAlpha = !!(1 & b), d;
|
|
2037
2037
|
}
|
|
2038
2038
|
async _createTexture(e, a = {}) {
|
|
2039
2039
|
const t = function(r) {
|
|
2040
2040
|
const c = new Uint8Array(r.buffer, r.byteOffset, U.length);
|
|
2041
2041
|
if (c[0] !== U[0] || c[1] !== U[1] || c[2] !== U[2] || c[3] !== U[3] || c[4] !== U[4] || c[5] !== U[5] || c[6] !== U[6] || c[7] !== U[7] || c[8] !== U[8] || c[9] !== U[9] || c[10] !== U[10] || c[11] !== U[11]) throw new Error("Missing KTX 2.0 identifier.");
|
|
2042
|
-
const n = new
|
|
2042
|
+
const n = new Ti(), b = 17 * Uint32Array.BYTES_PER_ELEMENT, d = new Fe(r, U.length, b, !0);
|
|
2043
2043
|
n.vkFormat = d._nextUint32(), n.typeSize = d._nextUint32(), n.pixelWidth = d._nextUint32(), n.pixelHeight = d._nextUint32(), n.pixelDepth = d._nextUint32(), n.layerCount = d._nextUint32(), n.faceCount = d._nextUint32();
|
|
2044
2044
|
const l = d._nextUint32();
|
|
2045
2045
|
n.supercompressionScheme = d._nextUint32();
|
|
2046
|
-
const g = d._nextUint32(), h = d._nextUint32(), f = d._nextUint32(),
|
|
2046
|
+
const g = d._nextUint32(), h = d._nextUint32(), f = d._nextUint32(), I = d._nextUint32(), u = d._nextUint64(), p = d._nextUint64(), B = new Fe(r, U.length + b, 3 * l * 8, !0);
|
|
2047
2047
|
for (let R = 0; R < l; R++) n.levels.push({ levelData: new Uint8Array(r.buffer, r.byteOffset + B._nextUint64(), B._nextUint64()), uncompressedByteLength: B._nextUint64() });
|
|
2048
2048
|
const C = new Fe(r, g, h, !0), w = { vendorId: C._skip(4)._nextUint16(), descriptorType: C._nextUint16(), versionNumber: C._nextUint16(), descriptorBlockSize: C._nextUint16(), colorModel: C._nextUint8(), colorPrimaries: C._nextUint8(), transferFunction: C._nextUint8(), flags: C._nextUint8(), texelBlockDimension: [C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8()], bytesPlane: [C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8(), C._nextUint8()], samples: [] }, x = (w.descriptorBlockSize / 4 - 6) / 4;
|
|
2049
2049
|
for (let R = 0; R < x; R++) {
|
|
@@ -2051,8 +2051,8 @@ class P extends Fa {
|
|
|
2051
2051
|
64 & L.channelType ? (L.sampleLower = C._nextInt32(), L.sampleUpper = C._nextInt32()) : (L.sampleLower = C._nextUint32(), L.sampleUpper = C._nextUint32()), w.samples[R] = L;
|
|
2052
2052
|
}
|
|
2053
2053
|
n.dataFormatDescriptor.length = 0, n.dataFormatDescriptor.push(w);
|
|
2054
|
-
const y = new Fe(r, f,
|
|
2055
|
-
for (; y._offset <
|
|
2054
|
+
const y = new Fe(r, f, I, !0);
|
|
2055
|
+
for (; y._offset < I; ) {
|
|
2056
2056
|
const R = y._nextUint32(), L = y._scan(R), q = tt(L);
|
|
2057
2057
|
if (n.keyValue[q] = y._nextUint8Array(R - L.byteLength - 1), q.match(/^ktx/i)) {
|
|
2058
2058
|
const V = tt(n.keyValue[q]);
|
|
@@ -2061,46 +2061,46 @@ class P extends Fa {
|
|
|
2061
2061
|
y._skip(R % 4 ? 4 - R % 4 : 0);
|
|
2062
2062
|
}
|
|
2063
2063
|
if (p <= 0) return n;
|
|
2064
|
-
const
|
|
2065
|
-
for (let R = 0; R < l; R++)
|
|
2066
|
-
const qe =
|
|
2067
|
-
return n.globalData = { endpointCount: Q, selectorCount: k, imageDescs:
|
|
2064
|
+
const m = new Fe(r, u, p, !0), Q = m._nextUint16(), k = m._nextUint16(), D = m._nextUint32(), F = m._nextUint32(), _ = m._nextUint32(), ea = m._nextUint32(), Me = [];
|
|
2065
|
+
for (let R = 0; R < l; R++) Me.push({ imageFlags: m._nextUint32(), rgbSliceByteOffset: m._nextUint32(), rgbSliceByteLength: m._nextUint32(), alphaSliceByteOffset: m._nextUint32(), alphaSliceByteLength: m._nextUint32() });
|
|
2066
|
+
const qe = u + m._offset, Re = qe + D, Se = Re + F, ve = Se + _, Oe = new Uint8Array(r.buffer, r.byteOffset + qe, D), Je = new Uint8Array(r.buffer, r.byteOffset + Re, F), z = new Uint8Array(r.buffer, r.byteOffset + Se, _), me = new Uint8Array(r.buffer, r.byteOffset + ve, ea);
|
|
2067
|
+
return n.globalData = { endpointCount: Q, selectorCount: k, imageDescs: Me, endpointsData: Oe, selectorsData: Je, tablesData: z, extendedData: me }, n;
|
|
2068
2068
|
}(new Uint8Array(e)), A = t.vkFormat === Ta && t.dataFormatDescriptor[0].colorModel === 167;
|
|
2069
2069
|
if (!(t.vkFormat === 0 || A && !this.workerConfig.astcHDRSupported)) return async function(r) {
|
|
2070
2070
|
const { vkFormat: c } = r;
|
|
2071
|
-
if (
|
|
2071
|
+
if (ga[c] === void 0) throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
|
|
2072
2072
|
let n;
|
|
2073
|
-
r.supercompressionScheme === 2 && (
|
|
2074
|
-
const g = new
|
|
2073
|
+
r.supercompressionScheme === 2 && (la || (la = new Promise(async (l) => {
|
|
2074
|
+
const g = new Li();
|
|
2075
2075
|
await g.init(), l(g);
|
|
2076
|
-
})), n = await
|
|
2076
|
+
})), n = await la);
|
|
2077
2077
|
const b = [];
|
|
2078
2078
|
for (let l = 0; l < r.levels.length; l++) {
|
|
2079
|
-
const g = Math.max(1, r.pixelWidth >> l), h = Math.max(1, r.pixelHeight >> l), f = r.pixelDepth ? Math.max(1, r.pixelDepth >> l) : 0,
|
|
2080
|
-
let
|
|
2081
|
-
if (r.supercompressionScheme === 0)
|
|
2079
|
+
const g = Math.max(1, r.pixelWidth >> l), h = Math.max(1, r.pixelHeight >> l), f = r.pixelDepth ? Math.max(1, r.pixelDepth >> l) : 0, I = r.levels[l];
|
|
2080
|
+
let u, p;
|
|
2081
|
+
if (r.supercompressionScheme === 0) u = I.levelData;
|
|
2082
2082
|
else {
|
|
2083
2083
|
if (r.supercompressionScheme !== 2) throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
|
|
2084
|
-
|
|
2084
|
+
u = n.decode(I.levelData, I.uncompressedByteLength);
|
|
2085
2085
|
}
|
|
2086
|
-
p =
|
|
2086
|
+
p = fa[c] === v ? new Float32Array(u.buffer, u.byteOffset, u.byteLength / Float32Array.BYTES_PER_ELEMENT) : fa[c] === xe ? new Uint16Array(u.buffer, u.byteOffset, u.byteLength / Uint16Array.BYTES_PER_ELEMENT) : u, b.push({ data: p, width: g, height: h, depth: f });
|
|
2087
2087
|
}
|
|
2088
2088
|
let d;
|
|
2089
|
-
if (
|
|
2089
|
+
if (Gi.has(ga[c])) d = r.pixelDepth === 0 ? new Ge(b[0].data, r.pixelWidth, r.pixelHeight) : new _A(b[0].data, r.pixelWidth, r.pixelHeight, r.pixelDepth);
|
|
2090
2090
|
else {
|
|
2091
2091
|
if (r.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
|
|
2092
|
-
d = new qa(b, r.pixelWidth, r.pixelHeight);
|
|
2092
|
+
d = new qa(b, r.pixelWidth, r.pixelHeight), d.minFilter = b.length === 1 ? Ce : $e, d.magFilter = Ce;
|
|
2093
2093
|
}
|
|
2094
|
-
return d.mipmaps = b, d.type =
|
|
2094
|
+
return d.mipmaps = b, d.type = fa[c], d.format = ga[c], d.colorSpace = it(r), d.needsUpdate = !0, Promise.resolve(d);
|
|
2095
2095
|
}(t);
|
|
2096
2096
|
const i = a, s = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: e, taskConfig: i }, [e])).then((r) => this._createTextureFrom(r.data, t));
|
|
2097
|
-
return
|
|
2097
|
+
return ba.set(e, { promise: s }), s;
|
|
2098
2098
|
}
|
|
2099
2099
|
dispose() {
|
|
2100
|
-
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL),
|
|
2100
|
+
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), ha--, this;
|
|
2101
2101
|
}
|
|
2102
2102
|
}
|
|
2103
|
-
P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC1: 0, ETC2: 1, BC1: 2, BC3: 3, BC4: 4, BC5: 5, BC7_M6_OPAQUE_ONLY: 6, BC7_M5: 7, PVRTC1_4_RGB: 8, PVRTC1_4_RGBA: 9, ASTC_4x4: 10, ATC_RGB: 11, ATC_RGBA_INTERPOLATED_ALPHA: 12, RGBA32: 13, RGB565: 14, BGR565: 15, RGBA4444: 16, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, P.EngineFormat = { RGBAFormat: $, RGBA_ASTC_4x4_Format: Qt, RGB_BPTC_UNSIGNED_Format: SA, RGBA_BPTC_Format:
|
|
2103
|
+
P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC1: 0, ETC2: 1, BC1: 2, BC3: 3, BC4: 4, BC5: 5, BC7_M6_OPAQUE_ONLY: 6, BC7_M5: 7, PVRTC1_4_RGB: 8, PVRTC1_4_RGBA: 9, ASTC_4x4: 10, ATC_RGB: 11, ATC_RGBA_INTERPOLATED_ALPHA: 12, RGBA32: 13, RGB565: 14, BGR565: 15, RGBA4444: 16, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, P.EngineFormat = { RGBAFormat: $, RGBA_ASTC_4x4_Format: Qt, RGB_BPTC_UNSIGNED_Format: SA, RGBA_BPTC_Format: vA, RGBA_ETC2_EAC_Format: FA, RGBA_PVRTC_4BPPV1_Format: TA, RGBA_S3TC_DXT5_Format: LA, RGB_ETC1_Format: GA, RGB_ETC2_Format: UA, RGB_PVRTC_4BPPV1_Format: NA, RGBA_S3TC_DXT1_Format: PA }, P.EngineType = { UnsignedByteType: X, HalfFloatType: xe, FloatType: v }, P.BasisWorker = function() {
|
|
2104
2104
|
let o, e, a;
|
|
2105
2105
|
const t = _EngineFormat, A = _EngineType, i = _TranscoderFormat, s = _BasisFormat;
|
|
2106
2106
|
self.addEventListener("message", function(d) {
|
|
@@ -2116,12 +2116,12 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
|
|
|
2116
2116
|
case "transcode":
|
|
2117
2117
|
e.then(() => {
|
|
2118
2118
|
try {
|
|
2119
|
-
const { faces: h, buffers: f, width:
|
|
2119
|
+
const { faces: h, buffers: f, width: I, height: u, hasAlpha: p, format: B, type: C, dfdFlags: w } = function(x) {
|
|
2120
2120
|
const y = new a.KTX2File(new Uint8Array(x));
|
|
2121
|
-
function
|
|
2121
|
+
function m() {
|
|
2122
2122
|
y.close(), y.delete();
|
|
2123
2123
|
}
|
|
2124
|
-
if (!y.isValid()) throw
|
|
2124
|
+
if (!y.isValid()) throw m(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
|
|
2125
2125
|
let Q;
|
|
2126
2126
|
if (y.isUASTC()) Q = s.UASTC;
|
|
2127
2127
|
else if (y.isETC1S()) Q = s.ETC1S;
|
|
@@ -2129,39 +2129,39 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
|
|
|
2129
2129
|
if (!y.isHDR()) throw new Error("THREE.KTX2Loader: Unknown Basis encoding");
|
|
2130
2130
|
Q = s.UASTC_HDR;
|
|
2131
2131
|
}
|
|
2132
|
-
const k = y.getWidth(), D = y.getHeight(),
|
|
2132
|
+
const k = y.getWidth(), D = y.getHeight(), F = y.getLayers() || 1, _ = y.getLevels(), ea = y.getFaces(), Me = y.getHasAlpha(), qe = y.getDFDFlags(), { transcoderFormat: Re, engineFormat: Se, engineType: ve } = function(z, me, R, L) {
|
|
2133
2133
|
const q = c[z];
|
|
2134
2134
|
for (let V = 0; V < q.length; V++) {
|
|
2135
2135
|
const O = q[V];
|
|
2136
|
-
if (!(O.if && !o[O.if]) && O.basisFormat.includes(z) && !(L && O.transcoderFormat.length < 2) && !(O.needsPowerOfTwo && (!n(
|
|
2136
|
+
if (!(O.if && !o[O.if]) && O.basisFormat.includes(z) && !(L && O.transcoderFormat.length < 2) && !(O.needsPowerOfTwo && (!n(me) || !n(R))))
|
|
2137
2137
|
return { transcoderFormat: O.transcoderFormat[L ? 1 : 0], engineFormat: O.engineFormat[L ? 1 : 0], engineType: O.engineType[0] };
|
|
2138
2138
|
}
|
|
2139
2139
|
throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.");
|
|
2140
|
-
}(Q, k, D,
|
|
2141
|
-
if (!k || !D || !_) throw
|
|
2142
|
-
if (!y.startTranscoding()) throw
|
|
2140
|
+
}(Q, k, D, Me);
|
|
2141
|
+
if (!k || !D || !_) throw m(), new Error("THREE.KTX2Loader: Invalid texture");
|
|
2142
|
+
if (!y.startTranscoding()) throw m(), new Error("THREE.KTX2Loader: .startTranscoding failed");
|
|
2143
2143
|
const Oe = [], Je = [];
|
|
2144
|
-
for (let z = 0; z <
|
|
2145
|
-
const
|
|
2144
|
+
for (let z = 0; z < ea; z++) {
|
|
2145
|
+
const me = [];
|
|
2146
2146
|
for (let R = 0; R < _; R++) {
|
|
2147
2147
|
const L = [];
|
|
2148
2148
|
let q, V;
|
|
2149
|
-
for (let Ee = 0; Ee <
|
|
2150
|
-
const
|
|
2151
|
-
z !== 0 || R !== 0 || Ee !== 0 ||
|
|
2152
|
-
let
|
|
2153
|
-
const Yt = y.transcodeImage(
|
|
2154
|
-
if (
|
|
2155
|
-
L.push(
|
|
2149
|
+
for (let Ee = 0; Ee < F; Ee++) {
|
|
2150
|
+
const Qe = y.getImageLevelInfo(R, Ee, z);
|
|
2151
|
+
z !== 0 || R !== 0 || Ee !== 0 || Qe.origWidth % 4 == 0 && Qe.origHeight % 4 == 0 || console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), _ > 1 ? (q = Qe.origWidth, V = Qe.origHeight) : (q = Qe.width, V = Qe.height);
|
|
2152
|
+
let ye = new Uint8Array(y.getImageTranscodedSizeInBytes(R, Ee, 0, Re));
|
|
2153
|
+
const Yt = y.transcodeImage(ye, R, Ee, z, Re, 0, -1, -1);
|
|
2154
|
+
if (ve === A.HalfFloatType && (ye = new Uint16Array(ye.buffer, ye.byteOffset, ye.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !Yt) throw m(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
|
|
2155
|
+
L.push(ye);
|
|
2156
2156
|
}
|
|
2157
2157
|
const O = b(L);
|
|
2158
|
-
|
|
2158
|
+
me.push({ data: O, width: q, height: V }), Je.push(O.buffer);
|
|
2159
2159
|
}
|
|
2160
|
-
Oe.push({ mipmaps:
|
|
2160
|
+
Oe.push({ mipmaps: me, width: k, height: D, format: Se, type: ve });
|
|
2161
2161
|
}
|
|
2162
|
-
return
|
|
2162
|
+
return m(), { faces: Oe, buffers: Je, width: k, height: D, hasAlpha: Me, dfdFlags: qe, format: Se, type: ve };
|
|
2163
2163
|
}(l.buffer);
|
|
2164
|
-
self.postMessage({ type: "transcode", id: l.id, data: { faces: h, width:
|
|
2164
|
+
self.postMessage({ type: "transcode", id: l.id, data: { faces: h, width: I, height: u, hasAlpha: p, format: B, type: C, dfdFlags: w } }, f);
|
|
2165
2165
|
} catch (h) {
|
|
2166
2166
|
console.error(h), self.postMessage({ type: "error", id: l.id, error: h.message });
|
|
2167
2167
|
}
|
|
@@ -2181,13 +2181,13 @@ P.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, P.TranscoderFormat = { ETC
|
|
|
2181
2181
|
const g = new Uint8Array(l);
|
|
2182
2182
|
let h = 0;
|
|
2183
2183
|
for (let f = 0; f < d.length; f++) {
|
|
2184
|
-
const
|
|
2185
|
-
g.set(
|
|
2184
|
+
const I = d[f];
|
|
2185
|
+
g.set(I, h), h += I.byteLength;
|
|
2186
2186
|
}
|
|
2187
2187
|
return g;
|
|
2188
2188
|
}
|
|
2189
2189
|
};
|
|
2190
|
-
const
|
|
2190
|
+
const Gi = /* @__PURE__ */ new Set([$, Ue, Ne]), ga = { [qt]: $, [Pt]: $, [Lt]: $, [Gt]: $, [Ht]: Ue, [Nt]: Ue, [Ft]: Ue, [Tt]: Ue, [_t]: Ne, [Ut]: Ne, [vt]: Ne, [St]: Ne, [Ta]: Qt, [Jt]: Oa, [Ot]: Oa }, fa = { [qt]: v, [Pt]: xe, [Lt]: X, [Gt]: X, [Ht]: v, [Nt]: xe, [Ft]: X, [Tt]: X, [_t]: v, [Ut]: xe, [vt]: X, [St]: X, [Ta]: xe, [Jt]: X, [Ot]: X };
|
|
2191
2191
|
function it(o) {
|
|
2192
2192
|
const e = o.dataFormatDescriptor[0];
|
|
2193
2193
|
return e.colorPrimaries === 1 ? e.transferFunction === 2 ? re : K : e.colorPrimaries === 10 ? e.transferFunction === 2 ? "display-p3" : "display-p3-linear" : (e.colorPrimaries === 0 || console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`), HA);
|
|
@@ -2203,48 +2203,48 @@ async function st(o) {
|
|
|
2203
2203
|
return async function(t, A) {
|
|
2204
2204
|
const i = new DataView(t), s = i.getBigUint64(8, !0), r = i.getBigUint64(16, !0), c = 24, n = c + Number(s), b = n + (8 - n % 8) % 8, d = b + Number(r), l = t.slice(c, n), g = new TextDecoder().decode(l).trim(), h = JSON.parse(g);
|
|
2205
2205
|
if (!h.buffers) throw new Error("subtree has no buffers");
|
|
2206
|
-
const f = h.buffers.map(async (
|
|
2207
|
-
if (
|
|
2208
|
-
const p = new URL(
|
|
2206
|
+
const f = h.buffers.map(async (u) => {
|
|
2207
|
+
if (u.uri) {
|
|
2208
|
+
const p = new URL(u.uri, A).href, B = await fetch(p);
|
|
2209
2209
|
if (!B.ok) throw new Error(`Failed to fetch binary file ${p}: ${B.statusText}`);
|
|
2210
2210
|
return new Uint8Array(await B.arrayBuffer());
|
|
2211
2211
|
}
|
|
2212
2212
|
return new Uint8Array(t.slice(b, d));
|
|
2213
|
-
}),
|
|
2214
|
-
return /* @__PURE__ */ function(
|
|
2215
|
-
function B(
|
|
2216
|
-
if (!
|
|
2217
|
-
if (
|
|
2218
|
-
if (
|
|
2219
|
-
if (
|
|
2213
|
+
}), I = await Promise.all(f);
|
|
2214
|
+
return /* @__PURE__ */ function(u, p) {
|
|
2215
|
+
function B(m, Q) {
|
|
2216
|
+
if (!m) throw new Error("incomplete json subtree");
|
|
2217
|
+
if (m.constant) {
|
|
2218
|
+
if (m.constant == 0) return !1;
|
|
2219
|
+
if (m.constant == 1) return !0;
|
|
2220
2220
|
}
|
|
2221
|
-
if (
|
|
2222
|
-
if (!
|
|
2223
|
-
const k =
|
|
2221
|
+
if (m.bitstream == null) throw new Error('json subtree "tileAvailability" does not specify a bitstream');
|
|
2222
|
+
if (!u.bufferViews || !u.bufferViews[m.bitstream]) throw new Error('json subtree "bufferViews" does not specify a bitstream');
|
|
2223
|
+
const k = u.bufferViews[m.bitstream];
|
|
2224
2224
|
return C(p[k.buffer], k.byteOffset, Q);
|
|
2225
2225
|
}
|
|
2226
|
-
function C(
|
|
2226
|
+
function C(m, Q, k) {
|
|
2227
2227
|
const D = k % 8;
|
|
2228
|
-
return
|
|
2228
|
+
return m[Q + Math.floor(k / 8)] >> D & !0;
|
|
2229
2229
|
}
|
|
2230
|
-
function w(
|
|
2230
|
+
function w(m) {
|
|
2231
2231
|
let Q = 0;
|
|
2232
|
-
return Q =
|
|
2232
|
+
return Q = m.z == null ? ua(m.x, m.y, m.level) : pa(m.x, m.y, m.z, m.level), B(u.tileAvailability, Q);
|
|
2233
2233
|
}
|
|
2234
|
-
function x(
|
|
2234
|
+
function x(m) {
|
|
2235
2235
|
let Q = 0;
|
|
2236
|
-
Q =
|
|
2236
|
+
Q = m.z == null ? ua(m.x, m.y, m.level) : pa(m.x, m.y, m.z, m.level);
|
|
2237
2237
|
const k = [];
|
|
2238
|
-
return
|
|
2238
|
+
return u.contentAvailability.forEach((D) => {
|
|
2239
2239
|
k.push(B(D, Q));
|
|
2240
2240
|
}), k;
|
|
2241
2241
|
}
|
|
2242
|
-
function y(
|
|
2242
|
+
function y(m) {
|
|
2243
2243
|
let Q = 0;
|
|
2244
|
-
return Q =
|
|
2244
|
+
return Q = m.z == null ? ua(m.x, m.y) : pa(m.x, m.y, m.z), B(u.childSubtreeAvailability, Q);
|
|
2245
2245
|
}
|
|
2246
2246
|
return { isTileAvailable: w, isContentAvailable: x, isChildSubtreeAvailable: y };
|
|
2247
|
-
}(h,
|
|
2247
|
+
}(h, I);
|
|
2248
2248
|
}(await a.arrayBuffer(), rt(o));
|
|
2249
2249
|
throw new Error(`Unsupported file extension: ${e}`);
|
|
2250
2250
|
}
|
|
@@ -2255,18 +2255,18 @@ function rt(o) {
|
|
|
2255
2255
|
function nt(o) {
|
|
2256
2256
|
return o = 1431655765 & ((o = 858993459 & ((o = 252645135 & ((o = 16711935 & ((o &= 65535) ^ o << 8)) ^ o << 4)) ^ o << 2)) ^ o << 1);
|
|
2257
2257
|
}
|
|
2258
|
-
function
|
|
2258
|
+
function ua(o, e, a) {
|
|
2259
2259
|
let t = 0;
|
|
2260
2260
|
return a && (t = (Math.pow(4, a) - 1) / 3), t + (nt(o) | nt(e) << 1);
|
|
2261
2261
|
}
|
|
2262
2262
|
function Ia(o) {
|
|
2263
2263
|
return o = 153391689 & ((o = 51130563 & ((o = 50393103 & ((o = 4278190335 & ((o &= 1023) ^ o << 16)) ^ o << 8)) ^ o << 4)) ^ o << 2);
|
|
2264
2264
|
}
|
|
2265
|
-
function
|
|
2265
|
+
function pa(o, e, a, t) {
|
|
2266
2266
|
let A = 0;
|
|
2267
2267
|
return t && (A = (Math.pow(8, t) - 1) / 7), A + (Ia(o) | Ia(e) << 1 | Ia(a) << 2);
|
|
2268
2268
|
}
|
|
2269
|
-
const
|
|
2269
|
+
const Te = /* @__PURE__ */ new Map();
|
|
2270
2270
|
async function La(o, e) {
|
|
2271
2271
|
if (!o.root || !o.root.implicitTiling) return o;
|
|
2272
2272
|
if (!o.root.content && !o.root.contents) throw new Error("implicit tiling requires a Template URI");
|
|
@@ -2285,8 +2285,8 @@ async function La(o, e) {
|
|
|
2285
2285
|
let s;
|
|
2286
2286
|
a && (s = t.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0)), a || (s = t.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0).replace("{z}", 0));
|
|
2287
2287
|
const r = { level: 0, x: 0, y: 0 }, c = { level: 0, x: 0, y: 0 };
|
|
2288
|
-
a || (r.z = 0, c.z = 0),
|
|
2289
|
-
const n =
|
|
2288
|
+
a || (r.z = 0, c.z = 0), Te.set(s, await st(i + s));
|
|
2289
|
+
const n = Te.get(s), b = [];
|
|
2290
2290
|
n.isContentAvailable(c) && A.forEach((g) => {
|
|
2291
2291
|
let h;
|
|
2292
2292
|
a && (h = g.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y)), a || (h = g.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y).replace("{z}", r.z)), b.push({ uri: h });
|
|
@@ -2297,33 +2297,33 @@ async function La(o, e) {
|
|
|
2297
2297
|
const h = [];
|
|
2298
2298
|
if (g.localAddress.level == o.root.implicitTiling.availableLevels - 1) return h;
|
|
2299
2299
|
if ((g.localAddress.level + 1) % o.root.implicitTiling.subtreeLevels == 0) {
|
|
2300
|
-
const f = ze(g.localAddress),
|
|
2300
|
+
const f = ze(g.localAddress), I = ze(g.globalAddress), u = ot(a, o.root.boundingVolume, I);
|
|
2301
2301
|
for (let p = 0; p < f.length; p++) {
|
|
2302
|
-
const B = f[p], C =
|
|
2303
|
-
g.subtree.isChildSubtreeAvailable(B) && (a && t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y), a || t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)),
|
|
2304
|
-
const w =
|
|
2302
|
+
const B = f[p], C = I[p];
|
|
2303
|
+
g.subtree.isChildSubtreeAvailable(B) && (a && t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y), a || t.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), Te.has(s) || Te.set(s, await st(i + s));
|
|
2304
|
+
const w = Te.get(s), x = { level: 0, x: 0, y: 0 };
|
|
2305
2305
|
a || (x.z = 0);
|
|
2306
2306
|
const y = [];
|
|
2307
2307
|
w.isContentAvailable(x) && A.forEach((Q) => {
|
|
2308
2308
|
let k;
|
|
2309
2309
|
a && (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y)), a || (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), y.push({ uri: k });
|
|
2310
2310
|
});
|
|
2311
|
-
const
|
|
2312
|
-
h.push(
|
|
2311
|
+
const m = { geometricError: g.geometricError / 2, boundingVolume: u[p], refine: o.root.refine, globalAddress: C, localAddress: x, subtree: w, contents: y, getChildren: async () => l(m) };
|
|
2312
|
+
h.push(m);
|
|
2313
2313
|
}
|
|
2314
2314
|
} else {
|
|
2315
|
-
const f = ze(g.localAddress),
|
|
2315
|
+
const f = ze(g.localAddress), I = ze(g.globalAddress), u = ot(a, o.root.boundingVolume, I);
|
|
2316
2316
|
for (let p = 0; p < f.length; p++) {
|
|
2317
|
-
const B = f[p], C =
|
|
2317
|
+
const B = f[p], C = I[p];
|
|
2318
2318
|
if (!g.subtree.isTileAvailable(B)) continue;
|
|
2319
2319
|
const w = [], x = g.subtree.isContentAvailable(B);
|
|
2320
|
-
for (let
|
|
2321
|
-
if (!x[
|
|
2322
|
-
const Q = A[
|
|
2320
|
+
for (let m = 0; m < A.length; m++) {
|
|
2321
|
+
if (!x[m]) continue;
|
|
2322
|
+
const Q = A[m];
|
|
2323
2323
|
let k;
|
|
2324
2324
|
a && (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y)), a || (k = Q.replace("{level}", C.level).replace("{x}", C.x).replace("{y}", C.y).replace("{z}", C.z)), w.push({ uri: k });
|
|
2325
2325
|
}
|
|
2326
|
-
const y = { geometricError: g.geometricError / 2, boundingVolume:
|
|
2326
|
+
const y = { geometricError: g.geometricError / 2, boundingVolume: u[p], refine: o.root.refine, globalAddress: C, localAddress: B, subtree: g.subtree, contents: w, getChildren: async () => l(y) };
|
|
2327
2327
|
h.push(y);
|
|
2328
2328
|
}
|
|
2329
2329
|
}
|
|
@@ -2337,13 +2337,13 @@ function ze(o) {
|
|
|
2337
2337
|
}
|
|
2338
2338
|
function ot(o, e, a) {
|
|
2339
2339
|
const t = [];
|
|
2340
|
-
for (let A = 0; A < a.length; A++) t.push(
|
|
2340
|
+
for (let A = 0; A < a.length; A++) t.push(Ui(o, e, a[A]));
|
|
2341
2341
|
return t;
|
|
2342
2342
|
}
|
|
2343
|
-
function
|
|
2343
|
+
function Ui(o, e, a) {
|
|
2344
2344
|
if (e.region) return function(t, A, i) {
|
|
2345
|
-
const [s, r, c, n, b, d] = A, l = (c - s) / 2 ** i.level, g = (n - r) / 2 ** i.level, h = t ? 0 : (d - b) / 2 ** i.level, f = s + l * i.x,
|
|
2346
|
-
return { region: [f,
|
|
2345
|
+
const [s, r, c, n, b, d] = A, l = (c - s) / 2 ** i.level, g = (n - r) / 2 ** i.level, h = t ? 0 : (d - b) / 2 ** i.level, f = s + l * i.x, I = r + g * i.y, u = f + l, p = I + g, B = t ? b : b + h * i.z, C = t ? d : B + h;
|
|
2346
|
+
return { region: [f, I, u, p, B, C] };
|
|
2347
2347
|
}(o, e.region, a);
|
|
2348
2348
|
if (e.box) return function(t, A, i) {
|
|
2349
2349
|
const s = A.slice(0, 3), r = [A.slice(3, 6), A.slice(6, 9), A.slice(9, 12)], c = 1 / Math.pow(2, i.level), n = [c, c, t ? 1 : c], b = r.map((g, h) => g.map((f) => f * n[h])), d = [s[0] - r[0][0] - r[1][0] - r[2][0], s[1] - r[0][1] - r[1][1] - r[2][1], s[2] - r[0][2] - r[1][2] - r[2][2]];
|
|
@@ -2372,10 +2372,10 @@ function Ni(o, e, a) {
|
|
|
2372
2372
|
return new Uint8Array(n.buffer, n.byteOffset, n.byteLength);
|
|
2373
2373
|
}
|
|
2374
2374
|
function i(n, b, d, l, g) {
|
|
2375
|
-
var h = o.exports.sbrk, f = h(b),
|
|
2376
|
-
|
|
2377
|
-
var p = n(f, b,
|
|
2378
|
-
return B.set(
|
|
2375
|
+
var h = o.exports.sbrk, f = h(b), I = h(l * g), u = new Uint8Array(o.exports.memory.buffer);
|
|
2376
|
+
u.set(A(d), I);
|
|
2377
|
+
var p = n(f, b, I, l, g), B = new Uint8Array(p);
|
|
2378
|
+
return B.set(u.subarray(f, f + p)), h(f - h(0)), B;
|
|
2379
2379
|
}
|
|
2380
2380
|
function s(n) {
|
|
2381
2381
|
for (var b = 0, d = 0; d < n.length; ++d)
|
|
@@ -2388,10 +2388,10 @@ function Ni(o, e, a) {
|
|
|
2388
2388
|
return new Uint32Array(d);
|
|
2389
2389
|
}
|
|
2390
2390
|
function c(n, b, d, l, g, h, f) {
|
|
2391
|
-
var
|
|
2392
|
-
B.set(A(b), p), n(
|
|
2391
|
+
var I = o.exports.sbrk, u = I(d * l), p = I(d * h), B = new Uint8Array(o.exports.memory.buffer);
|
|
2392
|
+
B.set(A(b), p), n(u, d, l, g, p, f);
|
|
2393
2393
|
var C = new Uint8Array(d * l);
|
|
2394
|
-
return C.set(B.subarray(
|
|
2394
|
+
return C.set(B.subarray(u, u + d * l)), I(u - I(0)), C;
|
|
2395
2395
|
}
|
|
2396
2396
|
})();
|
|
2397
2397
|
var Kt = function() {
|
|
@@ -2402,25 +2402,25 @@ var Kt = function() {
|
|
|
2402
2402
|
});
|
|
2403
2403
|
function i(g) {
|
|
2404
2404
|
for (var h = new Uint8Array(g.length), f = 0; f < g.length; ++f) {
|
|
2405
|
-
var
|
|
2406
|
-
h[f] =
|
|
2405
|
+
var I = g.charCodeAt(f);
|
|
2406
|
+
h[f] = I > 96 ? I - 97 : I > 64 ? I - 39 : I + 4;
|
|
2407
2407
|
}
|
|
2408
|
-
var
|
|
2409
|
-
for (f = 0; f < g.length; ++f) h[
|
|
2410
|
-
return h.buffer.slice(0,
|
|
2408
|
+
var u = 0;
|
|
2409
|
+
for (f = 0; f < g.length; ++f) h[u++] = h[f] < 60 ? e[h[f]] : 64 * (h[f] - 60) + h[++f];
|
|
2410
|
+
return h.buffer.slice(0, u);
|
|
2411
2411
|
}
|
|
2412
|
-
function s(g, h, f,
|
|
2413
|
-
var C = g.exports.sbrk, w =
|
|
2414
|
-
|
|
2415
|
-
var Q = h(x,
|
|
2416
|
-
if (Q == 0 && B && B(x, w,
|
|
2412
|
+
function s(g, h, f, I, u, p, B) {
|
|
2413
|
+
var C = g.exports.sbrk, w = I + 3 & -4, x = C(w * u), y = C(p.length), m = new Uint8Array(g.exports.memory.buffer);
|
|
2414
|
+
m.set(p, y);
|
|
2415
|
+
var Q = h(x, I, u, y, p.length);
|
|
2416
|
+
if (Q == 0 && B && B(x, w, u), f.set(m.subarray(x, x + I * u)), C(x - C(0)), Q != 0) throw new Error("Malformed buffer data: " + Q);
|
|
2417
2417
|
}
|
|
2418
2418
|
var r = { NONE: "", OCTAHEDRAL: "meshopt_decodeFilterOct", QUATERNION: "meshopt_decodeFilterQuat", EXPONENTIAL: "meshopt_decodeFilterExp" }, c = { ATTRIBUTES: "meshopt_decodeVertexBuffer", TRIANGLES: "meshopt_decodeIndexBuffer", INDICES: "meshopt_decodeIndexSequence" }, n = [], b = 0;
|
|
2419
2419
|
function d(g) {
|
|
2420
2420
|
var h = { object: new Worker(g), pending: 0, requests: {} };
|
|
2421
2421
|
return h.object.onmessage = function(f) {
|
|
2422
|
-
var
|
|
2423
|
-
h.pending -=
|
|
2422
|
+
var I = f.data;
|
|
2423
|
+
h.pending -= I.count, h.requests[I.id][I.action](I.value), delete h.requests[I.id];
|
|
2424
2424
|
}, h;
|
|
2425
2425
|
}
|
|
2426
2426
|
function l(g) {
|
|
@@ -2428,37 +2428,37 @@ var Kt = function() {
|
|
|
2428
2428
|
if (!h.id) return self.close();
|
|
2429
2429
|
self.ready.then(function(f) {
|
|
2430
2430
|
try {
|
|
2431
|
-
var
|
|
2432
|
-
s(f, f.exports[h.mode],
|
|
2433
|
-
} catch (
|
|
2434
|
-
self.postMessage({ id: h.id, count: h.count, action: "reject", value:
|
|
2431
|
+
var I = new Uint8Array(h.count * h.size);
|
|
2432
|
+
s(f, f.exports[h.mode], I, h.count, h.size, h.source, f.exports[h.filter]), self.postMessage({ id: h.id, count: h.count, action: "resolve", value: I }, [I.buffer]);
|
|
2433
|
+
} catch (u) {
|
|
2434
|
+
self.postMessage({ id: h.id, count: h.count, action: "reject", value: u });
|
|
2435
2435
|
}
|
|
2436
2436
|
});
|
|
2437
2437
|
}
|
|
2438
2438
|
return { ready: A, supported: !0, useWorkers: function(g) {
|
|
2439
2439
|
(function(h) {
|
|
2440
|
-
for (var f = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(i(t)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + l.name + ";" + s.toString() + l.toString(),
|
|
2440
|
+
for (var f = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(i(t)) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + l.name + ";" + s.toString() + l.toString(), I = new Blob([f], { type: "text/javascript" }), u = URL.createObjectURL(I), p = n.length; p < h; ++p) n[p] = d(u);
|
|
2441
2441
|
for (p = h; p < n.length; ++p) n[p].object.postMessage({});
|
|
2442
|
-
n.length = h, URL.revokeObjectURL(
|
|
2442
|
+
n.length = h, URL.revokeObjectURL(u);
|
|
2443
2443
|
})(g);
|
|
2444
|
-
}, decodeVertexBuffer: function(g, h, f,
|
|
2445
|
-
s(a, a.exports.meshopt_decodeVertexBuffer, g, h, f,
|
|
2446
|
-
}, decodeIndexBuffer: function(g, h, f,
|
|
2447
|
-
s(a, a.exports.meshopt_decodeIndexBuffer, g, h, f,
|
|
2448
|
-
}, decodeIndexSequence: function(g, h, f,
|
|
2449
|
-
s(a, a.exports.meshopt_decodeIndexSequence, g, h, f,
|
|
2450
|
-
}, decodeGltfBuffer: function(g, h, f,
|
|
2451
|
-
s(a, a.exports[c[
|
|
2452
|
-
}, decodeGltfBufferAsync: function(g, h, f,
|
|
2444
|
+
}, decodeVertexBuffer: function(g, h, f, I, u) {
|
|
2445
|
+
s(a, a.exports.meshopt_decodeVertexBuffer, g, h, f, I, a.exports[r[u]]);
|
|
2446
|
+
}, decodeIndexBuffer: function(g, h, f, I) {
|
|
2447
|
+
s(a, a.exports.meshopt_decodeIndexBuffer, g, h, f, I);
|
|
2448
|
+
}, decodeIndexSequence: function(g, h, f, I) {
|
|
2449
|
+
s(a, a.exports.meshopt_decodeIndexSequence, g, h, f, I);
|
|
2450
|
+
}, decodeGltfBuffer: function(g, h, f, I, u, p) {
|
|
2451
|
+
s(a, a.exports[c[u]], g, h, f, I, a.exports[r[p]]);
|
|
2452
|
+
}, decodeGltfBufferAsync: function(g, h, f, I, u) {
|
|
2453
2453
|
return n.length > 0 ? function(p, B, C, w, x) {
|
|
2454
|
-
for (var y = n[0],
|
|
2454
|
+
for (var y = n[0], m = 1; m < n.length; ++m) n[m].pending < y.pending && (y = n[m]);
|
|
2455
2455
|
return new Promise(function(Q, k) {
|
|
2456
|
-
var D = new Uint8Array(C),
|
|
2457
|
-
y.pending += p, y.requests[
|
|
2456
|
+
var D = new Uint8Array(C), F = ++b;
|
|
2457
|
+
y.pending += p, y.requests[F] = { resolve: Q, reject: k }, y.object.postMessage({ id: F, count: p, size: B, source: D, mode: w, filter: x }, [D.buffer]);
|
|
2458
2458
|
});
|
|
2459
|
-
}(g, h, f, c[
|
|
2459
|
+
}(g, h, f, c[I], r[u]) : A.then(function() {
|
|
2460
2460
|
var p = new Uint8Array(g * h);
|
|
2461
|
-
return s(a, a.exports[c[
|
|
2461
|
+
return s(a, a.exports[c[I]], p, g, h, f, a.exports[r[u]]), p;
|
|
2462
2462
|
});
|
|
2463
2463
|
} };
|
|
2464
2464
|
}();
|
|
@@ -2483,19 +2483,19 @@ var Kt = function() {
|
|
|
2483
2483
|
return new Uint8Array(r.buffer, r.byteOffset, r.byteLength);
|
|
2484
2484
|
}
|
|
2485
2485
|
function i(r, c, n, b, d, l, g, h) {
|
|
2486
|
-
var f = o.exports.sbrk,
|
|
2487
|
-
B.set(A(c),
|
|
2488
|
-
var C = r(
|
|
2486
|
+
var f = o.exports.sbrk, I = f(4 * h), u = f(n * b), p = f(n * l), B = new Uint8Array(o.exports.memory.buffer);
|
|
2487
|
+
B.set(A(c), u), d && B.set(A(d), p);
|
|
2488
|
+
var C = r(I, u, n, b, p, l, g, h);
|
|
2489
2489
|
new Uint8Array(o.exports.memory.buffer);
|
|
2490
2490
|
var w = new Uint32Array(C);
|
|
2491
|
-
return A(w).set(B.subarray(
|
|
2491
|
+
return A(w).set(B.subarray(I, I + 4 * C)), f(I - f(0)), w;
|
|
2492
2492
|
}
|
|
2493
2493
|
var s = { LockBorder: 1 };
|
|
2494
2494
|
})();
|
|
2495
2495
|
let ae = 0;
|
|
2496
|
-
class
|
|
2496
|
+
class Ni {
|
|
2497
2497
|
constructor(e) {
|
|
2498
|
-
if (this.renderer = e.renderer, this.zUpToYUpMatrix = new
|
|
2498
|
+
if (this.renderer = e.renderer, this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.proxy = e.proxy, e && (this.meshCallback = e.meshCallback, this.pointsCallback = e.pointsCallback, e.maxCachedItems != null && (this.maxCachedItems = e.maxCachedItems)), this.gltfLoader = new Dt(), e && e.dracoLoader) this.gltfLoader.setDRACOLoader(e.dracoLoader), this.hasDracoLoader = !0;
|
|
2499
2499
|
else {
|
|
2500
2500
|
const a = new Rt();
|
|
2501
2501
|
a.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"), this.gltfLoader.setDRACOLoader(a), this.gltfLoader.hasDracoLoader = !0;
|
|
@@ -2505,7 +2505,7 @@ class Pi {
|
|
|
2505
2505
|
const a = new P();
|
|
2506
2506
|
a.setTranscoderPath("https://storage.googleapis.com/ogc-3d-tiles/basis/").detectSupport(e.renderer), this.gltfLoader.setKTX2Loader(a), this.gltfLoader.hasKTX2Loader = !0;
|
|
2507
2507
|
}
|
|
2508
|
-
this.gltfLoader.setMeshoptDecoder(Kt), this.hasMeshOptDecoder = !0, this.b3dmDecoder = new xt(this.gltfLoader), this.splatsDecoder = new
|
|
2508
|
+
this.gltfLoader.setMeshoptDecoder(Kt), this.hasMeshOptDecoder = !0, this.b3dmDecoder = new xt(this.gltfLoader), this.splatsDecoder = new XA(this.gltfLoader, this.renderer), this.cache = new yt(), this.register = {}, this.ready = [], this.downloads = [], this.nextReady = [], this.nextDownloads = [];
|
|
2509
2509
|
}
|
|
2510
2510
|
update() {
|
|
2511
2511
|
const e = this;
|
|
@@ -2575,59 +2575,59 @@ class Pi {
|
|
|
2575
2575
|
else if (Object.keys(l.register[g]).length == 1) {
|
|
2576
2576
|
let f;
|
|
2577
2577
|
t.includes(".b3dm") ? f = () => {
|
|
2578
|
-
var
|
|
2579
|
-
|
|
2580
|
-
if (!
|
|
2581
|
-
return
|
|
2582
|
-
}).then((
|
|
2578
|
+
var I;
|
|
2579
|
+
I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
|
|
2580
|
+
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2581
|
+
return u.arrayBuffer();
|
|
2582
|
+
}).then((u) => this.b3dmDecoder.parseB3DM(u, (p) => {
|
|
2583
2583
|
l.meshCallback(p, b);
|
|
2584
|
-
}, c, n)).then((
|
|
2585
|
-
l.cache.put(g,
|
|
2586
|
-
}).catch((
|
|
2584
|
+
}, c, n)).then((u) => {
|
|
2585
|
+
l.cache.put(g, u), l._checkSize(), this._meshReceived(l.cache, l.register, g, i, s, r, a);
|
|
2586
|
+
}).catch((u) => {
|
|
2587
2587
|
}).finally(() => {
|
|
2588
2588
|
ae--;
|
|
2589
2589
|
});
|
|
2590
2590
|
} : t.includes(".glb") || t.includes(".gltf") ? f = d ? () => {
|
|
2591
|
-
var
|
|
2592
|
-
|
|
2593
|
-
if (!
|
|
2594
|
-
return
|
|
2595
|
-
}).then((
|
|
2596
|
-
l.cache.put(g,
|
|
2597
|
-
}).catch((
|
|
2591
|
+
var I;
|
|
2592
|
+
I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
|
|
2593
|
+
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2594
|
+
return u.arrayBuffer();
|
|
2595
|
+
}).then((u) => this.splatsDecoder.parseSplats(u, c, n, d)).then((u) => {
|
|
2596
|
+
l.cache.put(g, u), l._checkSize(), l._meshReceived(l.cache, l.register, g, i, s, r, a);
|
|
2597
|
+
}).catch((u) => {
|
|
2598
2598
|
}).finally(() => {
|
|
2599
2599
|
ae--;
|
|
2600
2600
|
});
|
|
2601
2601
|
} : () => {
|
|
2602
|
-
var
|
|
2603
|
-
|
|
2604
|
-
if (!
|
|
2605
|
-
return
|
|
2606
|
-
}).then(async (
|
|
2602
|
+
var I;
|
|
2603
|
+
I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
|
|
2604
|
+
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2605
|
+
return u.arrayBuffer();
|
|
2606
|
+
}).then(async (u) => {
|
|
2607
2607
|
await async function(p) {
|
|
2608
2608
|
return new Promise((B) => {
|
|
2609
2609
|
const C = setInterval(() => {
|
|
2610
2610
|
p.hasDracoLoader && !p.dracoLoader || p.hasKTX2Loader && !p.ktx2Loader || (clearInterval(C), B());
|
|
2611
2611
|
}, 10);
|
|
2612
2612
|
});
|
|
2613
|
-
}(this.gltfLoader), this.gltfLoader.parse(
|
|
2613
|
+
}(this.gltfLoader), this.gltfLoader.parse(u, null, (p) => {
|
|
2614
2614
|
p.scene.asset = p.asset, c && p.scene.applyMatrix4(this.zUpToYUpMatrix), p.scene.traverse((B) => {
|
|
2615
2615
|
B.isMesh && (n && B.applyMatrix4(this.zUpToYUpMatrix), l.meshCallback && l.meshCallback(B, b)), B.isPoints && l.pointsCallback && l.pointsCallback(B, b);
|
|
2616
2616
|
}), l.cache.put(g, p.scene), l._checkSize(), l._meshReceived(l.cache, l.register, g, i, s, r, a);
|
|
2617
2617
|
});
|
|
2618
|
-
}).catch((
|
|
2619
|
-
|
|
2618
|
+
}).catch((u) => {
|
|
2619
|
+
u !== "user abort" && u.code;
|
|
2620
2620
|
}).finally(() => {
|
|
2621
2621
|
ae--;
|
|
2622
2622
|
});
|
|
2623
2623
|
} : t.includes(".json") && (f = () => {
|
|
2624
|
-
var
|
|
2625
|
-
|
|
2626
|
-
if (!
|
|
2627
|
-
return
|
|
2628
|
-
}).then((
|
|
2629
|
-
l.cache.put(g,
|
|
2630
|
-
}).catch((
|
|
2624
|
+
var I;
|
|
2625
|
+
I = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: h.signal }) : () => fetch(t, { signal: h.signal }), ae++, I().then((u) => {
|
|
2626
|
+
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2627
|
+
return u.json();
|
|
2628
|
+
}).then((u) => La(u, t)).then((u) => {
|
|
2629
|
+
l.cache.put(g, u), l._checkSize(), l._meshReceived(l.cache, l.register, g);
|
|
2630
|
+
}).catch((u) => {
|
|
2631
2631
|
}).finally(() => {
|
|
2632
2632
|
ae--;
|
|
2633
2633
|
});
|
|
@@ -2697,7 +2697,7 @@ function dt(o, e) {
|
|
|
2697
2697
|
}
|
|
2698
2698
|
return t;
|
|
2699
2699
|
}
|
|
2700
|
-
var
|
|
2700
|
+
var De = { resolve: function() {
|
|
2701
2701
|
for (var o, e = "", a = !1, t = arguments.length - 1; t >= -1 && !a; t--) {
|
|
2702
2702
|
var A;
|
|
2703
2703
|
t >= 0 ? A = arguments[t] : (o === void 0 && (o = process.cwd()), A = o), Y(A), A.length !== 0 && (e = A + "/" + e, a = A.charCodeAt(0) === 47);
|
|
@@ -2715,9 +2715,9 @@ var ke = { resolve: function() {
|
|
|
2715
2715
|
var a = arguments[e];
|
|
2716
2716
|
Y(a), a.length > 0 && (o === void 0 ? o = a : o += "/" + a);
|
|
2717
2717
|
}
|
|
2718
|
-
return o === void 0 ? "." :
|
|
2718
|
+
return o === void 0 ? "." : De.normalize(o);
|
|
2719
2719
|
}, relative: function(o, e) {
|
|
2720
|
-
if (Y(o), Y(e), o === e || (o =
|
|
2720
|
+
if (Y(o), Y(e), o === e || (o = De.resolve(o)) === (e = De.resolve(e))) return "";
|
|
2721
2721
|
for (var a = 1; a < o.length && o.charCodeAt(a) === 47; ++a) ;
|
|
2722
2722
|
for (var t = o.length, A = t - a, i = 1; i < e.length && e.charCodeAt(i) === 47; ++i) ;
|
|
2723
2723
|
for (var s = e.length - i, r = A < s ? A : s, c = -1, n = 0; n <= r; ++n) {
|
|
@@ -2801,9 +2801,9 @@ var ke = { resolve: function() {
|
|
|
2801
2801
|
}
|
|
2802
2802
|
return i === -1 || r === -1 || b === 0 || b === 1 && i === r - 1 && i === s + 1 ? r !== -1 && (e.base = e.name = s === 0 && A ? o.slice(1, r) : o.slice(s, r)) : (s === 0 && A ? (e.name = o.slice(1, i), e.base = o.slice(1, r)) : (e.name = o.slice(s, i), e.base = o.slice(s, r)), e.ext = o.slice(i, r)), s > 0 ? e.dir = o.slice(0, s - 1) : A && (e.dir = "/"), e;
|
|
2803
2803
|
}, sep: "/", delimiter: ":", win32: null, posix: null };
|
|
2804
|
-
|
|
2805
|
-
var bt, be =
|
|
2806
|
-
class
|
|
2804
|
+
De.posix = De;
|
|
2805
|
+
var bt, be = De;
|
|
2806
|
+
class Pi {
|
|
2807
2807
|
constructor(e) {
|
|
2808
2808
|
ge(this, "_toElementFn");
|
|
2809
2809
|
if (e) {
|
|
@@ -2861,7 +2861,7 @@ class _i {
|
|
|
2861
2861
|
* @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
|
|
2862
2862
|
* @license MIT License
|
|
2863
2863
|
*/
|
|
2864
|
-
class pe extends
|
|
2864
|
+
class pe extends Pi {
|
|
2865
2865
|
constructor(a = [], t) {
|
|
2866
2866
|
super(t);
|
|
2867
2867
|
ge(this, "_elements", []);
|
|
@@ -2983,67 +2983,208 @@ class pe extends _i {
|
|
|
2983
2983
|
(function(o) {
|
|
2984
2984
|
o[o.VISIT = 0] = "VISIT", o[o.PROCESS = 1] = "PROCESS";
|
|
2985
2985
|
})(bt || (bt = {}));
|
|
2986
|
-
class
|
|
2986
|
+
class _e extends pe {
|
|
2987
2987
|
constructor(e = [], a) {
|
|
2988
2988
|
super(e, a);
|
|
2989
2989
|
}
|
|
2990
2990
|
clone() {
|
|
2991
|
-
return new
|
|
2991
|
+
return new _e(this, { comparator: this.comparator, toElementFn: this.toElementFn });
|
|
2992
2992
|
}
|
|
2993
2993
|
filter(e, a) {
|
|
2994
|
-
const t = new
|
|
2994
|
+
const t = new _e([], { toElementFn: this.toElementFn, comparator: this.comparator });
|
|
2995
2995
|
let A = 0;
|
|
2996
2996
|
for (const i of this) e.call(a, i, A, this) && t.add(i), A++;
|
|
2997
2997
|
return t;
|
|
2998
2998
|
}
|
|
2999
2999
|
map(e, a, t, A) {
|
|
3000
|
-
const i = new
|
|
3000
|
+
const i = new _e([], { comparator: a, toElementFn: t });
|
|
3001
3001
|
let s = 0;
|
|
3002
3002
|
for (const r of this) i.add(e.call(A, r, s, this)), s++;
|
|
3003
3003
|
return i;
|
|
3004
3004
|
}
|
|
3005
3005
|
}
|
|
3006
|
-
class
|
|
3006
|
+
class He extends _e {
|
|
3007
3007
|
constructor(e = [], a) {
|
|
3008
3008
|
super(e, a);
|
|
3009
3009
|
}
|
|
3010
3010
|
clone() {
|
|
3011
|
-
return new
|
|
3011
|
+
return new He(this, { comparator: this.comparator, toElementFn: this.toElementFn });
|
|
3012
3012
|
}
|
|
3013
3013
|
filter(e, a) {
|
|
3014
|
-
const t = new
|
|
3014
|
+
const t = new He([], { toElementFn: this.toElementFn, comparator: this.comparator });
|
|
3015
3015
|
let A = 0;
|
|
3016
3016
|
for (const i of this) e.call(a, i, A, this) && t.add(i), A++;
|
|
3017
3017
|
return t;
|
|
3018
3018
|
}
|
|
3019
3019
|
map(e, a, t, A) {
|
|
3020
|
-
const i = new
|
|
3020
|
+
const i = new He([], { comparator: a, toElementFn: t });
|
|
3021
3021
|
let s = 0;
|
|
3022
3022
|
for (const r of this) i.add(e.call(A, r, s, this)), s++;
|
|
3023
3023
|
return i;
|
|
3024
3024
|
}
|
|
3025
3025
|
}
|
|
3026
|
-
|
|
3027
|
-
|
|
3026
|
+
function _i(o) {
|
|
3027
|
+
return new Worker("" + new URL("assets/PointsManager.worker-5fpGpVvf.js", import.meta.url).href, { type: "module", name: o == null ? void 0 : o.name });
|
|
3028
|
+
}
|
|
3029
|
+
new Sa(), new S(), new S(), new S(), new S();
|
|
3030
|
+
const Ve = new S(), Hi = new S(), zt = new Ra();
|
|
3028
3031
|
zt.set(1, 0, 0, 0, 0, 1, 0, -1, 0);
|
|
3029
|
-
class qi extends
|
|
3032
|
+
class qi extends xa {
|
|
3030
3033
|
constructor(e, a) {
|
|
3031
3034
|
const A = Math.min(Math.ceil(8) * 512, Math.pow(512, 2));
|
|
3032
3035
|
let i = 1 * Math.pow(512, 2);
|
|
3033
3036
|
i = Math.floor(i / A) * A;
|
|
3034
3037
|
const s = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3035
3038
|
e.initRenderTarget(s);
|
|
3036
|
-
const r = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type:
|
|
3037
|
-
r.texture.type =
|
|
3038
|
-
const c = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type:
|
|
3039
|
-
c.texture.type =
|
|
3040
|
-
const n = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type:
|
|
3041
|
-
n.texture.type =
|
|
3042
|
-
const b = new
|
|
3039
|
+
const r = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3040
|
+
r.texture.type = v, e.initRenderTarget(r);
|
|
3041
|
+
const c = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3042
|
+
c.texture.type = v, e.initRenderTarget(c);
|
|
3043
|
+
const n = new ne(512, 512, 1, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3044
|
+
n.texture.type = v, e.initRenderTarget(n);
|
|
3045
|
+
const b = new Aa({ uniforms: { textureSize: { value: 512 }, numSlices: { value: 1 }, cov1Texture: { value: c.texture }, cov2Texture: { value: n.texture }, colorTexture: { value: s.texture }, positionTexture: { value: r.texture }, zUpToYUpMatrix3x3: { value: zt }, sizeMultiplier: { value: 1 }, cropRadius: { value: Number.MAX_VALUE }, cameraNear: { value: 0.01 }, cameraFar: { value: 10 }, computeLinearDepth: { value: !0 } }, vertexShader: Oi(), fragmentShader: a || Ji(), transparent: !0, side: Ze, depthTest: !1, depthWrite: !1 }), d = new Ja(), l = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]);
|
|
3046
|
+
d.setIndex([0, 2, 1, 2, 3, 1]), d.setAttribute("position", new le(l, 3));
|
|
3047
|
+
const g = new Uint32Array(i), h = new ya(g, 1, !1);
|
|
3048
|
+
h.needsUpdate = !0, h.setUsage(Ka), d.setAttribute("order", h), d.instanceCount = 0, super(d, b), this.orderAttribute = h, this.textureSize = 512, this.numTextures = 1, this.batchSize = A, this.maxSplats = i, this.colorRenderTarget = s, this.positionRenderTarget = r, this.cov1RenderTarget = c, this.cov2RenderTarget = n, this.renderer = e, this.sortID = 0, this.freeAddresses = new He();
|
|
3049
|
+
for (let u = 0; u < this.maxSplats; u += A) this.freeAddresses.add(u);
|
|
3050
|
+
this.worker = new _i({ type: "module" }), this.sortListeners = [], this.worker.onmessage = (u) => {
|
|
3051
|
+
const p = new Uint32Array(u.data.order);
|
|
3052
|
+
if (p.length > this.orderAttribute.count) {
|
|
3053
|
+
const B = new Ja(), C = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]), w = [0, 2, 1, 2, 3, 1];
|
|
3054
|
+
B.setIndex(w), B.setAttribute("position", new le(C, 3));
|
|
3055
|
+
const x = new Uint32Array(this.maxSplats), y = new ya(x, 1, !1);
|
|
3056
|
+
y.needsUpdate = !0, y.setUsage(Ka), B.setAttribute("order", y), B.instanceCount = 0, this.geometry.dispose(), this.geometry = B, this.orderAttribute = y;
|
|
3057
|
+
}
|
|
3058
|
+
this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(p), this.orderAttribute.addUpdateRange(0, p.length), this.orderAttribute.needsUpdate = !0, this.geometry.instanceCount = u.data.count, this.geometry.needsUpdate = !0;
|
|
3059
|
+
for (let B = this.sortListeners.length - 1; B >= 0; B--)
|
|
3060
|
+
this.sortListeners[B](u.data.id) && this.sortListeners.splice(B, 1);
|
|
3061
|
+
}, this.cameraPosition = new S(0, 0, 0), this.rotateOnAxis(new S(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new Aa({ uniforms: { sourceTexture: {} }, vertexShader: lt(), fragmentShader: `
|
|
3062
|
+
precision highp float;
|
|
3063
|
+
|
|
3064
|
+
uniform sampler2D sourceTexture;
|
|
3065
|
+
|
|
3066
|
+
in vec2 vUv;
|
|
3067
|
+
|
|
3068
|
+
void main() {
|
|
3069
|
+
gl_FragColor = texture( sourceTexture, vUv );
|
|
3070
|
+
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyMaterial3D = new Aa({ uniforms: { sourceTexture: {}, w: { value: 0 } }, vertexShader: lt(), fragmentShader: `
|
|
3071
|
+
precision highp float;
|
|
3072
|
+
|
|
3073
|
+
uniform sampler3D sourceTexture;
|
|
3074
|
+
uniform float w;
|
|
3075
|
+
|
|
3076
|
+
in vec2 vUv;
|
|
3077
|
+
|
|
3078
|
+
void main() {
|
|
3079
|
+
gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
3080
|
+
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyCamera = new mt(-0.5, 0.5, 0.5, -0.5, 0.1, 10), this.copyCamera.position.z = 1, this.copyScene = new qA();
|
|
3081
|
+
const f = new OA(1, 1);
|
|
3082
|
+
this.copyQuad = new xa(f, this.copyMaterial2D), this.copyScene.add(this.copyQuad), this.copyScene.matrixAutoUpdate = !1, this.copyQuad.matrixAutoUpdate = !1;
|
|
3083
|
+
const I = this;
|
|
3084
|
+
document.addEventListener("keyup", function(u) {
|
|
3085
|
+
u.key === "a" && (I.growTextures(), console.log(I.positionRenderTarget.depth));
|
|
3086
|
+
});
|
|
3087
|
+
}
|
|
3088
|
+
dispose() {
|
|
3089
|
+
this.material.dispose(), this.copyMaterial2D.dispose(), this.copyMaterial3D.dispose(), this.cov1RenderTarget.dispose(), this.cov2RenderTarget.dispose(), this.positionRenderTarget.dispose(), this.colorRenderTarget.dispose(), this.worker.terminate(), this.worker = null, this.geometry.dispose();
|
|
3090
|
+
}
|
|
3091
|
+
copyTex2D(e, a, t, A) {
|
|
3092
|
+
this.copyMaterial2D.uniforms.sourceTexture.value = e;
|
|
3093
|
+
const i = this.renderer.autoClear, s = this.renderer.getRenderTarget();
|
|
3094
|
+
this.renderer.autoClear = !1;
|
|
3095
|
+
const r = t[2] - t[0], c = t[3] - t[1];
|
|
3096
|
+
a.viewport.set(t[0], t[1], r, c), this.renderer.setRenderTarget(a, A), this.renderer.render(this.copyScene, this.copyCamera), this.renderer.setRenderTarget(s), this.renderer.autoClear = i;
|
|
3097
|
+
}
|
|
3098
|
+
copyTex3D(e, a, t) {
|
|
3099
|
+
this.copyMaterial3D.uniforms.sourceTexture.value = e;
|
|
3100
|
+
const A = this.renderer.autoClear, i = this.renderer.getRenderTarget();
|
|
3101
|
+
this.renderer.autoClear = !1, this.copyQuad.material = this.copyMaterial3D;
|
|
3102
|
+
for (let s = 0; s < t; s++) this.renderer.setRenderTarget(a, s), this.copyMaterial3D.uniforms.w.value = (s + 0.5) / t, this.renderer.render(this.copyScene, this.copyCamera);
|
|
3103
|
+
this.copyQuad.material = this.copyMaterial2D, this.renderer.setRenderTarget(i), this.renderer.autoClear = A;
|
|
3104
|
+
}
|
|
3105
|
+
setSplatsSizeMultiplier(e) {
|
|
3106
|
+
this.material.uniforms.sizeMultiplier.value = e;
|
|
3107
|
+
}
|
|
3108
|
+
setSplatsCropRadius(e) {
|
|
3109
|
+
this.material.uniforms.cropRadius.value = e;
|
|
3110
|
+
}
|
|
3111
|
+
sort(e) {
|
|
3112
|
+
!e && this.cameraPosition ? this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }) : this.cameraPosition && e.equals(this.cameraPosition) || (this.cameraPosition.copy(e), this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }));
|
|
3113
|
+
}
|
|
3114
|
+
raycast(e, a) {
|
|
3115
|
+
}
|
|
3116
|
+
addSplatsTile(e, a, t, A) {
|
|
3117
|
+
const i = this;
|
|
3118
|
+
e.count;
|
|
3119
|
+
const s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, c = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)), b = [], d = [];
|
|
3120
|
+
let l = () => {
|
|
3121
|
+
};
|
|
3122
|
+
const g = new Float32Array(s.length / r * 3);
|
|
3123
|
+
for (let f = 0; f < s.length / 3; f++) g[3 * f] = s[f * r + c], g[3 * f + 1] = s[f * r + c + 1], g[3 * f + 2] = s[f * r + c + 2];
|
|
3124
|
+
l = (f, I, u) => {
|
|
3125
|
+
const p = u * u;
|
|
3126
|
+
for (let B = 0; B < g.length; B += 3) {
|
|
3127
|
+
Ve.set(g[B], -g[B + 2], g[B + 1]);
|
|
3128
|
+
const C = Hi.copy(Ve).sub(f.origin).dot(f.direction);
|
|
3129
|
+
C > 0 && f.distanceSqToPoint(Ve) < p && I.push({ distance: C, point: Ve.clone(), type: "splat" });
|
|
3130
|
+
}
|
|
3131
|
+
}, n > this.freeAddresses.size && this.growTextures();
|
|
3132
|
+
for (let f = 0; f < n; f++) {
|
|
3133
|
+
const I = this.freeAddresses.poll();
|
|
3134
|
+
isNaN(I) && console.log("insuficient texture size to store splats info"), b.push(I), d.push(3 * I);
|
|
3135
|
+
const u = f * this.batchSize;
|
|
3136
|
+
this.addSplatsBatch(u, I, e, a, t, A);
|
|
3137
|
+
}
|
|
3138
|
+
i.worker.postMessage({ method: "addBatches", insertionIndexes: d, positions: s.buffer, offset: c, stride: r, batchSize: i.batchSize }, [s.buffer]);
|
|
3139
|
+
let h = !1;
|
|
3140
|
+
return { hide: () => {
|
|
3141
|
+
h == 1 && (h = !1, i.worker.postMessage({ method: "hideBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }));
|
|
3142
|
+
}, show: (f) => {
|
|
3143
|
+
h == 0 && (h = !0);
|
|
3144
|
+
const I = i.sortID;
|
|
3145
|
+
i.sortListeners.push((u) => u >= I && (f(), !0)), i.worker.postMessage({ method: "showBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ });
|
|
3146
|
+
}, remove: () => {
|
|
3147
|
+
l = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }), b.forEach((f) => i.freeAddresses.add(f));
|
|
3148
|
+
}, sort: this.sort, raycast: l, isSplatsBatch: !0 };
|
|
3149
|
+
}
|
|
3150
|
+
addSplatsBatch(e, a, t, A, i, s) {
|
|
3151
|
+
const r = new Float32Array(4 * this.batchSize), c = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize), b = new Float32Array(4 * this.batchSize);
|
|
3152
|
+
for (let p = a; p < a + this.batchSize; p++) {
|
|
3153
|
+
const B = p - a, C = 4 * B, w = e + B;
|
|
3154
|
+
if (w >= t.count) break;
|
|
3155
|
+
r[C] = t.getX(w), r[C + 1] = t.getY(w), r[C + 2] = t.getZ(w), Math.floor(255 * A.getX(w)), Math.floor(255 * A.getY(w)), Math.floor(255 * A.getZ(w)), Math.floor(255 * A.getW(w)), c[C] = Math.floor(255 * A.getX(w)), c[C + 1] = Math.floor(255 * A.getY(w)), c[C + 2] = Math.floor(255 * A.getZ(w)), c[C + 3] = Math.floor(255 * A.getW(w)), n[C] = i.getX(w), n[C + 1] = i.getY(w), n[C + 2] = i.getZ(w), b[C] = s.getX(w), b[C + 1] = s.getY(w), b[C + 2] = s.getZ(w);
|
|
3156
|
+
}
|
|
3157
|
+
const d = Math.floor(a / Math.pow(this.textureSize, 2)), l = Math.ceil(this.batchSize / this.textureSize), g = [0, a / this.textureSize - d * this.textureSize, this.textureSize];
|
|
3158
|
+
g.push(g[1] + l);
|
|
3159
|
+
const h = new Ge(r, this.textureSize, l, $, v);
|
|
3160
|
+
h.generateMipmaps = !1, h.magFilter = M, h.minFilter = M, h.anisotropy = 0, h.needsUpdate = !0, this.renderer.initTexture(h), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(h, this.positionRenderTarget, g, d), h.dispose();
|
|
3161
|
+
const f = new Ge(c, this.textureSize, l, $, X);
|
|
3162
|
+
f.generateMipmaps = !1, f.magFilter = M, f.minFilter = M, f.anisotropy = 0, f.needsUpdate = !0, this.renderer.initTexture(f), this.copyTex2D(f, this.colorRenderTarget, g, d), f.dispose();
|
|
3163
|
+
const I = new Ge(n, this.textureSize, l, $, v);
|
|
3164
|
+
I.generateMipmaps = !1, I.magFilter = M, I.minFilter = M, I.anisotropy = 0, I.needsUpdate = !0, this.renderer.initTexture(I), this.copyTex2D(I, this.cov1RenderTarget, g, d), I.dispose();
|
|
3165
|
+
const u = new Ge(b, this.textureSize, l, $, v);
|
|
3166
|
+
u.generateMipmaps = !1, u.magFilter = M, u.minFilter = M, u.anisotropy = 0, u.needsUpdate = !0, this.renderer.initTexture(u), this.copyTex2D(u, this.cov2RenderTarget, g, d), u.dispose();
|
|
3167
|
+
}
|
|
3168
|
+
growTextures() {
|
|
3169
|
+
for (let s = this.maxSplats; s < this.maxSplats + this.textureSize * this.textureSize; s += this.batchSize) this.freeAddresses.add(s);
|
|
3170
|
+
this.maxSplats += this.textureSize * this.textureSize;
|
|
3171
|
+
const e = this.numTextures + 1, a = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3172
|
+
this.renderer.initRenderTarget(a), this.copyTex3D(this.colorRenderTarget.texture, a, this.numTextures), this.colorRenderTarget.dispose(), this.colorRenderTarget = a, this.material.uniforms.colorTexture.value = this.colorRenderTarget.texture;
|
|
3173
|
+
const t = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3174
|
+
t.texture.type = v, this.renderer.initRenderTarget(t), this.copyTex3D(this.positionRenderTarget.texture, t, this.numTextures), this.positionRenderTarget.dispose(), this.positionRenderTarget = t, this.material.uniforms.positionTexture.value = this.positionRenderTarget.texture;
|
|
3175
|
+
const A = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3176
|
+
A.texture.type = v, this.renderer.initRenderTarget(A), this.copyTex3D(this.cov1RenderTarget.texture, A, this.numTextures), this.cov1RenderTarget.dispose(), this.cov1RenderTarget = A, this.material.uniforms.cov1Texture.value = this.cov1RenderTarget.texture;
|
|
3177
|
+
const i = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: v, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3178
|
+
i.texture.type = v, this.renderer.initRenderTarget(i), this.copyTex3D(this.cov2RenderTarget.texture, i, this.numTextures), this.cov2RenderTarget.dispose(), this.cov2RenderTarget = i, this.material.uniforms.cov2Texture.value = this.cov2RenderTarget.texture, this.numTextures = e, this.material.uniforms.numSlices.value = this.numTextures;
|
|
3179
|
+
}
|
|
3180
|
+
}
|
|
3181
|
+
function Oi() {
|
|
3182
|
+
return `
|
|
3043
3183
|
precision highp float;
|
|
3044
3184
|
precision highp int;
|
|
3045
3185
|
|
|
3046
3186
|
#include <common>
|
|
3187
|
+
#include <packing>
|
|
3047
3188
|
|
|
3048
3189
|
uniform float textureSize;
|
|
3049
3190
|
uniform float numSlices;
|
|
@@ -3053,6 +3194,7 @@ out vec4 color;
|
|
|
3053
3194
|
out vec2 vUv;
|
|
3054
3195
|
out vec3 splatPositionWorld;
|
|
3055
3196
|
out float splatDepth;
|
|
3197
|
+
//out float orthographicDepth;
|
|
3056
3198
|
out float splatCrop;
|
|
3057
3199
|
uniform sampler3D colorTexture;
|
|
3058
3200
|
uniform sampler3D positionTexture;
|
|
@@ -3060,6 +3202,9 @@ uniform sampler3D cov1Texture;
|
|
|
3060
3202
|
uniform sampler3D cov2Texture;
|
|
3061
3203
|
uniform mat3 zUpToYUpMatrix3x3;
|
|
3062
3204
|
uniform float logDepthBufFC;
|
|
3205
|
+
//uniform float cameraNear;
|
|
3206
|
+
//uniform float cameraFar;
|
|
3207
|
+
//uniform bool computeLinearDepth;
|
|
3063
3208
|
|
|
3064
3209
|
|
|
3065
3210
|
void getVertexData(out vec3 position, out mat3 covariance) {
|
|
@@ -3175,25 +3320,32 @@ void main() {
|
|
|
3175
3320
|
vec3 outPosition = vec3(position)*sizeMultiplier;
|
|
3176
3321
|
modelTransform(splatPositionWorld, covariance, outPosition);
|
|
3177
3322
|
|
|
3178
|
-
|
|
3179
3323
|
gl_Position = projectionMatrix * viewMatrix * vec4(outPosition, 1.0);
|
|
3324
|
+
/* if(computeLinearDepth){
|
|
3325
|
+
orthographicDepth = viewZToOrthographicDepth( -gl_Position.w, cameraNear, cameraFar );
|
|
3326
|
+
} */
|
|
3180
3327
|
|
|
3181
|
-
|
|
3182
|
-
|
|
3328
|
+
vec4 centerP = projectionMatrix * viewMatrix * vec4(splatPositionWorld, 1.0);
|
|
3329
|
+
#if defined( USE_LOGDEPTHBUF )
|
|
3183
3330
|
float isPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
|
|
3184
|
-
splatDepth = isPerspective == 0.0 ?
|
|
3331
|
+
splatDepth = isPerspective == 0.0 ? centerP.z : log2( 1.0 + centerP.w ) * logDepthBufFC * 0.5;
|
|
3185
3332
|
#else
|
|
3186
|
-
splatDepth = (
|
|
3333
|
+
splatDepth = (centerP.z / centerP.w)* 0.5 + 0.5;
|
|
3187
3334
|
#endif
|
|
3335
|
+
|
|
3188
3336
|
|
|
3189
3337
|
}
|
|
3190
|
-
|
|
3338
|
+
`;
|
|
3339
|
+
}
|
|
3340
|
+
function Ji() {
|
|
3341
|
+
return `
|
|
3191
3342
|
precision highp float;
|
|
3192
3343
|
|
|
3193
3344
|
in vec4 color;
|
|
3194
3345
|
in vec2 vUv;
|
|
3195
3346
|
in vec3 splatPositionWorld;
|
|
3196
3347
|
in float splatDepth;
|
|
3348
|
+
//in float orthographicDepth;
|
|
3197
3349
|
in float splatCrop;
|
|
3198
3350
|
uniform float textureSize;
|
|
3199
3351
|
uniform float cropRadius;
|
|
@@ -3203,150 +3355,17 @@ void main() {
|
|
|
3203
3355
|
float l = length(vUv);
|
|
3204
3356
|
|
|
3205
3357
|
// Early discard for pixels outside the radius
|
|
3206
|
-
if (l >
|
|
3358
|
+
if (l > 0.5) {
|
|
3207
3359
|
discard;
|
|
3208
3360
|
};
|
|
3209
3361
|
vec2 p = vUv * 4.0;
|
|
3210
3362
|
float alpha = exp(-dot(p, p));
|
|
3211
3363
|
|
|
3212
3364
|
gl_FragColor = vec4(pow(color.xyz,vec3(1.0/2.2)), color.w * pow(alpha, 1.8));
|
|
3213
|
-
gl_FragColor = vec4(splatDepth,
|
|
3365
|
+
//gl_FragColor = vec4(splatDepth,0.0,0.0,1.0);
|
|
3366
|
+
//gl_FragDepth = splatDepth;
|
|
3214
3367
|
|
|
3215
|
-
}
|
|
3216
|
-
d.setIndex([0, 2, 1, 2, 3, 1]), d.setAttribute("position", new le(l, 3));
|
|
3217
|
-
const g = new Uint32Array(i), h = new Qa(g, 1, !1);
|
|
3218
|
-
h.needsUpdate = !0, h.setUsage(Ka), d.setAttribute("order", h), d.instanceCount = 0, super(d, b), this.orderAttribute = h, this.textureSize = 512, this.numTextures = 1, this.batchSize = A, this.maxSplats = i, this.colorRenderTarget = s, this.positionRenderTarget = r, this.cov1RenderTarget = c, this.cov2RenderTarget = n, this.renderer = e, this.sortID = 0, this.freeAddresses = new _e();
|
|
3219
|
-
for (let I = 0; I < this.maxSplats; I += A) this.freeAddresses.add(I);
|
|
3220
|
-
this.worker = new Worker(new URL("" + new URL("assets/PointsManager.worker-5fpGpVvf.js", import.meta.url).href, import.meta.url), { type: "module" }), this.sortListeners = [], this.worker.onmessage = (I) => {
|
|
3221
|
-
const p = new Uint32Array(I.data.order);
|
|
3222
|
-
if (p.length > this.orderAttribute.count) {
|
|
3223
|
-
const B = new Ja(), C = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]), w = [0, 2, 1, 2, 3, 1];
|
|
3224
|
-
B.setIndex(w), B.setAttribute("position", new le(C, 3));
|
|
3225
|
-
const x = new Uint32Array(this.maxSplats), y = new Qa(x, 1, !1);
|
|
3226
|
-
y.needsUpdate = !0, y.setUsage(Ka), B.setAttribute("order", y), B.instanceCount = 0, this.geometry.dispose(), this.geometry = B, this.orderAttribute = y;
|
|
3227
|
-
}
|
|
3228
|
-
this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(p), this.orderAttribute.addUpdateRange(0, p.length), this.orderAttribute.needsUpdate = !0, this.geometry.instanceCount = I.data.count, this.geometry.needsUpdate = !0;
|
|
3229
|
-
for (let B = this.sortListeners.length - 1; B >= 0; B--)
|
|
3230
|
-
this.sortListeners[B](I.data.id) && this.sortListeners.splice(B, 1);
|
|
3231
|
-
}, this.cameraPosition = new S(0, 0, 0), this.rotateOnAxis(new S(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new ta({ uniforms: { sourceTexture: {} }, vertexShader: lt(), fragmentShader: `
|
|
3232
|
-
precision highp float;
|
|
3233
|
-
|
|
3234
|
-
uniform sampler2D sourceTexture;
|
|
3235
|
-
|
|
3236
|
-
in vec2 vUv;
|
|
3237
|
-
|
|
3238
|
-
void main() {
|
|
3239
|
-
gl_FragColor = texture( sourceTexture, vUv );
|
|
3240
|
-
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyMaterial3D = new ta({ uniforms: { sourceTexture: {}, w: { value: 0 } }, vertexShader: lt(), fragmentShader: `
|
|
3241
|
-
precision highp float;
|
|
3242
|
-
|
|
3243
|
-
uniform sampler3D sourceTexture;
|
|
3244
|
-
uniform float w;
|
|
3245
|
-
|
|
3246
|
-
in vec2 vUv;
|
|
3247
|
-
|
|
3248
|
-
void main() {
|
|
3249
|
-
gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
3250
|
-
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyCamera = new Et(-0.5, 0.5, 0.5, -0.5, 0.1, 10), this.copyCamera.position.z = 1, this.copyScene = new OA();
|
|
3251
|
-
const f = new JA(1, 1);
|
|
3252
|
-
this.copyQuad = new wa(f, this.copyMaterial2D), this.copyScene.add(this.copyQuad), this.copyScene.matrixAutoUpdate = !1, this.copyQuad.matrixAutoUpdate = !1;
|
|
3253
|
-
const u = this;
|
|
3254
|
-
document.addEventListener("keyup", function(I) {
|
|
3255
|
-
I.key === "a" && (u.growTextures(), console.log(u.positionRenderTarget.depth));
|
|
3256
|
-
});
|
|
3257
|
-
}
|
|
3258
|
-
dispose() {
|
|
3259
|
-
this.material.dispose(), this.copyMaterial2D.dispose(), this.copyMaterial3D.dispose(), this.cov1RenderTarget.dispose(), this.cov2RenderTarget.dispose(), this.positionRenderTarget.dispose(), this.colorRenderTarget.dispose(), this.worker.terminate(), this.worker = null, this.geometry.dispose();
|
|
3260
|
-
}
|
|
3261
|
-
copyTex2D(e, a, t, A) {
|
|
3262
|
-
this.copyMaterial2D.uniforms.sourceTexture.value = e;
|
|
3263
|
-
const i = this.renderer.autoClear, s = this.renderer.getRenderTarget();
|
|
3264
|
-
this.renderer.autoClear = !1;
|
|
3265
|
-
const r = t[2] - t[0], c = t[3] - t[1];
|
|
3266
|
-
a.viewport.set(t[0], t[1], r, c), this.renderer.setRenderTarget(a, A), this.renderer.render(this.copyScene, this.copyCamera), this.renderer.setRenderTarget(s), this.renderer.autoClear = i;
|
|
3267
|
-
}
|
|
3268
|
-
copyTex3D(e, a, t) {
|
|
3269
|
-
this.copyMaterial3D.uniforms.sourceTexture.value = e;
|
|
3270
|
-
const A = this.renderer.autoClear, i = this.renderer.getRenderTarget();
|
|
3271
|
-
this.renderer.autoClear = !1, this.copyQuad.material = this.copyMaterial3D;
|
|
3272
|
-
for (let s = 0; s < t; s++) this.renderer.setRenderTarget(a, s), this.copyMaterial3D.uniforms.w.value = (s + 0.5) / t, this.renderer.render(this.copyScene, this.copyCamera);
|
|
3273
|
-
this.copyQuad.material = this.copyMaterial2D, this.renderer.setRenderTarget(i), this.renderer.autoClear = A;
|
|
3274
|
-
}
|
|
3275
|
-
setSplatsSizeMultiplier(e) {
|
|
3276
|
-
this.material.uniforms.sizeMultiplier.value = e;
|
|
3277
|
-
}
|
|
3278
|
-
setSplatsCropRadius(e) {
|
|
3279
|
-
this.material.uniforms.cropRadius.value = e;
|
|
3280
|
-
}
|
|
3281
|
-
sort(e) {
|
|
3282
|
-
!e && this.cameraPosition ? this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }) : this.cameraPosition && e.equals(this.cameraPosition) || (this.cameraPosition.copy(e), this.worker.postMessage({ method: "sort", xyz: [this.cameraPosition.x, this.cameraPosition.z, -this.cameraPosition.y], id: this.sortID++ }));
|
|
3283
|
-
}
|
|
3284
|
-
raycast(e, a) {
|
|
3285
|
-
}
|
|
3286
|
-
addSplatsTile(e, a, t, A) {
|
|
3287
|
-
const i = this;
|
|
3288
|
-
e.count;
|
|
3289
|
-
const s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, c = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)), b = [], d = [];
|
|
3290
|
-
let l = () => {
|
|
3291
|
-
};
|
|
3292
|
-
const g = new Float32Array(s.length / r * 3);
|
|
3293
|
-
for (let f = 0; f < s.length / 3; f++) g[3 * f] = s[f * r + c], g[3 * f + 1] = s[f * r + c + 1], g[3 * f + 2] = s[f * r + c + 2];
|
|
3294
|
-
l = (f, u, I) => {
|
|
3295
|
-
const p = I * I;
|
|
3296
|
-
for (let B = 0; B < g.length; B += 3) {
|
|
3297
|
-
Ve.set(g[B], -g[B + 2], g[B + 1]);
|
|
3298
|
-
const C = Hi.copy(Ve).sub(f.origin).dot(f.direction);
|
|
3299
|
-
C > 0 && f.distanceSqToPoint(Ve) < p && u.push({ distance: C, point: Ve.clone(), type: "splat" });
|
|
3300
|
-
}
|
|
3301
|
-
}, n > this.freeAddresses.size && this.growTextures();
|
|
3302
|
-
for (let f = 0; f < n; f++) {
|
|
3303
|
-
const u = this.freeAddresses.poll();
|
|
3304
|
-
isNaN(u) && console.log("insuficient texture size to store splats info"), b.push(u), d.push(3 * u);
|
|
3305
|
-
const I = f * this.batchSize;
|
|
3306
|
-
this.addSplatsBatch(I, u, e, a, t, A);
|
|
3307
|
-
}
|
|
3308
|
-
i.worker.postMessage({ method: "addBatches", insertionIndexes: d, positions: s.buffer, offset: c, stride: r, batchSize: i.batchSize }, [s.buffer]);
|
|
3309
|
-
let h = !1;
|
|
3310
|
-
return { hide: () => {
|
|
3311
|
-
h == 1 && (h = !1, i.worker.postMessage({ method: "hideBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }));
|
|
3312
|
-
}, show: (f) => {
|
|
3313
|
-
h == 0 && (h = !0);
|
|
3314
|
-
const u = i.sortID;
|
|
3315
|
-
i.sortListeners.push((I) => I >= u && (f(), !0)), i.worker.postMessage({ method: "showBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ });
|
|
3316
|
-
}, remove: () => {
|
|
3317
|
-
l = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }), b.forEach((f) => i.freeAddresses.add(f));
|
|
3318
|
-
}, sort: this.sort, raycast: l, isSplatsBatch: !0 };
|
|
3319
|
-
}
|
|
3320
|
-
addSplatsBatch(e, a, t, A, i, s) {
|
|
3321
|
-
const r = new Float32Array(4 * this.batchSize), c = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize), b = new Float32Array(4 * this.batchSize);
|
|
3322
|
-
for (let p = a; p < a + this.batchSize; p++) {
|
|
3323
|
-
const B = p - a, C = 4 * B, w = e + B;
|
|
3324
|
-
if (w >= t.count) break;
|
|
3325
|
-
r[C] = t.getX(w), r[C + 1] = t.getY(w), r[C + 2] = t.getZ(w), Math.floor(255 * A.getX(w)), Math.floor(255 * A.getY(w)), Math.floor(255 * A.getZ(w)), Math.floor(255 * A.getW(w)), c[C] = Math.floor(255 * A.getX(w)), c[C + 1] = Math.floor(255 * A.getY(w)), c[C + 2] = Math.floor(255 * A.getZ(w)), c[C + 3] = Math.floor(255 * A.getW(w)), n[C] = i.getX(w), n[C + 1] = i.getY(w), n[C + 2] = i.getZ(w), b[C] = s.getX(w), b[C + 1] = s.getY(w), b[C + 2] = s.getZ(w);
|
|
3326
|
-
}
|
|
3327
|
-
const d = Math.floor(a / Math.pow(this.textureSize, 2)), l = Math.ceil(this.batchSize / this.textureSize), g = [0, a / this.textureSize - d * this.textureSize, this.textureSize];
|
|
3328
|
-
g.push(g[1] + l);
|
|
3329
|
-
const h = new Le(r, this.textureSize, l, $, F);
|
|
3330
|
-
h.generateMipmaps = !1, h.magFilter = M, h.minFilter = M, h.anisotropy = 0, h.needsUpdate = !0, this.renderer.initTexture(h), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(h, this.positionRenderTarget, g, d), h.dispose();
|
|
3331
|
-
const f = new Le(c, this.textureSize, l, $, X);
|
|
3332
|
-
f.generateMipmaps = !1, f.magFilter = M, f.minFilter = M, f.anisotropy = 0, f.needsUpdate = !0, this.renderer.initTexture(f), this.copyTex2D(f, this.colorRenderTarget, g, d), f.dispose();
|
|
3333
|
-
const u = new Le(n, this.textureSize, l, $, F);
|
|
3334
|
-
u.generateMipmaps = !1, u.magFilter = M, u.minFilter = M, u.anisotropy = 0, u.needsUpdate = !0, this.renderer.initTexture(u), this.copyTex2D(u, this.cov1RenderTarget, g, d), u.dispose();
|
|
3335
|
-
const I = new Le(b, this.textureSize, l, $, F);
|
|
3336
|
-
I.generateMipmaps = !1, I.magFilter = M, I.minFilter = M, I.anisotropy = 0, I.needsUpdate = !0, this.renderer.initTexture(I), this.copyTex2D(I, this.cov2RenderTarget, g, d), I.dispose();
|
|
3337
|
-
}
|
|
3338
|
-
growTextures() {
|
|
3339
|
-
for (let s = this.maxSplats; s < this.maxSplats + this.textureSize * this.textureSize; s += this.batchSize) this.freeAddresses.add(s);
|
|
3340
|
-
this.maxSplats += this.textureSize * this.textureSize;
|
|
3341
|
-
const e = this.numTextures + 1, a = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3342
|
-
this.renderer.initRenderTarget(a), this.copyTex3D(this.colorRenderTarget.texture, a, this.numTextures), this.colorRenderTarget.dispose(), this.colorRenderTarget = a, this.material.uniforms.colorTexture.value = this.colorRenderTarget.texture;
|
|
3343
|
-
const t = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3344
|
-
t.texture.type = F, this.renderer.initRenderTarget(t), this.copyTex3D(this.positionRenderTarget.texture, t, this.numTextures), this.positionRenderTarget.dispose(), this.positionRenderTarget = t, this.material.uniforms.positionTexture.value = this.positionRenderTarget.texture;
|
|
3345
|
-
const A = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3346
|
-
A.texture.type = F, this.renderer.initRenderTarget(A), this.copyTex3D(this.cov1RenderTarget.texture, A, this.numTextures), this.cov1RenderTarget.dispose(), this.cov1RenderTarget = A, this.material.uniforms.cov1Texture.value = this.cov1RenderTarget.texture;
|
|
3347
|
-
const i = new ne(this.textureSize, this.textureSize, e, { magFilter: M, minFilter: M, anisotropy: 0, type: F, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3348
|
-
i.texture.type = F, this.renderer.initRenderTarget(i), this.copyTex3D(this.cov2RenderTarget.texture, i, this.numTextures), this.cov2RenderTarget.dispose(), this.cov2RenderTarget = i, this.material.uniforms.cov2Texture.value = this.cov2RenderTarget.texture, this.numTextures = e, this.material.uniforms.numSlices.value = this.numTextures;
|
|
3349
|
-
}
|
|
3368
|
+
}`;
|
|
3350
3369
|
}
|
|
3351
3370
|
function lt() {
|
|
3352
3371
|
return `
|
|
@@ -3359,32 +3378,32 @@ void main() {
|
|
|
3359
3378
|
}`;
|
|
3360
3379
|
}
|
|
3361
3380
|
var W;
|
|
3362
|
-
const te = new
|
|
3363
|
-
new
|
|
3364
|
-
const ce = new
|
|
3365
|
-
new
|
|
3366
|
-
const
|
|
3367
|
-
function
|
|
3381
|
+
const te = new E.Sphere(new E.Vector3(0, 0, 0), 1), ue = new se([0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]);
|
|
3382
|
+
new E.Box3();
|
|
3383
|
+
const ce = new E.Vector3(0, 0, 0), we = new E.Vector3(0, 0, 0), Ki = new E.Vector3(0, 1, 0), Ye = new E.Ray(), We = new E.Matrix4();
|
|
3384
|
+
new E.Matrix4(), new E.Frustum();
|
|
3385
|
+
const Ca = new E.Vector3(), Xe = [], ht = new E.Quaternion(), Z = {};
|
|
3386
|
+
function zi() {
|
|
3368
3387
|
var o = [];
|
|
3369
3388
|
for (let e in Z) Z.hasOwnProperty(e) && Z[e] > 0 && o.push(e);
|
|
3370
3389
|
return o;
|
|
3371
3390
|
}
|
|
3372
|
-
class Vt extends
|
|
3391
|
+
class Vt extends E.Object3D {
|
|
3373
3392
|
constructor(e) {
|
|
3374
3393
|
super();
|
|
3375
3394
|
const a = this;
|
|
3376
|
-
if (a.splatsMesh = e.splatsMesh, this.contentURL = [], e.domWidth && e.domHeight ? this.rendererSize = new
|
|
3395
|
+
if (a.splatsMesh = e.splatsMesh, this.contentURL = [], e.domWidth && e.domHeight ? this.rendererSize = new E.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new E.Vector2(1e3, 1e3), this.loadingStrategy = e.loadingStrategy ? e.loadingStrategy.toUpperCase() : "INCREMENTAL", this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.proxy = e.proxy, this.drawBoundingVolume = !!e.drawBoundingVolume && e.drawBoundingVolume, this.displayErrors = e.displayErrors, this.displayCopyright = e.displayCopyright, e.queryParams && (this.queryParams = { ...e.queryParams }), this.uuid = kt(), e.tileLoader) this.tileLoader = e.tileLoader;
|
|
3377
3396
|
else {
|
|
3378
3397
|
const i = {};
|
|
3379
3398
|
i.meshCallback = e.meshCallback ? e.meshCallback : (s, r) => {
|
|
3380
|
-
s.material.wireframe = !1, s.material.side =
|
|
3399
|
+
s.material.wireframe = !1, s.material.side = E.DoubleSide;
|
|
3381
3400
|
}, i.pointsCallback = e.pointsCallback ? e.pointsCallback : (s, r) => {
|
|
3382
3401
|
s.material.size = Math.pow(r, 0.33), s.material.sizeAttenuation = !0;
|
|
3383
|
-
}, i.proxy = this.proxy, i.renderer = e.renderer, i.dracoLoader = e.dracoLoader, i.ktx2Loader = e.ktx2Loader, this.tileLoader = new
|
|
3402
|
+
}, i.proxy = this.proxy, i.renderer = e.renderer, i.dracoLoader = e.dracoLoader, i.ktx2Loader = e.ktx2Loader, this.tileLoader = new Ni(i), this.update = (s) => {
|
|
3384
3403
|
this.update(s), this.tileLoader.update();
|
|
3385
3404
|
};
|
|
3386
3405
|
}
|
|
3387
|
-
if (this.displayCopyright = !!e.displayCopyright, this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.splatsCropRadius = Number.MAX_VALUE, this.splatsSizeMultiplier = 1, this.renderer = e.renderer, this.meshCallback = e.meshCallback, this.loadOutsideView = e.loadOutsideView, this.cameraOnLoad = e.cameraOnLoad, this.parentTile = e.parentTile, this.occlusionCullingService = e.occlusionCullingService, this.static = e.static, this.occlusionCullingService && (this.color = new
|
|
3406
|
+
if (this.displayCopyright = !!e.displayCopyright, this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.splatsCropRadius = Number.MAX_VALUE, this.splatsSizeMultiplier = 1, this.renderer = e.renderer, this.meshCallback = e.meshCallback, this.loadOutsideView = e.loadOutsideView, this.cameraOnLoad = e.cameraOnLoad, this.parentTile = e.parentTile, this.occlusionCullingService = e.occlusionCullingService, this.static = e.static, this.occlusionCullingService && (this.color = new E.Color(), this.color.setHex(16777215 * Math.random()), this.colorID = E.MathUtils.clamp(255 * a.color.r, 0, 255) << 16 ^ E.MathUtils.clamp(255 * a.color.g, 0, 255) << 8 ^ E.MathUtils.clamp(255 * a.color.b, 0, 255)), this.static && (this.matrixAutoUpdate = !1, this.matrixWorldAutoUpdate = !1), this.childrenTiles = [], this.meshContent = [], this.tileContent, this.refine, this.rootPath, this.geometricError, this.boundingVolume, this.json, this.materialVisibility = !1, this.level = e.level ? e.level : 0, this.hasMeshContent = 0, this.hasUnloadedJSONContent = 0, this.centerModel = e.centerModel, this.abortController = new AbortController(), this.onLoadCallback = e.onLoadCallback, e.json) a._setup(e);
|
|
3388
3407
|
else if (e.url) {
|
|
3389
3408
|
var t = e.url;
|
|
3390
3409
|
if (a.queryParams) {
|
|
@@ -3421,24 +3440,24 @@ class Vt extends m.Object3D {
|
|
|
3421
3440
|
async _setup(e) {
|
|
3422
3441
|
const a = this;
|
|
3423
3442
|
if (e.json.extensionsRequired && e.json.extensionsRequired.includes("JDULTRA_gaussian_splats") && (a.splatsMesh = new qi(a.tileLoader.renderer), this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius), this.splatsMesh.setSplatsSizeMultiplier(this.splatsSizeMultiplier), a.add(a.splatsMesh)), e.json.root ? (a.json = e.json.root, a.json.refine || (a.json.refine = e.json.refine), a.json.geometricError || (a.json.geometricError = e.json.geometricError), a.json.transform || (a.json.transform = e.json.transform), a.json.boundingVolume || (a.json.boundingVolume = e.json.boundingVolume)) : a.json = e.json, a.json.children || (a.json.getChildren ? a.json.children = await a.json.getChildren() : a.json.children = []), a.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, a.json.refine ? a.refine = a.json.refine : a.refine = e.parentRefine, a.json.geometricError ? a.geometricError = a.json.geometricError : a.geometricError = e.parentGeometricError, a.json.transform) {
|
|
3424
|
-
let A = new
|
|
3443
|
+
let A = new E.Matrix4();
|
|
3425
3444
|
A.elements = a.json.transform, a.applyMatrix4(A);
|
|
3426
3445
|
}
|
|
3427
3446
|
if (a.json.boundingVolume) if (a.json.boundingVolume.box) a.boundingVolume = new se(a.json.boundingVolume.box);
|
|
3428
3447
|
else if (a.json.boundingVolume.region) {
|
|
3429
3448
|
const A = a.json.boundingVolume.region;
|
|
3430
|
-
a._transformWGS84ToCartesian(A[0], A[1], A[4], ce), a._transformWGS84ToCartesian(A[2], A[3], A[5],
|
|
3449
|
+
a._transformWGS84ToCartesian(A[0], A[1], A[4], ce), a._transformWGS84ToCartesian(A[2], A[3], A[5], we), ce.lerp(we, 0.5), a.boundingVolume = new E.Sphere(new E.Vector3(ce.x, ce.y, ce.z), ce.distanceTo(we));
|
|
3431
3450
|
} else if (a.json.boundingVolume.sphere) {
|
|
3432
3451
|
const A = a.json.boundingVolume.sphere;
|
|
3433
|
-
a.boundingVolume = new
|
|
3452
|
+
a.boundingVolume = new E.Sphere(new E.Vector3(A[0], A[1], A[2]), A[3]);
|
|
3434
3453
|
} else a.boundingVolume = e.parentBoundingVolume;
|
|
3435
3454
|
else a.boundingVolume = e.parentBoundingVolume;
|
|
3436
3455
|
function t(A) {
|
|
3437
3456
|
A.uri && A.uri.includes("json") || A.url && A.url.includes("json") ? a.hasUnloadedJSONContent++ : a.hasMeshContent++;
|
|
3438
3457
|
}
|
|
3439
|
-
if (a.json.content ? (t(a.json.content), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()) : a.json.contents && (a.json.contents.forEach((A) => t(A)), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()), a.centerModel && (
|
|
3458
|
+
if (a.json.content ? (t(a.json.content), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()) : a.json.contents && (a.json.contents.forEach((A) => t(A)), a.hasMeshContent == 0 && (a.level = Math.max(0, a.parentTile ? a.parentTile.level + 0.01 : 0)), a.loadingStrategy === "IMMEDIATE" ? a._load(!0, !1) : a._load()), a.centerModel && (we.copy(a.boundingVolume.center), this.json.boundingVolume.region && (this._transformWGS84ToCartesian(0.5 * (this.json.boundingVolume.region[0] + this.json.boundingVolume.region[2]), 0.5 * (this.json.boundingVolume.region[1] + this.json.boundingVolume.region[3]), 0.5 * (this.json.boundingVolume.region[4] + this.json.boundingVolume.region[5]), ce), ht.setFromUnitVectors(ce.normalize(), Ki.normalize()), a.applyQuaternion(ht)), we.applyMatrix4(a.matrix), a.position.sub(we), a.updateMatrices()), e.onLoadCallback && a.onLoadCallback(a), a.isSetup = !0, a.level > 0 && a.drawBoundingVolume && (a.bbox && console.log("double setup"), this.boundingVolume.aabb)) {
|
|
3440
3459
|
let A = this.boundingVolume.aabb.clone();
|
|
3441
|
-
A.applyMatrix4(this.matrixWorld), a.bbox = new
|
|
3460
|
+
A.applyMatrix4(this.matrixWorld), a.bbox = new E.Box3Helper(A, new E.Color(Math.random(), Math.random(), Math.random())), a.add(a.bbox), a.bbox.material.visible = !1;
|
|
3442
3461
|
}
|
|
3443
3462
|
}
|
|
3444
3463
|
_assembleURL(e, a) {
|
|
@@ -3482,11 +3501,11 @@ class Vt extends m.Object3D {
|
|
|
3482
3501
|
t.tileLoader.get(t.abortController, t.uuid, n, (l) => {
|
|
3483
3502
|
t.deleted || (l.asset && l.asset.copyright && (l.asset.copyright.split(";").forEach((g) => {
|
|
3484
3503
|
Z[g] ? Z[g]++ : Z[g] = 1;
|
|
3485
|
-
}), t.displayCopyright &&
|
|
3504
|
+
}), t.displayCopyright && Ba()), t.meshContent.push(l), t.splatsMesh || (l.traverse((g) => {
|
|
3486
3505
|
if ((g.isMesh || g.isPoints) && g.layers.disable(0), g.isMesh && t.occlusionCullingService) {
|
|
3487
3506
|
const h = g.geometry.attributes.position, f = [];
|
|
3488
|
-
for (let
|
|
3489
|
-
g.geometry.setAttribute("color", new
|
|
3507
|
+
for (let I = 0; I < h.count; I++) f.push(t.color.r, t.color.g, t.color.b);
|
|
3508
|
+
g.geometry.setAttribute("color", new E.Float32BufferAttribute(f, 3));
|
|
3490
3509
|
}
|
|
3491
3510
|
}), t.add(l), t.updateMatrices()));
|
|
3492
3511
|
}, t.cameraOnLoad ? () => {
|
|
@@ -3506,7 +3525,7 @@ class Vt extends m.Object3D {
|
|
|
3506
3525
|
e.meshContent.forEach((a) => {
|
|
3507
3526
|
a && a.asset && a.asset.copyright && (a.asset.copyright.split(";").forEach((t) => {
|
|
3508
3527
|
Z[t] && Z[t]--;
|
|
3509
|
-
}), e.displayCopyright &&
|
|
3528
|
+
}), e.displayCopyright && Ba());
|
|
3510
3529
|
}), e.meshContent = [], e.bbox && e.bbox.dispose(), e.childrenTiles.forEach((a) => a.dispose()), e.deleted = !0, e.splatsMesh && (e.meshContent.forEach((a) => a.hide()), e.parentTile || e.splatsMesh.dispose()), e.contentURL && (e.contentURL.forEach((a) => {
|
|
3511
3530
|
e.tileLoader.invalidate(a, e.uuid);
|
|
3512
3531
|
}), e.contentURL = []), e.abortController && e.abortController.abort("tile not needed"), this.parent = null, this.dispatchEvent({ type: "removed" });
|
|
@@ -3519,7 +3538,7 @@ class Vt extends m.Object3D {
|
|
|
3519
3538
|
const t = e.meshContent[a];
|
|
3520
3539
|
t && t.asset && t.asset.copyright && (t.asset.copyright.split(";").forEach((A) => {
|
|
3521
3540
|
Z[A] && Z[A]--;
|
|
3522
|
-
}), e.displayCopyright &&
|
|
3541
|
+
}), e.displayCopyright && Ba()), e.remove(t);
|
|
3523
3542
|
}
|
|
3524
3543
|
e.splatsMesh && e.meshContent.forEach((a) => a.hide()), e.meshContent = [], e.contentURL.forEach((a) => {
|
|
3525
3544
|
e.tileLoader.invalidate(a, e.uuid);
|
|
@@ -3538,7 +3557,7 @@ class Vt extends m.Object3D {
|
|
|
3538
3557
|
let t = !1;
|
|
3539
3558
|
if (this.boundingVolume instanceof se) t = this.boundingVolume.intersectsRay(Ye);
|
|
3540
3559
|
else {
|
|
3541
|
-
if (!(this.boundingVolume instanceof
|
|
3560
|
+
if (!(this.boundingVolume instanceof E.Sphere)) return !1;
|
|
3542
3561
|
t = ray.intersectsSphere(this.boundingVolume);
|
|
3543
3562
|
}
|
|
3544
3563
|
return t && this.materialVisibility && this.splatsReady && (Xe.length = 0, this.meshContent.forEach((A) => {
|
|
@@ -3550,10 +3569,10 @@ class Vt extends m.Object3D {
|
|
|
3550
3569
|
return super.raycast(e, a);
|
|
3551
3570
|
}
|
|
3552
3571
|
update(e) {
|
|
3553
|
-
const a = new
|
|
3554
|
-
a.setFromProjectionMatrix(new
|
|
3572
|
+
const a = new E.Frustum();
|
|
3573
|
+
a.setFromProjectionMatrix(new E.Matrix4().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse));
|
|
3555
3574
|
let t = [0], A = [0], i = [0], s = [0];
|
|
3556
|
-
return this.refine == "REPLACE" ? this.loadingStrategy === "IMMEDIATE" ? (this._updateImmediate(e, a), this._statsImmediate(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)), t > 0 && (s[0] /= t[0]), this.splatsMesh && (
|
|
3575
|
+
return this.refine == "REPLACE" ? this.loadingStrategy === "IMMEDIATE" ? (this._updateImmediate(e, a), this._statsImmediate(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)) : (this._update(e, a), this._stats(i, t, s, A)), t > 0 && (s[0] /= t[0]), this.splatsMesh && (Ca.copy(e.position), We.copy(this.matrixWorld).invert(), Ca.applyMatrix4(We), this.splatsMesh.sort(Ca)), { numTilesLoaded: t[0], numTilesRendered: A[0], maxLOD: i[0], percentageLoaded: s[0] };
|
|
3557
3576
|
}
|
|
3558
3577
|
_updateImmediate(e, a) {
|
|
3559
3578
|
this._computeMetricRecursive(e, a), this._updateNodeVisibilityImmediate(), this._expandTreeImmediate(e), this.shouldBeVisible = this.metric > 0 || !!this.loadOutsideView, this._shouldBeVisibleUpdateImmediate(), this._trimTreeImmediate(), this._loadMeshImmediate();
|
|
@@ -3727,10 +3746,10 @@ class Vt extends m.Object3D {
|
|
|
3727
3746
|
_calculateUpdateMetric(e, a) {
|
|
3728
3747
|
let t = 0;
|
|
3729
3748
|
if (this.boundingVolume instanceof se) {
|
|
3730
|
-
if (
|
|
3731
|
-
t = Math.max(0,
|
|
3749
|
+
if (ue.copy(this.boundingVolume), ue.applyMatrix4(this.matrixWorld), !ue.inFrustum(a)) return -1;
|
|
3750
|
+
t = Math.max(0, ue.distanceToPoint(e.position) - e.near);
|
|
3732
3751
|
} else {
|
|
3733
|
-
if (!(this.boundingVolume instanceof
|
|
3752
|
+
if (!(this.boundingVolume instanceof E.Sphere)) return console.error("unsupported shape"), -1;
|
|
3734
3753
|
if (te.copy(this.boundingVolume), te.applyMatrix4(this.matrixWorld), !a.intersectsSphere(te)) return -1;
|
|
3735
3754
|
t = Math.max(0, e.position.distanceTo(te.center) - te.radius - e.near);
|
|
3736
3755
|
}
|
|
@@ -3755,7 +3774,7 @@ class Vt extends m.Object3D {
|
|
|
3755
3774
|
}), a;
|
|
3756
3775
|
}
|
|
3757
3776
|
_calculateDistanceToCamera(e) {
|
|
3758
|
-
return this.boundingVolume instanceof se ? (
|
|
3777
|
+
return this.boundingVolume instanceof se ? (ue.copy(this.boundingVolume), ue.applyMatrix4(this.matrixWorld), Math.max(0, ue.distanceToPoint(e.position))) : this.boundingVolume instanceof E.Sphere ? (te.copy(this.boundingVolume), te.applyMatrix4(this.matrixWorld), Math.max(0, e.position.distanceTo(te.center) - te.radius)) : (console.error("unsupported shape"), -1);
|
|
3759
3778
|
}
|
|
3760
3779
|
setGeometricErrorMultiplier(e) {
|
|
3761
3780
|
this.geometricErrorMultiplier = e, this.splatsReady = !0, this.childrenTiles.forEach((a) => a.setGeometricErrorMultiplier(e));
|
|
@@ -3774,16 +3793,16 @@ function gt(o) {
|
|
|
3774
3793
|
e.remove();
|
|
3775
3794
|
}, 8e3);
|
|
3776
3795
|
}
|
|
3777
|
-
function
|
|
3796
|
+
function Ba() {
|
|
3778
3797
|
W || ((W = document.createElement("div")).style.position = "fixed", W.style.bottom = "20px", W.style.left = "20px", W.style.color = "white", W.style.textShadow = "2px 2px 0 #000, -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000", W.style.padding = "10px", W.style.backgroundColor = "rgba(0, 0, 0, 0.1)", document.body.appendChild(W));
|
|
3779
|
-
const o =
|
|
3798
|
+
const o = zi();
|
|
3780
3799
|
let e = "";
|
|
3781
3800
|
o.forEach((a) => {
|
|
3782
3801
|
e += a + ", ";
|
|
3783
3802
|
}), e = e.slice(0, -2), W.textContent = e;
|
|
3784
3803
|
}
|
|
3785
|
-
const N = new
|
|
3786
|
-
class Ga extends
|
|
3804
|
+
const N = new E.Sphere(new E.Vector3(0, 0, 0), 1), de = new E.Vector3(0, 0, 0), ma = new E.Vector3(0, 0, 0), Vi = new E.Vector3(0, 1, 0), Ea = new E.Vector2(), ft = new E.Quaternion(), ut = new E.Matrix4();
|
|
3805
|
+
class Ga extends E.Object3D {
|
|
3787
3806
|
constructor(e) {
|
|
3788
3807
|
super();
|
|
3789
3808
|
const a = this;
|
|
@@ -3805,22 +3824,22 @@ class Ga extends m.Object3D {
|
|
|
3805
3824
|
async setup(e) {
|
|
3806
3825
|
const a = this;
|
|
3807
3826
|
e.json.root ? (a.json = e.json.root, !a.json.children && a.json.getChildren && (a.json.children = await a.json.getChildren()), a.jsonChildren = a.json.children, a.json.refinement || (a.json.refinement = e.json.refinement), a.json.geometricError || (a.json.geometricError = e.json.geometricError), a.json.transform || (a.json.transform = e.json.transform), a.json.boundingVolume || (a.json.boundingVolume = e.json.boundingVolume)) : (a.json = e.json, !a.json.children && a.json.getChildren && (a.json.children = await a.json.getChildren(), a.jsonChildren = a.json.children)), a.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, a.json.refinement ? a.refinement = a.json.refinement : a.refinement = e.parentRefinement, a.json.geometricError ? a.geometricError = a.json.geometricError : a.geometricError = e.parentGeometricError;
|
|
3808
|
-
let t = new
|
|
3827
|
+
let t = new E.Matrix4();
|
|
3809
3828
|
if (a.json.transform && !a.centerModel && (t.elements = a.json.transform), a.applyMatrix4(t), a.parentTile && a.parentTile.matrix && (a.matrix.premultiply(a.parentTile.matrix), a.matrix.decompose(a.position, a.quaternion, a.scale)), a.matrixWorldNeedsUpdate = !0, a.updateWorldMatrix(!0, !0), a.json.boundingVolume) if (a.json.boundingVolume.box) a.boundingVolume = new se(a.json.boundingVolume.box);
|
|
3810
3829
|
else if (a.json.boundingVolume.region) {
|
|
3811
3830
|
const i = a.json.boundingVolume.region;
|
|
3812
|
-
a.transformWGS84ToCartesian(i[0], i[1], i[4], de), a.transformWGS84ToCartesian(i[2], i[3], i[5],
|
|
3831
|
+
a.transformWGS84ToCartesian(i[0], i[1], i[4], de), a.transformWGS84ToCartesian(i[2], i[3], i[5], ma), de.lerp(ma, 0.5), a.boundingVolume = new E.Sphere(new E.Vector3(de.x, de.y, de.z), de.distanceTo(ma));
|
|
3813
3832
|
} else if (a.json.boundingVolume.sphere) {
|
|
3814
3833
|
const i = a.json.boundingVolume.sphere;
|
|
3815
|
-
a.boundingVolume = new
|
|
3834
|
+
a.boundingVolume = new E.Sphere(new E.Vector3(i[0], i[1], i[2]), i[3]);
|
|
3816
3835
|
} else a.boundingVolume = e.parentBoundingVolume;
|
|
3817
3836
|
else a.boundingVolume = e.parentBoundingVolume;
|
|
3818
3837
|
function A(i) {
|
|
3819
3838
|
i.uri && i.uri.includes("json") || i.url && i.url.includes("json") ? a.hasUnloadedJSONContent++ : a.hasMeshContent++;
|
|
3820
3839
|
}
|
|
3821
3840
|
if (a.json.content ? (A(a.json.content), a.load()) : a.json.contents && (a.json.contents.forEach((i) => A(i)), a.load()), a.centerModel) {
|
|
3822
|
-
const i = new
|
|
3823
|
-
a.boundingVolume instanceof se ? i.copy(a.boundingVolume.sphere) : a.boundingVolume instanceof
|
|
3841
|
+
const i = new E.Sphere();
|
|
3842
|
+
a.boundingVolume instanceof se ? i.copy(a.boundingVolume.sphere) : a.boundingVolume instanceof E.Sphere && i.copy(a.boundingVolume), this.json.boundingVolume.region && (a.transformWGS84ToCartesian(0.5 * (a.json.boundingVolume.region[0] + a.json.boundingVolume.region[2]), 0.5 * (a.json.boundingVolume.region[1] + a.json.boundingVolume.region[3]), 0.5 * (a.json.boundingVolume.region[4] + a.json.boundingVolume.region[5]), de), ft.setFromUnitVectors(de.normalize(), Vi.normalize()), a.master.applyQuaternion(ft), a.master.updateWorldMatrix(!1, !1)), ut.makeTranslation(-i.center.x * a.scale.x, -i.center.y * a.scale.y, -i.center.z * a.scale.z), a.master.matrix.multiply(ut), a.master.matrix.decompose(a.master.position, a.master.quaternion, a.master.scale);
|
|
3824
3843
|
}
|
|
3825
3844
|
a.isSetup = !0, e.onLoadCallback && e.onLoadCallback(a);
|
|
3826
3845
|
}
|
|
@@ -3930,7 +3949,7 @@ class Ga extends m.Object3D {
|
|
|
3930
3949
|
if (this.boundingVolume instanceof se) {
|
|
3931
3950
|
if (N.copy(this.boundingVolume.sphere), N.applyMatrix4(this.matrixWorld), !a.intersectsSphere(N)) return -1;
|
|
3932
3951
|
} else {
|
|
3933
|
-
if (!(this.boundingVolume instanceof
|
|
3952
|
+
if (!(this.boundingVolume instanceof E.Sphere)) return console.error("unsupported shape"), -1;
|
|
3934
3953
|
if (N.copy(this.boundingVolume), N.applyMatrix4(this.matrixWorld), !a.intersectsSphere(N)) return -1;
|
|
3935
3954
|
}
|
|
3936
3955
|
let t = Math.max(0, e.position.distanceTo(N.center) - N.radius);
|
|
@@ -3955,7 +3974,7 @@ class Ga extends m.Object3D {
|
|
|
3955
3974
|
}), a;
|
|
3956
3975
|
}
|
|
3957
3976
|
calculateDistanceToCamera(e) {
|
|
3958
|
-
return this.boundingVolume instanceof se ? (N.copy(this.boundingVolume.sphere), N.applyMatrix4(this.matrixWorld)) : this.boundingVolume instanceof
|
|
3977
|
+
return this.boundingVolume instanceof se ? (N.copy(this.boundingVolume.sphere), N.applyMatrix4(this.matrixWorld)) : this.boundingVolume instanceof E.Sphere ? (N.copy(this.boundingVolume), N.applyMatrix4(this.matrixWorld)) : console.error("unsupported shape"), Math.max(0, e.position.distanceTo(N.center) - N.radius);
|
|
3959
3978
|
}
|
|
3960
3979
|
getWorldMatrix() {
|
|
3961
3980
|
return this.matrixWorld;
|
|
@@ -3965,9 +3984,9 @@ class Ga extends m.Object3D {
|
|
|
3965
3984
|
A.set(b, d, l);
|
|
3966
3985
|
}
|
|
3967
3986
|
}
|
|
3968
|
-
class
|
|
3987
|
+
class as extends E.Object3D {
|
|
3969
3988
|
constructor(e) {
|
|
3970
|
-
super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new
|
|
3989
|
+
super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new E.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new E.Vector2(1e3, 1e3), this.renderer = e.renderer, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.tileset = new Ga(e), e.static && (this.matrixAutoUpdate = !1), this.tileLoader = e.tileLoader;
|
|
3971
3990
|
}
|
|
3972
3991
|
_renderSize(e) {
|
|
3973
3992
|
this.renderer ? this.renderer.getDrawingBufferSize(e) : e.copy(this.rendererSize);
|
|
@@ -3978,18 +3997,18 @@ class $i extends m.Object3D {
|
|
|
3978
3997
|
update(e, a) {
|
|
3979
3998
|
if (a) this.tileset._update(e, a);
|
|
3980
3999
|
else {
|
|
3981
|
-
const t = new
|
|
3982
|
-
t.setFromProjectionMatrix(new
|
|
4000
|
+
const t = new E.Frustum();
|
|
4001
|
+
t.setFromProjectionMatrix(new E.Matrix4().multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse)), this.tileset._update(e, t);
|
|
3983
4002
|
}
|
|
3984
4003
|
}
|
|
3985
4004
|
setGeometricErrorMultiplier(e) {
|
|
3986
4005
|
this.geometricErrorMultiplier = e || 1;
|
|
3987
4006
|
}
|
|
3988
4007
|
}
|
|
3989
|
-
class
|
|
4008
|
+
class Yi {
|
|
3990
4009
|
constructor(e) {
|
|
3991
4010
|
const a = this;
|
|
3992
|
-
a.scene = e, a.instancedTiles = [], a.instancedMesh, a.reuseableMatrix = new
|
|
4011
|
+
a.scene = e, a.instancedTiles = [], a.instancedMesh, a.reuseableMatrix = new E.Matrix4();
|
|
3993
4012
|
}
|
|
3994
4013
|
addInstance(e) {
|
|
3995
4014
|
const a = this;
|
|
@@ -3997,7 +4016,7 @@ class zi {
|
|
|
3997
4016
|
}
|
|
3998
4017
|
addToScene() {
|
|
3999
4018
|
const e = this;
|
|
4000
|
-
e.instancedMesh.setMatrixAt(0, new
|
|
4019
|
+
e.instancedMesh.setMatrixAt(0, new E.Matrix4()), e.instancedMesh.instanceMatrix.needsUpdate = !0, e.instancedMesh.count = 1, e.scene.add(e.instancedMesh), e.instancedMesh.onAfterRender = () => {
|
|
4001
4020
|
delete e.instancedMesh.onAfterRender, e.instancedMesh.displayedOnce = !0;
|
|
4002
4021
|
};
|
|
4003
4022
|
}
|
|
@@ -4027,7 +4046,7 @@ class zi {
|
|
|
4027
4046
|
}), e.instancedMesh.dispose(), !0);
|
|
4028
4047
|
}
|
|
4029
4048
|
}
|
|
4030
|
-
class
|
|
4049
|
+
class Wi {
|
|
4031
4050
|
constructor() {
|
|
4032
4051
|
const e = this;
|
|
4033
4052
|
e.count = 0, e.json, e.instancedTiles = [];
|
|
@@ -4051,10 +4070,10 @@ class Vi {
|
|
|
4051
4070
|
return !(!this.json || this.instancedTiles.length != 0);
|
|
4052
4071
|
}
|
|
4053
4072
|
}
|
|
4054
|
-
let
|
|
4055
|
-
class
|
|
4073
|
+
let Ie = 0;
|
|
4074
|
+
class ts {
|
|
4056
4075
|
constructor(e, a) {
|
|
4057
|
-
if (this.zUpToYUpMatrix = new
|
|
4076
|
+
if (this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.maxInstances = 1, this.proxy = a.proxy, a && (this.meshCallback = a.meshCallback, this.pointsCallback = a.pointsCallback, a.maxCachedItems && (this.maxCachedItems = a.maxCachedItems), a.maxInstances && (this.maxInstances = a.maxInstances)), this.gltfLoader = new Dt(), a && a.dracoLoader) this.gltfLoader.setDRACOLoader(a.dracoLoader), this.hasDracoLoader = !0;
|
|
4058
4077
|
else {
|
|
4059
4078
|
const t = new Rt();
|
|
4060
4079
|
t.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.4.3/"), this.gltfLoader.setDRACOLoader(t), this.gltfLoader.hasDracoLoader = !0;
|
|
@@ -4070,14 +4089,14 @@ class es {
|
|
|
4070
4089
|
const e = this;
|
|
4071
4090
|
e._checkSize(), e.cache._data.forEach((a) => {
|
|
4072
4091
|
a.update();
|
|
4073
|
-
}),
|
|
4092
|
+
}), Ie < 8 && e._download(), e._loadBatch();
|
|
4074
4093
|
}
|
|
4075
4094
|
_download() {
|
|
4076
4095
|
const e = this;
|
|
4077
4096
|
if (e.nextDownloads.length != 0 || (e._getNextDownloads(), e.nextDownloads.length != 0)) for (; e.nextDownloads.length > 0; ) {
|
|
4078
4097
|
const t = e.nextDownloads.shift();
|
|
4079
4098
|
if (t) {
|
|
4080
|
-
if (t.path.includes(".b3dm") && (a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path),
|
|
4099
|
+
if (t.path.includes(".b3dm") && (a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
|
|
4081
4100
|
if (!A.ok) throw console.error("could not load tile with path : " + t.path), new Error(`couldn't load "${t.path}". Request failed with status ${A.status} : ${A.statusText}`);
|
|
4082
4101
|
return A.arrayBuffer();
|
|
4083
4102
|
}).then((A) => this.b3dmDecoder.parseB3DMInstanced(A, (i) => {
|
|
@@ -4085,17 +4104,17 @@ class es {
|
|
|
4085
4104
|
}, e.maxInstances, t.sceneZupToYup, t.meshZupToYup)).then((A) => {
|
|
4086
4105
|
A.frustumCulled = !1, t.tile.setObject(A), e.ready.unshift(t);
|
|
4087
4106
|
}).catch((A) => console.error(A)).finally(() => {
|
|
4088
|
-
|
|
4089
|
-
})), t.path.includes(".glb") || t.path.includes(".gltf")) a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path),
|
|
4107
|
+
Ie--;
|
|
4108
|
+
})), t.path.includes(".glb") || t.path.includes(".gltf")) a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
|
|
4090
4109
|
if (!A.ok) throw new Error("missing content");
|
|
4091
4110
|
return A.arrayBuffer();
|
|
4092
4111
|
}).then(async (A) => {
|
|
4093
|
-
await
|
|
4112
|
+
await Xi(this.gltfLoader), this.gltfLoader.parse(A, null, (i) => {
|
|
4094
4113
|
let s;
|
|
4095
4114
|
i.scene.asset = i.asset, t.sceneZupToYup && i.scene.applyMatrix4(this.zUpToYUpMatrix), i.scene.traverse((r) => {
|
|
4096
4115
|
r.geometricError = t.geometricError, r.isMesh && (t.meshZupToYup && r.applyMatrix4(this.zUpToYUpMatrix), e.meshCallback && e.meshCallback(r, r.geometricError)), r.isPoints && console.error("instanced point cloud is not supported");
|
|
4097
4116
|
}), i.scene.updateWorldMatrix(!1, !0), i.scene.traverse((r) => {
|
|
4098
|
-
r.isMesh && (s = new
|
|
4117
|
+
r.isMesh && (s = new E.InstancedMesh(r.geometry, r.material, e.maxInstances), s.baseMatrix = r.matrixWorld);
|
|
4099
4118
|
}), e.ready.unshift(t), s ? (s.frustumCulled = !1, t.tile.setObject(s)) : i.scene.traverse((r) => {
|
|
4100
4119
|
r.dispose && r.dispose(), r.material && r.material.dispose();
|
|
4101
4120
|
});
|
|
@@ -4103,17 +4122,17 @@ class es {
|
|
|
4103
4122
|
}, (A) => {
|
|
4104
4123
|
console.error("could not load tile : " + t.path);
|
|
4105
4124
|
}).finally(() => {
|
|
4106
|
-
|
|
4125
|
+
Ie--;
|
|
4107
4126
|
});
|
|
4108
4127
|
else if (t.path.includes(".json")) {
|
|
4109
4128
|
var a;
|
|
4110
|
-
a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path),
|
|
4129
|
+
a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
|
|
4111
4130
|
if (!A.ok) throw console.error("could not load tile with path : " + t.path), new Error(`couldn't load "${t.path}". Request failed with status ${A.status} : ${A.statusText}`);
|
|
4112
4131
|
return A.json();
|
|
4113
4132
|
}).then((A) => La(A, t.path)).then((A) => {
|
|
4114
4133
|
t.tile.setObject(A, t.path), e.ready.unshift(t);
|
|
4115
4134
|
}).catch((A) => console.error(A)).finally(() => {
|
|
4116
|
-
|
|
4135
|
+
Ie--;
|
|
4117
4136
|
});
|
|
4118
4137
|
}
|
|
4119
4138
|
}
|
|
@@ -4140,27 +4159,27 @@ class es {
|
|
|
4140
4159
|
}
|
|
4141
4160
|
get(e, a, t, A, i, s, r, c, n, b) {
|
|
4142
4161
|
const d = this, l = function(h) {
|
|
4143
|
-
for (var f = h.split("/"),
|
|
4162
|
+
for (var f = h.split("/"), I = [], u = 0, p = 0; p < f.length; p++) {
|
|
4144
4163
|
var B = f[p];
|
|
4145
|
-
B !== "." && B !== "" && B !== ".." ? u
|
|
4164
|
+
B !== "." && B !== "" && B !== ".." ? I[u++] = B : B === ".." && u > 0 && u--;
|
|
4146
4165
|
}
|
|
4147
|
-
if (
|
|
4166
|
+
if (u === 0) return "/";
|
|
4148
4167
|
var C = "";
|
|
4149
|
-
for (p = 0; p <
|
|
4168
|
+
for (p = 0; p < u; p++) C += "/" + I[p];
|
|
4150
4169
|
return C;
|
|
4151
4170
|
}(a);
|
|
4152
4171
|
if (!(a.includes(".b3dm") || a.includes(".json") || a.includes(".glb") || a.includes(".gltf"))) return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");
|
|
4153
4172
|
const g = d.cache.get(l);
|
|
4154
4173
|
if (g) g.addInstance(A);
|
|
4155
4174
|
else if (a.includes(".b3dm") || a.includes(".glb") || a.includes(".gltf")) {
|
|
4156
|
-
const h = new
|
|
4175
|
+
const h = new Yi(d.scene);
|
|
4157
4176
|
h.addInstance(A), d.cache.put(l, h);
|
|
4158
4177
|
const f = new AbortController();
|
|
4159
4178
|
e.signal.addEventListener("abort", () => {
|
|
4160
4179
|
h.getCount() == 0 && f.abort();
|
|
4161
4180
|
}), this.downloads.push({ abortController: f, tile: h, key: l, path: a, distanceFunction: i, getSiblings: s, level: r, uuid: t, sceneZupToYup: c, meshZupToYup: n, geometricError: b, shouldDoDownload: () => !0 });
|
|
4162
4181
|
} else if (a.includes(".json")) {
|
|
4163
|
-
const h = new
|
|
4182
|
+
const h = new Wi();
|
|
4164
4183
|
h.addInstance(A), d.cache.put(l, h);
|
|
4165
4184
|
const f = new AbortController();
|
|
4166
4185
|
e.signal.addEventListener("abort", () => {
|
|
@@ -4197,7 +4216,7 @@ class es {
|
|
|
4197
4216
|
}
|
|
4198
4217
|
}
|
|
4199
4218
|
}
|
|
4200
|
-
async function
|
|
4219
|
+
async function Xi(o) {
|
|
4201
4220
|
return new Promise((e) => {
|
|
4202
4221
|
const a = setInterval(() => {
|
|
4203
4222
|
o.hasDracoLoader && !o.dracoLoader || o.hasKTX2Loader && !o.ktx2Loader || (clearInterval(a), e());
|
|
@@ -4205,11 +4224,13 @@ async function Yi(o) {
|
|
|
4205
4224
|
});
|
|
4206
4225
|
}
|
|
4207
4226
|
export {
|
|
4208
|
-
|
|
4209
|
-
|
|
4227
|
+
as as InstancedOGC3DTile,
|
|
4228
|
+
ts as InstancedTileLoader,
|
|
4210
4229
|
Vt as OGC3DTile,
|
|
4211
|
-
|
|
4212
|
-
|
|
4213
|
-
|
|
4230
|
+
es as OcclusionCullingService,
|
|
4231
|
+
Ni as TileLoader,
|
|
4232
|
+
zi as getOGC3DTilesCopyrightInfo,
|
|
4233
|
+
Ji as splatsFragmentShader,
|
|
4234
|
+
Oi as splatsVertexShader
|
|
4214
4235
|
};
|
|
4215
4236
|
//# sourceMappingURL=threedtiles.es.js.map
|