@soonspacejs/plugin-gs3d-loader 3.0.0-alpha.0 → 3.0.0-alpha.10
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/index.esm.js +193 -188
- package/dist/types.d.ts +2 -2
- package/package.json +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as f from "three";
|
|
2
|
-
import { Ray as
|
|
2
|
+
import { Ray as Ks, Plane as js, MathUtils as Ys, EventDispatcher as Xs, Vector3 as ye, MOUSE as _e, TOUCH as Qe, Spherical as ts, Quaternion as Mt, Vector2 as ve } from "three";
|
|
3
|
+
import ss from "soonspacejs";
|
|
3
4
|
class He {
|
|
4
5
|
static idGen = 0;
|
|
5
6
|
constructor(e, s) {
|
|
@@ -37,7 +38,7 @@ class He {
|
|
|
37
38
|
this.abortHandler && this.abortHandler(e);
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
|
-
class
|
|
41
|
+
class Rs extends Error {
|
|
41
42
|
constructor(e) {
|
|
42
43
|
super(e);
|
|
43
44
|
}
|
|
@@ -57,7 +58,7 @@ const xt = (function() {
|
|
|
57
58
|
return function(s) {
|
|
58
59
|
return A[0] = s, e[0];
|
|
59
60
|
};
|
|
60
|
-
})(),
|
|
61
|
+
})(), Js = function(A, e) {
|
|
61
62
|
return A[e] + (A[e + 1] << 8) + (A[e + 2] << 16) + (A[e + 3] << 24);
|
|
62
63
|
}, St = function(A, e, s = !0, t) {
|
|
63
64
|
const n = new AbortController(), r = n.signal;
|
|
@@ -99,7 +100,7 @@ const xt = (function() {
|
|
|
99
100
|
return;
|
|
100
101
|
}
|
|
101
102
|
}).catch((h) => {
|
|
102
|
-
d(new
|
|
103
|
+
d(new Rs(h));
|
|
103
104
|
});
|
|
104
105
|
}, o);
|
|
105
106
|
}, ne = function(A, e, s) {
|
|
@@ -145,7 +146,7 @@ const xt = (function() {
|
|
|
145
146
|
reject: s
|
|
146
147
|
};
|
|
147
148
|
};
|
|
148
|
-
class
|
|
149
|
+
class Zs {
|
|
149
150
|
constructor(e, s, t) {
|
|
150
151
|
this.major = e, this.minor = s, this.patch = t;
|
|
151
152
|
}
|
|
@@ -157,10 +158,10 @@ function kt() {
|
|
|
157
158
|
const A = navigator.userAgent;
|
|
158
159
|
return A.indexOf("iPhone") > 0 || A.indexOf("iPad") > 0;
|
|
159
160
|
}
|
|
160
|
-
function
|
|
161
|
+
function Ps() {
|
|
161
162
|
if (kt()) {
|
|
162
163
|
const A = navigator.userAgent.match(/OS (\d+)_(\d+)_?(\d+)?/);
|
|
163
|
-
return new
|
|
164
|
+
return new Zs(
|
|
164
165
|
parseInt(A[1] || 0, 10),
|
|
165
166
|
parseInt(A[2] || 0, 10),
|
|
166
167
|
parseInt(A[3] || 0, 10)
|
|
@@ -168,7 +169,7 @@ function Rs() {
|
|
|
168
169
|
} else
|
|
169
170
|
return null;
|
|
170
171
|
}
|
|
171
|
-
const
|
|
172
|
+
const $s = 14;
|
|
172
173
|
class P {
|
|
173
174
|
static OFFSET = {
|
|
174
175
|
X: 0,
|
|
@@ -211,7 +212,7 @@ class P {
|
|
|
211
212
|
FRC23: 37
|
|
212
213
|
};
|
|
213
214
|
constructor(e = 0) {
|
|
214
|
-
this.sphericalHarmonicsDegree = e, this.sphericalHarmonicsCount = Ke(this.sphericalHarmonicsDegree), this.componentCount = this.sphericalHarmonicsCount +
|
|
215
|
+
this.sphericalHarmonicsDegree = e, this.sphericalHarmonicsCount = Ke(this.sphericalHarmonicsDegree), this.componentCount = this.sphericalHarmonicsCount + $s, this.defaultSphericalHarmonics = new Array(this.sphericalHarmonicsCount).fill(0), this.splats = [], this.splatCount = 0;
|
|
215
216
|
}
|
|
216
217
|
static createSplat(e = 0) {
|
|
217
218
|
const s = [0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0];
|
|
@@ -252,7 +253,7 @@ class j {
|
|
|
252
253
|
static ProgressiveLoadSectionDelayDuration = 15;
|
|
253
254
|
static SphericalHarmonics8BitCompressionRange = 3;
|
|
254
255
|
}
|
|
255
|
-
const
|
|
256
|
+
const en = j.SphericalHarmonics8BitCompressionRange, Le = en / 2, fe = f.DataUtils.toHalfFloat.bind(f.DataUtils), Lt = f.DataUtils.fromHalfFloat.bind(f.DataUtils), se = (A, e, s = !1, t, n) => {
|
|
256
257
|
if (e === 0)
|
|
257
258
|
return A;
|
|
258
259
|
if (e === 1 || e === 2 && !s)
|
|
@@ -266,12 +267,12 @@ const $s = j.SphericalHarmonics8BitCompressionRange, Le = $s / 2, fe = f.DataUti
|
|
|
266
267
|
}, Ht = (A, e, s) => {
|
|
267
268
|
const t = s - e;
|
|
268
269
|
return A / 255 * t + e;
|
|
269
|
-
},
|
|
270
|
+
}, Os = (A, e, s) => $e(Lt(A, e, s)), tn = (A, e, s) => fe(Ht(A, e, s)), W = (A, e, s, t = !1) => s === 0 ? A.getFloat32(e * 4, !0) : s === 1 || s === 2 && !t ? A.getUint16(e * 2, !0) : A.getUint8(e, !0), sn = /* @__PURE__ */ (function() {
|
|
270
271
|
const A = (e) => e;
|
|
271
272
|
return function(e, s, t, n = !1) {
|
|
272
273
|
if (s === t) return e;
|
|
273
274
|
let r = A;
|
|
274
|
-
return s === 2 && n ? t === 1 ? r =
|
|
275
|
+
return s === 2 && n ? t === 1 ? r = tn : t == 0 && (r = Ht) : s === 2 || s === 1 ? t === 0 ? r = Lt : t == 2 && (n ? r = Os : r = A) : s === 0 && (t === 1 ? r = fe : t == 2 && (n ? r = $e : r = fe)), r(e);
|
|
275
276
|
};
|
|
276
277
|
})(), Ne = (A, e, s, t, n = 0) => {
|
|
277
278
|
const r = new Uint8Array(A, e), i = new Uint8Array(s, t);
|
|
@@ -442,7 +443,7 @@ class T {
|
|
|
442
443
|
return function(a, c, l, d, u, h, m, p) {
|
|
443
444
|
const g = this.splatCount;
|
|
444
445
|
d = d || 0, u = u || g - 1, h === void 0 && (h = d);
|
|
445
|
-
const C = (S, I) =>
|
|
446
|
+
const C = (S, I) => sn(S, I, m);
|
|
446
447
|
for (let S = d; S <= u; S++) {
|
|
447
448
|
const I = this.globalSplatIndexToSectionMap[S], E = this.sections[I], x = S - E.splatCountOffset, w = E.bytesPerSplat * x + T.CompressionLevels[this.compressionLevel].ScaleOffsetBytes, y = (S - d + h) * T.ScaleComponentCount, v = (S - d + h) * T.RotationComponentCount, D = new DataView(this.bufferData, E.dataBase + w), b = p && p.x !== void 0 ? p.x : W(D, 0, this.compressionLevel), F = p && p.y !== void 0 ? p.y : W(D, 1, this.compressionLevel), R = p && p.z !== void 0 ? p.z : W(D, 2, this.compressionLevel), k = W(D, 3, this.compressionLevel), M = W(D, 4, this.compressionLevel), O = W(D, 5, this.compressionLevel), L = W(D, 6, this.compressionLevel);
|
|
448
449
|
n.set(
|
|
@@ -505,7 +506,7 @@ class T {
|
|
|
505
506
|
return function(M, O, L, U, _, H, Q) {
|
|
506
507
|
const Z = this.splatCount;
|
|
507
508
|
U = U || 0, _ = _ || Z - 1, H === void 0 && (H = U), L && O >= 1 && (s.copy(L), s.decompose(t, r, n), r.normalize(), s.makeRotationFromQuaternion(r), e.setFromMatrix4(s), D(i, e.elements[4], -e.elements[7], e.elements[1]), D(o, -e.elements[5], e.elements[8], -e.elements[2]), D(a, e.elements[3], -e.elements[6], e.elements[0]));
|
|
508
|
-
const ie = (ee) =>
|
|
509
|
+
const ie = (ee) => Os(ee, this.minSphericalHarmonicsCoeff, this.maxSphericalHarmonicsCoeff), V = (ee) => $e(ee, this.minSphericalHarmonicsCoeff, this.maxSphericalHarmonicsCoeff);
|
|
509
510
|
for (let ee = U; ee <= _; ee++) {
|
|
510
511
|
const X = this.globalSplatIndexToSectionMap[ee], N = this.sections[X];
|
|
511
512
|
O = Math.min(O, N.sphericalHarmonicsDegree);
|
|
@@ -897,7 +898,7 @@ class T {
|
|
|
897
898
|
};
|
|
898
899
|
}
|
|
899
900
|
}
|
|
900
|
-
const
|
|
901
|
+
const ns = new Uint8Array([112, 108, 121, 10]), rs = new Uint8Array([10, 101, 110, 100, 95, 104, 101, 97, 100, 101, 114, 10]), Tt = "end_header", Bt = /* @__PURE__ */ new Map([
|
|
901
902
|
["char", Int8Array],
|
|
902
903
|
["uchar", Uint8Array],
|
|
903
904
|
["short", Int16Array],
|
|
@@ -909,11 +910,11 @@ const ss = new Uint8Array([112, 108, 121, 10]), ns = new Uint8Array([10, 101, 11
|
|
|
909
910
|
]), Fe = (A, e) => {
|
|
910
911
|
const s = (1 << e) - 1;
|
|
911
912
|
return (A & s) / s;
|
|
912
|
-
},
|
|
913
|
+
}, os = (A, e) => {
|
|
913
914
|
A.x = Fe(e >>> 21, 11), A.y = Fe(e >>> 11, 10), A.z = Fe(e, 11);
|
|
914
|
-
}, sn = (A, e) => {
|
|
915
|
-
A.x = Fe(e >>> 24, 8), A.y = Fe(e >>> 16, 8), A.z = Fe(e >>> 8, 8), A.w = Fe(e, 8);
|
|
916
915
|
}, nn = (A, e) => {
|
|
916
|
+
A.x = Fe(e >>> 24, 8), A.y = Fe(e >>> 16, 8), A.z = Fe(e >>> 8, 8), A.w = Fe(e, 8);
|
|
917
|
+
}, rn = (A, e) => {
|
|
917
918
|
const s = 1 / (Math.sqrt(2) * 0.5), t = (Fe(e >>> 20, 10) - 0.5) * s, n = (Fe(e >>> 10, 10) - 0.5) * s, r = (Fe(e, 10) - 0.5) * s, i = Math.sqrt(1 - (t * t + n * n + r * r));
|
|
918
919
|
switch (e >>> 30) {
|
|
919
920
|
case 0:
|
|
@@ -1007,9 +1008,9 @@ class G {
|
|
|
1007
1008
|
return !0;
|
|
1008
1009
|
};
|
|
1009
1010
|
let n = new Uint8Array(e), r;
|
|
1010
|
-
if (n.length >=
|
|
1011
|
+
if (n.length >= ns.length && !t(n, ns))
|
|
1011
1012
|
throw new Error("Invalid PLY header");
|
|
1012
|
-
if (r = s(n,
|
|
1013
|
+
if (r = s(n, rs), r === -1)
|
|
1013
1014
|
throw new Error("End of PLY header not found");
|
|
1014
1015
|
const i = new TextDecoder("ascii").decode(
|
|
1015
1016
|
n.slice(0, r)
|
|
@@ -1022,7 +1023,7 @@ class G {
|
|
|
1022
1023
|
bytesPerSplat: u
|
|
1023
1024
|
} = G.decodeHeaderText(i);
|
|
1024
1025
|
return {
|
|
1025
|
-
headerSizeBytes: r +
|
|
1026
|
+
headerSizeBytes: r + rs.length,
|
|
1026
1027
|
bytesPerSplat: u,
|
|
1027
1028
|
chunkElement: o,
|
|
1028
1029
|
vertexElement: a,
|
|
@@ -1131,7 +1132,7 @@ class G {
|
|
|
1131
1132
|
return function(i, o, a, c, l, d, u, h, m, p) {
|
|
1132
1133
|
p = p || P.createSplat();
|
|
1133
1134
|
const g = Math.floor((o + i) / 256);
|
|
1134
|
-
return
|
|
1135
|
+
return os(e, a[i]), rn(s, u[i]), os(t, l[i]), nn(n, m[i]), p[r.X] = Re(c.minX[g], c.maxX[g], e.x), p[r.Y] = Re(c.minY[g], c.maxY[g], e.y), p[r.Z] = Re(c.minZ[g], c.maxZ[g], e.z), p[r.ROTATION0] = s.x, p[r.ROTATION1] = s.y, p[r.ROTATION2] = s.z, p[r.ROTATION3] = s.w, p[r.SCALE0] = Math.exp(Re(d.minScaleX[g], d.maxScaleX[g], t.x)), p[r.SCALE1] = Math.exp(Re(d.minScaleY[g], d.maxScaleY[g], t.y)), p[r.SCALE2] = Math.exp(Re(d.minScaleZ[g], d.maxScaleZ[g], t.z)), h.minR && h.maxR ? p[r.FDC0] = ne(Math.round(Re(h.minR[g], h.maxR[g], n.x) * 255), 0, 255) : p[r.FDC0] = ne(Math.floor(n.x * 255), 0, 255), h.minG && h.maxG ? p[r.FDC1] = ne(Math.round(Re(h.minG[g], h.maxG[g], n.y) * 255), 0, 255) : p[r.FDC1] = ne(Math.floor(n.y * 255), 0, 255), h.minB && h.maxB ? p[r.FDC2] = ne(Math.round(Re(h.minB[g], h.maxB[g], n.z) * 255), 0, 255) : p[r.FDC2] = ne(Math.floor(n.z * 255), 0, 255), p[r.OPACITY] = ne(Math.floor(n.w * 255), 0, 255), p;
|
|
1135
1136
|
};
|
|
1136
1137
|
})();
|
|
1137
1138
|
static decompressSphericalHarmonics = /* @__PURE__ */ (function() {
|
|
@@ -1320,23 +1321,23 @@ const Ce = {
|
|
|
1320
1321
|
INRIAV2: 1,
|
|
1321
1322
|
PlayCanvasCompressed: 2
|
|
1322
1323
|
}, [
|
|
1323
|
-
|
|
1324
|
+
ks,
|
|
1324
1325
|
Ut,
|
|
1325
1326
|
zt,
|
|
1326
1327
|
_t,
|
|
1327
1328
|
Qt,
|
|
1328
1329
|
Vt,
|
|
1329
1330
|
Nt
|
|
1330
|
-
] = [0, 1, 2, 3, 4, 5, 6],
|
|
1331
|
-
double:
|
|
1331
|
+
] = [0, 1, 2, 3, 4, 5, 6], is = {
|
|
1332
|
+
double: ks,
|
|
1332
1333
|
int: Ut,
|
|
1333
1334
|
uint: zt,
|
|
1334
1335
|
float: _t,
|
|
1335
1336
|
short: Qt,
|
|
1336
1337
|
ushort: Vt,
|
|
1337
1338
|
uchar: Nt
|
|
1338
|
-
},
|
|
1339
|
-
[
|
|
1339
|
+
}, on = {
|
|
1340
|
+
[ks]: 8,
|
|
1340
1341
|
[Ut]: 4,
|
|
1341
1342
|
[zt]: 4,
|
|
1342
1343
|
[_t]: 4,
|
|
@@ -1372,7 +1373,7 @@ class q {
|
|
|
1372
1373
|
u.push(x);
|
|
1373
1374
|
const w = s[x];
|
|
1374
1375
|
h[x] = E;
|
|
1375
|
-
const y =
|
|
1376
|
+
const y = is[E];
|
|
1376
1377
|
w !== void 0 && (l.push(w), d[w] = y);
|
|
1377
1378
|
}
|
|
1378
1379
|
}
|
|
@@ -1390,7 +1391,7 @@ class q {
|
|
|
1390
1391
|
const I = s[C];
|
|
1391
1392
|
I !== void 0 && (m[I] = p);
|
|
1392
1393
|
}
|
|
1393
|
-
p +=
|
|
1394
|
+
p += on[is[S]];
|
|
1394
1395
|
}
|
|
1395
1396
|
const g = q.decodeSphericalHarmonicsFromSectionHeader(u, s);
|
|
1396
1397
|
return {
|
|
@@ -1516,7 +1517,7 @@ class q {
|
|
|
1516
1517
|
}
|
|
1517
1518
|
}
|
|
1518
1519
|
}
|
|
1519
|
-
const
|
|
1520
|
+
const Ls = [
|
|
1520
1521
|
"scale_0",
|
|
1521
1522
|
"scale_1",
|
|
1522
1523
|
"scale_2",
|
|
@@ -1535,9 +1536,8 @@ const ks = [
|
|
|
1535
1536
|
"green",
|
|
1536
1537
|
"blue",
|
|
1537
1538
|
"f_rest_0"
|
|
1538
|
-
],
|
|
1539
|
-
|
|
1540
|
-
an,
|
|
1539
|
+
], an = Ls.map((A, e) => e), [
|
|
1540
|
+
as,
|
|
1541
1541
|
cn,
|
|
1542
1542
|
ln,
|
|
1543
1543
|
dn,
|
|
@@ -1546,15 +1546,16 @@ const ks = [
|
|
|
1546
1546
|
pn,
|
|
1547
1547
|
fn,
|
|
1548
1548
|
mn,
|
|
1549
|
-
as,
|
|
1550
1549
|
An,
|
|
1551
|
-
gn,
|
|
1552
1550
|
cs,
|
|
1553
|
-
|
|
1551
|
+
gn,
|
|
1554
1552
|
Sn,
|
|
1553
|
+
ls,
|
|
1554
|
+
ds,
|
|
1555
1555
|
Cn,
|
|
1556
|
-
yn
|
|
1557
|
-
|
|
1556
|
+
yn,
|
|
1557
|
+
xn
|
|
1558
|
+
] = an;
|
|
1558
1559
|
class Se {
|
|
1559
1560
|
static decodeHeaderLines(e) {
|
|
1560
1561
|
let s = 0;
|
|
@@ -1564,7 +1565,7 @@ class Se {
|
|
|
1564
1565
|
let t = 0;
|
|
1565
1566
|
s >= 45 ? t = 45 : s >= 24 ? t = 24 : s >= 9 && (t = 9);
|
|
1566
1567
|
let r = Array.from(Array(Math.max(t - 1, 0))).map((l, d) => `f_rest_${d + 1}`);
|
|
1567
|
-
const i = [...
|
|
1568
|
+
const i = [...Ls, ...r], o = i.map((l, d) => d), a = o.reduce((l, d) => (l[i[d]] = d, l), {}), c = q.decodeSectionHeader(e, a, 0);
|
|
1568
1569
|
return c.splatCount = c.vertexCount, c.bytesPerSplat = c.bytesPerVertex, c.fieldsToReadIndexes = o, c;
|
|
1569
1570
|
}
|
|
1570
1571
|
static decodeHeaderText(e) {
|
|
@@ -1644,33 +1645,33 @@ class Se {
|
|
|
1644
1645
|
return function(S, I, E, x = 0, w = 0) {
|
|
1645
1646
|
w = Math.min(w, E.sphericalHarmonicsDegree), Se.readSplat(S, E, I, x, e);
|
|
1646
1647
|
const y = P.createSplat(w);
|
|
1647
|
-
if (e[
|
|
1648
|
+
if (e[as] !== void 0 ? (y[i] = Math.exp(e[as]), y[o] = Math.exp(e[cn]), y[a] = Math.exp(e[ln])) : (y[i] = 0.01, y[o] = 0.01, y[a] = 0.01), e[cs] !== void 0) {
|
|
1648
1649
|
const v = 0.28209479177387814;
|
|
1649
|
-
y[h] = (0.5 + v * e[
|
|
1650
|
-
} else e[
|
|
1651
|
-
if (e[
|
|
1650
|
+
y[h] = (0.5 + v * e[cs]) * 255, y[m] = (0.5 + v * e[gn]) * 255, y[p] = (0.5 + v * e[Sn]) * 255;
|
|
1651
|
+
} else e[ds] !== void 0 ? (y[h] = e[ds] * 255, y[m] = e[Cn] * 255, y[p] = e[yn] * 255) : (y[h] = 0, y[m] = 0, y[p] = 0);
|
|
1652
|
+
if (e[ls] !== void 0 && (y[g] = 1 / (1 + Math.exp(-e[ls])) * 255), y[h] = ne(Math.floor(y[h]), 0, 255), y[m] = ne(Math.floor(y[m]), 0, 255), y[p] = ne(Math.floor(y[p]), 0, 255), y[g] = ne(Math.floor(y[g]), 0, 255), w >= 1 && e[xn] !== void 0) {
|
|
1652
1653
|
for (let v = 0; v < 9; v++)
|
|
1653
1654
|
y[C[v]] = e[E.sphericalHarmonicsDegree1Fields[v]];
|
|
1654
1655
|
if (w >= 2)
|
|
1655
1656
|
for (let v = 0; v < 15; v++)
|
|
1656
1657
|
y[C[9 + v]] = e[E.sphericalHarmonicsDegree2Fields[v]];
|
|
1657
1658
|
}
|
|
1658
|
-
return s.set(e[
|
|
1659
|
+
return s.set(e[dn], e[hn], e[un], e[pn]), s.normalize(), y[c] = s.x, y[l] = s.y, y[d] = s.z, y[u] = s.w, y[t] = e[fn], y[n] = e[mn], y[r] = e[An], y;
|
|
1659
1660
|
};
|
|
1660
1661
|
})();
|
|
1661
1662
|
static readSplat(e, s, t, n, r) {
|
|
1662
1663
|
return q.readVertex(e, s, t, n, s.fieldsToReadIndexes, r, !0);
|
|
1663
1664
|
}
|
|
1664
1665
|
static parseToUncompressedSplatArray(e, s = 0) {
|
|
1665
|
-
const { header: t, splatCount: n, splatData: r } =
|
|
1666
|
+
const { header: t, splatCount: n, splatData: r } = hs(e);
|
|
1666
1667
|
return Se.decodeSectionSplatData(r, n, t, s, !0);
|
|
1667
1668
|
}
|
|
1668
1669
|
static parseToUncompressedSplatBuffer(e, s = 0) {
|
|
1669
|
-
const { header: t, splatCount: n, splatData: r } =
|
|
1670
|
+
const { header: t, splatCount: n, splatData: r } = hs(e);
|
|
1670
1671
|
return Se.decodeSectionSplatData(r, n, t, s, !1);
|
|
1671
1672
|
}
|
|
1672
1673
|
}
|
|
1673
|
-
function
|
|
1674
|
+
function hs(A) {
|
|
1674
1675
|
const e = Se.decodeHeaderFromBuffer(A), s = e.splatCount, t = Se.findSplatData(A, e);
|
|
1675
1676
|
return {
|
|
1676
1677
|
header: e,
|
|
@@ -1678,7 +1679,7 @@ function ds(A) {
|
|
|
1678
1679
|
splatData: t
|
|
1679
1680
|
};
|
|
1680
1681
|
}
|
|
1681
|
-
const
|
|
1682
|
+
const Hs = [
|
|
1682
1683
|
"features_dc",
|
|
1683
1684
|
"features_rest_0",
|
|
1684
1685
|
"features_rest_1",
|
|
@@ -1699,15 +1700,15 @@ const Ls = [
|
|
|
1699
1700
|
"scaling",
|
|
1700
1701
|
"rotation_re",
|
|
1701
1702
|
"rotation_im"
|
|
1702
|
-
], at =
|
|
1703
|
+
], at = Hs.map((A, e) => e), [
|
|
1703
1704
|
ct,
|
|
1704
|
-
xn,
|
|
1705
1705
|
In,
|
|
1706
|
-
hs,
|
|
1707
|
-
lt,
|
|
1708
1706
|
Tn,
|
|
1707
|
+
us,
|
|
1708
|
+
lt,
|
|
1709
|
+
Bn,
|
|
1709
1710
|
Et
|
|
1710
|
-
] = [0, 1, 4, 16, 17, 18, 19],
|
|
1711
|
+
] = [0, 1, 4, 16, 17, 18, 19], Us = [
|
|
1711
1712
|
"scale_0",
|
|
1712
1713
|
"scale_1",
|
|
1713
1714
|
"scale_2",
|
|
@@ -1771,9 +1772,8 @@ const Ls = [
|
|
|
1771
1772
|
"f_rest_43",
|
|
1772
1773
|
"f_rest_44",
|
|
1773
1774
|
"f_rest_45"
|
|
1774
|
-
], Rt =
|
|
1775
|
-
|
|
1776
|
-
Bn,
|
|
1775
|
+
], Rt = Us.map((A, e) => e), [
|
|
1776
|
+
ps,
|
|
1777
1777
|
En,
|
|
1778
1778
|
wn,
|
|
1779
1779
|
vn,
|
|
@@ -1782,17 +1782,18 @@ const Ls = [
|
|
|
1782
1782
|
bn,
|
|
1783
1783
|
Mn,
|
|
1784
1784
|
Rn,
|
|
1785
|
+
Pn,
|
|
1785
1786
|
Pt,
|
|
1786
|
-
Us,
|
|
1787
1787
|
zs,
|
|
1788
|
-
|
|
1789
|
-
|
|
1788
|
+
_s,
|
|
1789
|
+
fs
|
|
1790
|
+
] = Rt, ms = Pt, On = zs, kn = _s, dt = (A) => {
|
|
1790
1791
|
const e = (31744 & A) >> 10, s = 1023 & A;
|
|
1791
1792
|
return (A >> 15 ? -1 : 1) * (e ? e === 31 ? s ? NaN : 1 / 0 : Math.pow(2, e - 15) * (1 + s / 1024) : s / 1024 * 6103515625e-14);
|
|
1792
1793
|
};
|
|
1793
1794
|
class Be {
|
|
1794
1795
|
static decodeSectionHeadersFromHeaderLines(e) {
|
|
1795
|
-
const s = Rt.reduce((l, d) => (l[
|
|
1796
|
+
const s = Rt.reduce((l, d) => (l[Us[d]] = d, l), {}), t = at.reduce((l, d) => (l[Hs[d]] = d, l), {}), n = q.getHeaderSectionNames(e);
|
|
1796
1797
|
let r;
|
|
1797
1798
|
for (let l = 0; l < n.length; l++)
|
|
1798
1799
|
n[l] === "codebook_centers" && (r = l);
|
|
@@ -1849,7 +1850,7 @@ class Be {
|
|
|
1849
1850
|
const i = n[r], o = 0.28209479177387814;
|
|
1850
1851
|
for (let a = 0; a < i.length; a++) {
|
|
1851
1852
|
const c = dt(i[a]);
|
|
1852
|
-
r ===
|
|
1853
|
+
r === us ? i[a] = Math.round(1 / (1 + Math.exp(-c)) * 255) : r === ct ? i[a] = Math.round((0.5 + o * c) * 255) : r === lt ? i[a] = Math.exp(c) : i[a] = c;
|
|
1853
1854
|
}
|
|
1854
1855
|
}
|
|
1855
1856
|
return n;
|
|
@@ -1878,19 +1879,19 @@ class Be {
|
|
|
1878
1879
|
return function(S, I, E, x, w = 0, y = 0) {
|
|
1879
1880
|
y = Math.min(y, E.sphericalHarmonicsDegree), Be.readSplat(S, E, I, w, e);
|
|
1880
1881
|
const v = P.createSplat(y);
|
|
1881
|
-
if (e[
|
|
1882
|
+
if (e[ps] !== void 0 ? (v[i] = x[lt][e[ps]], v[o] = x[lt][e[En]], v[a] = x[lt][e[wn]]) : (v[i] = 0.01, v[o] = 0.01, v[a] = 0.01), e[Pt] !== void 0 ? (v[h] = x[ct][e[Pt]], v[m] = x[ct][e[zs]], v[p] = x[ct][e[_s]]) : e[ms] !== void 0 ? (v[h] = e[ms] * 255, v[m] = e[On] * 255, v[p] = e[kn] * 255) : (v[h] = 0, v[m] = 0, v[p] = 0), e[fs] !== void 0 && (v[g] = x[us][e[fs]]), v[h] = ne(Math.floor(v[h]), 0, 255), v[m] = ne(Math.floor(v[m]), 0, 255), v[p] = ne(Math.floor(v[p]), 0, 255), v[g] = ne(Math.floor(v[g]), 0, 255), y >= 1 && E.sphericalHarmonicsDegree >= 1) {
|
|
1882
1883
|
for (let k = 0; k < 9; k++) {
|
|
1883
|
-
const M = x[
|
|
1884
|
+
const M = x[In + k % 3];
|
|
1884
1885
|
v[C[k]] = M[e[E.sphericalHarmonicsDegree1Fields[k]]];
|
|
1885
1886
|
}
|
|
1886
1887
|
if (y >= 2 && E.sphericalHarmonicsDegree >= 2)
|
|
1887
1888
|
for (let k = 0; k < 15; k++) {
|
|
1888
|
-
const M = x[
|
|
1889
|
+
const M = x[Tn + k % 5];
|
|
1889
1890
|
v[C[9 + k]] = M[e[E.sphericalHarmonicsDegree2Fields[k]]];
|
|
1890
1891
|
}
|
|
1891
1892
|
}
|
|
1892
|
-
const D = x[
|
|
1893
|
-
return s.set(D, b, F, R), s.normalize(), v[c] = s.x, v[l] = s.y, v[d] = s.z, v[u] = s.w, v[t] = dt(e[
|
|
1893
|
+
const D = x[Bn][e[vn]], b = x[Et][e[Dn]], F = x[Et][e[Fn]], R = x[Et][e[bn]];
|
|
1894
|
+
return s.set(D, b, F, R), s.normalize(), v[c] = s.x, v[l] = s.y, v[d] = s.z, v[u] = s.w, v[t] = dt(e[Mn]), v[n] = dt(e[Rn]), v[r] = dt(e[Pn]), v;
|
|
1894
1895
|
};
|
|
1895
1896
|
})();
|
|
1896
1897
|
static readSplat(e, s, t, n, r) {
|
|
@@ -1926,7 +1927,7 @@ class Be {
|
|
|
1926
1927
|
return i;
|
|
1927
1928
|
}
|
|
1928
1929
|
}
|
|
1929
|
-
class
|
|
1930
|
+
class As {
|
|
1930
1931
|
static parseToUncompressedSplatArray(e, s = 0) {
|
|
1931
1932
|
const t = q.determineHeaderFormatFromPlyBuffer(e);
|
|
1932
1933
|
if (t === Ce.PlayCanvasCompressed)
|
|
@@ -2046,7 +2047,7 @@ const $ = {
|
|
|
2046
2047
|
ProgressiveToSplatArray: 1,
|
|
2047
2048
|
DownloadBeforeProcessing: 2
|
|
2048
2049
|
};
|
|
2049
|
-
function
|
|
2050
|
+
function gs(A, e) {
|
|
2050
2051
|
let s = 0;
|
|
2051
2052
|
for (let n of A) s += n.sizeBytes;
|
|
2052
2053
|
(!e || e.byteLength < s) && (e = new ArrayBuffer(s));
|
|
@@ -2055,7 +2056,7 @@ function As(A, e) {
|
|
|
2055
2056
|
new Uint8Array(e, t, n.sizeBytes).set(n.data), t += n.sizeBytes;
|
|
2056
2057
|
return e;
|
|
2057
2058
|
}
|
|
2058
|
-
function
|
|
2059
|
+
function Ss(A, e, s, t, n, r, i, o) {
|
|
2059
2060
|
return e ? rt.getStandardGenerator(
|
|
2060
2061
|
s,
|
|
2061
2062
|
t,
|
|
@@ -2086,7 +2087,7 @@ class qt {
|
|
|
2086
2087
|
if (b) {
|
|
2087
2088
|
if (S === Ce.PlayCanvasCompressed && !F) {
|
|
2088
2089
|
const ae = H.headerSizeBytes + H.chunkElement.storageSizeBytes;
|
|
2089
|
-
w =
|
|
2090
|
+
w = gs(Q, w), w.byteLength >= ae && (G.readElementData(
|
|
2090
2091
|
H.chunkElement,
|
|
2091
2092
|
w,
|
|
2092
2093
|
H.headerSizeBytes
|
|
@@ -2125,7 +2126,7 @@ class qt {
|
|
|
2125
2126
|
Z = new P(a);
|
|
2126
2127
|
M = H.headerSizeBytes, O = H.headerSizeBytes, b = !0;
|
|
2127
2128
|
}
|
|
2128
|
-
if (b && F && Q.length > 0 && (I =
|
|
2129
|
+
if (b && F && Q.length > 0 && (I = gs(Q, I), L - M > p || L >= U && !R || Y)) {
|
|
2129
2130
|
const ce = R ? H.sphericalHarmonicsPerSplat : H.bytesPerSplat, Ae = (R ? L : Math.min(U, L)) - O, he = Math.floor(Ae / ce), te = he * ce, ue = L - O - te, J = O - Q[0].startBytes, we = new DataView(I, J, te);
|
|
2130
2131
|
if (R)
|
|
2131
2132
|
S === Ce.PlayCanvasCompressed && m === $.ProgressiveToSplatArray && (G.parseSphericalHarmonicsToUncompressedSplatArraySection(
|
|
@@ -2222,7 +2223,7 @@ class qt {
|
|
|
2222
2223
|
u,
|
|
2223
2224
|
h
|
|
2224
2225
|
));
|
|
2225
|
-
} else return m === $.ProgressiveToSplatBuffer ? ee : Ee(() =>
|
|
2226
|
+
} else return m === $.ProgressiveToSplatBuffer ? ee : Ee(() => Ss(
|
|
2226
2227
|
ee,
|
|
2227
2228
|
o,
|
|
2228
2229
|
r,
|
|
@@ -2235,7 +2236,7 @@ class qt {
|
|
|
2235
2236
|
})));
|
|
2236
2237
|
}
|
|
2237
2238
|
static loadFromFileData(e, s, t, n, r = 0, i, o, a, c) {
|
|
2238
|
-
return n ? Ee(() =>
|
|
2239
|
+
return n ? Ee(() => As.parseToUncompressedSplatArray(e, r)).then((l) => Ss(
|
|
2239
2240
|
l,
|
|
2240
2241
|
n,
|
|
2241
2242
|
s,
|
|
@@ -2244,33 +2245,33 @@ class qt {
|
|
|
2244
2245
|
o,
|
|
2245
2246
|
a,
|
|
2246
2247
|
c
|
|
2247
|
-
)) : Ee(() =>
|
|
2248
|
+
)) : Ee(() => As.parseToUncompressedSplatBuffer(e, r));
|
|
2248
2249
|
}
|
|
2249
2250
|
}
|
|
2250
|
-
const
|
|
2251
|
+
const Ln = (A) => new ReadableStream({
|
|
2251
2252
|
async start(e) {
|
|
2252
2253
|
e.enqueue(A), e.close();
|
|
2253
2254
|
}
|
|
2254
2255
|
});
|
|
2255
|
-
async function
|
|
2256
|
+
async function Hn(A) {
|
|
2256
2257
|
try {
|
|
2257
|
-
const e =
|
|
2258
|
+
const e = Ln(A);
|
|
2258
2259
|
if (!e) throw new Error("Failed to create stream from data");
|
|
2259
|
-
return await
|
|
2260
|
+
return await Un(e);
|
|
2260
2261
|
} catch (e) {
|
|
2261
2262
|
throw console.error("Error decompressing gzipped data:", e), e;
|
|
2262
2263
|
}
|
|
2263
2264
|
}
|
|
2264
|
-
async function
|
|
2265
|
+
async function Un(A) {
|
|
2265
2266
|
const e = A.pipeThrough(new DecompressionStream("gzip")), t = await new Response(e).arrayBuffer();
|
|
2266
2267
|
return new Uint8Array(t);
|
|
2267
2268
|
}
|
|
2268
|
-
const
|
|
2269
|
-
function
|
|
2269
|
+
const zn = 1347635022, _n = 1, Qn = 0.15;
|
|
2270
|
+
function Vn(A) {
|
|
2270
2271
|
const e = A >> 15 & 1, s = A >> 10 & 31, t = A & 1023, n = e === 1 ? -1 : 1;
|
|
2271
2272
|
return s === 0 ? n * Math.pow(2, -14) * t / 1024 : s === 31 ? t !== 0 ? NaN : n * (1 / 0) : n * Math.pow(2, s - 15) * (1 + t / 1024);
|
|
2272
2273
|
}
|
|
2273
|
-
function
|
|
2274
|
+
function Nn(A) {
|
|
2274
2275
|
return (A - 128) / 128;
|
|
2275
2276
|
}
|
|
2276
2277
|
function Ue(A) {
|
|
@@ -2287,7 +2288,7 @@ function Ue(A) {
|
|
|
2287
2288
|
return console.error(`[SPZ: ERROR] Unsupported SH degree: ${A}`), 0;
|
|
2288
2289
|
}
|
|
2289
2290
|
}
|
|
2290
|
-
const
|
|
2291
|
+
const Gn = (function() {
|
|
2291
2292
|
let A = [];
|
|
2292
2293
|
const e = new f.Quaternion(), s = P.OFFSET.X, t = P.OFFSET.Y, n = P.OFFSET.Z, r = P.OFFSET.SCALE0, i = P.OFFSET.SCALE1, o = P.OFFSET.SCALE2, a = P.OFFSET.ROTATION0, c = P.OFFSET.ROTATION1, l = P.OFFSET.ROTATION2, d = P.OFFSET.ROTATION3, u = P.OFFSET.FDC0, h = P.OFFSET.FDC1, m = P.OFFSET.FDC2, p = P.OFFSET.OPACITY, g = [Ue(0), Ue(1), Ue(2), Ue(3)], C = [
|
|
2293
2294
|
0,
|
|
@@ -2349,13 +2350,13 @@ const Nn = (function() {
|
|
|
2349
2350
|
return e.set(S.rotation[3], S.rotation[0], S.rotation[1], S.rotation[2]), e.normalize(), x[a] = e.x, x[c] = e.y, x[l] = e.z, x[d] = e.w, x[s] = S.position[0], x[t] = S.position[1], x[n] = S.position[2], x;
|
|
2350
2351
|
};
|
|
2351
2352
|
})();
|
|
2352
|
-
function
|
|
2353
|
+
function qn(A, e, s, t) {
|
|
2353
2354
|
return !(A.positions.length !== e * 3 * (t ? 2 : 3) || A.scales.length !== e * 3 || A.rotations.length !== e * 3 || A.alphas.length !== e || A.colors.length !== e * 3 || A.sh.length !== e * s * 3);
|
|
2354
2355
|
}
|
|
2355
|
-
function
|
|
2356
|
+
function Cs(A, e, s, t, n) {
|
|
2356
2357
|
e = Math.min(e, A.shDegree);
|
|
2357
2358
|
const r = A.numPoints, i = Ue(A.shDegree), o = A.positions.length === r * 3 * 2;
|
|
2358
|
-
if (!
|
|
2359
|
+
if (!qn(A, r, i, o))
|
|
2359
2360
|
return null;
|
|
2360
2361
|
const a = {
|
|
2361
2362
|
position: [],
|
|
@@ -2371,7 +2372,7 @@ function Ss(A, e, s, t, n) {
|
|
|
2371
2372
|
for (let h = 0; h < r; h++) {
|
|
2372
2373
|
if (o)
|
|
2373
2374
|
for (let S = 0; S < 3; S++)
|
|
2374
|
-
a.position[S] =
|
|
2375
|
+
a.position[S] = Vn(c[h * 3 + S]);
|
|
2375
2376
|
else
|
|
2376
2377
|
for (let S = 0; S < 3; S++) {
|
|
2377
2378
|
const I = h * 9 + S * 3;
|
|
@@ -2389,11 +2390,11 @@ function Ss(A, e, s, t, n) {
|
|
|
2389
2390
|
const g = p[0] * p[0] + p[1] * p[1] + p[2] * p[2];
|
|
2390
2391
|
a.rotation[3] = Math.sqrt(Math.max(0, 1 - g)), a.alpha = Math.floor(A.alphas[h]);
|
|
2391
2392
|
for (let S = 0; S < 3; S++)
|
|
2392
|
-
a.color[S] = Math.floor(((A.colors[h * 3 + S] / 255 - 0.5) /
|
|
2393
|
+
a.color[S] = Math.floor(((A.colors[h * 3 + S] / 255 - 0.5) / Qn * u + 0.5) * 255);
|
|
2393
2394
|
for (let S = 0; S < 3; S++)
|
|
2394
2395
|
for (let I = 0; I < d; I++)
|
|
2395
|
-
a.sh[S * d + I] =
|
|
2396
|
-
const C =
|
|
2396
|
+
a.sh[S * d + I] = Nn(A.sh[d * 3 * h + I * 3 + S]);
|
|
2397
|
+
const C = Gn(a, A.shDegree, e);
|
|
2397
2398
|
if (s) {
|
|
2398
2399
|
const S = T.CompressionLevels[0].SphericalHarmonicsDegrees[e].BytesPerSplat, I = h * S + n;
|
|
2399
2400
|
T.writeSplatDataToSectionBuffer(C, t, I, 0, e);
|
|
@@ -2401,8 +2402,8 @@ function Ss(A, e, s, t, n) {
|
|
|
2401
2402
|
t.addSplat(C);
|
|
2402
2403
|
}
|
|
2403
2404
|
}
|
|
2404
|
-
const
|
|
2405
|
-
function
|
|
2405
|
+
const Wn = 16, Kn = 1e7;
|
|
2406
|
+
function jn(A) {
|
|
2406
2407
|
const e = new DataView(A);
|
|
2407
2408
|
let s = 0;
|
|
2408
2409
|
const t = {
|
|
@@ -2414,11 +2415,11 @@ function Kn(A) {
|
|
|
2414
2415
|
flags: e.getUint8(s + 14),
|
|
2415
2416
|
reserved: e.getUint8(s + 15)
|
|
2416
2417
|
};
|
|
2417
|
-
if (s +=
|
|
2418
|
+
if (s += Wn, t.magic !== zn)
|
|
2418
2419
|
return console.error("[SPZ ERROR] deserializePackedGaussians: header not found"), null;
|
|
2419
2420
|
if (t.version < 1 || t.version > 2)
|
|
2420
2421
|
return console.error(`[SPZ ERROR] deserializePackedGaussians: version not supported: ${t.version}`), null;
|
|
2421
|
-
if (t.numPoints >
|
|
2422
|
+
if (t.numPoints > Kn)
|
|
2422
2423
|
return console.error(`[SPZ ERROR] deserializePackedGaussians: Too many points: ${t.numPoints}`), null;
|
|
2423
2424
|
if (t.shDegree > 3)
|
|
2424
2425
|
return console.error(`[SPZ ERROR] deserializePackedGaussians: Unsupported SH degree: ${t.shDegree}`), null;
|
|
@@ -2426,7 +2427,7 @@ function Kn(A) {
|
|
|
2426
2427
|
numPoints: n,
|
|
2427
2428
|
shDegree: t.shDegree,
|
|
2428
2429
|
fractionalBits: t.fractionalBits,
|
|
2429
|
-
antialiased: (t.flags &
|
|
2430
|
+
antialiased: (t.flags & _n) !== 0,
|
|
2430
2431
|
positions: new Uint8Array(n * 3 * (i ? 2 : 3)),
|
|
2431
2432
|
scales: new Uint8Array(n * 3),
|
|
2432
2433
|
rotations: new Uint8Array(n * 3),
|
|
@@ -2444,10 +2445,10 @@ function Kn(A) {
|
|
|
2444
2445
|
}
|
|
2445
2446
|
return o;
|
|
2446
2447
|
}
|
|
2447
|
-
async function
|
|
2448
|
+
async function Yn(A) {
|
|
2448
2449
|
try {
|
|
2449
|
-
const e = await
|
|
2450
|
-
return
|
|
2450
|
+
const e = await Hn(A);
|
|
2451
|
+
return jn(e.buffer);
|
|
2451
2452
|
} catch (e) {
|
|
2452
2453
|
return console.error("[SPZ ERROR] loadSpzPacked: decompression error", e), null;
|
|
2453
2454
|
}
|
|
@@ -2468,11 +2469,11 @@ class Wt {
|
|
|
2468
2469
|
}
|
|
2469
2470
|
static async loadFromFileData(e, s, t, n, r = 0, i, o, a, c) {
|
|
2470
2471
|
await Ee();
|
|
2471
|
-
const l = await
|
|
2472
|
+
const l = await Yn(e);
|
|
2472
2473
|
r = Math.min(l.shDegree, r);
|
|
2473
2474
|
const d = new P(r);
|
|
2474
2475
|
if (n)
|
|
2475
|
-
return
|
|
2476
|
+
return Cs(l, r, !1, d, 0), rt.getStandardGenerator(
|
|
2476
2477
|
s,
|
|
2477
2478
|
t,
|
|
2478
2479
|
i,
|
|
@@ -2485,7 +2486,7 @@ class Wt {
|
|
|
2485
2486
|
splatBuffer: u,
|
|
2486
2487
|
splatBufferDataOffsetBytes: h
|
|
2487
2488
|
} = T.preallocateUncompressed(l.numPoints, r);
|
|
2488
|
-
return
|
|
2489
|
+
return Cs(l, r, !0, u.bufferData, h), u;
|
|
2489
2490
|
}
|
|
2490
2491
|
}
|
|
2491
2492
|
}
|
|
@@ -2564,7 +2565,7 @@ class K {
|
|
|
2564
2565
|
return t;
|
|
2565
2566
|
}
|
|
2566
2567
|
}
|
|
2567
|
-
function
|
|
2568
|
+
function ys(A, e, s, t, n, r, i, o) {
|
|
2568
2569
|
return e ? rt.getStandardGenerator(
|
|
2569
2570
|
s,
|
|
2570
2571
|
t,
|
|
@@ -2650,7 +2651,7 @@ class Kt {
|
|
|
2650
2651
|
l,
|
|
2651
2652
|
d,
|
|
2652
2653
|
u
|
|
2653
|
-
)) : h === $.ProgressiveToSplatBuffer ? R : Ee(() =>
|
|
2654
|
+
)) : h === $.ProgressiveToSplatBuffer ? R : Ee(() => ys(
|
|
2654
2655
|
R,
|
|
2655
2656
|
o,
|
|
2656
2657
|
r,
|
|
@@ -2664,7 +2665,7 @@ class Kt {
|
|
|
2664
2665
|
static loadFromFileData(e, s, t, n, r, i, o, a) {
|
|
2665
2666
|
return Ee(() => {
|
|
2666
2667
|
const c = K.parseStandardSplatToUncompressedSplatArray(e);
|
|
2667
|
-
return
|
|
2668
|
+
return ys(
|
|
2668
2669
|
c,
|
|
2669
2670
|
n,
|
|
2670
2671
|
s,
|
|
@@ -2776,8 +2777,8 @@ const xe = {
|
|
|
2776
2777
|
KSplat: 1,
|
|
2777
2778
|
Ply: 2,
|
|
2778
2779
|
Spz: 3
|
|
2779
|
-
},
|
|
2780
|
-
class ut extends
|
|
2780
|
+
}, xs = (A) => A.endsWith(".ply") ? xe.Ply : A.endsWith(".splat") ? xe.Splat : A.endsWith(".ksplat") ? xe.KSplat : A.endsWith(".spz") ? xe.Spz : null, Is = { type: "change" }, wt = { type: "start" }, Ts = { type: "end" }, ht = new Ks(), Bs = new js(), Xn = Math.cos(70 * Ys.DEG2RAD);
|
|
2781
|
+
class ut extends Xs {
|
|
2781
2782
|
constructor(e, s) {
|
|
2782
2783
|
super(), this.object = e, this.domElement = s, this.domElement.style.touchAction = "none", this.enabled = !0, this.target = new ye(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "KeyA", UP: "KeyW", RIGHT: "KeyD", BOTTOM: "KeyS" }, this.mouseButtons = { LEFT: _e.ROTATE, MIDDLE: _e.DOLLY, RIGHT: _e.PAN }, this.touches = { ONE: Qe.ROTATE, TWO: Qe.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this.getPolarAngle = function() {
|
|
2783
2784
|
return o.phi;
|
|
@@ -2792,7 +2793,7 @@ class ut extends Ys {
|
|
|
2792
2793
|
}, this.saveState = function() {
|
|
2793
2794
|
t.target0.copy(t.target), t.position0.copy(t.object.position), t.zoom0 = t.object.zoom;
|
|
2794
2795
|
}, this.reset = function() {
|
|
2795
|
-
t.target.copy(t.target0), t.object.position.copy(t.position0), t.object.zoom = t.zoom0, this.clearDampedRotation(), this.clearDampedPan(), t.object.updateProjectionMatrix(), t.dispatchEvent(
|
|
2796
|
+
t.target.copy(t.target0), t.object.position.copy(t.position0), t.object.zoom = t.zoom0, this.clearDampedRotation(), this.clearDampedPan(), t.object.updateProjectionMatrix(), t.dispatchEvent(Is), t.update(), r = n.NONE;
|
|
2796
2797
|
}, this.clearDampedRotation = function() {
|
|
2797
2798
|
a.theta = 0, a.phi = 0;
|
|
2798
2799
|
}, this.clearDampedPan = function() {
|
|
@@ -2820,9 +2821,9 @@ class ut extends Ys {
|
|
|
2820
2821
|
it.unproject(t.object), t.object.position.sub(it).add(Ze), t.object.updateMatrixWorld(), Je = B.length();
|
|
2821
2822
|
} else
|
|
2822
2823
|
console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), t.zoomToCursor = !1;
|
|
2823
|
-
Je !== null && (this.screenSpacePanning ? t.target.set(0, 0, -1).transformDirection(t.object.matrix).multiplyScalar(Je).add(t.object.position) : (ht.origin.copy(t.object.position), ht.direction.set(0, 0, -1).transformDirection(t.object.matrix), Math.abs(t.object.up.dot(ht.direction)) <
|
|
2824
|
+
Je !== null && (this.screenSpacePanning ? t.target.set(0, 0, -1).transformDirection(t.object.matrix).multiplyScalar(Je).add(t.object.position) : (ht.origin.copy(t.object.position), ht.direction.set(0, 0, -1).transformDirection(t.object.matrix), Math.abs(t.object.up.dot(ht.direction)) < Xn ? e.lookAt(t.target) : (Bs.setFromNormalAndCoplanarPoint(t.object.up, t.target), ht.intersectPlane(Bs, t.target))));
|
|
2824
2825
|
} else t.object.isOrthographicCamera && (t.object.zoom = Math.max(t.minZoom, Math.min(t.maxZoom, t.object.zoom / c)), t.object.updateProjectionMatrix(), ot = !0);
|
|
2825
|
-
return c = 1, w = !1, ot || pe.distanceToSquared(t.object.position) > i || 8 * (1 - Te.dot(t.object.quaternion)) > i || ze.distanceToSquared(t.target) > 0 ? (t.dispatchEvent(
|
|
2826
|
+
return c = 1, w = !1, ot || pe.distanceToSquared(t.object.position) > i || 8 * (1 - Te.dot(t.object.quaternion)) > i || ze.distanceToSquared(t.target) > 0 ? (t.dispatchEvent(Is), pe.copy(t.object.position), Te.copy(t.object.quaternion), ze.copy(t.target), ot = !1, !0) : !1;
|
|
2826
2827
|
};
|
|
2827
2828
|
})(), this.dispose = function() {
|
|
2828
2829
|
t.domElement.removeEventListener("contextmenu", Zt), t.domElement.removeEventListener("pointerdown", me), t.domElement.removeEventListener("pointercancel", Oe), t.domElement.removeEventListener("wheel", Jt), t.domElement.removeEventListener("pointermove", Ie), t.domElement.removeEventListener("pointerup", Oe), t._domElementKeyEvents !== null && (t._domElementKeyEvents.removeEventListener("keydown", Ct), t._domElementKeyEvents = null);
|
|
@@ -2991,15 +2992,15 @@ class ut extends Ys {
|
|
|
2991
2992
|
t.enableZoom && J(B), t.enableRotate && te(B);
|
|
2992
2993
|
}
|
|
2993
2994
|
function me(B) {
|
|
2994
|
-
t.enabled !== !1 && (y.length === 0 && (t.domElement.setPointerCapture(B.pointerId), t.domElement.addEventListener("pointermove", Ie), t.domElement.addEventListener("pointerup", Oe)),
|
|
2995
|
+
t.enabled !== !1 && (y.length === 0 && (t.domElement.setPointerCapture(B.pointerId), t.domElement.addEventListener("pointermove", Ie), t.domElement.addEventListener("pointerup", Oe)), qs(B), B.pointerType === "touch" ? Ns(B) : Qs(B));
|
|
2995
2996
|
}
|
|
2996
2997
|
function Ie(B) {
|
|
2997
|
-
t.enabled !== !1 && (B.pointerType === "touch" ?
|
|
2998
|
+
t.enabled !== !1 && (B.pointerType === "touch" ? Gs(B) : Vs(B));
|
|
2998
2999
|
}
|
|
2999
3000
|
function Oe(B) {
|
|
3000
|
-
|
|
3001
|
+
Ws(B), y.length === 0 && (t.domElement.releasePointerCapture(B.pointerId), t.domElement.removeEventListener("pointermove", Ie), t.domElement.removeEventListener("pointerup", Oe)), t.dispatchEvent(Ts), r = n.NONE;
|
|
3001
3002
|
}
|
|
3002
|
-
function
|
|
3003
|
+
function Qs(B) {
|
|
3003
3004
|
let z;
|
|
3004
3005
|
switch (B.button) {
|
|
3005
3006
|
case 0:
|
|
@@ -3042,7 +3043,7 @@ class ut extends Ys {
|
|
|
3042
3043
|
}
|
|
3043
3044
|
r !== n.NONE && t.dispatchEvent(wt);
|
|
3044
3045
|
}
|
|
3045
|
-
function
|
|
3046
|
+
function Vs(B) {
|
|
3046
3047
|
switch (r) {
|
|
3047
3048
|
case n.ROTATE:
|
|
3048
3049
|
if (t.enableRotate === !1) return;
|
|
@@ -3059,12 +3060,12 @@ class ut extends Ys {
|
|
|
3059
3060
|
}
|
|
3060
3061
|
}
|
|
3061
3062
|
function Jt(B) {
|
|
3062
|
-
t.enabled === !1 || t.enableZoom === !1 || r !== n.NONE || (B.preventDefault(), t.dispatchEvent(wt), N(B), t.dispatchEvent(
|
|
3063
|
+
t.enabled === !1 || t.enableZoom === !1 || r !== n.NONE || (B.preventDefault(), t.dispatchEvent(wt), N(B), t.dispatchEvent(Ts));
|
|
3063
3064
|
}
|
|
3064
3065
|
function Ct(B) {
|
|
3065
3066
|
t.enabled === !1 || t.enablePan === !1 || Y(B);
|
|
3066
3067
|
}
|
|
3067
|
-
function
|
|
3068
|
+
function Ns(B) {
|
|
3068
3069
|
switch ($t(B), y.length) {
|
|
3069
3070
|
case 1:
|
|
3070
3071
|
switch (t.touches.ONE) {
|
|
@@ -3099,7 +3100,7 @@ class ut extends Ys {
|
|
|
3099
3100
|
}
|
|
3100
3101
|
r !== n.NONE && t.dispatchEvent(wt);
|
|
3101
3102
|
}
|
|
3102
|
-
function
|
|
3103
|
+
function Gs(B) {
|
|
3103
3104
|
switch ($t(B), r) {
|
|
3104
3105
|
case n.TOUCH_ROTATE:
|
|
3105
3106
|
if (t.enableRotate === !1) return;
|
|
@@ -3124,10 +3125,10 @@ class ut extends Ys {
|
|
|
3124
3125
|
function Zt(B) {
|
|
3125
3126
|
t.enabled !== !1 && B.preventDefault();
|
|
3126
3127
|
}
|
|
3127
|
-
function
|
|
3128
|
+
function qs(B) {
|
|
3128
3129
|
y.push(B);
|
|
3129
3130
|
}
|
|
3130
|
-
function
|
|
3131
|
+
function Ws(B) {
|
|
3131
3132
|
delete v[B.pointerId];
|
|
3132
3133
|
for (let z = 0; z < y.length; z++)
|
|
3133
3134
|
if (y[z].pointerId == B.pointerId) {
|
|
@@ -3146,7 +3147,7 @@ class ut extends Ys {
|
|
|
3146
3147
|
t.domElement.addEventListener("contextmenu", Zt), t.domElement.addEventListener("pointerdown", me), t.domElement.addEventListener("pointercancel", Oe), t.domElement.addEventListener("wheel", Jt, { passive: !1 }), this.update();
|
|
3147
3148
|
}
|
|
3148
3149
|
}
|
|
3149
|
-
const
|
|
3150
|
+
const Jn = (A, e, s, t, n) => {
|
|
3150
3151
|
const r = performance.now();
|
|
3151
3152
|
let i = A.style.display === "none" ? 0 : parseFloat(A.style.opacity);
|
|
3152
3153
|
isNaN(i) && (i = 1);
|
|
@@ -3158,7 +3159,7 @@ const Xn = (A, e, s, t, n) => {
|
|
|
3158
3159
|
e ? (d = (1 - l) * i, d < 1e-4 && (d = 0)) : d = (1 - i) * l + i, d > 0 ? (A.style.display = s, A.style.opacity = d) : A.style.display = "none", l >= 1 && (n && n(), window.clearInterval(o));
|
|
3159
3160
|
}, 16);
|
|
3160
3161
|
return o;
|
|
3161
|
-
},
|
|
3162
|
+
}, Zn = 500;
|
|
3162
3163
|
class jt {
|
|
3163
3164
|
static elementIDGen = 0;
|
|
3164
3165
|
constructor(e, s) {
|
|
@@ -3310,7 +3311,7 @@ class jt {
|
|
|
3310
3311
|
}
|
|
3311
3312
|
setMinimized(e, s) {
|
|
3312
3313
|
const t = (n, r, i, o, a) => {
|
|
3313
|
-
i ? n.style.display = r ? o : "none" : this.fadeTransitions[a] =
|
|
3314
|
+
i ? n.style.display = r ? o : "none" : this.fadeTransitions[a] = Jn(n, !r, o, Zn, () => {
|
|
3314
3315
|
this.fadeTransitions[a] = null;
|
|
3315
3316
|
});
|
|
3316
3317
|
};
|
|
@@ -3320,7 +3321,7 @@ class jt {
|
|
|
3320
3321
|
this.messageContainerPrimary.innerHTML = e, this.messageContainerMin.innerHTML = e;
|
|
3321
3322
|
}
|
|
3322
3323
|
}
|
|
3323
|
-
class
|
|
3324
|
+
class $n {
|
|
3324
3325
|
constructor(e) {
|
|
3325
3326
|
this.idGen = 0, this.tasks = [], this.container = e || document.body, this.progressBarContainerOuter = document.createElement("div"), this.progressBarContainerOuter.className = "progressBarOuterContainer", this.progressBarContainerOuter.style.display = "none", this.progressBarBox = document.createElement("div"), this.progressBarBox.className = "progressBarBox", this.progressBarBackground = document.createElement("div"), this.progressBarBackground.className = "progressBarBackground", this.progressBar = document.createElement("div"), this.progressBar.className = "progressBar", this.progressBarBackground.appendChild(this.progressBar), this.progressBarBox.appendChild(this.progressBarBackground), this.progressBarContainerOuter.appendChild(this.progressBarBox);
|
|
3326
3327
|
const s = document.createElement("style");
|
|
@@ -3384,7 +3385,7 @@ class Zn {
|
|
|
3384
3385
|
this.container && this.progressBarContainerOuter.parentElement === this.container && this.container.removeChild(this.progressBarContainerOuter), e && (this.container = e, this.container.appendChild(this.progressBarContainerOuter), this.progressBarContainerOuter.style.zIndex = this.container.style.zIndex + 1);
|
|
3385
3386
|
}
|
|
3386
3387
|
}
|
|
3387
|
-
class
|
|
3388
|
+
class er {
|
|
3388
3389
|
constructor(e) {
|
|
3389
3390
|
this.container = e || document.body, this.infoCells = {};
|
|
3390
3391
|
const s = [
|
|
@@ -3473,8 +3474,8 @@ class $n {
|
|
|
3473
3474
|
this.infoPanelContainer.style.display = "none", this.visible = !1;
|
|
3474
3475
|
}
|
|
3475
3476
|
}
|
|
3476
|
-
const
|
|
3477
|
-
class
|
|
3477
|
+
const Es = new f.Vector3();
|
|
3478
|
+
class tr extends f.Object3D {
|
|
3478
3479
|
constructor(e = new f.Vector3(0, 0, 1), s = new f.Vector3(0, 0, 0), t = 1, n = 0.1, r = 16776960, i = t * 0.2, o = i * 0.2) {
|
|
3479
3480
|
super(), this.type = "ArrowHelper";
|
|
3480
3481
|
const a = new f.CylinderGeometry(n, n, t, 32);
|
|
@@ -3488,9 +3489,9 @@ class er extends f.Object3D {
|
|
|
3488
3489
|
else if (e.y < -0.99999)
|
|
3489
3490
|
this.quaternion.set(1, 0, 0, 0);
|
|
3490
3491
|
else {
|
|
3491
|
-
|
|
3492
|
+
Es.set(e.z, 0, -e.x).normalize();
|
|
3492
3493
|
const s = Math.acos(e.y);
|
|
3493
|
-
this.quaternion.setFromAxisAngle(
|
|
3494
|
+
this.quaternion.setFromAxisAngle(Es, s);
|
|
3494
3495
|
}
|
|
3495
3496
|
}
|
|
3496
3497
|
setColor(e) {
|
|
@@ -3624,7 +3625,7 @@ class tt {
|
|
|
3624
3625
|
s.transparent = !0, s.opacity = 0.6, s.depthTest = !1, s.depthWrite = !1, s.side = f.DoubleSide;
|
|
3625
3626
|
const t = new f.Mesh(e, s), n = new f.Vector3(0, 1, 0);
|
|
3626
3627
|
n.normalize();
|
|
3627
|
-
const r = new f.Vector3(0, 0, 0), i = 0.5, o = 0.01, a = 56576, c = new
|
|
3628
|
+
const r = new f.Vector3(0, 0, 0), i = 0.5, o = 0.01, a = 56576, c = new tr(n, r, i, o, a, 0.1, 0.03);
|
|
3628
3629
|
this.controlPlane = new f.Object3D(), this.controlPlane.add(t), this.controlPlane.add(c);
|
|
3629
3630
|
}
|
|
3630
3631
|
}
|
|
@@ -3790,7 +3791,7 @@ class tt {
|
|
|
3790
3791
|
this.destroyMeshCursor(), this.destroyFocusMarker(), this.destroyDebugMeshes(), this.destroyControlPlane(), this.destroyRenderTargetCopyObjects(), this.destroySplatRendertarget();
|
|
3791
3792
|
}
|
|
3792
3793
|
}
|
|
3793
|
-
const
|
|
3794
|
+
const sr = new f.Vector3(1, 0, 0), nr = new f.Vector3(0, 1, 0), rr = new f.Vector3(0, 0, 1);
|
|
3794
3795
|
class vt {
|
|
3795
3796
|
constructor(e = new f.Vector3(), s = new f.Vector3()) {
|
|
3796
3797
|
this.origin = new f.Vector3(), this.direction = new f.Vector3(), this.setParameters(e, s);
|
|
@@ -3808,7 +3809,7 @@ class vt {
|
|
|
3808
3809
|
return i && (i.origin.copy(this.origin), i.normal.set(0, 0, 0), i.distance = -1), !0;
|
|
3809
3810
|
for (let o = 0; o < 3; o++) {
|
|
3810
3811
|
if (n[o] == 0) continue;
|
|
3811
|
-
const a = o == 0 ?
|
|
3812
|
+
const a = o == 0 ? sr : o == 1 ? nr : rr, c = n[o] < 0 ? r.max : r.min;
|
|
3812
3813
|
let l = -Math.sign(n[o]);
|
|
3813
3814
|
s[0] = o == 0 ? c.x : o == 1 ? c.y : c.z;
|
|
3814
3815
|
let d = s[0] - t[o];
|
|
@@ -3854,7 +3855,7 @@ const Pe = {
|
|
|
3854
3855
|
ThreeD: 0,
|
|
3855
3856
|
TwoD: 1
|
|
3856
3857
|
};
|
|
3857
|
-
class
|
|
3858
|
+
class or {
|
|
3858
3859
|
constructor(e, s, t = !1) {
|
|
3859
3860
|
this.ray = new vt(e, s), this.raycastAgainstTrueSplatEllipsoid = t;
|
|
3860
3861
|
}
|
|
@@ -4800,7 +4801,7 @@ class At {
|
|
|
4800
4801
|
`;
|
|
4801
4802
|
}
|
|
4802
4803
|
}
|
|
4803
|
-
class
|
|
4804
|
+
class ir {
|
|
4804
4805
|
/**
|
|
4805
4806
|
* Build the Three.js geometry that will be used to render the splats. The geometry is instanced and is made up of
|
|
4806
4807
|
* vertices for a single quad as well as an attribute buffer for the splat indexes.
|
|
@@ -4816,7 +4817,7 @@ class or {
|
|
|
4816
4817
|
return o.setUsage(f.DynamicDrawUsage), r.setAttribute("splatIndex", o), r.instanceCount = 0, r;
|
|
4817
4818
|
}
|
|
4818
4819
|
}
|
|
4819
|
-
class
|
|
4820
|
+
class ar extends f.Object3D {
|
|
4820
4821
|
constructor(e, s = new f.Vector3(), t = new f.Quaternion(), n = new f.Vector3(1, 1, 1), r = 1, i = 1, o = !0) {
|
|
4821
4822
|
super(), this.splatBuffer = e, this.position.copy(s), this.quaternion.copy(t), this.scale.copy(n), this.transform = new f.Matrix4(), this.minimumAlpha = r, this.opacity = i, this.visible = o;
|
|
4822
4823
|
}
|
|
@@ -4864,7 +4865,7 @@ class st {
|
|
|
4864
4865
|
}), t;
|
|
4865
4866
|
}
|
|
4866
4867
|
}
|
|
4867
|
-
function
|
|
4868
|
+
function cr(A) {
|
|
4868
4869
|
let e = 0;
|
|
4869
4870
|
class s {
|
|
4870
4871
|
constructor(a, c) {
|
|
@@ -4997,7 +4998,7 @@ function ar(A) {
|
|
|
4997
4998
|
o.data.process && i(o.data.process.centers, o.data.process.maxDepth, o.data.process.maxCentersPerNode);
|
|
4998
4999
|
};
|
|
4999
5000
|
}
|
|
5000
|
-
function
|
|
5001
|
+
function lr(A, e, s, t, n) {
|
|
5001
5002
|
A.postMessage({
|
|
5002
5003
|
process: {
|
|
5003
5004
|
centers: e,
|
|
@@ -5006,16 +5007,16 @@ function cr(A, e, s, t, n) {
|
|
|
5006
5007
|
}
|
|
5007
5008
|
}, s);
|
|
5008
5009
|
}
|
|
5009
|
-
function
|
|
5010
|
+
function dr() {
|
|
5010
5011
|
return new Worker(
|
|
5011
5012
|
URL.createObjectURL(
|
|
5012
|
-
new Blob(["(",
|
|
5013
|
+
new Blob(["(", cr.toString(), ")(self)"], {
|
|
5013
5014
|
type: "application/javascript"
|
|
5014
5015
|
})
|
|
5015
5016
|
)
|
|
5016
5017
|
);
|
|
5017
5018
|
}
|
|
5018
|
-
class
|
|
5019
|
+
class hr {
|
|
5019
5020
|
constructor(e, s) {
|
|
5020
5021
|
this.maxDepth = e, this.maxCentersPerNode = s, this.subTrees = [], this.splatMesh = null;
|
|
5021
5022
|
}
|
|
@@ -5037,7 +5038,7 @@ class dr {
|
|
|
5037
5038
|
* @return {undefined}
|
|
5038
5039
|
*/
|
|
5039
5040
|
processSplatMesh = function(e, s = () => !0, t, n) {
|
|
5040
|
-
this.splatTreeWorker || (this.splatTreeWorker =
|
|
5041
|
+
this.splatTreeWorker || (this.splatTreeWorker = dr()), this.splatMesh = e, this.subTrees = [];
|
|
5041
5042
|
const r = new f.Vector3(), i = (o, a) => {
|
|
5042
5043
|
const c = new Float32Array(a * 4);
|
|
5043
5044
|
let l = 0;
|
|
@@ -5082,7 +5083,7 @@ class dr {
|
|
|
5082
5083
|
if (a()) return;
|
|
5083
5084
|
t && t(!0);
|
|
5084
5085
|
const l = c.map((d) => d.buffer);
|
|
5085
|
-
|
|
5086
|
+
lr(this.splatTreeWorker, c, l, this.maxDepth, this.maxCentersPerNode);
|
|
5086
5087
|
});
|
|
5087
5088
|
});
|
|
5088
5089
|
});
|
|
@@ -5103,7 +5104,7 @@ class dr {
|
|
|
5103
5104
|
s(t.rootNode, e);
|
|
5104
5105
|
}
|
|
5105
5106
|
}
|
|
5106
|
-
function
|
|
5107
|
+
function ur(A) {
|
|
5107
5108
|
const e = {};
|
|
5108
5109
|
function s(t) {
|
|
5109
5110
|
if (e[t] !== void 0)
|
|
@@ -5140,7 +5141,7 @@ function hr(A) {
|
|
|
5140
5141
|
}
|
|
5141
5142
|
};
|
|
5142
5143
|
}
|
|
5143
|
-
function
|
|
5144
|
+
function pr(A, e, s) {
|
|
5144
5145
|
let t;
|
|
5145
5146
|
function n() {
|
|
5146
5147
|
if (t !== void 0) return t;
|
|
@@ -5191,10 +5192,10 @@ const nt = {
|
|
|
5191
5192
|
}, Ye = {
|
|
5192
5193
|
None: 0,
|
|
5193
5194
|
Info: 3
|
|
5194
|
-
},
|
|
5195
|
+
}, ws = new f.BufferGeometry(), fr = new f.MeshBasicMaterial(), pt = 6, mr = 4, Ar = 4, gr = 4, Sr = 6, Cr = 8, Dt = 4, Ft = 4, vs = 1, yr = 0.012, xr = 3e-3, Ds = 1, Fs = 16777216;
|
|
5195
5196
|
class ge extends f.Mesh {
|
|
5196
5197
|
constructor(e = Pe.ThreeD, s = !1, t = !1, n = !1, r = 1, i = !0, o = !1, a = !1, c = 1024, l = Ye.None, d = 0, u = 1, h = 0.3) {
|
|
5197
|
-
super(
|
|
5198
|
+
super(ws, fr), this.renderer = void 0, this.splatRenderMode = e, this.dynamicMode = s, this.enableOptionalEffects = t, this.halfPrecisionCovariancesOnGPU = n, this.devicePixelRatio = r, this.enableDistancesComputationOnGPU = i, this.integerBasedDistancesComputation = o, this.antialiased = a, this.kernel2DSize = h, this.maxScreenSpaceSplatSize = c, this.logLevel = l, this.sphericalHarmonicsDegree = d, this.minSphericalHarmonicsDegree = 0, this.sceneFadeInRateMultiplier = u, this.scenes = [], this.splatTree = null, this.baseSplatTree = null, this.splatDataTextures = {}, this.distancesTransformFeedback = {
|
|
5198
5199
|
id: null,
|
|
5199
5200
|
vertexShader: null,
|
|
5200
5201
|
fragmentShader: null,
|
|
@@ -5242,7 +5243,7 @@ class ge extends f.Mesh {
|
|
|
5242
5243
|
return n;
|
|
5243
5244
|
}
|
|
5244
5245
|
static createScene(e, s, t, n, r, i = 1, o = !0) {
|
|
5245
|
-
return new
|
|
5246
|
+
return new ar(e, s, t, n, r, i, o);
|
|
5246
5247
|
}
|
|
5247
5248
|
/**
|
|
5248
5249
|
* Build data structures that map global splat indexes (based on a unified index across all splat buffers) to
|
|
@@ -5274,7 +5275,7 @@ class ge extends f.Mesh {
|
|
|
5274
5275
|
*/
|
|
5275
5276
|
buildSplatTree = function(e = [], s, t) {
|
|
5276
5277
|
return new Promise((n) => {
|
|
5277
|
-
this.disposeSplatTree(), this.baseSplatTree = new
|
|
5278
|
+
this.disposeSplatTree(), this.baseSplatTree = new hr(8, 1e3);
|
|
5278
5279
|
const r = performance.now(), i = new f.Vector4();
|
|
5279
5280
|
this.baseSplatTree.processSplatMesh(this, (o) => {
|
|
5280
5281
|
this.getSplatColor(o, i);
|
|
@@ -5345,7 +5346,7 @@ class ge extends f.Mesh {
|
|
|
5345
5346
|
}
|
|
5346
5347
|
let u = !0;
|
|
5347
5348
|
if ((this.scenes.length !== 1 || this.lastBuildSceneCount !== this.scenes.length || this.lastBuildMaxSplatCount !== a || d) && (u = !1), !u) {
|
|
5348
|
-
this.boundingBox = new f.Box3(), o || (this.maxSplatDistanceFromSceneCenter = 0, this.visibleRegionBufferRadius = 0, this.visibleRegionRadius = 0, this.visibleRegionFadeStartRadius = 0, this.firstRenderTime = -1), this.lastBuildScenes = [], this.lastBuildSplatCount = 0, this.lastBuildMaxSplatCount = 0, this.disposeMeshData(), this.geometry =
|
|
5349
|
+
this.boundingBox = new f.Box3(), o || (this.maxSplatDistanceFromSceneCenter = 0, this.visibleRegionBufferRadius = 0, this.visibleRegionRadius = 0, this.visibleRegionFadeStartRadius = 0, this.firstRenderTime = -1), this.lastBuildScenes = [], this.lastBuildSplatCount = 0, this.lastBuildMaxSplatCount = 0, this.disposeMeshData(), this.geometry = ir.build(a), this.splatRenderMode === Pe.ThreeD ? this.material = mt.build(
|
|
5349
5350
|
this.dynamicMode,
|
|
5350
5351
|
this.enableOptionalEffects,
|
|
5351
5352
|
this.antialiased,
|
|
@@ -5417,7 +5418,7 @@ class ge extends f.Mesh {
|
|
|
5417
5418
|
* Dispose of only the Three.js mesh resources (geometry, material, and texture)
|
|
5418
5419
|
*/
|
|
5419
5420
|
disposeMeshData() {
|
|
5420
|
-
this.geometry && this.geometry !==
|
|
5421
|
+
this.geometry && this.geometry !== ws && (this.geometry.dispose(), this.geometry = null), this.material && (this.material.dispose(), this.material = null);
|
|
5421
5422
|
}
|
|
5422
5423
|
disposeTextures() {
|
|
5423
5424
|
for (let e in this.splatDataTextures)
|
|
@@ -5492,7 +5493,7 @@ class ge extends f.Mesh {
|
|
|
5492
5493
|
const D = new f.Vector2(4096, 1024);
|
|
5493
5494
|
for (; D.x * D.y * y < e * v; ) D.y *= 2;
|
|
5494
5495
|
return D;
|
|
5495
|
-
}, n = (y) => y >= 1 ?
|
|
5496
|
+
}, n = (y) => y >= 1 ? Sr : Ar, r = (y) => {
|
|
5496
5497
|
const v = n(y), D = t(v, 6);
|
|
5497
5498
|
return { elementsPerTexelStored: v, texSize: D };
|
|
5498
5499
|
};
|
|
@@ -5501,7 +5502,7 @@ class ge extends f.Mesh {
|
|
|
5501
5502
|
let c, l, d;
|
|
5502
5503
|
if (this.splatRenderMode === Pe.ThreeD) {
|
|
5503
5504
|
const y = r(i);
|
|
5504
|
-
y.texSize.x * y.texSize.y >
|
|
5505
|
+
y.texSize.x * y.texSize.y > Fs && i === 0 && (i = 1), c = new Float32Array(e * pt);
|
|
5505
5506
|
} else
|
|
5506
5507
|
l = new Float32Array(e * 3), d = new Float32Array(e * 4);
|
|
5507
5508
|
const u = new Float32Array(e * 3), h = new Uint8Array(e * 4);
|
|
@@ -5533,7 +5534,7 @@ class ge extends f.Mesh {
|
|
|
5533
5534
|
}, this.splatRenderMode === Pe.ThreeD) {
|
|
5534
5535
|
const y = r(i), v = y.elementsPerTexelStored, D = y.texSize;
|
|
5535
5536
|
let b = i >= 1 ? Uint32Array : Float32Array;
|
|
5536
|
-
const F = i >= 1 ?
|
|
5537
|
+
const F = i >= 1 ? Cr : gr, R = new b(D.x * D.y * F);
|
|
5537
5538
|
i === 0 ? R.set(c) : ge.updatePaddedCompressedCovariancesTextureData(c, R, 0, 0, c.length);
|
|
5538
5539
|
let k;
|
|
5539
5540
|
if (i >= 1)
|
|
@@ -5582,7 +5583,7 @@ class ge extends f.Mesh {
|
|
|
5582
5583
|
v % 2 !== 0 && v++;
|
|
5583
5584
|
const D = 4, b = f.RGBAFormat;
|
|
5584
5585
|
let F = t(D, v);
|
|
5585
|
-
if (F.x * F.y <=
|
|
5586
|
+
if (F.x * F.y <= Fs) {
|
|
5586
5587
|
const R = F.x * F.y * D, k = new m(R);
|
|
5587
5588
|
for (let O = 0; O < s; O++) {
|
|
5588
5589
|
const L = p * O, U = v * O;
|
|
@@ -5641,7 +5642,7 @@ class ge extends f.Mesh {
|
|
|
5641
5642
|
}
|
|
5642
5643
|
this.material.uniformsNeedUpdate = !0;
|
|
5643
5644
|
}
|
|
5644
|
-
const E = t(
|
|
5645
|
+
const E = t(vs, 4), x = new Uint32Array(E.x * E.y * vs);
|
|
5645
5646
|
for (let y = 0; y < s; y++) x[y] = this.globalSplatIndexToSceneIndexMap[y];
|
|
5646
5647
|
const w = new f.DataTexture(
|
|
5647
5648
|
x,
|
|
@@ -5690,7 +5691,7 @@ class ge extends f.Mesh {
|
|
|
5690
5691
|
c.size,
|
|
5691
5692
|
u,
|
|
5692
5693
|
Ft,
|
|
5693
|
-
|
|
5694
|
+
mr,
|
|
5694
5695
|
4,
|
|
5695
5696
|
e,
|
|
5696
5697
|
s
|
|
@@ -5881,7 +5882,7 @@ class ge extends f.Mesh {
|
|
|
5881
5882
|
static updateCenterColorsPaddedData(e, s, t, n, r) {
|
|
5882
5883
|
for (let i = e; i <= s; i++) {
|
|
5883
5884
|
const o = i * 4, a = i * 3, c = i * 4;
|
|
5884
|
-
r[c] =
|
|
5885
|
+
r[c] = Js(n, o), r[c + 1] = xt(t[a]), r[c + 2] = xt(t[a + 1]), r[c + 3] = xt(t[a + 2]);
|
|
5885
5886
|
}
|
|
5886
5887
|
}
|
|
5887
5888
|
static updateScaleRotationsPaddedData(e, s, t, n, r) {
|
|
@@ -5904,10 +5905,10 @@ class ge extends f.Mesh {
|
|
|
5904
5905
|
const i = t.sub(this.calculatedSceneCenter).length();
|
|
5905
5906
|
i > this.maxSplatDistanceFromSceneCenter && (this.maxSplatDistanceFromSceneCenter = i);
|
|
5906
5907
|
}
|
|
5907
|
-
this.maxSplatDistanceFromSceneCenter - this.visibleRegionBufferRadius >
|
|
5908
|
+
this.maxSplatDistanceFromSceneCenter - this.visibleRegionBufferRadius > Ds && (this.visibleRegionBufferRadius = this.maxSplatDistanceFromSceneCenter, this.visibleRegionRadius = Math.max(this.visibleRegionBufferRadius - Ds, 0)), this.finalBuild && (this.visibleRegionRadius = this.visibleRegionBufferRadius = this.maxSplatDistanceFromSceneCenter), this.updateVisibleRegionFadeDistance();
|
|
5908
5909
|
}
|
|
5909
5910
|
updateVisibleRegionFadeDistance(e = nt.Default) {
|
|
5910
|
-
const s =
|
|
5911
|
+
const s = yr * this.sceneFadeInRateMultiplier, t = xr * this.sceneFadeInRateMultiplier, n = this.finalBuild ? s : t, r = e === nt.Default ? n : t;
|
|
5911
5912
|
this.visibleRegionFadeStartRadius = (this.visibleRegionRadius - this.visibleRegionFadeStartRadius) * r + this.visibleRegionFadeStartRadius;
|
|
5912
5913
|
const o = (this.visibleRegionBufferRadius > 0 ? this.visibleRegionFadeStartRadius / this.visibleRegionBufferRadius : 0) > 0.99, a = o || e === nt.Instant ? 1 : 0;
|
|
5913
5914
|
this.material.uniforms.visibleRegionFadeStartRadius.value = this.visibleRegionFadeStartRadius, this.material.uniforms.visibleRegionRadius.value = this.visibleRegionRadius, this.material.uniforms.firstRenderTime.value = this.firstRenderTime, this.material.uniforms.currentTime.value = performance.now(), this.material.uniforms.fadeInComplete.value = a, this.material.uniformsNeedUpdate = !0, this.visibleRegionChanging = !o;
|
|
@@ -6007,7 +6008,7 @@ class ge extends f.Mesh {
|
|
|
6007
6008
|
setRenderer(e) {
|
|
6008
6009
|
if (e !== this.renderer) {
|
|
6009
6010
|
this.renderer = e;
|
|
6010
|
-
const s = this.renderer.getContext(), t = new
|
|
6011
|
+
const s = this.renderer.getContext(), t = new ur(s), n = new pr(s, t, {});
|
|
6011
6012
|
if (t.init(n), this.webGLUtils = new f.WebGLUtils(s, t, n), this.enableDistancesComputationOnGPU && this.getSplatCount() > 0) {
|
|
6012
6013
|
this.setupDistancesComputationTransformFeedback();
|
|
6013
6014
|
const { centers: r, sceneIndexes: i } = this.getDataForDistancesComputation(0, this.getSplatCount() - 1);
|
|
@@ -6429,8 +6430,8 @@ class ge extends f.Mesh {
|
|
|
6429
6430
|
return new f.Box3(r, i);
|
|
6430
6431
|
}
|
|
6431
6432
|
}
|
|
6432
|
-
var xr = "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", Fs = "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", Ir = "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", Tr = "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";
|
|
6433
|
-
function
|
|
6433
|
+
var Ir = "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", bs = "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", Tr = "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", Br = "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";
|
|
6434
|
+
function Er(A) {
|
|
6434
6435
|
let e, s, t, n, r, i, o, a, c, l, d, u, h, m, p, g, C, S, I, E;
|
|
6435
6436
|
function x(w, y, v, D, b, F, R) {
|
|
6436
6437
|
const k = performance.now();
|
|
@@ -6534,17 +6535,17 @@ function Br(A) {
|
|
|
6534
6535
|
}
|
|
6535
6536
|
};
|
|
6536
6537
|
}
|
|
6537
|
-
function
|
|
6538
|
+
function wr(A, e, s, t, n, r = j.DefaultSplatSortDistanceMapPrecision) {
|
|
6538
6539
|
const i = new Worker(
|
|
6539
6540
|
URL.createObjectURL(
|
|
6540
|
-
new Blob(["(",
|
|
6541
|
+
new Blob(["(", Er.toString(), ")(self)"], {
|
|
6541
6542
|
type: "application/javascript"
|
|
6542
6543
|
})
|
|
6543
6544
|
)
|
|
6544
6545
|
);
|
|
6545
|
-
let o =
|
|
6546
|
-
const a = kt() ?
|
|
6547
|
-
!s && !e ? (o =
|
|
6546
|
+
let o = Ir;
|
|
6547
|
+
const a = kt() ? Ps() : null;
|
|
6548
|
+
!s && !e ? (o = bs, a && a.major <= 16 && a.minor < 4 && (o = Br)) : s ? e || a && a.major <= 16 && a.minor < 4 && (o = Tr) : o = bs;
|
|
6548
6549
|
const c = atob(o), l = new Uint8Array(c.length);
|
|
6549
6550
|
for (let d = 0; d < c.length; d++)
|
|
6550
6551
|
l[d] = c.charCodeAt(d);
|
|
@@ -6636,7 +6637,7 @@ class Xe {
|
|
|
6636
6637
|
}
|
|
6637
6638
|
Xe.xrSessionIsGranted = !1;
|
|
6638
6639
|
Xe.registerSessionGrantedListener();
|
|
6639
|
-
class
|
|
6640
|
+
class vr {
|
|
6640
6641
|
static createButton(e, s = {}) {
|
|
6641
6642
|
const t = document.createElement("button");
|
|
6642
6643
|
function n() {
|
|
@@ -6694,16 +6695,16 @@ class wr {
|
|
|
6694
6695
|
const bt = {
|
|
6695
6696
|
Always: 0,
|
|
6696
6697
|
Never: 2
|
|
6697
|
-
},
|
|
6698
|
+
}, Dr = 50, Fr = 0.75, br = 15e5, Mr = 10, Rr = 2.5, Pr = 60;
|
|
6698
6699
|
class We {
|
|
6699
6700
|
constructor(e = {}) {
|
|
6700
6701
|
if (e.cameraUp || (e.cameraUp = [0, 1, 0]), this.cameraUp = new f.Vector3().fromArray(e.cameraUp), e.initialCameraPosition || (e.initialCameraPosition = [0, 10, 15]), this.initialCameraPosition = new f.Vector3().fromArray(e.initialCameraPosition), e.initialCameraLookAt || (e.initialCameraLookAt = [0, 0, 0]), this.initialCameraLookAt = new f.Vector3().fromArray(e.initialCameraLookAt), this.dropInMode = e.dropInMode || !1, (e.selfDrivenMode === void 0 || e.selfDrivenMode === null) && (e.selfDrivenMode = !0), this.selfDrivenMode = e.selfDrivenMode && !this.dropInMode, this.selfDrivenUpdateFunc = this.selfDrivenUpdate.bind(this), e.useBuiltInControls === void 0 && (e.useBuiltInControls = !0), this.useBuiltInControls = e.useBuiltInControls, this.rootElement = e.rootElement, this.ignoreDevicePixelRatio = e.ignoreDevicePixelRatio || !1, this.devicePixelRatio = this.ignoreDevicePixelRatio ? 1 : window.devicePixelRatio || 1, this.halfPrecisionCovariancesOnGPU = e.halfPrecisionCovariancesOnGPU || !1, this.threeScene = e.threeScene, this.renderer = e.renderer, this.camera = e.camera, this.gpuAcceleratedSort = e.gpuAcceleratedSort || !1, (e.integerBasedSort === void 0 || e.integerBasedSort === null) && (e.integerBasedSort = !0), this.integerBasedSort = e.integerBasedSort, (e.sharedMemoryForWorkers === void 0 || e.sharedMemoryForWorkers === null) && (e.sharedMemoryForWorkers = !0), this.sharedMemoryForWorkers = e.sharedMemoryForWorkers, this.dynamicScene = !!e.dynamicScene, this.antialiased = e.antialiased || !1, this.kernel2DSize = e.kernel2DSize === void 0 ? 0.3 : e.kernel2DSize, this.webXRMode = e.webXRMode || Ge.None, this.webXRMode !== Ge.None && (this.gpuAcceleratedSort = !1), this.webXRActive = !1, this.webXRSessionInit = e.webXRSessionInit || {}, this.renderMode = e.renderMode || bt.Always, this.sceneRevealMode = e.sceneRevealMode || nt.Default, this.focalAdjustment = e.focalAdjustment || 1, this.maxScreenSpaceSplatSize = e.maxScreenSpaceSplatSize || 1024, this.logLevel = e.logLevel || Ye.None, this.sphericalHarmonicsDegree = e.sphericalHarmonicsDegree || 0, this.enableOptionalEffects = e.enableOptionalEffects || !1, (e.enableSIMDInSort === void 0 || e.enableSIMDInSort === null) && (e.enableSIMDInSort = !0), this.enableSIMDInSort = e.enableSIMDInSort, (e.inMemoryCompressionLevel === void 0 || e.inMemoryCompressionLevel === null) && (e.inMemoryCompressionLevel = 0), this.inMemoryCompressionLevel = e.inMemoryCompressionLevel, (e.optimizeSplatData === void 0 || e.optimizeSplatData === null) && (e.optimizeSplatData = !0), this.optimizeSplatData = e.optimizeSplatData, (e.freeIntermediateSplatData === void 0 || e.freeIntermediateSplatData === null) && (e.freeIntermediateSplatData = !1), this.freeIntermediateSplatData = e.freeIntermediateSplatData, kt()) {
|
|
6701
|
-
const t =
|
|
6702
|
+
const t = Ps();
|
|
6702
6703
|
t.major < 17 && (this.enableSIMDInSort = !1), t.major < 16 && (this.sharedMemoryForWorkers = !1);
|
|
6703
6704
|
}
|
|
6704
6705
|
(e.splatRenderMode === void 0 || e.splatRenderMode === null) && (e.splatRenderMode = Pe.ThreeD), this.splatRenderMode = e.splatRenderMode, this.sceneFadeInRateMultiplier = e.sceneFadeInRateMultiplier || 1, this.splatSortDistanceMapPrecision = e.splatSortDistanceMapPrecision || j.DefaultSplatSortDistanceMapPrecision;
|
|
6705
6706
|
const s = this.integerBasedSort ? 20 : 24;
|
|
6706
|
-
this.splatSortDistanceMapPrecision = ne(this.splatSortDistanceMapPrecision, 10, s), this.onSplatMeshChangedCallback = null, this.createSplatMesh(), this.controls = null, this.perspectiveControls = null, this.orthographicControls = null, this.orthographicCamera = null, this.perspectiveCamera = null, this.showMeshCursor = !1, this.showControlPlane = !1, this.showInfo = !1, this.sceneHelper = null, this.sortWorker = null, this.sortRunning = !1, this.splatRenderCount = 0, this.splatSortCount = 0, this.lastSplatSortCount = 0, this.sortWorkerIndexesToSort = null, this.sortWorkerSortedIndexes = null, this.sortWorkerPrecomputedDistances = null, this.sortWorkerTransforms = null, this.preSortMessages = [], this.runAfterNextSort = [], this.selfDrivenModeRunning = !1, this.splatRenderReady = !1, this.raycaster = new
|
|
6707
|
+
this.splatSortDistanceMapPrecision = ne(this.splatSortDistanceMapPrecision, 10, s), this.onSplatMeshChangedCallback = null, this.createSplatMesh(), this.controls = null, this.perspectiveControls = null, this.orthographicControls = null, this.orthographicCamera = null, this.perspectiveCamera = null, this.showMeshCursor = !1, this.showControlPlane = !1, this.showInfo = !1, this.sceneHelper = null, this.sortWorker = null, this.sortRunning = !1, this.splatRenderCount = 0, this.splatSortCount = 0, this.lastSplatSortCount = 0, this.sortWorkerIndexesToSort = null, this.sortWorkerSortedIndexes = null, this.sortWorkerPrecomputedDistances = null, this.sortWorkerTransforms = null, this.preSortMessages = [], this.runAfterNextSort = [], this.selfDrivenModeRunning = !1, this.splatRenderReady = !1, this.raycaster = new or(), this.infoPanel = null, this.startInOrthographicMode = !1, this.currentFPS = 0, this.lastSortTime = 0, this.consecutiveRenderFrames = 0, this.previousCameraTarget = new f.Vector3(), this.nextCameraTarget = new f.Vector3(), this.mousePosition = new f.Vector2(), this.mouseDownPosition = new f.Vector2(), this.mouseDownTime = null, this.resizeObserver = null, this.mouseMoveListener = null, this.mouseDownListener = null, this.mouseUpListener = null, this.keyDownListener = null, this.sortPromise = null, this.sortPromiseResolver = null, this.splatSceneDownloadPromises = {}, this.splatSceneDownloadAndBuildPromise = null, this.splatSceneRemovalPromise = null, this.loadingSpinner = new jt(null, this.rootElement || document.body), this.loadingSpinner.hide(), this.loadingProgressBar = new $n(this.rootElement || document.body), this.loadingProgressBar.hide(), this.infoPanel = new er(this.rootElement || document.body), this.infoPanel.hide(), this.usingExternalCamera = !!(this.dropInMode || this.camera), this.usingExternalRenderer = !!(this.dropInMode || this.renderer), this.initialized = !1, this.disposing = !1, this.disposed = !1, this.disposePromise = null, this.dropInMode || this.init();
|
|
6707
6708
|
}
|
|
6708
6709
|
createSplatMesh() {
|
|
6709
6710
|
this.splatMesh = new ge(
|
|
@@ -6728,7 +6729,7 @@ class We {
|
|
|
6728
6729
|
setupCamera() {
|
|
6729
6730
|
if (!this.usingExternalCamera) {
|
|
6730
6731
|
const e = new f.Vector2();
|
|
6731
|
-
this.getRenderDimensions(e), this.perspectiveCamera = new f.PerspectiveCamera(
|
|
6732
|
+
this.getRenderDimensions(e), this.perspectiveCamera = new f.PerspectiveCamera(Dr, e.x / e.y, 0.1, 1e3), this.orthographicCamera = new f.OrthographicCamera(
|
|
6732
6733
|
e.x / -2,
|
|
6733
6734
|
e.x / 2,
|
|
6734
6735
|
e.y / 2,
|
|
@@ -6750,7 +6751,7 @@ class We {
|
|
|
6750
6751
|
}
|
|
6751
6752
|
}
|
|
6752
6753
|
setupWebXR(e) {
|
|
6753
|
-
this.webXRMode && (this.webXRMode === Ge.VR ? this.rootElement.appendChild(Xe.createButton(this.renderer, e)) : this.webXRMode === Ge.AR && this.rootElement.appendChild(
|
|
6754
|
+
this.webXRMode && (this.webXRMode === Ge.VR ? this.rootElement.appendChild(Xe.createButton(this.renderer, e)) : this.webXRMode === Ge.AR && this.rootElement.appendChild(vr.createButton(this.renderer, e)), this.renderer.xr.addEventListener("sessionstart", (s) => {
|
|
6754
6755
|
this.webXRActive = !0;
|
|
6755
6756
|
}), this.renderer.xr.addEventListener("sessionend", (s) => {
|
|
6756
6757
|
this.webXRActive = !1;
|
|
@@ -6839,7 +6840,7 @@ class We {
|
|
|
6839
6840
|
return function() {
|
|
6840
6841
|
if (!this.transitioningCameraTarget && (this.getRenderDimensions(e), t.length = 0, this.raycaster.setFromCameraAndScreenPosition(this.camera, this.mousePosition, e), this.raycaster.intersectSplatMesh(this.splatMesh, t), t.length > 0)) {
|
|
6841
6842
|
const r = t[0].origin;
|
|
6842
|
-
s.copy(r).sub(this.camera.position), s.length() >
|
|
6843
|
+
s.copy(r).sub(this.camera.position), s.length() > Fr && (this.previousCameraTarget.copy(this.controls.target), this.nextCameraTarget.copy(r), this.transitioningCameraTarget = !0, this.transitioningCameraTargetStartTime = Ve());
|
|
6843
6844
|
}
|
|
6844
6845
|
};
|
|
6845
6846
|
})();
|
|
@@ -6940,7 +6941,7 @@ class We {
|
|
|
6940
6941
|
if (this.isDisposingOrDisposed())
|
|
6941
6942
|
throw new Error("Cannot add splat scene after dispose() is called.");
|
|
6942
6943
|
s.progressiveLoad && this.splatMesh.scenes && this.splatMesh.scenes.length > 0 && (console.log('addSplatScene(): "progressiveLoad" option ignore because there are multiple splat scenes'), s.progressiveLoad = !1);
|
|
6943
|
-
const t = s.format !== void 0 && s.format !== null ? s.format :
|
|
6944
|
+
const t = s.format !== void 0 && s.format !== null ? s.format : xs(e), n = We.isProgressivelyLoadable(t) && s.progressiveLoad, r = s.showLoadingUI !== void 0 && s.showLoadingUI !== null ? s.showLoadingUI : !0;
|
|
6944
6945
|
let i = null;
|
|
6945
6946
|
r && (this.loadingSpinner.removeAllTasks(), i = this.loadingSpinner.addTask("Downloading..."));
|
|
6946
6947
|
const o = () => {
|
|
@@ -7107,7 +7108,7 @@ class We {
|
|
|
7107
7108
|
p = p / n, h = `${p.toFixed(2)}%`, s && m === de.Downloading && this.loadingSpinner.setMessageForTask(i, p == 100 ? "Download complete!" : `Downloading: ${h}`), t && t(p, h, m);
|
|
7108
7109
|
}, a = [], c = [];
|
|
7109
7110
|
for (let d = 0; d < e.length; d++) {
|
|
7110
|
-
const u = e[d], h = u.format !== void 0 && u.format !== null ? u.format :
|
|
7111
|
+
const u = e[d], h = u.format !== void 0 && u.format !== null ? u.format : xs(u.path), m = this.downloadSplatSceneToSplatBuffer(
|
|
7111
7112
|
u.path,
|
|
7112
7113
|
u.splatAlphaRemovalThreshold,
|
|
7113
7114
|
o.bind(this, d),
|
|
@@ -7269,7 +7270,7 @@ class We {
|
|
|
7269
7270
|
const l = (h) => {
|
|
7270
7271
|
if (this.isDisposingOrDisposed()) return;
|
|
7271
7272
|
const m = this.splatMesh.getSplatCount();
|
|
7272
|
-
r && m >=
|
|
7273
|
+
r && m >= br && !h && !e && (this.loadingSpinner.setMinimized(!0, !0), e = this.loadingSpinner.addTask("Optimizing data structures..."));
|
|
7273
7274
|
}, d = (h) => {
|
|
7274
7275
|
this.isDisposingOrDisposed() || h && e && (this.loadingSpinner.removeTask(e), e = null);
|
|
7275
7276
|
}, u = this.splatMesh.build(
|
|
@@ -7293,7 +7294,7 @@ class We {
|
|
|
7293
7294
|
if (!this.isDisposingOrDisposed())
|
|
7294
7295
|
return new Promise((s) => {
|
|
7295
7296
|
const t = this.integerBasedSort ? Int32Array : Float32Array, n = e.getSplatCount(), r = e.getMaxSplatCount();
|
|
7296
|
-
this.sortWorker =
|
|
7297
|
+
this.sortWorker = wr(
|
|
7297
7298
|
r,
|
|
7298
7299
|
this.sharedMemoryForWorkers,
|
|
7299
7300
|
this.enableSIMDInSort,
|
|
@@ -7343,7 +7344,7 @@ class We {
|
|
|
7343
7344
|
});
|
|
7344
7345
|
}
|
|
7345
7346
|
updateError(e, s) {
|
|
7346
|
-
return e instanceof
|
|
7347
|
+
return e instanceof Rs ? e : e instanceof ft ? new Error("File type or server does not support progressive loading.") : s ? new Error(s) : e;
|
|
7347
7348
|
}
|
|
7348
7349
|
disposeSortWorker() {
|
|
7349
7350
|
this.sortWorker && this.sortWorker.terminate(), this.sortWorker = null, this.sortPromise = null, this.sortPromiseResolver && (this.sortPromiseResolver(), this.sortPromiseResolver = null), this.preSortMessages = [], this.sortRunning = !1;
|
|
@@ -7473,7 +7474,7 @@ class We {
|
|
|
7473
7474
|
updateFPS = (function() {
|
|
7474
7475
|
let e = Ve(), s = 0;
|
|
7475
7476
|
return function() {
|
|
7476
|
-
if (this.consecutiveRenderFrames >
|
|
7477
|
+
if (this.consecutiveRenderFrames > Pr) {
|
|
7477
7478
|
const t = Ve();
|
|
7478
7479
|
t - e >= 1 ? (this.currentFPS = s, s = 0, e = t) : s++;
|
|
7479
7480
|
} else
|
|
@@ -7513,13 +7514,13 @@ class We {
|
|
|
7513
7514
|
if (this.getRenderDimensions(e), this.transitioningCameraTarget) {
|
|
7514
7515
|
this.sceneHelper.setFocusMarkerVisibility(!0);
|
|
7515
7516
|
const n = Math.max(this.sceneHelper.getFocusMarkerOpacity(), 0);
|
|
7516
|
-
let r = Math.min(n +
|
|
7517
|
+
let r = Math.min(n + Mr * t, 1);
|
|
7517
7518
|
this.sceneHelper.setFocusMarkerOpacity(r), this.sceneHelper.updateFocusMarker(this.nextCameraTarget, this.camera, e), s = !0, this.forceRenderNextFrame();
|
|
7518
7519
|
} else {
|
|
7519
7520
|
let n;
|
|
7520
7521
|
if (s ? n = 1 : n = Math.min(this.sceneHelper.getFocusMarkerOpacity(), 1), n > 0) {
|
|
7521
7522
|
this.sceneHelper.updateFocusMarker(this.nextCameraTarget, this.camera, e);
|
|
7522
|
-
let r = Math.max(n -
|
|
7523
|
+
let r = Math.max(n - Rr * t, 0);
|
|
7523
7524
|
this.sceneHelper.setFocusMarkerOpacity(r), r === 0 && this.sceneHelper.setFocusMarkerVisibility(!1);
|
|
7524
7525
|
}
|
|
7525
7526
|
n > 0 && this.forceRenderNextFrame(), s = !1;
|
|
@@ -7781,8 +7782,8 @@ class gt extends f.Group {
|
|
|
7781
7782
|
return t.frustumCulled = !1, t;
|
|
7782
7783
|
}
|
|
7783
7784
|
}
|
|
7784
|
-
const
|
|
7785
|
-
class
|
|
7785
|
+
const Ms = new Mt().setFromAxisAngle(new ye(0, 0, 1), Math.PI);
|
|
7786
|
+
class Hr {
|
|
7786
7787
|
ssp;
|
|
7787
7788
|
constructor(e) {
|
|
7788
7789
|
this.ssp = e;
|
|
@@ -7790,17 +7791,21 @@ class kr {
|
|
|
7790
7791
|
async load(e, s = {}, t) {
|
|
7791
7792
|
t || (t = this.createViewer()), await t.addSplatScene(e, {
|
|
7792
7793
|
showLoadingUI: !1,
|
|
7793
|
-
...s
|
|
7794
|
+
...s,
|
|
7795
|
+
headers: ss.utils.getRequestHeaders(e, s.headers)
|
|
7794
7796
|
});
|
|
7795
7797
|
const n = t.getSplatScene(0);
|
|
7796
|
-
return n && n.quaternion.copy(
|
|
7798
|
+
return n && n.quaternion.copy(Ms), t;
|
|
7797
7799
|
}
|
|
7798
7800
|
async loads(e, s, t = !1, n) {
|
|
7799
|
-
s || (s = this.createViewer()), await s.addSplatScenes(e
|
|
7801
|
+
s || (s = this.createViewer()), await s.addSplatScenes(e.map((i) => ({
|
|
7802
|
+
...i,
|
|
7803
|
+
headers: ss.utils.getRequestHeaders(i.path, i.headers)
|
|
7804
|
+
})), t, n);
|
|
7800
7805
|
const r = s.getSceneCount();
|
|
7801
7806
|
for (let i = 0; i < r; i++) {
|
|
7802
7807
|
const o = s.getSplatScene(i);
|
|
7803
|
-
o && o.quaternion.copy(
|
|
7808
|
+
o && o.quaternion.copy(Ms);
|
|
7804
7809
|
}
|
|
7805
7810
|
return s;
|
|
7806
7811
|
}
|
|
@@ -7819,5 +7824,5 @@ class kr {
|
|
|
7819
7824
|
}
|
|
7820
7825
|
}
|
|
7821
7826
|
export {
|
|
7822
|
-
|
|
7827
|
+
Hr as default
|
|
7823
7828
|
};
|