@realsee/five 6.8.0-alpha.20 → 6.8.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/ai_guides/features/material.md +1 -1
  2. package/ai_guides/release_notes/6.8.md +1 -1
  3. package/docs/assets/hierarchy.js +1 -1
  4. package/docs/assets/search.js +1 -1
  5. package/docs/classes/five.Five.html +41 -41
  6. package/docs/classes/five.PBMContainer.html +1 -1
  7. package/docs/classes/five.PBMGSObject.html +5 -3
  8. package/docs/classes/five.PBMGroup.html +1 -1
  9. package/docs/classes/five.PBMMesh.html +1 -1
  10. package/docs/classes/five.PBMPointCloud.html +1 -1
  11. package/docs/classes/five.PBMSkinnedMesh.html +1 -1
  12. package/docs/classes/five.Parameter.html +5 -5
  13. package/docs/documents/features_material.html +1 -1
  14. package/docs/documents/release_notes_6.8.html +1 -1
  15. package/docs/hierarchy.html +1 -1
  16. package/docs/interfaces/five.EventCallback.html +1 -1
  17. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  18. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  19. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  20. package/docs/interfaces/five.ParameterMaterialValue.html +6 -6
  21. package/docs/interfaces/five.ParameterValue.html +6 -6
  22. package/docs/interfaces/five.ResolvedParameterValue.html +6 -6
  23. package/docs/interfaces/five.SplatData.html +2 -2
  24. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  25. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  26. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
  27. package/five/application/five.d.ts +1 -6
  28. package/five/gaussian-splatting/util/renderData.d.ts +52 -0
  29. package/five/index.js +9 -9
  30. package/five/index.mjs +443 -230
  31. package/five/model/index.d.ts +1 -1
  32. package/five/model/loaders/glTF-helpers/extensions/KHR_gaussian_splatting_compression_spz.d.ts +2 -2
  33. package/five/model/loaders/spz.d.ts +2 -2
  34. package/five/model/objects/{pbmGSObject.d.ts → pbmGaussianSplattingObject.d.ts} +4 -1
  35. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +55 -0
  36. package/five/model/objects/pbmGaussianSplattingTestMesh.d.ts +7 -0
  37. package/five/model/parameter.d.ts +1 -1
  38. package/five/model/tile3d/tile-node.d.ts +2 -2
  39. package/five/utils/memoryUsage.d.ts +2 -2
  40. package/gltf-loader/index.js +2 -2
  41. package/gltf-loader/index.mjs +2 -2
  42. package/line/index.js +2 -2
  43. package/line/index.mjs +2 -2
  44. package/package.json +1 -1
  45. package/plugins/index.js +1 -1
  46. package/plugins/index.mjs +1 -1
  47. package/react/index.js +1 -1
  48. package/react/index.mjs +1 -1
  49. package/shader-lib/index.js +1 -1
  50. package/shader-lib/index.mjs +1 -1
  51. package/sticker/index.js +2 -2
  52. package/sticker/index.mjs +2 -2
  53. package/umd/five-gltf-loader.js +2 -2
  54. package/umd/five-line.js +2 -2
  55. package/umd/five-plugins.js +1 -1
  56. package/umd/five-react.js +1 -1
  57. package/umd/five-shader-lib.js +1 -1
  58. package/umd/five-sticker.js +2 -2
  59. package/umd/five-vfx.js +1 -1
  60. package/umd/five-vue.js +1 -1
  61. package/umd/five.js +10 -10
  62. package/vfx/index.js +1 -1
  63. package/vfx/index.mjs +1 -1
  64. package/vue/index.js +1 -1
  65. package/vue/index.mjs +1 -1
  66. package/work-downloader/index.js +1 -1
  67. package/work-downloader/index.mjs +1 -1
  68. package/five/gs/util/renderData.d.ts +0 -32
  69. package/five/model/objects/pbmGSRenderMesh.d.ts +0 -32
  70. /package/five/{gs → gaussian-splatting}/wasm/data.d.ts +0 -0
  71. /package/five/{gs → gaussian-splatting}/wasm/sort.d.ts +0 -0
  72. /package/five/{gs → gaussian-splatting}/worker/dataWorker.d.ts +0 -0
  73. /package/five/{gs → gaussian-splatting}/worker/sortWorker.d.ts +0 -0
package/five/index.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  * @license
3
3
  * @realsee/five
4
4
  * Generated: 3/19/2026
5
- * Version: 6.8.0-alpha.20
5
+ * Version: 6.8.0-alpha.21
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -761,17 +761,17 @@ function ee(e, t) {
761
761
  for (n = e - 1; n >= 0; --n) t[n] = 0;
762
762
  t.t = this.t + e, t.s = this.s;
763
763
  }
764
- function P(e, t) {
764
+ function te(e, t) {
765
765
  for (var n = e; n < this.t; ++n) t[n - e] = this[n];
766
766
  t.t = Math.max(this.t - e, 0), t.s = this.s;
767
767
  }
768
- function te(e, t) {
768
+ function ne(e, t) {
769
769
  var n = e % this.DB, r = this.DB - n, i = (1 << r) - 1, a = Math.floor(e / this.DB), o = this.s << n & this.DM, s;
770
770
  for (s = this.t - 1; s >= 0; --s) t[s + a + 1] = this[s] >> r | o, o = (this[s] & i) << n;
771
771
  for (s = a - 1; s >= 0; --s) t[s] = 0;
772
772
  t[a] = o, t.t = this.t + a + 1, t.s = this.s, t.clamp();
773
773
  }
774
- function ne(e, t) {
774
+ function re(e, t) {
775
775
  t.s = this.s;
776
776
  var n = Math.floor(e / this.DB);
777
777
  if (n >= this.t) {
@@ -783,7 +783,7 @@ function ne(e, t) {
783
783
  for (var o = n + 1; o < this.t; ++o) t[o - n - 1] |= (this[o] & a) << i, t[o - n] = this[o] >> r;
784
784
  r > 0 && (t[this.t - n - 1] |= (this.s & a) << i), t.t = this.t - n, t.clamp();
785
785
  }
786
- function re(e, t) {
786
+ function ie(e, t) {
787
787
  for (var n = 0, r = 0, i = Math.min(e.t, this.t); n < i;) r += this[n] - e[n], t[n++] = r & this.DM, r >>= this.DB;
788
788
  if (e.t < this.t) {
789
789
  for (r -= e.s; n < this.t;) r += this[n], t[n++] = r & this.DM, r >>= this.DB;
@@ -794,13 +794,13 @@ function re(e, t) {
794
794
  }
795
795
  t.s = r < 0 ? -1 : 0, r < -1 ? t[n++] = this.DV + r : r > 0 && (t[n++] = r), t.t = n, t.clamp();
796
796
  }
797
- function ie(e, t) {
797
+ function ae(e, t) {
798
798
  var n = this.abs(), r = e.abs(), i = n.t;
799
799
  for (t.t = i + r.t; --i >= 0;) t[i] = 0;
800
800
  for (i = 0; i < r.t; ++i) t[i + n.t] = n.am(0, r[i], t, i, 0, n.t);
801
801
  t.s = 0, t.clamp(), this.s != e.s && d.ZERO.subTo(t, t);
802
802
  }
803
- function ae(e) {
803
+ function oe(e) {
804
804
  for (var t = this.abs(), n = e.t = 2 * t.t; --n >= 0;) e[n] = 0;
805
805
  for (n = 0; n < t.t - 1; ++n) {
806
806
  var r = t.am(n, t[n], e, 2 * n, 0, 1);
@@ -808,7 +808,7 @@ function ae(e) {
808
808
  }
809
809
  e.t > 0 && (e[e.t - 1] += t.am(n, t[n], e, 2 * n, 0, 1)), e.s = 0, e.clamp();
810
810
  }
811
- function oe(e, t, n) {
811
+ function se(e, t, n) {
812
812
  var r = e.abs();
813
813
  if (!(r.t <= 0)) {
814
814
  var i = this.abs();
@@ -831,7 +831,7 @@ function oe(e, t, n) {
831
831
  }
832
832
  }
833
833
  }
834
- function se(e) {
834
+ function P(e) {
835
835
  var t = f();
836
836
  return this.abs().divRemTo(e, null, t), this.s < 0 && t.compareTo(d.ZERO) > 0 && e.subTo(t, t), t;
837
837
  }
@@ -904,7 +904,7 @@ function Se(e, t) {
904
904
  var n = e < 256 || t.isEven() ? new ce(t) : new me(t);
905
905
  return this.exp(e, n);
906
906
  }
907
- d.prototype.copyTo = C, d.prototype.fromInt = w, d.prototype.fromString = E, d.prototype.clamp = D, d.prototype.dlShiftTo = ee, d.prototype.drShiftTo = P, d.prototype.lShiftTo = te, d.prototype.rShiftTo = ne, d.prototype.subTo = re, d.prototype.multiplyTo = ie, d.prototype.squareTo = ae, d.prototype.divRemTo = oe, d.prototype.invDigit = pe, d.prototype.isEven = be, d.prototype.exp = xe, d.prototype.toString = O, d.prototype.negate = k, d.prototype.abs = A, d.prototype.compareTo = j, d.prototype.bitLength = N, d.prototype.mod = se, d.prototype.modPowInt = Se, d.ZERO = T(0), d.ONE = T(1);
907
+ d.prototype.copyTo = C, d.prototype.fromInt = w, d.prototype.fromString = E, d.prototype.clamp = D, d.prototype.dlShiftTo = ee, d.prototype.drShiftTo = te, d.prototype.lShiftTo = ne, d.prototype.rShiftTo = re, d.prototype.subTo = ie, d.prototype.multiplyTo = ae, d.prototype.squareTo = oe, d.prototype.divRemTo = se, d.prototype.invDigit = pe, d.prototype.isEven = be, d.prototype.exp = xe, d.prototype.toString = O, d.prototype.negate = k, d.prototype.abs = A, d.prototype.compareTo = j, d.prototype.bitLength = N, d.prototype.mod = P, d.prototype.modPowInt = Se, d.ZERO = T(0), d.ONE = T(1);
908
908
  function Ce() {
909
909
  if (this.s < 0) {
910
910
  if (this.t == 1) return this[0] - this.DV;
@@ -1692,10 +1692,10 @@ ut.getKey = function(e, t, n) {
1692
1692
  return M.readPKCS5PrvKeyHex(j), M;
1693
1693
  }
1694
1694
  if (e.indexOf("-END EC PRIVATE KEY-") != -1 && e.indexOf("4,ENCRYPTED") != -1) {
1695
- var T = p.getDecryptedKeyHex(e, t), m = a(T, 0, [1], "04"), N = a(T, 0, [2, 0], "06"), ee = a(T, 0, [3, 0], "03").substr(2), P = "";
1696
- if (s.crypto.OID.oidhex2name[N] !== void 0) P = s.crypto.OID.oidhex2name[N];
1695
+ var T = p.getDecryptedKeyHex(e, t), m = a(T, 0, [1], "04"), N = a(T, 0, [2, 0], "06"), ee = a(T, 0, [3, 0], "03").substr(2), te = "";
1696
+ if (s.crypto.OID.oidhex2name[N] !== void 0) te = s.crypto.OID.oidhex2name[N];
1697
1697
  else throw "undefined OID(hex) in KJUR.crypto.OID: " + N;
1698
- var h = new c({ curve: P });
1698
+ var h = new c({ curve: te });
1699
1699
  return h.setPublicKeyHex(ee), h.setPrivateKeyHex(m), h.isPublic = !1, h;
1700
1700
  }
1701
1701
  if (e.indexOf("-END DSA PRIVATE KEY-") != -1 && e.indexOf("4,ENCRYPTED") != -1) {
@@ -3945,7 +3945,7 @@ var jn = {
3945
3945
  distanceGain: G,
3946
3946
  gradientTexture: G,
3947
3947
  boundingBox: An,
3948
- gsSHDegree: G,
3948
+ gaussianSplattingSHDegree: G,
3949
3949
  minLevelOfDetail: G,
3950
3950
  maxLevelOfDetail: G,
3951
3951
  minGeometricError: G,
@@ -4003,7 +4003,7 @@ function Rn() {
4003
4003
  distanceGain: void 0,
4004
4004
  useAddBlend: void 0,
4005
4005
  boundingBox: void 0,
4006
- gsSHDegree: void 0,
4006
+ gaussianSplattingSHDegree: void 0,
4007
4007
  minLevelOfDetail: void 0,
4008
4008
  maxLevelOfDetail: void 0,
4009
4009
  minGeometricError: void 0,
@@ -4059,7 +4059,7 @@ function zn() {
4059
4059
  distanceGain: 0,
4060
4060
  useAddBlend: !1,
4061
4061
  boundingBox: Fn,
4062
- gsSHDegree: 0,
4062
+ gaussianSplattingSHDegree: 0,
4063
4063
  minLevelOfDetail: 0,
4064
4064
  maxLevelOfDetail: 20,
4065
4065
  minGeometricError: 0,
@@ -4180,7 +4180,7 @@ function Wn(t, n) {
4180
4180
  for (let t of r) t.customShaders = n.customShaders, t.pointScale = n.pointScale, t.pointMinPixel = n.pointMinPixel, t.pointMaxPixel = n.pointMaxPixel, t.pointSize = n.pointSize, t.pointShape = n.pointShape, t.pointBack = n.pointBack, t.modelAlpha = n.modelAlpha, t.opacity = n.opacity, t.floorStyle = n.floorStyle, t.constantColor = n.constantColor, t.shownFloorIndex = n.shownFloorIndex, t.clippers = n.clippers, t.brightness = n.brightness, t.useHQWeight = n.useHQWeight, t.useHQDepth = n.useHQDepth, t.colorSaturation = n.colorSaturation, t.colorBrightness = n.colorBrightness, t.outlineGain = n.outlineGain, t.distanceGain = n.distanceGain, t.gradientTexture = n.gradientTexture, t.transparent = !1, t.blending = e.NormalBlending, t.blendDst = e.OneMinusSrcAlphaFactor, t.blendEquation = e.AddEquation, t.blendSrcAlpha = null, t.blendDstAlpha = null, t.blendEquationAlpha = null, t.depthWrite = !0, t.depthTest = !0, t.shownFloorIndex > -1 && (t.transparent = t.shownFloorIndex !== t.floorIndex), t.modelAlpha < 1 && (t.transparent = !0), t.opacity < 1 && (t.transparent = !0), t.brightness < 1 && (t.transparent = !0), n.useAddBlend && (t.depthWrite = !1, t.depthTest = !1, t.blending = e.AdditiveBlending), t.useHQWeight && (t.depthWrite = !1, t.blending = e.CustomBlending, t.blendSrc = e.SrcAlphaFactor, t.blendSrcAlpha = e.SrcAlphaFactor, t.blendDst = e.OneFactor, t.blendDstAlpha = e.OneFactor);
4181
4181
  }
4182
4182
  //#endregion
4183
- //#region build/five/model/objects/pbmGSObject.js
4183
+ //#region build/five/model/objects/pbmGaussianSplattingObject.js
4184
4184
  var Gn = class t extends e.Points {
4185
4185
  get positions() {
4186
4186
  let e = this.geometry.getAttribute("position");
@@ -4217,7 +4217,7 @@ var Gn = class t extends e.Points {
4217
4217
  constructor(t) {
4218
4218
  var n;
4219
4219
  let r = new e.BufferGeometry();
4220
- super(r), this.transformChanged = !1, this.selectedChanged = !1, this.transferDetached = !1, this.maxSHDegree = 0, this.usedSHDegree = 0, this._selected = !1, this.material.visible = !1, this.numPoints = t ? t.numPoints : 0, this.maxSHDegree = (n = t == null ? void 0 : t.shDegree) == null ? 0 : n, this.usedSHDegree = 0, t && t.positions ? r.setAttribute("position", new e.BufferAttribute(t.positions, 3)) : r.setAttribute("position", new e.BufferAttribute(new Float32Array(), 3)), t && t.rotations ? r.setAttribute("rotation", new e.BufferAttribute(t.rotations, 4)) : r.setAttribute("rotation", new e.BufferAttribute(new Float32Array(), 4)), t && t.scales ? r.setAttribute("scale", new e.BufferAttribute(t.scales, 3)) : r.setAttribute("scale", new e.BufferAttribute(new Float32Array(), 3)), t && t.colors ? r.setAttribute("color", new e.BufferAttribute(t.colors, 4, !0)) : r.setAttribute("color", new e.BufferAttribute(new Uint8Array(), 4, !0));
4220
+ super(r), this.transformChanged = !1, this.selectedChanged = !1, this.transferDetached = !1, this.maxSHDegree = 0, this.usedSHDegree = 0, this.gsViewLayerKey = "", this.gsClippers = [], this._selected = !1, this.material.visible = !1, this.numPoints = t ? t.numPoints : 0, this.maxSHDegree = (n = t == null ? void 0 : t.shDegree) == null ? 0 : n, this.usedSHDegree = 0, t && t.positions ? r.setAttribute("position", new e.BufferAttribute(t.positions, 3)) : r.setAttribute("position", new e.BufferAttribute(new Float32Array(), 3)), t && t.rotations ? r.setAttribute("rotation", new e.BufferAttribute(t.rotations, 4)) : r.setAttribute("rotation", new e.BufferAttribute(new Float32Array(), 4)), t && t.scales ? r.setAttribute("scale", new e.BufferAttribute(t.scales, 3)) : r.setAttribute("scale", new e.BufferAttribute(new Float32Array(), 3)), t && t.colors ? r.setAttribute("color", new e.BufferAttribute(t.colors, 4, !0)) : r.setAttribute("color", new e.BufferAttribute(new Uint8Array(), 4, !0));
4221
4221
  let i = new Uint8Array(this.numPoints);
4222
4222
  if (r.setAttribute("selection", new e.BufferAttribute(i, 1)), t != null && t.sh1 && r.setAttribute("sh1", new e.BufferAttribute(t.sh1, 9)), t != null && t.sh2 && r.setAttribute("sh2", new e.BufferAttribute(t.sh2, 15)), t != null && t.sh3 && r.setAttribute("sh3", new e.BufferAttribute(t.sh3, 21)), this._boundingBox = new e.Box3(new e.Vector3(Infinity, Infinity, Infinity), new e.Vector3(-Infinity, -Infinity, -Infinity)), t && t.positions) for (let n = 0; n < this.numPoints; n++) this._boundingBox.expandByPoint(new e.Vector3(t.positions[3 * n], t.positions[3 * n + 1], t.positions[3 * n + 2]));
4223
4223
  this.matrixAutoUpdate = !1, this.lastMatrixWorld = null;
@@ -7163,8 +7163,8 @@ var za = class {
7163
7163
  if (n.bufferView !== void 0) {
7164
7164
  let e = this.json.bufferViews[n.bufferView];
7165
7165
  t = this.loadBuffer(e.buffer).then((t) => {
7166
- let r = e.byteOffset || 0, i = e.byteLength || 0, a = new Uint8Array(t, r, i);
7167
- return ai(new Blob([a], { type: n.mimeType }));
7166
+ let r = e.byteOffset || 0, i = e.byteLength || 0;
7167
+ return ai(new Blob([new Uint8Array(t, r, i)], { type: n.mimeType }));
7168
7168
  });
7169
7169
  } else if (n.uri) {
7170
7170
  let e = this.resolveResouce(n.uri);
@@ -8469,8 +8469,7 @@ var Wo = class {
8469
8469
  for (let e = 0; e < 21; ++e) i[e] = (t[o + e] - 128) / 128;
8470
8470
  o += 21;
8471
8471
  }
8472
- let s = new Float32Array(n), c = r ? new Float32Array(r) : void 0, l = i ? new Float32Array(i) : void 0;
8473
- a == null || a(e, s, c, l);
8472
+ a == null || a(e, new Float32Array(n), r ? new Float32Array(r) : void 0, i ? new Float32Array(i) : void 0);
8474
8473
  }
8475
8474
  }
8476
8475
  });
@@ -9407,8 +9406,8 @@ var Ws = /* @__PURE__ */ Vs(Hs, 9, 1), Gs = /* @__PURE__ */ Vs(Us, 5, 1), Ks = f
9407
9406
  for (y == 16 ? (N = 3 + qs(e, d, 3), d += 2, M = T[D - 1]) : y == 17 ? (N = 3 + qs(e, d, 7), d += 3) : y == 18 && (N = 11 + qs(e, d, 127), d += 7); N--;) T[D++] = M;
9408
9407
  }
9409
9408
  }
9410
- var ee = T.subarray(0, S), P = T.subarray(S);
9411
- h = Ks(ee), g = Ks(P), p = Vs(ee, h, 1), m = Vs(P, g, 1);
9409
+ var ee = T.subarray(0, S), te = T.subarray(S);
9410
+ h = Ks(ee), g = Ks(te), p = Vs(ee, h, 1), m = Vs(te, g, 1);
9412
9411
  } else Qs(1);
9413
9412
  if (d > _) {
9414
9413
  c && Qs(0);
@@ -9416,43 +9415,43 @@ var Ws = /* @__PURE__ */ Vs(Hs, 9, 1), Gs = /* @__PURE__ */ Vs(Us, 5, 1), Ks = f
9416
9415
  }
9417
9416
  }
9418
9417
  s && l(f + 131072);
9419
- for (var te = (1 << h) - 1, ne = (1 << g) - 1, re = d;; re = d) {
9420
- var M = p[Js(e, d) & te], ie = M >> 4;
9418
+ for (var ne = (1 << h) - 1, re = (1 << g) - 1, ie = d;; ie = d) {
9419
+ var M = p[Js(e, d) & ne], ae = M >> 4;
9421
9420
  if (d += M & 15, d > _) {
9422
9421
  c && Qs(0);
9423
9422
  break;
9424
9423
  }
9425
- if (M || Qs(2), ie < 256) n[f++] = ie;
9426
- else if (ie == 256) {
9427
- re = d, p = null;
9424
+ if (M || Qs(2), ae < 256) n[f++] = ae;
9425
+ else if (ae == 256) {
9426
+ ie = d, p = null;
9428
9427
  break;
9429
9428
  } else {
9430
- var ae = ie - 254;
9431
- if (ie > 264) {
9432
- var D = ie - 257, oe = ks[D];
9433
- ae = qs(e, d, (1 << oe) - 1) + Ps[D], d += oe;
9429
+ var oe = ae - 254;
9430
+ if (ae > 264) {
9431
+ var D = ae - 257, se = ks[D];
9432
+ oe = qs(e, d, (1 << se) - 1) + Ps[D], d += se;
9434
9433
  }
9435
- var se = m[Js(e, d) & ne], ce = se >> 4;
9436
- se || Qs(3), d += se & 15;
9437
- var P = Ls[ce];
9434
+ var P = m[Js(e, d) & re], ce = P >> 4;
9435
+ P || Qs(3), d += P & 15;
9436
+ var te = Ls[ce];
9438
9437
  if (ce > 3) {
9439
- var oe = As[ce];
9440
- P += Js(e, d) & (1 << oe) - 1, d += oe;
9438
+ var se = As[ce];
9439
+ te += Js(e, d) & (1 << se) - 1, d += se;
9441
9440
  }
9442
9441
  if (d > _) {
9443
9442
  c && Qs(0);
9444
9443
  break;
9445
9444
  }
9446
9445
  s && l(f + 131072);
9447
- var F = f + ae;
9448
- if (f < P) {
9449
- var le = a - P, ue = Math.min(P, F);
9446
+ var F = f + oe;
9447
+ if (f < te) {
9448
+ var le = a - te, ue = Math.min(te, F);
9450
9449
  for (le + f < 0 && Qs(3); f < ue; ++f) n[f] = r[le + f];
9451
9450
  }
9452
- for (; f < F; ++f) n[f] = n[f - P];
9451
+ for (; f < F; ++f) n[f] = n[f - te];
9453
9452
  }
9454
9453
  }
9455
- t.l = p, t.p = re, t.b = f, t.f = u, p && (u = 1, t.m = h, t.d = m, t.n = g);
9454
+ t.l = p, t.p = ie, t.b = f, t.f = u, p && (u = 1, t.m = h, t.d = m, t.n = g);
9456
9455
  } while (!u);
9457
9456
  return f != n.length && o ? Xs(n, 0, f) : n.subarray(0, f);
9458
9457
  }, ec = /* @__PURE__ */ new Es(0), tc = function(e, t) {
@@ -11136,7 +11135,7 @@ function Jc(t, n = {}) {
11136
11135
  });
11137
11136
  }
11138
11137
  function Yc(t, n) {
11139
- var r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, j, M, N, ee, P, te, ne, re, ie, ae, oe, se, ce, F, le, ue, de, fe, pe, me, he, ge, _e, ve, ye, be;
11138
+ var r, i, a, o, s, c, l, u, d, f, p, m, h, g, _, v, y, b, x, S, C, w, T, E, D, O, k, A, j, M, N, ee, te, ne, re, ie, ae, oe, se, P, ce, F, le, ue, de, fe, pe, me, he, ge, _e, ve, ye, be;
11140
11139
  let xe = pc(t), Se = "", Ce = null;
11141
11140
  for (let e of Object.keys(xe)) /(^|\/)main\.xml$/i.test(e) && (Ce = xe[e], Se = e.slice(0, e.lastIndexOf("/") + 1));
11142
11141
  if (!Ce) throw Error("X3p: main.xml not found.");
@@ -11161,7 +11160,7 @@ function Yc(t, n) {
11161
11160
  offset: Number((N = (M = I == null ? void 0 : I.querySelector("CZ Offset")) == null ? void 0 : M.textContent) == null ? "0" : N)
11162
11161
  }
11163
11162
  }, ke = null, L = De.querySelector("Record1 Axes Rotation");
11164
- L && (ke = new e.Matrix3(), ke.set(Number((P = (ee = L.querySelector("r11")) == null ? void 0 : ee.textContent) == null ? 0 : P), Number((ne = (te = L.querySelector("r12")) == null ? void 0 : te.textContent) == null ? 0 : ne), Number((ie = (re = L.querySelector("r13")) == null ? void 0 : re.textContent) == null ? 0 : ie), Number((oe = (ae = L.querySelector("r21")) == null ? void 0 : ae.textContent) == null ? 0 : oe), Number((ce = (se = L.querySelector("r22")) == null ? void 0 : se.textContent) == null ? 0 : ce), Number((le = (F = L.querySelector("r23")) == null ? void 0 : F.textContent) == null ? 0 : le), Number((de = (ue = L.querySelector("r31")) == null ? void 0 : ue.textContent) == null ? 0 : de), Number((pe = (fe = L.querySelector("r32")) == null ? void 0 : fe.textContent) == null ? 0 : pe), Number((he = (me = L.querySelector("r33")) == null ? void 0 : me.textContent) == null ? 0 : he)));
11163
+ L && (ke = new e.Matrix3(), ke.set(Number((te = (ee = L.querySelector("r11")) == null ? void 0 : ee.textContent) == null ? 0 : te), Number((re = (ne = L.querySelector("r12")) == null ? void 0 : ne.textContent) == null ? 0 : re), Number((ae = (ie = L.querySelector("r13")) == null ? void 0 : ie.textContent) == null ? 0 : ae), Number((se = (oe = L.querySelector("r21")) == null ? void 0 : oe.textContent) == null ? 0 : se), Number((ce = (P = L.querySelector("r22")) == null ? void 0 : P.textContent) == null ? 0 : ce), Number((le = (F = L.querySelector("r23")) == null ? void 0 : F.textContent) == null ? 0 : le), Number((de = (ue = L.querySelector("r31")) == null ? void 0 : ue.textContent) == null ? 0 : de), Number((pe = (fe = L.querySelector("r32")) == null ? void 0 : fe.textContent) == null ? 0 : pe), Number((he = (me = L.querySelector("r33")) == null ? void 0 : me.textContent) == null ? 0 : he)));
11165
11164
  let Ae = (ge = De.querySelector("Record3 DataLink PointDataLink")) == null ? void 0 : ge.textContent;
11166
11165
  if (typeof Ae != "string") throw Error("X3p: PointDataLink not found.");
11167
11166
  Ae = gr(Se, Ae);
@@ -11904,17 +11903,17 @@ var Bl = class e {
11904
11903
  this.getPositionByIndex(n + 1, _);
11905
11904
  let u = _.x, d = _.y, f = _.z;
11906
11905
  this.getPositionByIndex(n + 2, v);
11907
- let p = v.x, h = v.y, y = v.z, E = u - s, D = d - c, O = f - l, k = p - s, A = h - c, j = y - l, M = D * j - O * A, N = O * k - E * j, ee = E * A - D * k, P = C * M + w * N + T * ee, te;
11908
- if (P > 0) te = 1;
11909
- else if (P < 0) te = -1, P = -P;
11906
+ let p = v.x, h = v.y, y = v.z, E = u - s, D = d - c, O = f - l, k = p - s, A = h - c, j = y - l, M = D * j - O * A, N = O * k - E * j, ee = E * A - D * k, te = C * M + w * N + T * ee, ne;
11907
+ if (te > 0) ne = 1;
11908
+ else if (te < 0) ne = -1, te = -te;
11910
11909
  else continue;
11911
- let ne = b - s, re = x - c, ie = S - l, ae = te * (C * (re * j - ie * A) + w * (ie * k - ne * j) + T * (ne * A - re * k));
11912
- if (ae < 0) continue;
11913
- let oe = te * (C * (D * ie - O * re) + w * (O * ne - E * ie) + T * (E * re - D * ne));
11914
- if (oe < 0 || ae + oe > P) continue;
11915
- let se = -te * (ne * M + re * N + ie * ee);
11916
- if (se < 0) continue;
11917
- let ce = se / P, F = new Vl(g, _, v, t, new Bl(b + C * ce, x + w * ce, S + T * ce));
11910
+ let re = b - s, ie = x - c, ae = S - l, oe = ne * (C * (ie * j - ae * A) + w * (ae * k - re * j) + T * (re * A - ie * k));
11911
+ if (oe < 0) continue;
11912
+ let se = ne * (C * (D * ae - O * ie) + w * (O * re - E * ae) + T * (E * ie - D * re));
11913
+ if (se < 0 || oe + se > te) continue;
11914
+ let P = -ne * (re * M + ie * N + ae * ee);
11915
+ if (P < 0) continue;
11916
+ let ce = P / te, F = new Vl(g, _, v, t, new Bl(b + C * ce, x + w * ce, S + T * ce));
11918
11917
  (!i || i(F)) && (r ? ce < m && (m = ce, a.length > 0 && (a.length = 0), a.push(F)) : a.push(F));
11919
11918
  }
11920
11919
  let O = p * 36 / 2, k = u[O + 16], A = u[O + 17];
@@ -12447,7 +12446,7 @@ var Fu = function(e) {
12447
12446
  update(e, t, n, r, i, a) {
12448
12447
  let o = !1;
12449
12448
  r.visible && i.state.selectedFrameNumber === i.tileset.frameNumber ? this.appearMotion.getTargetKeyframe().value.appear !== 1 && this.appearMotion.set({ appear: 1 }, Ru).catch(q) : this.appearMotion.getTargetKeyframe().value.appear !== 0 && this.appearMotion.set({ appear: 0 }, 0).catch(q), this.appearMotion.ended !== !0 && this.appearMotion.update(t.time);
12450
- for (let r of this.pbmObjects) r instanceof hn || r instanceof gn ? Uu(r, this.appearMotion, e, t, n, i, a) === !0 && (o = !0) : r instanceof Tn ? Wu(r, this.appearMotion, e, t, n, i, a) === !0 && (o = !0) : r instanceof Gn && Gu(r, this.appearMotion, e, t, n, i, a) === !0 && (o = !0);
12449
+ for (let s of this.pbmObjects) s instanceof hn || s instanceof gn ? Uu(s, this.appearMotion, e, t, n, i, a) === !0 && (o = !0) : s instanceof Tn ? Wu(s, this.appearMotion, e, t, n, i, a) === !0 && (o = !0) : s instanceof Gn && Gu(s, this.appearMotion, e, t, n, r, i, a) === !0 && (o = !0);
12451
12450
  return o;
12452
12451
  }
12453
12452
  dispose() {
@@ -12484,9 +12483,9 @@ function Wu(t, n, r, i, a, o, s) {
12484
12483
  }
12485
12484
  return u;
12486
12485
  }
12487
- function Gu(t, n, r, i, a, o, s) {
12488
- let c = !1;
12489
- return t.updateMatrix(), t.updateMatrixWorld(), t.usedSHDegree = s.gsSHDegree, t.lastMatrixWorld ? t.transformChanged = !t.lastMatrixWorld.equals(t.matrixWorld) : (t.lastMatrixWorld = new e.Matrix4(), t.transformChanged = !0, c = !0), t.lastMatrixWorld.copy(t.matrixWorld), t.transformChanged && (c = !0), c;
12486
+ function Gu(t, n, r, i, a, o, s, c) {
12487
+ let l = !1, u = o.uuid;
12488
+ return t.gsViewLayerKey !== u && (t.gsViewLayerKey = u, l = !0), t.gsClippers !== c.clippers && (t.gsClippers = c.clippers, l = !0), t.updateMatrix(), t.updateMatrixWorld(), t.usedSHDegree = c.gaussianSplattingSHDegree, t.lastMatrixWorld ? t.transformChanged = !t.lastMatrixWorld.equals(t.matrixWorld) : (t.lastMatrixWorld = new e.Matrix4(), t.transformChanged = !0, l = !0), t.lastMatrixWorld.copy(t.matrixWorld), t.transformChanged && (l = !0), l;
12490
12489
  }
12491
12490
  //#endregion
12492
12491
  //#region build/five/model/tile3d/trajectory.js
@@ -17729,7 +17728,7 @@ var Rh = (function(e, t, n, r) {
17729
17728
  var n = t.ownerDocument || t;
17730
17729
  return n.defaultView || n.parentWindow || e;
17731
17730
  }
17732
- var N = /mobile|tablet|ip(ad|hone|od)|android/i, ee = "ontouchstart" in e, P = k(e, "PointerEvent") !== r, te = ee && N.test(navigator.userAgent), ne = "touch", re = "pen", ie = "mouse", ae = "kinect", oe = 25, se = 1, ce = 2, F = 4, le = 8, ue = 1, de = 2, fe = 4, pe = 8, me = 16, he = de | fe, ge = pe | me, _e = he | ge, ve = ["x", "y"], ye = ["clientX", "clientY"];
17731
+ var N = /mobile|tablet|ip(ad|hone|od)|android/i, ee = "ontouchstart" in e, te = k(e, "PointerEvent") !== r, ne = ee && N.test(navigator.userAgent), re = "touch", ie = "pen", ae = "mouse", oe = "kinect", se = 25, P = 1, ce = 2, F = 4, le = 8, ue = 1, de = 2, fe = 4, pe = 8, me = 16, he = de | fe, ge = pe | me, _e = he | ge, ve = ["x", "y"], ye = ["clientX", "clientY"];
17733
17732
  function be(e, t) {
17734
17733
  var n = this;
17735
17734
  this.manager = e, this.callback = t, this.element = e.element, this.target = e.options.inputTarget, this.domHandler = function(t) {
@@ -17747,10 +17746,10 @@ var Rh = (function(e, t, n, r) {
17747
17746
  };
17748
17747
  function xe(e) {
17749
17748
  var t;
17750
- return t = e.options.inputClass || (P ? ze : te ? qe : ee ? Ze : Pe), new t(e, Se);
17749
+ return t = e.options.inputClass || (te ? ze : ne ? qe : ee ? Ze : Pe), new t(e, Se);
17751
17750
  }
17752
17751
  function Se(e, t, n) {
17753
- var r = n.pointers.length, i = n.changedPointers.length, a = t & se && r - i === 0, o = t & (F | le) && r - i === 0;
17752
+ var r = n.pointers.length, i = n.changedPointers.length, a = t & P && r - i === 0, o = t & (F | le) && r - i === 0;
17754
17753
  n.isFirst = !!a, n.isFinal = !!o, a && (e.session = {}), n.eventType = t, Ce(e, n), e.emit("hammer.input", n), e.recognize(n), e.session.prevInput = n;
17755
17754
  }
17756
17755
  function Ce(e, t) {
@@ -17765,7 +17764,7 @@ var Rh = (function(e, t, n, r) {
17765
17764
  }
17766
17765
  function we(e, t) {
17767
17766
  var n = t.center, r = e.offsetDelta || {}, i = e.prevDelta || {}, a = e.prevInput || {};
17768
- (t.eventType === se || a.eventType === F) && (i = e.prevDelta = {
17767
+ (t.eventType === P || a.eventType === F) && (i = e.prevDelta = {
17769
17768
  x: a.deltaX || 0,
17770
17769
  y: a.deltaY || 0
17771
17770
  }, r = e.offsetDelta = {
@@ -17775,7 +17774,7 @@ var Rh = (function(e, t, n, r) {
17775
17774
  }
17776
17775
  function Te(e, t) {
17777
17776
  var n = e.lastInterval || t, i = t.timeStamp - n.timeStamp, a, o, s, l;
17778
- if (t.eventType != le && (i > oe || n.velocity === r)) {
17777
+ if (t.eventType != le && (i > se || n.velocity === r)) {
17779
17778
  var u = t.deltaX - n.deltaX, d = t.deltaY - n.deltaY, f = I(i, u, d);
17780
17779
  o = f.x, s = f.y, a = c(f.x) > c(f.y) ? f.x : f.y, l = Oe(u, d), e.lastInterval = t;
17781
17780
  } else a = n.velocity, o = n.velocityX, s = n.velocityY, l = n.direction;
@@ -17832,7 +17831,7 @@ var Rh = (function(e, t, n, r) {
17832
17831
  return ke(t[0], t[1], ye) / ke(e[0], e[1], ye);
17833
17832
  }
17834
17833
  var Me = {
17835
- mousedown: se,
17834
+ mousedown: P,
17836
17835
  mousemove: ce,
17837
17836
  mouseup: F
17838
17837
  }, R = "mousedown", Ne = "mousemove mouseup";
@@ -17841,32 +17840,32 @@ var Rh = (function(e, t, n, r) {
17841
17840
  }
17842
17841
  _(Pe, be, { handler: function(e) {
17843
17842
  var t = Me[e.type];
17844
- t & se && (e.button === 0 || e.button === 2) && (this.pressed = !0), t & ce && e.which !== 1 && (t = F), this.pressed && (t & F && (this.pressed = !1), this.callback(this.manager, t, {
17843
+ t & P && (e.button === 0 || e.button === 2) && (this.pressed = !0), t & ce && e.which !== 1 && (t = F), this.pressed && (t & F && (this.pressed = !1), this.callback(this.manager, t, {
17845
17844
  pointers: [e],
17846
17845
  changedPointers: [e],
17847
- pointerType: ie,
17846
+ pointerType: ae,
17848
17847
  srcEvent: e
17849
17848
  }));
17850
17849
  } });
17851
17850
  var Fe = {
17852
- pointerdown: se,
17851
+ pointerdown: P,
17853
17852
  pointermove: ce,
17854
17853
  pointerup: F,
17855
17854
  pointercancel: le,
17856
17855
  pointerout: le
17857
17856
  }, Ie = {
17858
- 2: ne,
17859
- 3: re,
17860
- 4: ie,
17861
- 5: ae
17857
+ 2: re,
17858
+ 3: ie,
17859
+ 4: ae,
17860
+ 5: oe
17862
17861
  }, Le = "pointerdown", Re = "pointermove pointerup pointercancel";
17863
17862
  e.MSPointerEvent && !e.PointerEvent && (Le = "MSPointerDown", Re = "MSPointerMove MSPointerUp MSPointerCancel");
17864
17863
  function ze() {
17865
17864
  this.evEl = Le, this.evWin = Re, be.apply(this, arguments), this.store = this.manager.session.pointerEvents = [];
17866
17865
  }
17867
17866
  _(ze, be, { handler: function(e) {
17868
- var t = this.store, n = !1, r = !1, i = Fe[e.type.toLowerCase().replace("ms", "")], a = Ie[e.pointerType] || e.pointerType, o = a == ne, s = E(t, e.pointerId, "pointerId");
17869
- i & se && (e.button === 0 || e.button === 2 || o) ? s < 0 && (t.push(e), s = t.length - 1) : i & (F | le) ? n = !0 : !o && e.buttons === 0 && (n = !0, r = !0, i = Fe.pointerup), !(s < 0) && (r || (t[s] = e), this.callback(this.manager, i, {
17867
+ var t = this.store, n = !1, r = !1, i = Fe[e.type.toLowerCase().replace("ms", "")], a = Ie[e.pointerType] || e.pointerType, o = a == re, s = E(t, e.pointerId, "pointerId");
17868
+ i & P && (e.button === 0 || e.button === 2 || o) ? s < 0 && (t.push(e), s = t.length - 1) : i & (F | le) ? n = !0 : !o && e.buttons === 0 && (n = !0, r = !0, i = Fe.pointerup), !(s < 0) && (r || (t[s] = e), this.callback(this.manager, i, {
17870
17869
  pointers: t,
17871
17870
  changedPointers: [e],
17872
17871
  pointerType: a,
@@ -17874,7 +17873,7 @@ var Rh = (function(e, t, n, r) {
17874
17873
  }), n && t.splice(s, 1));
17875
17874
  } });
17876
17875
  var Be = {
17877
- touchstart: se,
17876
+ touchstart: P,
17878
17877
  touchmove: ce,
17879
17878
  touchend: F,
17880
17879
  touchcancel: le
@@ -17884,12 +17883,12 @@ var Rh = (function(e, t, n, r) {
17884
17883
  }
17885
17884
  _(Ue, be, { handler: function(e) {
17886
17885
  var t = Be[e.type];
17887
- if (t === se && (this.started = !0), this.started) {
17886
+ if (t === P && (this.started = !0), this.started) {
17888
17887
  var n = We.call(this, e, t);
17889
17888
  t & (F | le) && n[0].length - n[1].length === 0 && (this.started = !1), this.callback(this.manager, t, {
17890
17889
  pointers: n[0],
17891
17890
  changedPointers: n[1],
17892
- pointerType: ne,
17891
+ pointerType: re,
17893
17892
  srcEvent: e
17894
17893
  });
17895
17894
  }
@@ -17899,7 +17898,7 @@ var Rh = (function(e, t, n, r) {
17899
17898
  return t & (F | le) && (n = O(n.concat(r), "identifier", !0)), [n, r];
17900
17899
  }
17901
17900
  var Ge = {
17902
- touchstart: se,
17901
+ touchstart: P,
17903
17902
  touchmove: ce,
17904
17903
  touchend: F,
17905
17904
  touchcancel: le
@@ -17912,17 +17911,17 @@ var Rh = (function(e, t, n, r) {
17912
17911
  n && this.callback(this.manager, t, {
17913
17912
  pointers: n[0],
17914
17913
  changedPointers: n[1],
17915
- pointerType: ne,
17914
+ pointerType: re,
17916
17915
  srcEvent: e
17917
17916
  });
17918
17917
  } });
17919
17918
  function Je(e, t) {
17920
17919
  var n = D(e.touches), r = this.targetIds;
17921
- if (t & (se | ce) && n.length === 1) return r[n[0].identifier] = !0, [n, n];
17920
+ if (t & (P | ce) && n.length === 1) return r[n[0].identifier] = !0, [n, n];
17922
17921
  var i, a, o = D(e.changedTouches), s = [], c = this.target;
17923
17922
  if (a = n.filter(function(e) {
17924
17923
  return C(e.target, c);
17925
- }), t === se) for (i = 0; i < a.length;) r[a[i].identifier] = !0, i++;
17924
+ }), t === P) for (i = 0; i < a.length;) r[a[i].identifier] = !0, i++;
17926
17925
  for (i = 0; i < o.length;) r[o[i].identifier] && s.push(o[i]), t & (F | le) && delete r[o[i].identifier], i++;
17927
17926
  if (s.length) return [O(a.concat(s), "identifier", !0), s];
17928
17927
  }
@@ -17934,7 +17933,7 @@ var Rh = (function(e, t, n, r) {
17934
17933
  }
17935
17934
  _(Ze, be, {
17936
17935
  handler: function(e, t, n) {
17937
- var r = n.pointerType == ne, i = n.pointerType == ie;
17936
+ var r = n.pointerType == re, i = n.pointerType == ae;
17938
17937
  if (!(i && n.sourceCapabilities && n.sourceCapabilities.firesTouchEvents)) {
17939
17938
  if (r) Qe.call(this, t, n);
17940
17939
  else if (i && et.call(this, n)) return;
@@ -17946,7 +17945,7 @@ var Rh = (function(e, t, n, r) {
17946
17945
  }
17947
17946
  });
17948
17947
  function Qe(e, t) {
17949
- e & se ? (this.primaryTouch = t.changedPointers[0].identifier, $e.call(this, t)) : e & (F | le) && $e.call(this, t);
17948
+ e & P ? (this.primaryTouch = t.changedPointers[0].identifier, $e.call(this, t)) : e & (F | le) && $e.call(this, t);
17950
17949
  }
17951
17950
  function $e(e) {
17952
17951
  var t = e.changedPointers[0];
@@ -18177,7 +18176,7 @@ var Rh = (function(e, t, n, r) {
18177
18176
  process: function(e) {
18178
18177
  var t = this.options, n = e.pointers.length === t.pointers, r = e.distance < t.threshold, i = e.deltaTime > t.time;
18179
18178
  if (this._input = e, !r || !n || e.eventType & (F | le) && !i) this.reset();
18180
- else if (e.eventType & se) this.reset(), this._timer = u(function() {
18179
+ else if (e.eventType & P) this.reset(), this._timer = u(function() {
18181
18180
  this.state = ht, this.tryEmit();
18182
18181
  }, t.time, this);
18183
18182
  else if (e.eventType & F) return ht;
@@ -18247,7 +18246,7 @@ var Rh = (function(e, t, n, r) {
18247
18246
  },
18248
18247
  process: function(e) {
18249
18248
  var t = this.options, n = e.pointers.length === t.pointers, r = e.distance < t.threshold, i = e.deltaTime < t.time;
18250
- if (this.reset(), e.eventType & se && this.count === 0) return this.failTimeout();
18249
+ if (this.reset(), e.eventType & P && this.count === 0) return this.failTimeout();
18251
18250
  if (r && i && n) {
18252
18251
  if (e.eventType != F) return this.failTimeout();
18253
18252
  var a = this.pTime ? e.timeStamp - this.pTime < t.interval : !0, o = !this.pCenter || ke(this.pCenter, e.center) < t.posThreshold;
@@ -18396,7 +18395,7 @@ var Rh = (function(e, t, n, r) {
18396
18395
  r.initEvent(e, !0, !0), r.gesture = n, n.target.dispatchEvent(r);
18397
18396
  }
18398
18397
  return m(Ot, {
18399
- INPUT_START: se,
18398
+ INPUT_START: P,
18400
18399
  INPUT_MOVE: ce,
18401
18400
  INPUT_END: F,
18402
18401
  INPUT_CANCEL: le,
@@ -23785,7 +23784,7 @@ Object.assign(cv.prototype, { isLineGeometry: !0 });
23785
23784
  //#region build/line/index.js
23786
23785
  var lv = 14467195, uv = 8, dv = 2, fv = 20, pv = null, mv = class extends e.Object3D {
23787
23786
  static get version() {
23788
- return "6.8.0-alpha.20";
23787
+ return "6.8.0-alpha.21";
23789
23788
  }
23790
23789
  constructor(t = new e.Vector3(), n = new e.Vector3()) {
23791
23790
  super(), this.type = "FiveLine", this.needsRender = !0, this.line = new sv(new cv(), new av({
@@ -25305,7 +25304,7 @@ function ny(t) {
25305
25304
  }
25306
25305
  }
25307
25306
  //#endregion
25308
- //#region build/five/gs/worker/dataWorker.js?worker&inline
25307
+ //#region build/five/gaussian-splatting/worker/dataWorker.js?worker&inline
25309
25308
  var ry = "(function(){function e(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}async function t(e={}){var t,n=e,r=!1,i=!0,a=self.location.href;if(r||i)try{new URL(`.`,a).href}catch{}console.log.bind(console),console.error.bind(console);var o=!1;function s(e){for(var t=0,n=e.length,r=new Uint8Array(n),i;t<n;++t)i=e.charCodeAt(t),r[t]=~i>>8&i;return r}var c,l,u=!1;function d(){var e=M.buffer;new Int8Array(e),new Int16Array(e),n.HEAPU8=l=new Uint8Array(e),new Uint16Array(e),new Int32Array(e),n.HEAPU32=new Uint32Array(e),n.HEAPF32=new Float32Array(e),new Float64Array(e),new BigInt64Array(e),new BigUint64Array(e)}function f(){if(n.preRun)for(typeof n.preRun==`function`&&(n.preRun=[n.preRun]);n.preRun.length;)T(n.preRun.shift());x(w)}function p(){u=!0,I.c()}function m(){if(n.postRun)for(typeof n.postRun==`function`&&(n.postRun=[n.postRun]);n.postRun.length;)C(n.postRun.shift());x(S)}var h;function g(){return s(`\\0asm\\0\\0\\0&\\`\\`}}\\`}\\`\\0\\`\\v\\0\\`\\0\\0\\x07aa\\0\\0\\b\\x07\\0\\0\\x07‚€€\\bA€Œ\\v\\x07b\\0c\\0\\x07d\\0e\\0f\\0\\f\n™@\\x07T~@A€\\b(\\0\"­ \\0­B\\x07|Bøÿÿÿƒ|\"BÿÿÿÿX@ §\"\\0?\\0AtM\\r \\0\\0\\r\\vA„\\bA06\\0A\\vA€\\b \\x006\\0 \\v\\0 \\0 Atr\\vr \\0¼\"Aÿÿÿq!@ AvAÿq\"E\\r\\0 Að\\0M@ A€€€rAñ\\0 kv!\\f\\v AK@A€ø!A\\0!\\f\\v A\ntA€€\\x07k!\\v  AvA€€qr A\\rvr\\vß\\v\\b@ \\0E\\r\\0 \\0A\\bk\" \\0Ak(\\0\"Axq\"\\0j!@ Aq\\r\\0 AqE\\r  (\\0\"k\"A˜\\b(\\0I\\r \\0 j!\\0@@@Aœ\\b(\\0 G@ (\\f! AÿM@  (\\b\"G\\rAˆ\\bAˆ\\b(\\0A~ Avwq6\\0\\f\\v (!\\x07  G@ (\\b\" 6\\f  6\\b\\f\\v (\" Aj (\"E\\r Aj\\v!@ ! \"Aj! (\"\\r\\0 Aj! (\"\\r\\0\\v A\\x006\\0\\f\\v (\"AqAG\\rA\\b \\x006\\0  A~q6  \\0Ar6  \\x006\\0\\v  6\\f  6\\b\\f\\vA\\0!\\v \\x07E\\r\\0@ (\"At\"(¸\n F@ A¸\nj 6\\0 \\rAŒ\\bAŒ\\b(\\0A~ wq6\\0\\f\\v@  \\x07(F@ \\x07 6\\f\\v \\x07 6\\v E\\r\\v  \\x076 (\"@  6  6\\v (\"E\\r\\0  6  6\\v  O\\r\\0 (\"AqE\\r\\0@@@@ AqE@A\\xA0\\b(\\0 F@A\\xA0\\b 6\\0A”\\bA”\\b(\\0 \\0j\"\\x006\\0  \\0Ar6 Aœ\\b(\\0G\\rA\\bA\\x006\\0Aœ\\bA\\x006\\0\\vAœ\\b(\\0\"\\x07 F@Aœ\\b 6\\0A\\bA\\b(\\0 \\0j\"\\x006\\0  \\0Ar6 \\0 j \\x006\\0\\v Axq \\0j!\\0 (\\f! AÿM@ (\\b\" F@Aˆ\\bAˆ\\b(\\0A~ Avwq6\\0\\f\\v  6\\f  6\\b\\f\\v (!\\b  G@ (\\b\" 6\\f  6\\b\\f\\v (\" Aj (\"E\\r Aj\\v!@ ! \"Aj! (\"\\r\\0 Aj! (\"\\r\\0\\v A\\x006\\0\\f\\v  A~q6  \\0Ar6 \\0 j \\x006\\0\\f\\vA\\0!\\v \\bE\\r\\0@ (\"At\"(¸\n F@ A¸\nj 6\\0 \\rAŒ\\bAŒ\\b(\\0A~ wq6\\0\\f\\v@  \\b(F@ \\b 6\\f\\v \\b 6\\v E\\r\\v  \\b6 (\"@  6  6\\v (\"E\\r\\0  6  6\\v  \\0Ar6 \\0 j \\x006\\0  \\x07G\\r\\0A\\b \\x006\\0\\v \\0AÿM@ \\0AøqA°\\bj!Aˆ\\b(\\0\"A \\0Avt\"\\0qE@Aˆ\\b \\0 r6\\0 \\f\\v (\\b\\v!\\0  6\\b \\0 6\\f  6\\f  \\x006\\b\\vA! \\0Aÿÿÿ\\x07M@ \\0A& \\0A\\bvg\"kvAq AtrA>s!\\v  6 B\\x007 AtA¸\nj!@AŒ\\b(\\0\"A t\"qE@AŒ\\b  r6\\0  6\\0A!A\\b\\f\\v \\0A AvkA\\0 AG\\x1Bt! (\\0!@ \"(Axq \\0F\\r Av! At!  Aqj\"(\"\\r\\0\\v  6A! !A\\b\\v!\\0 \"\\f\\v (\\b\" 6\\f  6\\bA!\\0A\\b!A\\0\\v!  j 6\\0  6\\f \\0 j 6\\0A¨\\bA¨\\b(\\0Ak\"\\0A \\0\\x1B6\\0\\v\\v¸'\\v#\\0Ak\"\n$\\0@@@@@@@@@@ \\0AôM@Aˆ\\b(\\0\"A \\0A\\vjAøq \\0A\\vI\\x1B\"Av\"\\0v\"Aq@@ AsAq \\0j\"At\"A°\\bj\"\\0 (¸\\b\"(\\b\"F@Aˆ\\b A~ wq6\\0\\f\\v  \\x006\\f \\0 6\\b\\v A\\bj!\\0  Ar6  j\" (Ar6\\f\\v\\v A\\b(\\0\"\\bM\\r @@A \\0t\"A\\0 kr  \\0tqh\"At\"A°\\bj\" (¸\\b\"\\0(\\b\"F@Aˆ\\b A~ wq\"6\\0\\f\\v  6\\f  6\\b\\v \\0 Ar6 \\0 j\"\\x07  k\"Ar6 \\0 j 6\\0 \\b@ \\bAxqA°\\bj!Aœ\\b(\\0! A \\bAvt\"qE@Aˆ\\b  r6\\0 \\f\\v (\\b\\v!  6\\b  6\\f  6\\f  6\\b\\v \\0A\\bj!\\0Aœ\\b \\x076\\0A\\b 6\\0\\f\\v\\vAŒ\\b(\\0\"\\vE\\r \\vhAt(¸\n\"(Axq k! !@@ (\"\\0E@ (\"\\0E\\r\\v \\0(Axq k\"   I\"\\x1B! \\0  \\x1B! \\0!\\f\\v\\v (!  (\\f\"\\0G@ (\\b\" \\x006\\f \\0 6\\b\\f\n\\v (\" Aj (\"E\\r Aj\\v!@ !\\x07 \"\\0Aj! \\0(\"\\r\\0 \\0Aj! \\0(\"\\r\\0\\v \\x07A\\x006\\0\\f \\vA! \\0A¿K\\r\\0 \\0A\\vj\"Axq!AŒ\\b(\\0\"\\x07E\\r\\0A!\\bA\\0 k! \\0Aôÿÿ\\x07M@ A& A\\bvg\"\\0kvAq \\0AtkA>j!\\b\\v@@@ \\bAt(¸\n\"E@A\\0!\\0\\f\\vA\\0!\\0 A \\bAvkA\\0 \\bAG\\x1Bt!@@ (Axq k\" O\\r\\0 ! \"\\r\\0A\\0! !\\0\\f\\v \\0 (\"   AvAqj(\"F\\x1B \\0 \\x1B!\\0 At! \\r\\0\\v\\v \\0 rE@A\\0!A \\bt\"\\0A\\0 \\0kr \\x07q\"\\0E\\r \\0hAt(¸\n!\\0\\v \\0E\\r\\v@ \\0(Axq k\" I!   \\x1B! \\0  \\x1B! \\0(\"  \\0(\\v\"\\0\\r\\0\\v\\v E\\r\\0 A\\b(\\0 kO\\r\\0 (!\\b  (\\f\"\\0G@ (\\b\" \\x006\\f \\0 6\\b\\f\\b\\v (\" Aj (\"E\\r Aj\\v!@ ! \"\\0Aj! \\0(\"\\r\\0 \\0Aj! \\0(\"\\r\\0\\v A\\x006\\0\\f\\x07\\v A\\b(\\0\"M@Aœ\\b(\\0!\\0@  k\"AO@ \\0 j\" Ar6 \\0 j 6\\0 \\0 Ar6\\f\\v \\0 Ar6 \\0 j\" (Ar6A\\0!A\\0!\\vA\\b 6\\0Aœ\\b 6\\0 \\0A\\bj!\\0\\f \\v A”\\b(\\0\"I@A”\\b  k\"6\\0A\\xA0\\bA\\xA0\\b(\\0\"\\0 j\"6\\0  Ar6 \\0 Ar6 \\0A\\bj!\\0\\f \\vA\\0!\\0 A/j\"Aà\\v(\\0@Aè\\v(\\0\\f\\vAì\\vB7\\0Aä\\vB€\\xA0€€€€7\\0Aà\\v \nA\\fjApqAتժs6\\0Aô\\vA\\x006\\0AÄ\\vA\\x006\\0A€ \\v\"j\"A\\0 k\"\\x07q\" M\\r\\bAÀ\\v(\\0\"@A¸\\v(\\0\"\\b j\" \\bM  Ir\\r \\v@AÄ\\v-\\0\\0AqE@@@@@A\\xA0\\b(\\0\"@AÈ\\v!\\0@ \\0(\\0\"\\b M@  \\b \\0(jI\\r\\v \\0(\\b\"\\0\\r\\0\\v\\vA\\0\"AF\\r !Aä\\v(\\0\"\\0Ak\" q@  k  jA\\0 \\0kqj!\\v  M\\rAÀ\\v(\\0\"\\0@A¸\\v(\\0\" j\"\\x07 M \\0 \\x07Ir\\r\\v \"\\0 G\\r\\f\\v  k \\x07q\"\" \\0(\\0 \\0(jF\\r !\\0\\v \\0AF\\r A0j M@ \\0!\\f\\vAè\\v(\\0\"  kjA\\0 kq\"AF\\r  j! \\0!\\f\\v AG\\r\\vAÄ\\vAÄ\\v(\\0Ar6\\0\\v \"AFA\\0\"\\0AFr \\0 Mr\\r \\0 k\" A(jM\\r\\vA¸\\vA¸\\v(\\0 j\"\\x006\\0A¼\\v(\\0 \\0I@A¼\\v \\x006\\0\\v@A\\xA0\\b(\\0\"@AÈ\\v!\\0@  \\0(\\0\" \\0(\"jF\\r \\0(\\b\"\\0\\r\\0\\v\\f\\vA˜\\b(\\0\"\\0A\\0 \\0 M\\x1BE@A˜\\b 6\\0\\vA\\0!\\0AÌ\\v 6\\0AÈ\\v 6\\0A¨\\bA6\\0A¬\\bAà\\v(\\x006\\0AÔ\\vA\\x006\\0@ \\0At\" A°\\bj\"6¸\\b  6¼\\b \\0Aj\"\\0A G\\r\\0\\vA”\\b A(k\"\\0Ax kA\\x07q\"k\"6\\0A\\xA0\\b  j\"6\\0  Ar6 \\0 jA(6A¤\\bAð\\v(\\x006\\0\\f\\v  M  Kr\\r \\0(\\fA\\bq\\r \\0  j6A\\xA0\\b Ax kA\\x07q\"\\0j\"6\\0A”\\bA”\\b(\\0 j\" \\0k\"\\x006\\0  \\0Ar6  jA(6A¤\\bAð\\v(\\x006\\0\\f\\vA\\0!\\0\\f\\vA\\0!\\0\\f\\vA˜\\b(\\0 K@A˜\\b 6\\0\\v  j!AÈ\\v!\\0@@  \\0(\\0\"G@ \\0(\\b\"\\0\\r\\f\\v\\v \\0-\\0\\fA\\bqE\\r\\vAÈ\\v!\\0@@ \\0(\\0\" M@   \\0(j\"I\\r\\v \\0(\\b!\\0\\f\\v\\vA”\\b A(k\"\\0Ax kA\\x07q\"k\"\\x076\\0A\\xA0\\b  j\"6\\0  \\x07Ar6 \\0 jA(6A¤\\bAð\\v(\\x006\\0  A' kA\\x07qjA/k\"\\0 \\0 AjI\\x1B\"A\\x1B6 AÐ\\v)\\x007 AÈ\\v)\\x007\\bAÐ\\v A\\bj6\\0AÌ\\v 6\\0AÈ\\v 6\\0AÔ\\vA\\x006\\0 Aj!\\0@ \\0A\\x076 \\0A\\bj \\0Aj!\\0 I\\r\\0\\v  F\\r\\0  (A~q6   k\"Ar6  6\\0 AÿM@ AøqA°\\bj!\\0Aˆ\\b(\\0\"A Avt\"qE@Aˆ\\b  r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\fA\\f!A\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg\"\\0kvAq \\0AtrA>s!\\0\\v  \\x006 B\\x007 \\0AtA¸\nj!@@AŒ\\b(\\0\"A \\0t\"qE@AŒ\\b  r6\\0  6\\0\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ \"(Axq F\\r \\0Av! \\0At!\\0  Aqj\"(\"\\r\\0\\v  6\\v  6A\\b! \"!\\0A\\f\\f\\v (\\b\"\\0 6\\f  6\\b  \\x006\\bA\\0!\\0A!A\\f\\v j 6\\0  j \\x006\\0\\vA”\\b(\\0\"\\0 M\\r\\0A”\\b \\0 k\"6\\0A\\xA0\\bA\\xA0\\b(\\0\"\\0 j\"6\\0  Ar6 \\0 Ar6 \\0A\\bj!\\0\\f\\vA„\\bA06\\0A\\0!\\0\\f\\v \\0 6\\0 \\0 \\0( j6 Ax kA\\x07qj\"\\b Ar6 Ax kA\\x07qj\"  \\bj\"k!\\x07@A\\xA0\\b(\\0 F@A\\xA0\\b 6\\0A”\\bA”\\b(\\0 \\x07j\"\\x006\\0  \\0Ar6\\f\\vAœ\\b(\\0 F@Aœ\\b 6\\0A\\bA\\b(\\0 \\x07j\"\\x006\\0  \\0Ar6 \\0 j \\x006\\0\\f\\v (\"\\0AqAF@ \\0Axq! (\\f!@ \\0AÿM@ (\\b\" F@Aˆ\\bAˆ\\b(\\0A~ \\0Avwq6\\0\\f\\v  6\\f  6\\b\\f\\v (!@  G@ (\\b\"\\0 6\\f  \\x006\\b\\f\\v@ (\"\\0 Aj (\"\\0E\\r Aj\\v!@ ! \\0\"Aj! \\0(\"\\0\\r\\0 Aj! (\"\\0\\r\\0\\v A\\x006\\0\\f\\vA\\0!\\v E\\r\\0@ (\"\\0At\"(¸\n F@ A¸\nj 6\\0 \\rAŒ\\bAŒ\\b(\\0A~ \\0wq6\\0\\f\\v@  (F@  6\\f\\v  6\\v E\\r\\v  6 (\"\\0@  \\x006 \\0 6\\v (\"\\0E\\r\\0  \\x006 \\0 6\\v \\x07 j!\\x07  j\"(!\\0\\v  \\0A~q6  \\x07Ar6  \\x07j \\x076\\0 \\x07AÿM@ \\x07AøqA°\\bj!\\0Aˆ\\b(\\0\"A \\x07Avt\"qE@Aˆ\\b  r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\f  \\x006\\f  6\\b\\f\\vA! \\x07Aÿÿÿ\\x07M@ \\x07A& \\x07A\\bvg\"\\0kvAq \\0AtrA>s!\\v  6 B\\x007 AtA¸\nj!\\0@@AŒ\\b(\\0\"A t\"qE@AŒ\\b  r6\\0 \\0 6\\0\\f\\v \\x07A AvkA\\0 AG\\x1Bt! \\0(\\0!@ \"\\0(Axq \\x07F\\r Av! At! \\0 Aqj\"(\"\\r\\0\\v  6\\v  \\x006  6\\f  6\\b\\f\\v \\0(\\b\" 6\\f \\0 6\\b A\\x006  \\x006\\f  6\\b\\v \\bA\\bj!\\0\\f\\v@ \\bE\\r\\0@ (\"At\"(¸\n F@ A¸\nj \\x006\\0 \\0\\rAŒ\\b \\x07A~ wq\"\\x076\\0\\f\\v@  \\b(F@ \\b \\x006\\f\\v \\b \\x006\\v \\0E\\r\\v \\0 \\b6 (\"@ \\0 6  \\x006\\v (\"E\\r\\0 \\0 6  \\x006\\v@ AM@   j\"\\0Ar6 \\0 j\"\\0 \\0(Ar6\\f\\v  Ar6  j\" Ar6  j 6\\0 AÿM@ AøqA°\\bj!\\0Aˆ\\b(\\0\"A Avt\"qE@Aˆ\\b  r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\f  \\x006\\f  6\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg\"\\0kvAq \\0AtrA>s!\\0\\v  \\x006 B\\x007 \\0AtA¸\nj!@@ \\x07A \\0t\"qE@AŒ\\b  \\x07r6\\0  6\\0  6\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ \"(Axq F\\r \\0Av! \\0At!\\0  Aqj\"\\x07(\"\\r\\0\\v \\x07 6  6\\v  6\\f  6\\b\\f\\v (\\b\"\\0 6\\f  6\\b A\\x006  6\\f  \\x006\\b\\v A\\bj!\\0\\f\\v@ E\\r\\0@ (\"At\"(¸\n F@ A¸\nj \\x006\\0 \\0\\rAŒ\\b \\vA~ wq6\\0\\f\\v@  (F@ \\x006\\f\\v \\x006\\v \\0E\\r\\v \\0 6 (\"@ \\0 6  \\x006\\v (\"E\\r\\0 \\0 6  \\x006\\v@ AM@   j\"\\0Ar6 \\0 j\"\\0 \\0(Ar6\\f\\v  Ar6  j\" Ar6  j 6\\0 \\b@ \\bAxqA°\\bj!\\0Aœ\\b(\\0!A \\bAvt\"\\x07 qE@Aˆ\\b  \\x07r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\f  \\x006\\f  6\\b\\vAœ\\b 6\\0A\\b 6\\0\\v A\\bj!\\0\\v \nAj$\\0 \\0\\v¡\\v\\v }#\\0A\\xA0k\"\\v$\\0 \\vA0jA\\0A$ü\\v\\0@  G@  Al\"\\fAjAt\"j*\\0!  \\fAjAt\"j*\\0! \\b \\fAt\"j  j*\\0\"8\\0 \\b j 8\\0 \\b j 8\\0 \\x07 Atj\"\\rA\\x006\\f \\r 8\\b \\r 8 \\r 8\\0@ \\0E@  j-\\0\\0E\\r\\v \\rA€€€\\b6\\f\\v \\r  At\"\\fAr\"j-\\0\\0A\\bt  \\fj-\\0\\0r  \\fAr\"j-\\0\\0Atr  \\fAr\"\\fj-\\0\\0Atr6 \\v  At\"j*\\0\"8 \\v  At\"j*\\0\"8” \\v  \\fAt\"j*\\0\"8˜ \\v  At\"j*\\0Œ\"8œ \\vAà\\0j\"\\f \\v*˜\"C\\0\\0\\0À” ” \\v*”\"C\\0\\0\\0À” ”C\\0\\0€?’’8\\0 \\f \\v*\" ’ \\v*”” \\v*˜\" ’ \\v*œ”“8 \\f \\v*\" ’ \\v*˜” \\v*”\" ’ \\v*œ”’8\\b \\f \\v*\" ’ \\v*”” \\v*˜\" ’ \\v*œ”’8\\f \\f \\v*˜\"C\\0\\0\\0À” ” \\v*\"C\\0\\0\\0À” ”C\\0\\0€?’’8 \\f \\v*”\" ’ \\v*˜” \\v*\" ’ \\v*œ”“8 \\f \\v*\" ’ \\v*˜” \\v*”\" ’ \\v*œ”“8 \\f \\v*”\" ’ \\v*˜” \\v*\" ’ \\v*œ”’8 \\f \\v*”\"C\\0\\0\\0À” ” \\v*\"C\\0\\0\\0À” ”C\\0\\0€?’’8 j 8\\0 j 8\\0 j 8\\0 j 8\\0 \\v  j*\\0\"80 \\v  j*\\0\"8@ \\v  j*\\0\"8P \n j 8\\0 \n j 8\\0 \n j 8\\0 \\v \\f* \\v*8” \\f*\\0 \\v*0” \\f*\\f \\v*4”’’8\\0 \\v \\f* \\v*8” \\f* \\v*0” \\f* \\v*4”’’8 \\v \\f* \\v*8” \\f*\\b \\v*0” \\f* \\v*4”’’8\\b \\v \\f* \\v*D” \\f*\\0 \\v*<” \\f*\\f \\v*@”’’8\\f \\v \\f* \\v*D” \\f* \\v*<” \\f* \\v*@”’’8 \\v \\f* \\v*D” \\f*\\b \\v*<” \\f* \\v*@”’’8 \\v \\f* \\v*P” \\f*\\0 \\v*H” \\f*\\f \\v*L”’’8 \\v \\f* \\v*P” \\f* \\v*H” \\f* \\v*L”’’8 \\v \\f* \\v*P” \\f*\\b \\v*H” \\f* \\v*L”’’8 \\v* ! \\v*\\b! \\v*! \\r \\v*\" ” \\v*\\0\" ” \\v*\\f\"\\x1B \\x1B”’’C\\0\\0€@”  \\v*\"”  \\v*\"” \\x1B \\v*\"”’’C\\0\\0€@”6 \\r  ”  ” \\x1B ”’’C\\0\\0€@”  ”  ”  ”’’C\\0\\0€@”6 \\r  ”  ”  ”’’C\\0\\0€@”  ”  ”  ”’’C\\0\\0€@”6 Aj!\\f\\v\\v \\vA\\xA0j$\\0\\v\\0\\v\\v \\0A\\b\\v`)}function _(e){return e}function v(e,t){var n,r=_(e);return n=new WebAssembly.Module(r),[new WebAssembly.Instance(n,t),n]}function y(){return{a:P}}function b(){function e(e,t){return I=e.exports,N(I),d(),I}var t=y();return n.instantiateWasm?new Promise((r,i)=>{n.instantiateWasm(t,(t,n)=>{r(e(t,n))})}):(h??=g(),e(v(h,t)[0]))}for(var x=e=>{for(;e.length>0;)e.shift()(n)},S=[],C=e=>S.push(e),w=[],T=e=>w.push(e),E=()=>2147483648,D=(e,t)=>Math.ceil(e/t)*t,O=e=>{var t=(e-M.buffer.byteLength+65535)/65536|0;try{return M.grow(t),d(),1}catch{}},k=e=>{var t=l.length;e>>>=0;var n=E();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);if(i=Math.min(i,e+100663296),O(Math.min(n,D(Math.max(e,i),65536))))return!0}return!1},A=new Uint8Array(123),j=25;j>=0;--j)A[48+j]=52+j,A[65+j]=j,A[97+j]=26+j;if(A[43]=62,A[47]=63,n.noExitRuntime&&n.noExitRuntime,n.print&&n.print,n.printErr&&n.printErr,n.wasmBinary&&n.wasmBinary,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.preInit)for(typeof n.preInit==`function`&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();var M;function N(e){n._pack=e.d,n._malloc=e.e,n._free=e.f,M=e.b,e.__indirect_function_table}var P={a:k};function F(){f();function e(){n.calledRun=!0,!o&&(p(),c?.(n),n.onRuntimeInitialized?.(),m())}n.setStatus?(n.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>n.setStatus(``),1),e()},1)):e()}var I=b();return F(),t=u?n:new Promise((e,t)=>{c=e}),t}let n;function r(){return e(this,void 0,void 0,function*(){n=yield t()})}let i=0,a=[],o=!1,s=!1,c,l,u,d,f,p,m,h,g,_=t=>e(void 0,void 0,void 0,function*(){for(;s;)yield new Promise(e=>setTimeout(e,0));n||(s=!0,yield r(),s=!1);let e=2**Math.ceil(Math.log2(t.vertexCount));e>i&&(i>0&&(n._free(c),n._free(l),n._free(u),n._free(d),n._free(f),n._free(p),n._free(m),n._free(h),n._free(g)),i=e,c=n._malloc(3*i*4),l=n._malloc(4*i*4),u=n._malloc(3*i*4),d=n._malloc(4*i),f=n._malloc(i),p=n._malloc(8*i*4),m=n._malloc(3*i*4),h=n._malloc(4*i*4),g=n._malloc(3*i*4)),n.HEAPF32.set(t.positions,c/4),n.HEAPF32.set(t.rotations,l/4),n.HEAPF32.set(t.scales,u/4),n.HEAPU8.set(t.colors,d),n.HEAPU8.set(t.selection,f),n._pack(t.selected,t.vertexCount,c,l,u,d,f,p,m,h,g);let a=new Uint32Array(n.HEAPU32.buffer,p,t.vertexCount*8),_=new Uint32Array(a.slice().buffer),v=new Float32Array(n.HEAPF32.buffer,m,t.vertexCount*3),y=new Float32Array(v.slice().buffer),b=new Float32Array(n.HEAPF32.buffer,h,t.vertexCount*4),x=new Float32Array(b.slice().buffer),S=new Float32Array(n.HEAPF32.buffer,g,t.vertexCount*3),C={data:_,worldPositions:y,worldRotations:x,worldScales:new Float32Array(S.slice().buffer),offset:t.offset,vertexCount:t.vertexCount,positions:t.positions.buffer,rotations:t.rotations.buffer,scales:t.scales.buffer,colors:t.colors.buffer,selection:t.selection.buffer};self.postMessage({response:C},[C.data.buffer,C.worldPositions.buffer,C.worldRotations.buffer,C.worldScales.buffer,C.positions,C.rotations,C.scales,C.colors,C.selection]),o=!1}),v=()=>{a.length!==0&&(o||(o=!0,_(a.shift()),setTimeout(()=>{o=!1,v()},0)))};self.onmessage=e=>new Promise((t,n)=>{if(e.data.splat){let n=e.data.splat;for(let e=0;e<a.length;e++)if(a[e].offset===n.offset){a[e]=n,t(!0);return}a.push(n),v(),t(!0)}})})();", iy = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", ry], { type: "text/javascript;charset=utf-8" });
25310
25309
  function ay(e) {
25311
25310
  let t;
@@ -25320,7 +25319,7 @@ function ay(e) {
25320
25319
  }
25321
25320
  }
25322
25321
  //#endregion
25323
- //#region \0@oxc-project+runtime@0.115.0/helpers/asyncToGenerator.js
25322
+ //#region \0@oxc-project+runtime@0.120.0/helpers/asyncToGenerator.js
25324
25323
  function oy(e, t, n, r, i, a, o) {
25325
25324
  try {
25326
25325
  var s = e[a](o), c = s.value;
@@ -25346,7 +25345,7 @@ function sy(e) {
25346
25345
  };
25347
25346
  }
25348
25347
  //#endregion
25349
- //#region build/five/gs/wasm/data.js
25348
+ //#region build/five/gaussian-splatting/wasm/data.js
25350
25349
  function cy() {
25351
25350
  return ly.apply(this, arguments);
25352
25351
  }
@@ -25384,7 +25383,7 @@ function ly() {
25384
25383
  x(w);
25385
25384
  }
25386
25385
  function p() {
25387
- u = !0, te.c();
25386
+ u = !0, ne.c();
25388
25387
  }
25389
25388
  function m() {
25390
25389
  if (n.postRun) for (typeof n.postRun == "function" && (n.postRun = [n.postRun]); n.postRun.length;) C(n.postRun.shift());
@@ -25406,7 +25405,7 @@ function ly() {
25406
25405
  }
25407
25406
  function b() {
25408
25407
  function e(e, t) {
25409
- return te = e.exports, N(te), d(), te;
25408
+ return ne = e.exports, N(ne), d(), ne;
25410
25409
  }
25411
25410
  var t = y();
25412
25411
  return n.instantiateWasm ? new Promise((r, i) => {
@@ -25439,7 +25438,7 @@ function ly() {
25439
25438
  n._pack = e.d, n._malloc = e.e, n._free = e.f, M = e.b, e.__indirect_function_table;
25440
25439
  }
25441
25440
  var ee = { a: k };
25442
- function P() {
25441
+ function te() {
25443
25442
  f();
25444
25443
  function e() {
25445
25444
  var e;
@@ -25449,54 +25448,113 @@ function ly() {
25449
25448
  setTimeout(() => n.setStatus(""), 1), e();
25450
25449
  }, 1)) : e();
25451
25450
  }
25452
- var te = b();
25453
- return P(), t = u ? n : new Promise((e, t) => {
25451
+ var ne = b();
25452
+ return te(), t = u ? n : new Promise((e, t) => {
25454
25453
  c = e;
25455
25454
  }), t;
25456
25455
  }), ly.apply(this, arguments);
25457
25456
  }
25458
25457
  //#endregion
25459
- //#region build/five/gs/util/renderData.js
25460
- var uy = class {
25461
- constructor(e) {
25462
- this.dataChanged = !1, this.transformsChanged = !1, this.maxShDegree = 0;
25463
- let t = 0, n = 0;
25464
- this.splatIndices = /* @__PURE__ */ new Map(), this.offsets = /* @__PURE__ */ new Map();
25465
- let r = /* @__PURE__ */ new Map();
25458
+ //#region build/five/gaussian-splatting/util/renderData.js
25459
+ var uy = null;
25460
+ function dy() {
25461
+ return uy || (uy = cy()), uy;
25462
+ }
25463
+ var fy = class {
25464
+ static warmupWasm() {
25465
+ dy();
25466
+ }
25467
+ constructor(e, t = 0) {
25468
+ this.dataChanged = !1, this.transformsChanged = !1, this.maxShDegree = 0, this.initialBuildComplete = !1, this.pendingInitialBuildCount = 0, this.disposed = !1, this.resolveReadyPromise = null, this.objectsInOrder = [], this.generation = t, this.readyPromise = new Promise((e) => {
25469
+ this.resolveReadyPromise = e;
25470
+ });
25471
+ let n = 0, r = 0;
25472
+ this.splatIndices = /* @__PURE__ */ new Map(), this.offsets = /* @__PURE__ */ new Map(), this.layerKeys = [], this.layerKeyToIndex = /* @__PURE__ */ new Map(), this.objectLayerIndices = /* @__PURE__ */ new Map();
25473
+ let i = /* @__PURE__ */ new Map();
25466
25474
  e.forEach((e) => {
25467
- this.splatIndices.set(e, n), this.offsets.set(e, t), r.set(t, e), t += e.numPoints, n++;
25468
- }), this.numPoints = t, this.width = 2048, this.height = Math.ceil(2 * this.numPoints / this.width), this.data = new Uint32Array(this.width * this.height * 4), this.transformsWidth = 5, this.transformsHeight = r.size, this.transforms = new Float32Array(this.transformsWidth * this.transformsHeight * 4), this.transformIndicesWidth = 1024, this.transformIndicesHeight = Math.ceil(this.numPoints / this.transformIndicesWidth), this.transformIndices = new Uint32Array(this.transformIndicesWidth * this.transformIndicesHeight), this.positions = new Float32Array(this.numPoints * 3), this.rotations = new Float32Array(this.numPoints * 4), this.scales = new Float32Array(this.numPoints * 3);
25469
- let i = 0;
25475
+ this.splatIndices.set(e, r), this.offsets.set(e, n), i.set(n, e);
25476
+ let t = e.gsViewLayerKey || e.uuid, a = this.layerKeyToIndex.get(t);
25477
+ a === void 0 && (a = this.layerKeys.length, this.layerKeys.push(t), this.layerKeyToIndex.set(t, a)), this.objectLayerIndices.set(e, a), n += e.numPoints, r++, this.objectsInOrder.push(e);
25478
+ }), this.numPoints = n, this.pendingInitialBuildCount = e.length, this.initialBuildComplete = this.pendingInitialBuildCount === 0, this.width = 2048, this.height = Math.ceil(2 * this.numPoints / this.width), this.data = new Uint32Array(this.width * this.height * 4), this.transformsWidth = 5, this.transformsHeight = i.size, this.transforms = new Float32Array(this.transformsWidth * this.transformsHeight * 4), this.transformIndicesWidth = 1024, this.transformIndicesHeight = Math.ceil(this.numPoints / this.transformIndicesWidth), this.transformIndices = new Uint32Array(this.transformIndicesWidth * this.transformIndicesHeight), this.layerIndicesWidth = 1024, this.layerIndicesHeight = Math.ceil(this.numPoints / this.layerIndicesWidth), this.layerIndices = new Uint32Array(this.layerIndicesWidth * this.layerIndicesHeight), this.positions = new Float32Array(this.numPoints * 3), this.rotations = new Float32Array(this.numPoints * 4), this.scales = new Float32Array(this.numPoints * 3);
25479
+ let a = 0;
25470
25480
  e.forEach((e) => {
25471
- e.maxSHDegree > i && (i = e.maxSHDegree);
25472
- }), this.maxShDegree = i, i >= 1 && (this.sh1 = new Float32Array(this.numPoints * 9)), i >= 2 && (this.sh2 = new Float32Array(this.numPoints * 15)), i >= 3 && (this.sh3 = new Float32Array(this.numPoints * 21)), e.forEach((e) => {
25481
+ e.maxSHDegree > a && (a = e.maxSHDegree);
25482
+ }), this.maxShDegree = a, a >= 1 && (this.sh1 = new Float32Array(this.numPoints * 9)), a >= 2 && (this.sh2 = new Float32Array(this.numPoints * 15)), a >= 3 && (this.sh3 = new Float32Array(this.numPoints * 21)), e.forEach((e) => {
25473
25483
  let t = this.offsets.get(e);
25474
25484
  e.sh1 && this.sh1 && this.sh1.set(e.sh1, t * 9), e.sh2 && this.sh2 && this.sh2.set(e.sh2, t * 15), e.sh3 && this.sh3 && this.sh3.set(e.sh3, t * 21);
25475
25485
  }), this.worker = new ay(), this.worker.onmessage = (e) => {
25476
- if (e.data.response) {
25477
- let t = e.data.response, n = r.get(t.offset);
25486
+ if (!this.disposed && e.data.response) {
25487
+ let t = e.data.response, n = i.get(t.offset);
25488
+ if (!n) return;
25478
25489
  this.updateTransform(n);
25479
- let i = this.splatIndices.get(n);
25480
- for (let e = 0; e < n.numPoints; e++) this.transformIndices[t.offset + e] = i;
25490
+ let r = this.splatIndices.get(n), a = this.objectLayerIndices.get(n);
25491
+ for (let e = 0; e < n.numPoints; e++) this.transformIndices[t.offset + e] = r, this.layerIndices[t.offset + e] = a;
25481
25492
  this.data.set(t.data, t.offset * 8), n.reattach(t.positions, t.rotations, t.scales, t.colors, t.selection), this.positions.set(t.worldPositions, t.offset * 3), this.rotations.set(t.worldRotations, t.offset * 4), this.scales.set(t.worldScales, t.offset * 3), n.selectedChanged = !1, this.dataChanged = !0;
25482
25493
  }
25483
- }, cy().then((e) => {
25494
+ }, dy().then((e) => {
25495
+ if (this.disposed) {
25496
+ this.completeInitialBuild();
25497
+ return;
25498
+ }
25484
25499
  this.splatIndices.forEach((t, n) => {
25485
- this.buildImmediate(e, n);
25500
+ this.disposed || this.buildImmediate(e, n);
25486
25501
  });
25487
- });
25502
+ }).catch((e) => {
25503
+ console.warn("RenderData wasm load failed:", e), this.completeInitialBuild();
25504
+ }), this.pendingInitialBuildCount === 0 && this.completeInitialBuild();
25488
25505
  }
25489
25506
  updateTransform(e) {
25490
25507
  let t = this.splatIndices.get(e);
25491
25508
  this.transforms.set(e.matrixWorld.elements, t * 20), this.transforms[t * 20 + 16] = e.selected ? 1 : 0, e.transformChanged = !1, e.selectedChanged = !1, this.transformsChanged = !0;
25492
25509
  }
25510
+ getObjectsInOrder() {
25511
+ return this.objectsInOrder;
25512
+ }
25513
+ canIncrementalAppend(e) {
25514
+ if (this.disposed || e.length <= this.objectsInOrder.length) return !1;
25515
+ for (let t = 0; t < this.objectsInOrder.length; t++) if (e[t] !== this.objectsInOrder[t]) return !1;
25516
+ return !0;
25517
+ }
25518
+ appendObjects(e) {
25519
+ return Lo(this, void 0, void 0, function* () {
25520
+ if (this.disposed) return !1;
25521
+ if (e.length === 0) return !0;
25522
+ let t = yield dy();
25523
+ if (this.disposed) return !1;
25524
+ let n = this.numPoints, r = this.objectsInOrder.length, i = n + e.reduce((e, t) => e + t.numPoints, 0), a = r + e.length;
25525
+ this.numPoints = i, this.height = Math.ceil(2 * this.numPoints / this.width), this.data = this.expandUint32Array(this.data, this.width * this.height * 4), this.transformsHeight = a, this.transforms = this.expandFloat32Array(this.transforms, this.transformsWidth * this.transformsHeight * 4), this.transformIndicesHeight = Math.ceil(this.numPoints / this.transformIndicesWidth), this.transformIndices = this.expandUint32Array(this.transformIndices, this.transformIndicesWidth * this.transformIndicesHeight), this.layerIndicesHeight = Math.ceil(this.numPoints / this.layerIndicesWidth), this.layerIndices = this.expandUint32Array(this.layerIndices, this.layerIndicesWidth * this.layerIndicesHeight), this.positions = this.expandFloat32Array(this.positions, this.numPoints * 3), this.rotations = this.expandFloat32Array(this.rotations, this.numPoints * 4), this.scales = this.expandFloat32Array(this.scales, this.numPoints * 3);
25526
+ let o = e.reduce((e, t) => Math.max(e, t.maxSHDegree), this.maxShDegree);
25527
+ o > this.maxShDegree && (this.maxShDegree = o), this.maxShDegree >= 1 && (this.sh1 = this.expandFloat32Array(this.sh1, this.numPoints * 9)), this.maxShDegree >= 2 && (this.sh2 = this.expandFloat32Array(this.sh2, this.numPoints * 15)), this.maxShDegree >= 3 && (this.sh3 = this.expandFloat32Array(this.sh3, this.numPoints * 21));
25528
+ let s = n, c = r;
25529
+ return e.forEach((e) => {
25530
+ this.splatIndices.set(e, c), this.offsets.set(e, s), this.objectsInOrder.push(e);
25531
+ let t = e.gsViewLayerKey || e.uuid, n = this.layerKeyToIndex.get(t);
25532
+ n === void 0 && (n = this.layerKeys.length, this.layerKeys.push(t), this.layerKeyToIndex.set(t, n)), this.objectLayerIndices.set(e, n), e.sh1 && this.sh1 && this.sh1.set(e.sh1, s * 9), e.sh2 && this.sh2 && this.sh2.set(e.sh2, s * 15), e.sh3 && this.sh3 && this.sh3.set(e.sh3, s * 21), s += e.numPoints, c++;
25533
+ }), e.forEach((e) => {
25534
+ this.buildImmediate(t, e);
25535
+ }), !0;
25536
+ });
25537
+ }
25493
25538
  buildImmediate(e, t) {
25539
+ if (this.disposed) return;
25494
25540
  this.updateTransform(t);
25495
25541
  let n = e._malloc(3 * t.numPoints * 4), r = e._malloc(4 * t.numPoints * 4), i = e._malloc(3 * t.numPoints * 4), a = e._malloc(4 * t.numPoints), o = e._malloc(t.numPoints), s = e._malloc(8 * t.numPoints * 4), c = e._malloc(3 * t.numPoints * 4), l = e._malloc(4 * t.numPoints * 4), u = e._malloc(3 * t.numPoints * 4);
25496
25542
  e.HEAPF32.set(t.positions, n / 4), e.HEAPF32.set(t.rotations, r / 4), e.HEAPF32.set(t.scales, i / 4), e.HEAPU8.set(t.colors, a), e.HEAPU8.set(t.selection, o), e._pack(t.selected, t.numPoints, n, r, i, a, o, s, c, l, u);
25497
- let d = new Uint32Array(e.HEAPU32.buffer, s, t.numPoints * 8), f = new Float32Array(e.HEAPF32.buffer, c, t.numPoints * 3), p = new Float32Array(e.HEAPF32.buffer, l, t.numPoints * 4), m = new Float32Array(e.HEAPF32.buffer, u, t.numPoints * 3), h = this.splatIndices.get(t), g = this.offsets.get(t);
25498
- for (let e = 0; e < t.numPoints; e++) this.transformIndices[g + e] = h;
25499
- this.data.set(d, g * 8), this.positions.set(f, g * 3), this.rotations.set(p, g * 4), this.scales.set(m, g * 3), e._free(n), e._free(r), e._free(i), e._free(a), e._free(o), e._free(s), e._free(c), e._free(l), e._free(u), this.dataChanged = !0;
25543
+ let d = new Uint32Array(e.HEAPU32.buffer, s, t.numPoints * 8), f = new Float32Array(e.HEAPF32.buffer, c, t.numPoints * 3), p = new Float32Array(e.HEAPF32.buffer, l, t.numPoints * 4), m = new Float32Array(e.HEAPF32.buffer, u, t.numPoints * 3), h = this.splatIndices.get(t), g = this.offsets.get(t), _ = this.objectLayerIndices.get(t);
25544
+ for (let e = 0; e < t.numPoints; e++) this.transformIndices[g + e] = h, this.layerIndices[g + e] = _;
25545
+ this.data.set(d, g * 8), this.positions.set(f, g * 3), this.rotations.set(p, g * 4), this.scales.set(m, g * 3), e._free(n), e._free(r), e._free(i), e._free(a), e._free(o), e._free(s), e._free(c), e._free(l), e._free(u), this.dataChanged = !0, this.pendingInitialBuildCount = Math.max(0, this.pendingInitialBuildCount - 1), this.pendingInitialBuildCount === 0 && this.completeInitialBuild();
25546
+ }
25547
+ expandFloat32Array(e, t) {
25548
+ if (!e) return new Float32Array(t);
25549
+ if (e.length >= t) return e;
25550
+ let n = new Float32Array(t);
25551
+ return n.set(e.subarray(0, e.length)), n;
25552
+ }
25553
+ expandUint32Array(e, t) {
25554
+ if (!e) return new Uint32Array(t);
25555
+ if (e.length >= t) return e;
25556
+ let n = new Uint32Array(t);
25557
+ return n.set(e.subarray(0, e.length)), n;
25500
25558
  }
25501
25559
  getSplat(e) {
25502
25560
  let t = null;
@@ -25509,74 +25567,74 @@ var uy = class {
25509
25567
  return t - this.offsets.get(e);
25510
25568
  }
25511
25569
  dispose() {
25512
- this.worker.terminate();
25570
+ this.disposed || (this.disposed = !0, this.worker.terminate(), this.completeInitialBuild());
25571
+ }
25572
+ completeInitialBuild() {
25573
+ this.initialBuildComplete || (this.initialBuildComplete = !0), this.resolveReadyPromise && (this.resolveReadyPromise(), this.resolveReadyPromise = null);
25513
25574
  }
25514
- }, dy = "(function(){function e(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}async function t(e={}){var t,n=e,r=!1,i=!0,a=self.location.href;if(r||i)try{new URL(`.`,a).href}catch{}console.log.bind(console),console.error.bind(console);var o=!1;function s(e){for(var t=0,n=e.length,r=new Uint8Array(n),i;t<n;++t)i=e.charCodeAt(t),r[t]=~i>>8&i;return r}var c,l,u=!1;function d(){var e=M.buffer;new Int8Array(e),new Int16Array(e),n.HEAPU8=l=new Uint8Array(e),new Uint16Array(e),new Int32Array(e),n.HEAPU32=new Uint32Array(e),n.HEAPF32=new Float32Array(e),new Float64Array(e),new BigInt64Array(e),new BigUint64Array(e)}function f(){if(n.preRun)for(typeof n.preRun==`function`&&(n.preRun=[n.preRun]);n.preRun.length;)T(n.preRun.shift());x(w)}function p(){u=!0,I.c()}function m(){if(n.postRun)for(typeof n.postRun==`function`&&(n.postRun=[n.postRun]);n.postRun.length;)C(n.postRun.shift());x(S)}var h;function g(){return s(`\\0asm\\0\\0\\0\\`\\`\\0\\` \\0\\`\\0\\0\\x07aa\\0\\0\\0\\0\\x07‚€€\\bA€Œ\\v\\x07b\\0c\\0d\\0e\\0f\\0\\f\n¼8T~@A€\\b(\\0\"­ \\0­B\\x07|Bøÿÿÿƒ|\"BÿÿÿÿX@ §\"\\0?\\0AtM\\r \\0\\0\\r\\vA„\\bA06\\0A\\vA€\\b \\x006\\0 \\vß\\v\\b@ \\0E\\r\\0 \\0A\\bk\" \\0Ak(\\0\"Axq\"\\0j!@ Aq\\r\\0 AqE\\r  (\\0\"k\"A˜\\b(\\0I\\r \\0 j!\\0@@@Aœ\\b(\\0 G@ (\\f! AÿM@  (\\b\"G\\rAˆ\\bAˆ\\b(\\0A~ Avwq6\\0\\f\\v (!\\x07  G@ (\\b\" 6\\f  6\\b\\f\\v (\" Aj (\"E\\r Aj\\v!@ ! \"Aj! (\"\\r\\0 Aj! (\"\\r\\0\\v A\\x006\\0\\f\\v (\"AqAG\\rA\\b \\x006\\0  A~q6  \\0Ar6  \\x006\\0\\v  6\\f  6\\b\\f\\vA\\0!\\v \\x07E\\r\\0@ (\"At\"(¸\n F@ A¸\nj 6\\0 \\rAŒ\\bAŒ\\b(\\0A~ wq6\\0\\f\\v@  \\x07(F@ \\x07 6\\f\\v \\x07 6\\v E\\r\\v  \\x076 (\"@  6  6\\v (\"E\\r\\0  6  6\\v  O\\r\\0 (\"AqE\\r\\0@@@@ AqE@A\\xA0\\b(\\0 F@A\\xA0\\b 6\\0A”\\bA”\\b(\\0 \\0j\"\\x006\\0  \\0Ar6 Aœ\\b(\\0G\\rA\\bA\\x006\\0Aœ\\bA\\x006\\0\\vAœ\\b(\\0\"\\x07 F@Aœ\\b 6\\0A\\bA\\b(\\0 \\0j\"\\x006\\0  \\0Ar6 \\0 j \\x006\\0\\v Axq \\0j!\\0 (\\f! AÿM@ (\\b\" F@Aˆ\\bAˆ\\b(\\0A~ Avwq6\\0\\f\\v  6\\f  6\\b\\f\\v (!\\b  G@ (\\b\" 6\\f  6\\b\\f\\v (\" Aj (\"E\\r Aj\\v!@ ! \"Aj! (\"\\r\\0 Aj! (\"\\r\\0\\v A\\x006\\0\\f\\v  A~q6  \\0Ar6 \\0 j \\x006\\0\\f\\vA\\0!\\v \\bE\\r\\0@ (\"At\"(¸\n F@ A¸\nj 6\\0 \\rAŒ\\bAŒ\\b(\\0A~ wq6\\0\\f\\v@  \\b(F@ \\b 6\\f\\v \\b 6\\v E\\r\\v  \\b6 (\"@  6  6\\v (\"E\\r\\0  6  6\\v  \\0Ar6 \\0 j \\x006\\0  \\x07G\\r\\0A\\b \\x006\\0\\v \\0AÿM@ \\0AøqA°\\bj!Aˆ\\b(\\0\"A \\0Avt\"\\0qE@Aˆ\\b \\0 r6\\0 \\f\\v (\\b\\v!\\0  6\\b \\0 6\\f  6\\f  \\x006\\b\\vA! \\0Aÿÿÿ\\x07M@ \\0A& \\0A\\bvg\"kvAq AtrA>s!\\v  6 B\\x007 AtA¸\nj!@AŒ\\b(\\0\"A t\"qE@AŒ\\b  r6\\0  6\\0A!A\\b\\f\\v \\0A AvkA\\0 AG\\x1Bt! (\\0!@ \"(Axq \\0F\\r Av! At!  Aqj\"(\"\\r\\0\\v  6A! !A\\b\\v!\\0 \"\\f\\v (\\b\" 6\\f  6\\bA!\\0A\\b!A\\0\\v!  j 6\\0  6\\f \\0 j 6\\0A¨\\bA¨\\b(\\0Ak\"\\0A \\0\\x1B6\\0\\v\\v¸'\\v#\\0Ak\"\n$\\0@@@@@@@@@@ \\0AôM@Aˆ\\b(\\0\"A \\0A\\vjAøq \\0A\\vI\\x1B\"Av\"\\0v\"Aq@@ AsAq \\0j\"At\"A°\\bj\"\\0 (¸\\b\"(\\b\"F@Aˆ\\b A~ wq6\\0\\f\\v  \\x006\\f \\0 6\\b\\v A\\bj!\\0  Ar6  j\" (Ar6\\f\\v\\v A\\b(\\0\"\\bM\\r @@A \\0t\"A\\0 kr  \\0tqh\"At\"A°\\bj\" (¸\\b\"\\0(\\b\"F@Aˆ\\b A~ wq\"6\\0\\f\\v  6\\f  6\\b\\v \\0 Ar6 \\0 j\"\\x07  k\"Ar6 \\0 j 6\\0 \\b@ \\bAxqA°\\bj!Aœ\\b(\\0! A \\bAvt\"qE@Aˆ\\b  r6\\0 \\f\\v (\\b\\v!  6\\b  6\\f  6\\f  6\\b\\v \\0A\\bj!\\0Aœ\\b \\x076\\0A\\b 6\\0\\f\\v\\vAŒ\\b(\\0\"\\vE\\r \\vhAt(¸\n\"(Axq k! !@@ (\"\\0E@ (\"\\0E\\r\\v \\0(Axq k\"   I\"\\x1B! \\0  \\x1B! \\0!\\f\\v\\v (!  (\\f\"\\0G@ (\\b\" \\x006\\f \\0 6\\b\\f\n\\v (\" Aj (\"E\\r Aj\\v!@ !\\x07 \"\\0Aj! \\0(\"\\r\\0 \\0Aj! \\0(\"\\r\\0\\v \\x07A\\x006\\0\\f \\vA! \\0A¿K\\r\\0 \\0A\\vj\"Axq!AŒ\\b(\\0\"\\x07E\\r\\0A!\\bA\\0 k! \\0Aôÿÿ\\x07M@ A& A\\bvg\"\\0kvAq \\0AtkA>j!\\b\\v@@@ \\bAt(¸\n\"E@A\\0!\\0\\f\\vA\\0!\\0 A \\bAvkA\\0 \\bAG\\x1Bt!@@ (Axq k\" O\\r\\0 ! \"\\r\\0A\\0! !\\0\\f\\v \\0 (\"   AvAqj(\"F\\x1B \\0 \\x1B!\\0 At! \\r\\0\\v\\v \\0 rE@A\\0!A \\bt\"\\0A\\0 \\0kr \\x07q\"\\0E\\r \\0hAt(¸\n!\\0\\v \\0E\\r\\v@ \\0(Axq k\" I!   \\x1B! \\0  \\x1B! \\0(\"  \\0(\\v\"\\0\\r\\0\\v\\v E\\r\\0 A\\b(\\0 kO\\r\\0 (!\\b  (\\f\"\\0G@ (\\b\" \\x006\\f \\0 6\\b\\f\\b\\v (\" Aj (\"E\\r Aj\\v!@ ! \"\\0Aj! \\0(\"\\r\\0 \\0Aj! \\0(\"\\r\\0\\v A\\x006\\0\\f\\x07\\v A\\b(\\0\"M@Aœ\\b(\\0!\\0@  k\"AO@ \\0 j\" Ar6 \\0 j 6\\0 \\0 Ar6\\f\\v \\0 Ar6 \\0 j\" (Ar6A\\0!A\\0!\\vA\\b 6\\0Aœ\\b 6\\0 \\0A\\bj!\\0\\f \\v A”\\b(\\0\"I@A”\\b  k\"6\\0A\\xA0\\bA\\xA0\\b(\\0\"\\0 j\"6\\0  Ar6 \\0 Ar6 \\0A\\bj!\\0\\f \\vA\\0!\\0 A/j\"Aà\\v(\\0@Aè\\v(\\0\\f\\vAì\\vB7\\0Aä\\vB€\\xA0€€€€7\\0Aà\\v \nA\\fjApqAتժs6\\0Aô\\vA\\x006\\0AÄ\\vA\\x006\\0A€ \\v\"j\"A\\0 k\"\\x07q\" M\\r\\bAÀ\\v(\\0\"@A¸\\v(\\0\"\\b j\" \\bM  Ir\\r \\v@AÄ\\v-\\0\\0AqE@@@@@A\\xA0\\b(\\0\"@AÈ\\v!\\0@ \\0(\\0\"\\b M@  \\b \\0(jI\\r\\v \\0(\\b\"\\0\\r\\0\\v\\vA\\0\"AF\\r !Aä\\v(\\0\"\\0Ak\" q@  k  jA\\0 \\0kqj!\\v  M\\rAÀ\\v(\\0\"\\0@A¸\\v(\\0\" j\"\\x07 M \\0 \\x07Ir\\r\\v \"\\0 G\\r\\f\\v  k \\x07q\"\" \\0(\\0 \\0(jF\\r !\\0\\v \\0AF\\r A0j M@ \\0!\\f\\vAè\\v(\\0\"  kjA\\0 kq\"AF\\r  j! \\0!\\f\\v AG\\r\\vAÄ\\vAÄ\\v(\\0Ar6\\0\\v \"AFA\\0\"\\0AFr \\0 Mr\\r \\0 k\" A(jM\\r\\vA¸\\vA¸\\v(\\0 j\"\\x006\\0A¼\\v(\\0 \\0I@A¼\\v \\x006\\0\\v@A\\xA0\\b(\\0\"@AÈ\\v!\\0@  \\0(\\0\" \\0(\"jF\\r \\0(\\b\"\\0\\r\\0\\v\\f\\vA˜\\b(\\0\"\\0A\\0 \\0 M\\x1BE@A˜\\b 6\\0\\vA\\0!\\0AÌ\\v 6\\0AÈ\\v 6\\0A¨\\bA6\\0A¬\\bAà\\v(\\x006\\0AÔ\\vA\\x006\\0@ \\0At\" A°\\bj\"6¸\\b  6¼\\b \\0Aj\"\\0A G\\r\\0\\vA”\\b A(k\"\\0Ax kA\\x07q\"k\"6\\0A\\xA0\\b  j\"6\\0  Ar6 \\0 jA(6A¤\\bAð\\v(\\x006\\0\\f\\v  M  Kr\\r \\0(\\fA\\bq\\r \\0  j6A\\xA0\\b Ax kA\\x07q\"\\0j\"6\\0A”\\bA”\\b(\\0 j\" \\0k\"\\x006\\0  \\0Ar6  jA(6A¤\\bAð\\v(\\x006\\0\\f\\vA\\0!\\0\\f\\vA\\0!\\0\\f\\vA˜\\b(\\0 K@A˜\\b 6\\0\\v  j!AÈ\\v!\\0@@  \\0(\\0\"G@ \\0(\\b\"\\0\\r\\f\\v\\v \\0-\\0\\fA\\bqE\\r\\vAÈ\\v!\\0@@ \\0(\\0\" M@   \\0(j\"I\\r\\v \\0(\\b!\\0\\f\\v\\vA”\\b A(k\"\\0Ax kA\\x07q\"k\"\\x076\\0A\\xA0\\b  j\"6\\0  \\x07Ar6 \\0 jA(6A¤\\bAð\\v(\\x006\\0  A' kA\\x07qjA/k\"\\0 \\0 AjI\\x1B\"A\\x1B6 AÐ\\v)\\x007 AÈ\\v)\\x007\\bAÐ\\v A\\bj6\\0AÌ\\v 6\\0AÈ\\v 6\\0AÔ\\vA\\x006\\0 Aj!\\0@ \\0A\\x076 \\0A\\bj \\0Aj!\\0 I\\r\\0\\v  F\\r\\0  (A~q6   k\"Ar6  6\\0 AÿM@ AøqA°\\bj!\\0Aˆ\\b(\\0\"A Avt\"qE@Aˆ\\b  r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\fA\\f!A\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg\"\\0kvAq \\0AtrA>s!\\0\\v  \\x006 B\\x007 \\0AtA¸\nj!@@AŒ\\b(\\0\"A \\0t\"qE@AŒ\\b  r6\\0  6\\0\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ \"(Axq F\\r \\0Av! \\0At!\\0  Aqj\"(\"\\r\\0\\v  6\\v  6A\\b! \"!\\0A\\f\\f\\v (\\b\"\\0 6\\f  6\\b  \\x006\\bA\\0!\\0A!A\\f\\v j 6\\0  j \\x006\\0\\vA”\\b(\\0\"\\0 M\\r\\0A”\\b \\0 k\"6\\0A\\xA0\\bA\\xA0\\b(\\0\"\\0 j\"6\\0  Ar6 \\0 Ar6 \\0A\\bj!\\0\\f\\vA„\\bA06\\0A\\0!\\0\\f\\v \\0 6\\0 \\0 \\0( j6 Ax kA\\x07qj\"\\b Ar6 Ax kA\\x07qj\"  \\bj\"k!\\x07@A\\xA0\\b(\\0 F@A\\xA0\\b 6\\0A”\\bA”\\b(\\0 \\x07j\"\\x006\\0  \\0Ar6\\f\\vAœ\\b(\\0 F@Aœ\\b 6\\0A\\bA\\b(\\0 \\x07j\"\\x006\\0  \\0Ar6 \\0 j \\x006\\0\\f\\v (\"\\0AqAF@ \\0Axq! (\\f!@ \\0AÿM@ (\\b\" F@Aˆ\\bAˆ\\b(\\0A~ \\0Avwq6\\0\\f\\v  6\\f  6\\b\\f\\v (!@  G@ (\\b\"\\0 6\\f  \\x006\\b\\f\\v@ (\"\\0 Aj (\"\\0E\\r Aj\\v!@ ! \\0\"Aj! \\0(\"\\0\\r\\0 Aj! (\"\\0\\r\\0\\v A\\x006\\0\\f\\vA\\0!\\v E\\r\\0@ (\"\\0At\"(¸\n F@ A¸\nj 6\\0 \\rAŒ\\bAŒ\\b(\\0A~ \\0wq6\\0\\f\\v@  (F@  6\\f\\v  6\\v E\\r\\v  6 (\"\\0@  \\x006 \\0 6\\v (\"\\0E\\r\\0  \\x006 \\0 6\\v \\x07 j!\\x07  j\"(!\\0\\v  \\0A~q6  \\x07Ar6  \\x07j \\x076\\0 \\x07AÿM@ \\x07AøqA°\\bj!\\0Aˆ\\b(\\0\"A \\x07Avt\"qE@Aˆ\\b  r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\f  \\x006\\f  6\\b\\f\\vA! \\x07Aÿÿÿ\\x07M@ \\x07A& \\x07A\\bvg\"\\0kvAq \\0AtrA>s!\\v  6 B\\x007 AtA¸\nj!\\0@@AŒ\\b(\\0\"A t\"qE@AŒ\\b  r6\\0 \\0 6\\0\\f\\v \\x07A AvkA\\0 AG\\x1Bt! \\0(\\0!@ \"\\0(Axq \\x07F\\r Av! At! \\0 Aqj\"(\"\\r\\0\\v  6\\v  \\x006  6\\f  6\\b\\f\\v \\0(\\b\" 6\\f \\0 6\\b A\\x006  \\x006\\f  6\\b\\v \\bA\\bj!\\0\\f\\v@ \\bE\\r\\0@ (\"At\"(¸\n F@ A¸\nj \\x006\\0 \\0\\rAŒ\\b \\x07A~ wq\"\\x076\\0\\f\\v@  \\b(F@ \\b \\x006\\f\\v \\b \\x006\\v \\0E\\r\\v \\0 \\b6 (\"@ \\0 6  \\x006\\v (\"E\\r\\0 \\0 6  \\x006\\v@ AM@   j\"\\0Ar6 \\0 j\"\\0 \\0(Ar6\\f\\v  Ar6  j\" Ar6  j 6\\0 AÿM@ AøqA°\\bj!\\0Aˆ\\b(\\0\"A Avt\"qE@Aˆ\\b  r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\f  \\x006\\f  6\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg\"\\0kvAq \\0AtrA>s!\\0\\v  \\x006 B\\x007 \\0AtA¸\nj!@@ \\x07A \\0t\"qE@AŒ\\b  \\x07r6\\0  6\\0  6\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ \"(Axq F\\r \\0Av! \\0At!\\0  Aqj\"\\x07(\"\\r\\0\\v \\x07 6  6\\v  6\\f  6\\b\\f\\v (\\b\"\\0 6\\f  6\\b A\\x006  6\\f  \\x006\\b\\v A\\bj!\\0\\f\\v@ E\\r\\0@ (\"At\"(¸\n F@ A¸\nj \\x006\\0 \\0\\rAŒ\\b \\vA~ wq6\\0\\f\\v@  (F@ \\x006\\f\\v \\x006\\v \\0E\\r\\v \\0 6 (\"@ \\0 6  \\x006\\v (\"E\\r\\0 \\0 6  \\x006\\v@ AM@   j\"\\0Ar6 \\0 j\"\\0 \\0(Ar6\\f\\v  Ar6  j\" Ar6  j 6\\0 \\b@ \\bAxqA°\\bj!\\0Aœ\\b(\\0!A \\bAvt\"\\x07 qE@Aˆ\\b  \\x07r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\f  \\x006\\f  6\\b\\vAœ\\b 6\\0A\\b 6\\0\\v A\\bj!\\0\\v \nAj$\\0 \\0\\vÆ\n}Aÿÿÿÿ\\x07!\\fA€€€€x!\\rA! @  \nF@A\\0!\\0 \\bA\\0A€€ü\\v\\0C\\0ÿG \\r \\fk²•!  \nA\\flj\"\\v*\\0! \\v*\\b! \\v*!  \nAt\"j(\\0\"\\vG@  \\vAÐ\\0lj\" *< \\0*8\"” *8 \\0*(\"” *0 \\0*\\b\"” \\0*\" *4”’’’! *, ” *( ” * ”  *$”’’’! * ” * ” * ”  *”’’’! *\\f ” *\\b ” *\\0 ” * ”’’’! \\v! \\v  j   ”  ”  ”’’’C\\0\\0€E”ü\\0\"\\v6\\0 \\f \\v \\v \\fJ\\x1B!\\f \\r \\v \\v \\rH\\x1B!\\r \nAj!\n\\f\\v\\v@ \\0 FE@  \\0Atj\"  (\\0 \\fk³”ü\"6\\0 \\b Atj\" (\\0Aj6\\0 \\0Aj!\\0\\f\\v\\vA\\0!\\0 \\x07A\\x006üÿAþÿ!\n@ \nA\\0H@@@ \\0 F\\r\\0 \\x07  \\0Atj(\\0Atj\" (\\0\"Aj6\\0  Atj \\x006\\0 \\0Aj!\\0\\f\\v\\v \\x07 \nAt\"j \\b Aj\"j(\\0  \\x07j(\\0j6\\0 \nAk!\n\\f\\v\\v\\v\\0\\v\\v \\0A\\b\\v`)}function _(e){return e}function v(e,t){var n,r=_(e);return n=new WebAssembly.Module(r),[new WebAssembly.Instance(n,t),n]}function y(){return{a:P}}function b(){function e(e,t){return I=e.exports,N(I),d(),I}var t=y();return n.instantiateWasm?new Promise((r,i)=>{n.instantiateWasm(t,(t,n)=>{r(e(t,n))})}):(h??=g(),e(v(h,t)[0]))}for(var x=e=>{for(;e.length>0;)e.shift()(n)},S=[],C=e=>S.push(e),w=[],T=e=>w.push(e),E=()=>2147483648,D=(e,t)=>Math.ceil(e/t)*t,O=e=>{var t=(e-M.buffer.byteLength+65535)/65536|0;try{return M.grow(t),d(),1}catch{}},k=e=>{var t=l.length;e>>>=0;var n=E();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);if(i=Math.min(i,e+100663296),O(Math.min(n,D(Math.max(e,i),65536))))return!0}return!1},A=new Uint8Array(123),j=25;j>=0;--j)A[48+j]=52+j,A[65+j]=j,A[97+j]=26+j;if(A[43]=62,A[47]=63,n.noExitRuntime&&n.noExitRuntime,n.print&&n.print,n.printErr&&n.printErr,n.wasmBinary&&n.wasmBinary,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.preInit)for(typeof n.preInit==`function`&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();var M;function N(e){n._sort=e.d,n._malloc=e.e,n._free=e.f,M=e.b,e.__indirect_function_table}var P={a:k};function F(){f();function e(){n.calledRun=!0,!o&&(p(),c?.(n),n.onRuntimeInitialized?.(),m())}n.setStatus?(n.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>n.setStatus(``),1),e()},1)):e()}var I=b();return F(),t=u?n:new Promise((e,t)=>{c=e}),t}let n;function r(){return e(this,void 0,void 0,function*(){n=yield t()})}let i,a,o,s,c,l,u,d,f,p=0,m=0,h=[],g=!0,_=!1,v=!1,y=!1,b=()=>e(void 0,void 0,void 0,function*(){if(_){v=!0;return}_=!0,v=!1,n||(yield r());let e=2**Math.ceil(Math.log2(i.vertexCount));p<e&&(p>0&&(n._free(a),n._free(s),n._free(c),n._free(l),n._free(u),n._free(d),n._free(f)),p=e,a=n._malloc(64),s=n._malloc(p*4),c=n._malloc(3*p*4),l=n._malloc(p*4),u=n._malloc(p*4),d=n._malloc(p*4),f=n._malloc(p*4)),m<i.transforms.length&&(m>0&&n._free(o),m=i.transforms.length,o=n._malloc(m*4)),_=!1,v&&(v=!1,yield b())}),x=()=>{if(_||v||!n)return;_=!0,n.HEAPF32.set(i.positions,c/4),n.HEAPF32.set(i.transforms,o/4),n.HEAPU32.set(i.transformIndices,s/4),n.HEAPF32.set(new Float32Array(h),a/4),n._sort(a,o,s,i.vertexCount,c,l,u,d,f);let e=new Uint32Array(n.HEAPU32.buffer,u,i.vertexCount),t=new Uint32Array(e.slice().buffer);self.postMessage({depthIndex:t},[t.buffer]),_=!1,g=!1},S=()=>{y||(y=!0,g&&x(),setTimeout(()=>{y=!1,S()}))};self.onmessage=e=>new Promise((t,n)=>{e.data.sortData&&(i={positions:new Float32Array(e.data.sortData.positions),transforms:new Float32Array(e.data.sortData.transforms),transformIndices:new Uint32Array(e.data.sortData.transformIndices),vertexCount:e.data.sortData.vertexCount},g=!0,b()),e.data.viewProj&&(e.data.viewProj.every(e=>h.includes(e))===!1&&(h=e.data.viewProj,g=!0),S(),t(!0))})})();", fy = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", dy], { type: "text/javascript;charset=utf-8" });
25515
- function py(e) {
25575
+ }, py = "(function(){function e(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})}async function t(e={}){var t,n=e,r=!1,i=!0,a=self.location.href;if(r||i)try{new URL(`.`,a).href}catch{}console.log.bind(console),console.error.bind(console);var o=!1;function s(e){for(var t=0,n=e.length,r=new Uint8Array(n),i;t<n;++t)i=e.charCodeAt(t),r[t]=~i>>8&i;return r}var c,l,u=!1;function d(){var e=M.buffer;new Int8Array(e),new Int16Array(e),n.HEAPU8=l=new Uint8Array(e),new Uint16Array(e),new Int32Array(e),n.HEAPU32=new Uint32Array(e),n.HEAPF32=new Float32Array(e),new Float64Array(e),new BigInt64Array(e),new BigUint64Array(e)}function f(){if(n.preRun)for(typeof n.preRun==`function`&&(n.preRun=[n.preRun]);n.preRun.length;)T(n.preRun.shift());x(w)}function p(){u=!0,I.c()}function m(){if(n.postRun)for(typeof n.postRun==`function`&&(n.postRun=[n.postRun]);n.postRun.length;)C(n.postRun.shift());x(S)}var h;function g(){return s(`\\0asm\\0\\0\\0\\`\\`\\0\\` \\0\\`\\0\\0\\x07aa\\0\\0\\0\\0\\x07‚€€\\bA€Œ\\v\\x07b\\0c\\0d\\0e\\0f\\0\\f\n¼8T~@A€\\b(\\0\"­ \\0­B\\x07|Bøÿÿÿƒ|\"BÿÿÿÿX@ §\"\\0?\\0AtM\\r \\0\\0\\r\\vA„\\bA06\\0A\\vA€\\b \\x006\\0 \\vß\\v\\b@ \\0E\\r\\0 \\0A\\bk\" \\0Ak(\\0\"Axq\"\\0j!@ Aq\\r\\0 AqE\\r  (\\0\"k\"A˜\\b(\\0I\\r \\0 j!\\0@@@Aœ\\b(\\0 G@ (\\f! AÿM@  (\\b\"G\\rAˆ\\bAˆ\\b(\\0A~ Avwq6\\0\\f\\v (!\\x07  G@ (\\b\" 6\\f  6\\b\\f\\v (\" Aj (\"E\\r Aj\\v!@ ! \"Aj! (\"\\r\\0 Aj! (\"\\r\\0\\v A\\x006\\0\\f\\v (\"AqAG\\rA\\b \\x006\\0  A~q6  \\0Ar6  \\x006\\0\\v  6\\f  6\\b\\f\\vA\\0!\\v \\x07E\\r\\0@ (\"At\"(¸\n F@ A¸\nj 6\\0 \\rAŒ\\bAŒ\\b(\\0A~ wq6\\0\\f\\v@  \\x07(F@ \\x07 6\\f\\v \\x07 6\\v E\\r\\v  \\x076 (\"@  6  6\\v (\"E\\r\\0  6  6\\v  O\\r\\0 (\"AqE\\r\\0@@@@ AqE@A\\xA0\\b(\\0 F@A\\xA0\\b 6\\0A”\\bA”\\b(\\0 \\0j\"\\x006\\0  \\0Ar6 Aœ\\b(\\0G\\rA\\bA\\x006\\0Aœ\\bA\\x006\\0\\vAœ\\b(\\0\"\\x07 F@Aœ\\b 6\\0A\\bA\\b(\\0 \\0j\"\\x006\\0  \\0Ar6 \\0 j \\x006\\0\\v Axq \\0j!\\0 (\\f! AÿM@ (\\b\" F@Aˆ\\bAˆ\\b(\\0A~ Avwq6\\0\\f\\v  6\\f  6\\b\\f\\v (!\\b  G@ (\\b\" 6\\f  6\\b\\f\\v (\" Aj (\"E\\r Aj\\v!@ ! \"Aj! (\"\\r\\0 Aj! (\"\\r\\0\\v A\\x006\\0\\f\\v  A~q6  \\0Ar6 \\0 j \\x006\\0\\f\\vA\\0!\\v \\bE\\r\\0@ (\"At\"(¸\n F@ A¸\nj 6\\0 \\rAŒ\\bAŒ\\b(\\0A~ wq6\\0\\f\\v@  \\b(F@ \\b 6\\f\\v \\b 6\\v E\\r\\v  \\b6 (\"@  6  6\\v (\"E\\r\\0  6  6\\v  \\0Ar6 \\0 j \\x006\\0  \\x07G\\r\\0A\\b \\x006\\0\\v \\0AÿM@ \\0AøqA°\\bj!Aˆ\\b(\\0\"A \\0Avt\"\\0qE@Aˆ\\b \\0 r6\\0 \\f\\v (\\b\\v!\\0  6\\b \\0 6\\f  6\\f  \\x006\\b\\vA! \\0Aÿÿÿ\\x07M@ \\0A& \\0A\\bvg\"kvAq AtrA>s!\\v  6 B\\x007 AtA¸\nj!@AŒ\\b(\\0\"A t\"qE@AŒ\\b  r6\\0  6\\0A!A\\b\\f\\v \\0A AvkA\\0 AG\\x1Bt! (\\0!@ \"(Axq \\0F\\r Av! At!  Aqj\"(\"\\r\\0\\v  6A! !A\\b\\v!\\0 \"\\f\\v (\\b\" 6\\f  6\\bA!\\0A\\b!A\\0\\v!  j 6\\0  6\\f \\0 j 6\\0A¨\\bA¨\\b(\\0Ak\"\\0A \\0\\x1B6\\0\\v\\v¸'\\v#\\0Ak\"\n$\\0@@@@@@@@@@ \\0AôM@Aˆ\\b(\\0\"A \\0A\\vjAøq \\0A\\vI\\x1B\"Av\"\\0v\"Aq@@ AsAq \\0j\"At\"A°\\bj\"\\0 (¸\\b\"(\\b\"F@Aˆ\\b A~ wq6\\0\\f\\v  \\x006\\f \\0 6\\b\\v A\\bj!\\0  Ar6  j\" (Ar6\\f\\v\\v A\\b(\\0\"\\bM\\r @@A \\0t\"A\\0 kr  \\0tqh\"At\"A°\\bj\" (¸\\b\"\\0(\\b\"F@Aˆ\\b A~ wq\"6\\0\\f\\v  6\\f  6\\b\\v \\0 Ar6 \\0 j\"\\x07  k\"Ar6 \\0 j 6\\0 \\b@ \\bAxqA°\\bj!Aœ\\b(\\0! A \\bAvt\"qE@Aˆ\\b  r6\\0 \\f\\v (\\b\\v!  6\\b  6\\f  6\\f  6\\b\\v \\0A\\bj!\\0Aœ\\b \\x076\\0A\\b 6\\0\\f\\v\\vAŒ\\b(\\0\"\\vE\\r \\vhAt(¸\n\"(Axq k! !@@ (\"\\0E@ (\"\\0E\\r\\v \\0(Axq k\"   I\"\\x1B! \\0  \\x1B! \\0!\\f\\v\\v (!  (\\f\"\\0G@ (\\b\" \\x006\\f \\0 6\\b\\f\n\\v (\" Aj (\"E\\r Aj\\v!@ !\\x07 \"\\0Aj! \\0(\"\\r\\0 \\0Aj! \\0(\"\\r\\0\\v \\x07A\\x006\\0\\f \\vA! \\0A¿K\\r\\0 \\0A\\vj\"Axq!AŒ\\b(\\0\"\\x07E\\r\\0A!\\bA\\0 k! \\0Aôÿÿ\\x07M@ A& A\\bvg\"\\0kvAq \\0AtkA>j!\\b\\v@@@ \\bAt(¸\n\"E@A\\0!\\0\\f\\vA\\0!\\0 A \\bAvkA\\0 \\bAG\\x1Bt!@@ (Axq k\" O\\r\\0 ! \"\\r\\0A\\0! !\\0\\f\\v \\0 (\"   AvAqj(\"F\\x1B \\0 \\x1B!\\0 At! \\r\\0\\v\\v \\0 rE@A\\0!A \\bt\"\\0A\\0 \\0kr \\x07q\"\\0E\\r \\0hAt(¸\n!\\0\\v \\0E\\r\\v@ \\0(Axq k\" I!   \\x1B! \\0  \\x1B! \\0(\"  \\0(\\v\"\\0\\r\\0\\v\\v E\\r\\0 A\\b(\\0 kO\\r\\0 (!\\b  (\\f\"\\0G@ (\\b\" \\x006\\f \\0 6\\b\\f\\b\\v (\" Aj (\"E\\r Aj\\v!@ ! \"\\0Aj! \\0(\"\\r\\0 \\0Aj! \\0(\"\\r\\0\\v A\\x006\\0\\f\\x07\\v A\\b(\\0\"M@Aœ\\b(\\0!\\0@  k\"AO@ \\0 j\" Ar6 \\0 j 6\\0 \\0 Ar6\\f\\v \\0 Ar6 \\0 j\" (Ar6A\\0!A\\0!\\vA\\b 6\\0Aœ\\b 6\\0 \\0A\\bj!\\0\\f \\v A”\\b(\\0\"I@A”\\b  k\"6\\0A\\xA0\\bA\\xA0\\b(\\0\"\\0 j\"6\\0  Ar6 \\0 Ar6 \\0A\\bj!\\0\\f \\vA\\0!\\0 A/j\"Aà\\v(\\0@Aè\\v(\\0\\f\\vAì\\vB7\\0Aä\\vB€\\xA0€€€€7\\0Aà\\v \nA\\fjApqAتժs6\\0Aô\\vA\\x006\\0AÄ\\vA\\x006\\0A€ \\v\"j\"A\\0 k\"\\x07q\" M\\r\\bAÀ\\v(\\0\"@A¸\\v(\\0\"\\b j\" \\bM  Ir\\r \\v@AÄ\\v-\\0\\0AqE@@@@@A\\xA0\\b(\\0\"@AÈ\\v!\\0@ \\0(\\0\"\\b M@  \\b \\0(jI\\r\\v \\0(\\b\"\\0\\r\\0\\v\\vA\\0\"AF\\r !Aä\\v(\\0\"\\0Ak\" q@  k  jA\\0 \\0kqj!\\v  M\\rAÀ\\v(\\0\"\\0@A¸\\v(\\0\" j\"\\x07 M \\0 \\x07Ir\\r\\v \"\\0 G\\r\\f\\v  k \\x07q\"\" \\0(\\0 \\0(jF\\r !\\0\\v \\0AF\\r A0j M@ \\0!\\f\\vAè\\v(\\0\"  kjA\\0 kq\"AF\\r  j! \\0!\\f\\v AG\\r\\vAÄ\\vAÄ\\v(\\0Ar6\\0\\v \"AFA\\0\"\\0AFr \\0 Mr\\r \\0 k\" A(jM\\r\\vA¸\\vA¸\\v(\\0 j\"\\x006\\0A¼\\v(\\0 \\0I@A¼\\v \\x006\\0\\v@A\\xA0\\b(\\0\"@AÈ\\v!\\0@  \\0(\\0\" \\0(\"jF\\r \\0(\\b\"\\0\\r\\0\\v\\f\\vA˜\\b(\\0\"\\0A\\0 \\0 M\\x1BE@A˜\\b 6\\0\\vA\\0!\\0AÌ\\v 6\\0AÈ\\v 6\\0A¨\\bA6\\0A¬\\bAà\\v(\\x006\\0AÔ\\vA\\x006\\0@ \\0At\" A°\\bj\"6¸\\b  6¼\\b \\0Aj\"\\0A G\\r\\0\\vA”\\b A(k\"\\0Ax kA\\x07q\"k\"6\\0A\\xA0\\b  j\"6\\0  Ar6 \\0 jA(6A¤\\bAð\\v(\\x006\\0\\f\\v  M  Kr\\r \\0(\\fA\\bq\\r \\0  j6A\\xA0\\b Ax kA\\x07q\"\\0j\"6\\0A”\\bA”\\b(\\0 j\" \\0k\"\\x006\\0  \\0Ar6  jA(6A¤\\bAð\\v(\\x006\\0\\f\\vA\\0!\\0\\f\\vA\\0!\\0\\f\\vA˜\\b(\\0 K@A˜\\b 6\\0\\v  j!AÈ\\v!\\0@@  \\0(\\0\"G@ \\0(\\b\"\\0\\r\\f\\v\\v \\0-\\0\\fA\\bqE\\r\\vAÈ\\v!\\0@@ \\0(\\0\" M@   \\0(j\"I\\r\\v \\0(\\b!\\0\\f\\v\\vA”\\b A(k\"\\0Ax kA\\x07q\"k\"\\x076\\0A\\xA0\\b  j\"6\\0  \\x07Ar6 \\0 jA(6A¤\\bAð\\v(\\x006\\0  A' kA\\x07qjA/k\"\\0 \\0 AjI\\x1B\"A\\x1B6 AÐ\\v)\\x007 AÈ\\v)\\x007\\bAÐ\\v A\\bj6\\0AÌ\\v 6\\0AÈ\\v 6\\0AÔ\\vA\\x006\\0 Aj!\\0@ \\0A\\x076 \\0A\\bj \\0Aj!\\0 I\\r\\0\\v  F\\r\\0  (A~q6   k\"Ar6  6\\0 AÿM@ AøqA°\\bj!\\0Aˆ\\b(\\0\"A Avt\"qE@Aˆ\\b  r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\fA\\f!A\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg\"\\0kvAq \\0AtrA>s!\\0\\v  \\x006 B\\x007 \\0AtA¸\nj!@@AŒ\\b(\\0\"A \\0t\"qE@AŒ\\b  r6\\0  6\\0\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ \"(Axq F\\r \\0Av! \\0At!\\0  Aqj\"(\"\\r\\0\\v  6\\v  6A\\b! \"!\\0A\\f\\f\\v (\\b\"\\0 6\\f  6\\b  \\x006\\bA\\0!\\0A!A\\f\\v j 6\\0  j \\x006\\0\\vA”\\b(\\0\"\\0 M\\r\\0A”\\b \\0 k\"6\\0A\\xA0\\bA\\xA0\\b(\\0\"\\0 j\"6\\0  Ar6 \\0 Ar6 \\0A\\bj!\\0\\f\\vA„\\bA06\\0A\\0!\\0\\f\\v \\0 6\\0 \\0 \\0( j6 Ax kA\\x07qj\"\\b Ar6 Ax kA\\x07qj\"  \\bj\"k!\\x07@A\\xA0\\b(\\0 F@A\\xA0\\b 6\\0A”\\bA”\\b(\\0 \\x07j\"\\x006\\0  \\0Ar6\\f\\vAœ\\b(\\0 F@Aœ\\b 6\\0A\\bA\\b(\\0 \\x07j\"\\x006\\0  \\0Ar6 \\0 j \\x006\\0\\f\\v (\"\\0AqAF@ \\0Axq! (\\f!@ \\0AÿM@ (\\b\" F@Aˆ\\bAˆ\\b(\\0A~ \\0Avwq6\\0\\f\\v  6\\f  6\\b\\f\\v (!@  G@ (\\b\"\\0 6\\f  \\x006\\b\\f\\v@ (\"\\0 Aj (\"\\0E\\r Aj\\v!@ ! \\0\"Aj! \\0(\"\\0\\r\\0 Aj! (\"\\0\\r\\0\\v A\\x006\\0\\f\\vA\\0!\\v E\\r\\0@ (\"\\0At\"(¸\n F@ A¸\nj 6\\0 \\rAŒ\\bAŒ\\b(\\0A~ \\0wq6\\0\\f\\v@  (F@  6\\f\\v  6\\v E\\r\\v  6 (\"\\0@  \\x006 \\0 6\\v (\"\\0E\\r\\0  \\x006 \\0 6\\v \\x07 j!\\x07  j\"(!\\0\\v  \\0A~q6  \\x07Ar6  \\x07j \\x076\\0 \\x07AÿM@ \\x07AøqA°\\bj!\\0Aˆ\\b(\\0\"A \\x07Avt\"qE@Aˆ\\b  r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\f  \\x006\\f  6\\b\\f\\vA! \\x07Aÿÿÿ\\x07M@ \\x07A& \\x07A\\bvg\"\\0kvAq \\0AtrA>s!\\v  6 B\\x007 AtA¸\nj!\\0@@AŒ\\b(\\0\"A t\"qE@AŒ\\b  r6\\0 \\0 6\\0\\f\\v \\x07A AvkA\\0 AG\\x1Bt! \\0(\\0!@ \"\\0(Axq \\x07F\\r Av! At! \\0 Aqj\"(\"\\r\\0\\v  6\\v  \\x006  6\\f  6\\b\\f\\v \\0(\\b\" 6\\f \\0 6\\b A\\x006  \\x006\\f  6\\b\\v \\bA\\bj!\\0\\f\\v@ \\bE\\r\\0@ (\"At\"(¸\n F@ A¸\nj \\x006\\0 \\0\\rAŒ\\b \\x07A~ wq\"\\x076\\0\\f\\v@  \\b(F@ \\b \\x006\\f\\v \\b \\x006\\v \\0E\\r\\v \\0 \\b6 (\"@ \\0 6  \\x006\\v (\"E\\r\\0 \\0 6  \\x006\\v@ AM@   j\"\\0Ar6 \\0 j\"\\0 \\0(Ar6\\f\\v  Ar6  j\" Ar6  j 6\\0 AÿM@ AøqA°\\bj!\\0Aˆ\\b(\\0\"A Avt\"qE@Aˆ\\b  r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\f  \\x006\\f  6\\b\\f\\vA!\\0 Aÿÿÿ\\x07M@ A& A\\bvg\"\\0kvAq \\0AtrA>s!\\0\\v  \\x006 B\\x007 \\0AtA¸\nj!@@ \\x07A \\0t\"qE@AŒ\\b  \\x07r6\\0  6\\0  6\\f\\v A \\0AvkA\\0 \\0AG\\x1Bt!\\0 (\\0!@ \"(Axq F\\r \\0Av! \\0At!\\0  Aqj\"\\x07(\"\\r\\0\\v \\x07 6  6\\v  6\\f  6\\b\\f\\v (\\b\"\\0 6\\f  6\\b A\\x006  6\\f  \\x006\\b\\v A\\bj!\\0\\f\\v@ E\\r\\0@ (\"At\"(¸\n F@ A¸\nj \\x006\\0 \\0\\rAŒ\\b \\vA~ wq6\\0\\f\\v@  (F@ \\x006\\f\\v \\x006\\v \\0E\\r\\v \\0 6 (\"@ \\0 6  \\x006\\v (\"E\\r\\0 \\0 6  \\x006\\v@ AM@   j\"\\0Ar6 \\0 j\"\\0 \\0(Ar6\\f\\v  Ar6  j\" Ar6  j 6\\0 \\b@ \\bAxqA°\\bj!\\0Aœ\\b(\\0!A \\bAvt\"\\x07 qE@Aˆ\\b  \\x07r6\\0 \\0\\f\\v \\0(\\b\\v! \\0 6\\b  6\\f  \\x006\\f  6\\b\\vAœ\\b 6\\0A\\b 6\\0\\v A\\bj!\\0\\v \nAj$\\0 \\0\\vÆ\n}Aÿÿÿÿ\\x07!\\fA€€€€x!\\rA! @  \nF@A\\0!\\0 \\bA\\0A€€ü\\v\\0C\\0ÿG \\r \\fk²•!  \nA\\flj\"\\v*\\0! \\v*\\b! \\v*!  \nAt\"j(\\0\"\\vG@  \\vAÐ\\0lj\" *< \\0*8\"” *8 \\0*(\"” *0 \\0*\\b\"” \\0*\" *4”’’’! *, ” *( ” * ”  *$”’’’! * ” * ” * ”  *”’’’! *\\f ” *\\b ” *\\0 ” * ”’’’! \\v! \\v  j   ”  ”  ”’’’C\\0\\0€E”ü\\0\"\\v6\\0 \\f \\v \\v \\fJ\\x1B!\\f \\r \\v \\v \\rH\\x1B!\\r \nAj!\n\\f\\v\\v@ \\0 FE@  \\0Atj\"  (\\0 \\fk³”ü\"6\\0 \\b Atj\" (\\0Aj6\\0 \\0Aj!\\0\\f\\v\\vA\\0!\\0 \\x07A\\x006üÿAþÿ!\n@ \nA\\0H@@@ \\0 F\\r\\0 \\x07  \\0Atj(\\0Atj\" (\\0\"Aj6\\0  Atj \\x006\\0 \\0Aj!\\0\\f\\v\\v \\x07 \nAt\"j \\b Aj\"j(\\0  \\x07j(\\0j6\\0 \nAk!\n\\f\\v\\v\\v\\0\\v\\v \\0A\\b\\v`)}function _(e){return e}function v(e,t){var n,r=_(e);return n=new WebAssembly.Module(r),[new WebAssembly.Instance(n,t),n]}function y(){return{a:P}}function b(){function e(e,t){return I=e.exports,N(I),d(),I}var t=y();return n.instantiateWasm?new Promise((r,i)=>{n.instantiateWasm(t,(t,n)=>{r(e(t,n))})}):(h??=g(),e(v(h,t)[0]))}for(var x=e=>{for(;e.length>0;)e.shift()(n)},S=[],C=e=>S.push(e),w=[],T=e=>w.push(e),E=()=>2147483648,D=(e,t)=>Math.ceil(e/t)*t,O=e=>{var t=(e-M.buffer.byteLength+65535)/65536|0;try{return M.grow(t),d(),1}catch{}},k=e=>{var t=l.length;e>>>=0;var n=E();if(e>n)return!1;for(var r=1;r<=4;r*=2){var i=t*(1+.2/r);if(i=Math.min(i,e+100663296),O(Math.min(n,D(Math.max(e,i),65536))))return!0}return!1},A=new Uint8Array(123),j=25;j>=0;--j)A[48+j]=52+j,A[65+j]=j,A[97+j]=26+j;if(A[43]=62,A[47]=63,n.noExitRuntime&&n.noExitRuntime,n.print&&n.print,n.printErr&&n.printErr,n.wasmBinary&&n.wasmBinary,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.preInit)for(typeof n.preInit==`function`&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();var M;function N(e){n._sort=e.d,n._malloc=e.e,n._free=e.f,M=e.b,e.__indirect_function_table}var P={a:k};function F(){f();function e(){n.calledRun=!0,!o&&(p(),c?.(n),n.onRuntimeInitialized?.(),m())}n.setStatus?(n.setStatus(`Running...`),setTimeout(()=>{setTimeout(()=>n.setStatus(``),1),e()},1)):e()}var I=b();return F(),t=u?n:new Promise((e,t)=>{c=e}),t}let n;function r(){return e(this,void 0,void 0,function*(){n=yield t()})}let i,a,o,s,c,l,u,d,f,p=0,m=0,h=[],g=!0,_=!1,v=!1,y=!1,b=()=>e(void 0,void 0,void 0,function*(){if(_){v=!0;return}_=!0,v=!1,n||(yield r());let e=2**Math.ceil(Math.log2(i.vertexCount));p<e&&(p>0&&(n._free(a),n._free(s),n._free(c),n._free(l),n._free(u),n._free(d),n._free(f)),p=e,a=n._malloc(64),s=n._malloc(p*4),c=n._malloc(3*p*4),l=n._malloc(p*4),u=n._malloc(p*4),d=n._malloc(p*4),f=n._malloc(p*4)),m<i.transforms.length&&(m>0&&n._free(o),m=i.transforms.length,o=n._malloc(m*4)),_=!1,v&&(v=!1,yield b())}),x=()=>{if(_||v||!n)return;_=!0,n.HEAPF32.set(i.positions,c/4),n.HEAPF32.set(i.transforms,o/4),n.HEAPU32.set(i.transformIndices,s/4),n.HEAPF32.set(new Float32Array(h),a/4),n._sort(a,o,s,i.vertexCount,c,l,u,d,f);let e=new Uint32Array(n.HEAPU32.buffer,u,i.vertexCount),t=new Uint32Array(e.slice().buffer);self.postMessage({depthIndex:t,generation:i.generation},[t.buffer]),_=!1,g=!1},S=()=>{y||(y=!0,g&&x(),setTimeout(()=>{y=!1,S()}))};self.onmessage=e=>new Promise(t=>{if(e.data.warmup){r().finally(()=>t(!0));return}e.data.sortData&&(i={positions:new Float32Array(e.data.sortData.positions),transforms:new Float32Array(e.data.sortData.transforms),transformIndices:new Uint32Array(e.data.sortData.transformIndices),vertexCount:e.data.sortData.vertexCount,generation:e.data.sortData.generation??0},g=!0,b()),e.data.viewProj?(e.data.viewProj.every(e=>h.includes(e))===!1&&(h=e.data.viewProj,g=!0),S(),t(!0)):t(!0)})})();", my = typeof self < "u" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", py], { type: "text/javascript;charset=utf-8" });
25576
+ function hy(e) {
25516
25577
  let t;
25517
25578
  try {
25518
- if (t = fy && (self.URL || self.webkitURL).createObjectURL(fy), !t) throw "";
25579
+ if (t = my && (self.URL || self.webkitURL).createObjectURL(my), !t) throw "";
25519
25580
  let n = new Worker(t, { name: e == null ? void 0 : e.name });
25520
25581
  return n.addEventListener("error", () => {
25521
25582
  (self.URL || self.webkitURL).revokeObjectURL(t);
25522
25583
  }), n;
25523
25584
  } catch (t) {
25524
- return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(dy), { name: e == null ? void 0 : e.name });
25585
+ return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(py), { name: e == null ? void 0 : e.name });
25525
25586
  }
25526
25587
  }
25527
25588
  //#endregion
25528
25589
  //#region build/five/model/shaders/pbm_gaussian_splatting/vertex.js
25529
- var my = function(...e) {
25590
+ var gy = function(...e) {
25530
25591
  return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
25531
- }("}rpvv|{-uvtu}-sy|nH}rpvv|{-uvtu}-v{Hnvor-v{-}ynV{qr\x07H{vs|z-uvtu}-nz}yr?Q-lr\x07rH{vs|z-uvtu}-nz}yr?Q-ln{s|zH{vs|z-uvtu}-nz}yr?Q-ln{s|zV{qvprH{vs|z-uvtu}-nz}yr?Q-luar\x07rH{vs|z-rp?-luar\x07r`v rH{vs|z-v{-lzn\x07`uQrtrrH{vs|z-rp?-r|yv|{Hn\bv{t-rpA-P|y|Hn\bv{t-rp?-]|vv|{Hn\bv{t-rp?-bH<<参考Tnvn{`}yn@qp|{-sy|n-\0E-J-\05E;=6H<<原版的固定xr{ry`v r,不要轻易调整这个数p|{-sy|n-xr{ry?Q`v r-J-=;@Hp|{-sy|n-zn\x07`prr{`}npr`}yn`v r-J-?=AE;=H<<固定的u相关系数p|{-sy|n-`UlP>-J-=;AEEC=?B>>F=?F>FFHp|{-sy|n-`UlP?l=-J->;=F?BAEAHp|{-sy|n-`UlP?l>-J-:>;=F?BAEAHp|{-sy|n-`UlP?l?-J-=;@>B@F>CHp|{-sy|n-`UlP?l@-J-:>;=F?BAEAHp|{-sy|n-`UlP?lA-J-=;BAC?DA?Hrp?-tr`UQnnbc5v{-}ynVq\x079-v{-p|z}|{r{\\ssr9-rp?-r\x07r`v r6-\n----v{-uP|z}|{r{P|{-J-=H----vs-5lzn\x07`uQrtrr-KJ->6-uP|z}|{r{P|{-8J-FH----vs-5lzn\x07`uQrtrr-KJ-?6-uP|z}|{r{P|{-8J->BH----vs-5lzn\x07`uQrtrr-KJ-@6-uP|z}|{r{P|{-8J-?>H--------v{-}nqqrqP|z}|{r{P|{-J-uP|z}|{r{P|{H----vs-5}nqqrqP|z}|{r{P|{-2-A-.J-=6-\n--------}nqqrqP|z}|{r{P|{-J-55}nqqrqP|z}|{r{P|{-<-A6-8->6-7-AH----\f--------sy|n-yv{rnP|z}|{r{V{qr\x07-J-sy|n5}ynVq\x07-7-}nqqrqP|z}|{r{P|{-8-p|z}|{r{\\ssr6H----sy|n-r\x07ryV{qr\x07-J-yv{rnP|z}|{r{V{qr\x07-<-A;=H------sy|n-q-J-r\x07ryV{qr\x07-<-r\x07r`v r;\x07H----sy|n-\b-J-sy||5q6-<-r\x07r`v r;\bH----sy|n-\x07-J-snp5q6H----r{-rp?5\x079-\b6H\f|vq-znv{-56-\n----rpA-pr{-J-r\x07rySrpu5lr\x07r9-vrp?55v{5}ynV{qr\x076-3-=\x07@ss6-II->9-v{5}ynV{qr\x076-KK->=69-=6H--------v{-n{s|zV{qr\x07-J-r\x07rySrpu5ln{s|zV{qvpr9-vrp?5v{5}ynV{qr\x076-3-=\x07@ss9-v{5}ynV{qr\x076-KK->=69-=6;\x07H----znA-n{s|z-J-znA5--------r\x07rySrpu5ln{s|z9-vrp?5=9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5>9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5?9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5@9-n{s|zV{qr\x0769-=6----6H----znA-n{s|zZ|qrycvrZnv\x07-J-vrZnv\x07-7-n{s|zH----rp@-}ynPr{r-J-v{Ova|Sy|n5pr{;\x07\b 6H----rpA-vrPr{r-J-n{s|zZ|qrycvrZnv\x07-7-rpA5}ynPr{r9->;=6H----rpA-pyv}Pr{r-J-}|wrpv|{Znv\x07-7-vrPr{rH----<<剔除超出视锥体的}yn----sy|n-pyv}-J->;?-7-pyv}Pr{r;H----vs-5pyv}Pr{r; -I-:pyv}Pr{r;-\v\v-pyv}Pr{r; -K-pyv}Pr{r;-\v\v---------pyv}Pr{r;\x07-I-:pyv}-\v\v-pyv}Pr{r;\x07-K-pyv}-\v\v---------pyv}Pr{r;\b-I-:pyv}-\v\v-pyv}Pr{r;\b-K-pyv}6-\n--------tyl]|vv|{-J-rpA5=;=9-=;=9-?;=9->;=6H--------r{H----\f----rp@-{qpPr{r-J-pyv}Pr{r;\x07\b -<-pyv}Pr{r;H----rp?-s|pny-J-rp?5--------}|wrpv|{Znv\x07h=jh=j-7-r|yv|{;\x07-7-=;B9--------}|wrpv|{Znv\x07h>jh>j-7-r|yv|{;\b-7-=;B----6H--------]|vv|{-J-}|vv|{;\x07\bH----<<-读取协方差数据(使用-unys?\x07>C-打包)----rpA-p|-J-r\x07rySrpu5lr\x07r9-vrp?555v{5}ynV{qr\x076-3-=\x07@ss6-II->6-\v->9-v{5}ynV{qr\x076-KK->=69-=6H----rp?->-J-{}npxUnys?\x07>C5p|;\x076H-----rp?-?-J-{}npxUnys?\x07>C5p|;\b6H------rp?-@-J-{}npxUnys?\x07>C5p|; 6H----------sy|n-Z>>-J->;\x07-<-A;=H----sy|n-Z>?-J->;\b-<-A;=H----sy|n-Z>@-J-?;\x07-<-A;=H----sy|n-Z??-J-?;\b-<-A;=H----sy|n-Z?@-J-@;\x07-<-A;=H----sy|n-Z@@-J-@;\b-<-A;=H--------zn@-cx-J-zn@5--------Z>>9-Z>?9-Z>@9--------Z>?9-Z??9-Z?@9----------Z>@9-Z?@9-Z@@-------6H----<<-判断是否是正交模式:透视时-}|wrpv|{Znv\x07h@jh@j-J-=,正交时-J->----o||y-v\\u|tn}uvp-J-}|wrpv|{Znv\x07h@jh@j-K-=;DH----sy|n-n{vznv|{]|tr-J--}|wrpv|{Znv\x07h@jh@jH----zn@-WH----vs-5v\\u|tn}uvp6-\n--------<<-正交模式的雅可比矩阵--------W-J-n{}|r5zn@5------------s|pny;\x079-=;=9-=;=9------------=;=9-s|pny;\b9-=;=9------------=;=9-=;=9-=;=--------66H----\f-ryr-\n--------<<-透视模式的雅可比矩阵--------sy|n--J->;=-<-5vrPr{r; -7-vrPr{r; 6H--------W-J-zn@5------------s|pny;\x07-<-vrPr{r; 9-=;=9-:5s|pny;\x07-7-vrPr{r;\x076-7-9------------=;=9-s|pny;\b-<-vrPr{r; 9-:5s|pny;\b-7-vrPr{r;\b6-7-9------------=;=9-=;=9-=;=--------6H----\f----zn@-d-J-n{}|r5zn@5n{s|zZ|qrycvrZnv\x0766H----zn@-a-J-d-7-WH----<<-将-@Q-协方差矩阵变换为-?Q-协方差矩阵----zn@-p|?Qz-J-n{}|r5a6-7-cx-7-aH----p|?Qzh=jh=j-8J-xr{ry?Q`v rH----p|?Qzh>jh>j-8J-xr{ry?Q`v rH----rp@-p|?Q-J-rp@5p|?Qzh=jh=j9-p|?Qzh=jh>j9-p|?Qzh>jh>j6H----sy|n-n-J-p|?Q;\x07H----sy|n-q-J-p|?Q; H----sy|n-o-J-p|?Q;\bH----sy|n-Q-J-n-7-q-:-o-7-oH----sy|n-npr-J-n-8-qH----sy|n-npr\\r?-J-=;B-7-nprH----sy|n-rz?-J-\05zn\x075=;>9-npr\\r?-7-npr\\r?-:-Q66H----sy|n-rvtr{cnyr>-J-npr\\r?-8-rz?H----sy|n-rvtr{cnyr?-J-npr\\r?-:-rz?H----vs-5rvtr{cnyr?-IJ-=;=6-\n--------r{H----\f----rp?-rvtr{crp|>-J-{|znyv r5rp?5o9-rvtr{cnyr>-:-n66H----rp?-rvtr{crp|?-J-rp?5rvtr{crp|>;\b9-:rvtr{crp|>;\x076H----rp?-onvcrp|>-J-rvtr{crp|>--7-zv{5\0E-7-\05rvtr{cnyr>69-zn\x07`prr{`}npr`}yn`v r6H----rp?-onvcrp|?-J-rvtr{crp|?--7-zv{5\0E-7-\05rvtr{cnyr?69-zn\x07`prr{`}npr`}yn`v r6H----rp?-onvcvr}|-J-rp?5>;=-<-r|yv|{;\x079->;=-<-r|yv|{;\b6H----rp?-{qp\\ssr-J-rp?5]|vv|{;\x07-7-onvcrp|>-8-]|vv|{;\b-7-onvcrp|?6-7---------------------onvcvr}|-7-?;=H----rpA-\0nq]|-J-rpA5{qpPr{r;\x07\b-8-{qp\\ssr9-{qpPr{r; 9->;=6H----tyl]|vv|{-J-\0nq]|H----<<-读取颜色----rpA-p|y|-J-rpA5--------5p|;6-3-=\x07ss9--------5p|;-KK-E6-3-=\x07ss9--------5p|;-KK->C6-3-=\x07ss9--------5p|;-KK-?A6-3-=\x07ss----6-<-?BB;=H----<<应用球谐光照,目前只兼容=>?----vs-5lzn\x07`uQrtrr-KJ->6-\n--------rp@-pnzrn]|V{\\owrp-J-rp@5v{rr5n{s|z6-7-rpA5pnzrn]|vv|{9->;=66H--------rp@-|owrpcvrQv-J-{|znyv r5}ynPr{r-:-pnzrn]|V{\\owrp6H----------------rpA-u=>?@-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079-=9-luar\x07r`v r66H----------rpA-uABCD-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079-A9-luar\x07r`v r66H----------rpA-uEF>=>>-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079-E9-luar\x07r`v r66H-----------------rp@-u>-J-u=>?@;toH-----------------------------------rp@-u?-J-rp@5u=>?@;n9-uABCD;t6H---------------------rp@-u@-J-rp@5uABCD;on9-uEF>=>>;6H-----------------------------sy|n-\x07-J-|owrpcvrQv;\x07H--------sy|n-\b-J-|owrpcvrQv;\bH--------sy|n- -J-|owrpcvrQv; H--------rp@-uP|y|-J-u>-7-5:=;AEEC=?B-7-\b6-8-u?-7-5=;AEEC=?B-7- 6-8-u@-7-5:=;AEEC=?B-7-\x076H--------p|y|;to-8J-uP|y|H----------------vs-5lzn\x07`uQrtrr-KJ-?6-\n----------------------rpA-u>?>@>A>B-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079->?9-luar\x07r`v r66H------------rpA-u>C>D>E>F-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079->C9-luar\x07r`v r66H-------------rpA-u?=?>???@-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x079-?=9-luar\x07r`v r66H-------------------------rp@-uA-J-uEF>=>>;tonH------------------------------------rp@-uB-J-u>?>@>A>B;toH----------------------------------rp@-uC-J-rp@5u>?>@>A>B;n9-u>C>D>E>F;t6H---------------rp@-uD-J-rp@5u>C>D>E>F;on9-u?=?>???@;6H---------------rp@-uElqrt?-J-u?=?>???@;tonH-----------------------------------------sy|n-\x07\x07-J-\x07-7-\x07H------------sy|n-\b\b-J-\b-7-\bH------------sy|n- -J- -7- H------------sy|n-\x07\b-J-\x07-7-\bH------------sy|n-\b -J-\b-7- H------------sy|n-\x07 -J-\x07-7- H------------------------p|y|;to-8J----------------5`UlP?l=-7-\x07\b6-7-uA-8----------------5`UlP?l>-7-\b 6-7-uB-8----------------5`UlP?l?-7-5?;=-7- -:-\x07\x07-:-\b\b66-7-uC-8----------------5`UlP?l@-7-\x07 6-7-uD-8----------------5`UlP?lA-7-5\x07\x07-:-\b\b66-7-uElqrt?H--------\f----\f--------p|y|;to-J-pynz}5p|y|;to9-rp@5=;=69-rp@5>;=66H----P|y|-J-p|y|H----]|vv|{-7J-\0EH----b-J-}|vv|{;\x07\bH\f"), hy = function(...e) {
25592
+ }("}rpvv|{-uvtu}-sy|nH}rpvv|{-uvtu}-v{Hnvor-sy|n-}ynV{qr\x07H{vs|z-uvtu}-nz}yr?Q-lr\x07rH{vs|z-uvtu}-nz}yr?Q-ln{s|zH{vs|z-uvtu}-nz}yr?Q-ln{s|zV{qvprH{vs|z-uvtu}-nz}yr?Q-lyn\brV{qvprH{vs|z-uvtu}-nz}yr?Q-luar\x07rH{vs|z-rp?-luar\x07r`v rH{vs|z-v{-lzn\x07`uQrtrrH0vs-[bZlT`lPYV]]R_`-K-=----{vs|z-rp?-lyn\brPyv}}r_n{trh[bZlT`lYNfR_`jH----{vs|z-znA-lpyv}}rZnvprV{rrh[bZlT`lPYV]]R_`jH0r{qvs{vs|z-rp?-r|yv|{Hn\bv{t-rpA-P|y|Hn\bv{t-rp?-]|vv|{Hn\bv{t-rp?-bH<<参考Tnvn{`}yn@qp|{-sy|n-\0E-J-\05E;=6H<<原版的固定xr{ry`v r,不要轻易调整这个数p|{-sy|n-xr{ry?Q`v r-J-=;@Hp|{-sy|n-zn\x07`prr{`}npr`}yn`v r-J-?=AE;=H<<固定的u相关系数p|{-sy|n-`UlP>-J-=;AEEC=?B>>F=?F>FFHp|{-sy|n-`UlP?l=-J->;=F?BAEAHp|{-sy|n-`UlP?l>-J-:>;=F?BAEAHp|{-sy|n-`UlP?l?-J-=;@>B@F>CHp|{-sy|n-`UlP?l@-J-:>;=F?BAEAHp|{-sy|n-`UlP?lA-J-=;BAC?DA?Hrp?-tr`UQnnbc5v{-}ynVq\x079-v{-p|z}|{r{\\ssr9-rp?-r\x07r`v r6-\n----v{-uP|z}|{r{P|{-J-=H----vs-5lzn\x07`uQrtrr-KJ->6-uP|z}|{r{P|{-8J-FH----vs-5lzn\x07`uQrtrr-KJ-?6-uP|z}|{r{P|{-8J->BH----vs-5lzn\x07`uQrtrr-KJ-@6-uP|z}|{r{P|{-8J-?>H--------v{-}nqqrqP|z}|{r{P|{-J-uP|z}|{r{P|{H----vs-5}nqqrqP|z}|{r{P|{-2-A-.J-=6-\n--------}nqqrqP|z}|{r{P|{-J-55}nqqrqP|z}|{r{P|{-<-A6-8->6-7-AH----\f--------sy|n-yv{rnP|z}|{r{V{qr\x07-J-sy|n5}ynVq\x07-7-}nqqrqP|z}|{r{P|{-8-p|z}|{r{\\ssr6H----sy|n-r\x07ryV{qr\x07-J-yv{rnP|z}|{r{V{qr\x07-<-A;=H------sy|n-q-J-r\x07ryV{qr\x07-<-r\x07r`v r;\x07H----sy|n-\b-J-sy||5q6-<-r\x07r`v r;\bH----sy|n-\x07-J-snp5q6H----r{-rp?5\x079-\b6H\f|vq-znv{-56-\n----v{-}ynV{qr\x07b-J-v{5}ynV{qr\x07-8-=;B6H----v{-}ynV{qr\x07V-J-v{5}ynV{qr\x07b6H----rpA-pr{-J-r\x07rySrpu5lr\x07r9-vrp?55}ynV{qr\x07b-3-=\x07@ss6-II->9-}ynV{qr\x07b-KK->=69-=6H--------v{-n{s|zV{qr\x07-J-r\x07rySrpu5ln{s|zV{qvpr9-vrp?5}ynV{qr\x07b-3-=\x07@ss9-}ynV{qr\x07b-KK->=69-=6;\x07H----znA-n{s|z-J-znA5--------r\x07rySrpu5ln{s|z9-vrp?5=9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5>9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5?9-n{s|zV{qr\x0769-=69--------r\x07rySrpu5ln{s|z9-vrp?5@9-n{s|zV{qr\x0769-=6----6H----znA-n{s|zZ|qrycvrZnv\x07-J-vrZnv\x07-7-n{s|zH----rp@-}ynPr{r-J-v{Ova|Sy|n5pr{;\x07\b 6H----rpA-|yqPr{r-J-n{s|z-7-rpA5}ynPr{r9->;=6H----0vs-[bZlT`lPYV]]R_`-K-=----v{-yn\brV{qr\x07-J-v{5r\x07rySrpu5lyn\brV{qvpr9-vrp?5}ynV{qr\x07b-3-=\x07@ss9-}ynV{qr\x07b-KK->=69-=6;\x076H----vs-5yn\brV{qr\x07-KJ-=-33-yn\brV{qr\x07-I-[bZlT`lYNfR_`6-\n--------rp?-pyv}_n{tr-J-lyn\brPyv}}r_n{trhyn\brV{qr\x07jH--------v{-pyv}`n-J-v{5pyv}_n{tr;\x07-8-=;B6H--------v{-pyv}P|{-J-v{5pyv}_n{tr;\b-8-=;B6H--------v{-pyv}R{q-J-pyv}`n-8-pyv}P|{H--------s|-5v{-v-J-=H-v-I-[bZlT`lPYV]]R_`H-v886-\n----------------vs-5v-I-pyv}`n-\v\v-v-KJ-pyv}R{q6-\n--------------------p|{v{rH----------------\f----------------rpA-pyv}}r]|vv|{-J-lpyv}}rZnvprV{rrhvj-7-|yqPr{rH----------------o||y-pyv}}rq-J-pyv}}r]|vv|{;\x07-K-:=;B-33-pyv}}r]|vv|{;\x07-I-=;BH----------------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{;\b-K-:=;B-33-pyv}}r]|vv|{;\b-I-=;BH----------------pyv}}rq-J-pyv}}rq-33-pyv}}r]|vv|{; -K-:=;B-33-pyv}}r]|vv|{; -I-=;BH----------------vs-5pyv}}rq6-\n--------------------tyl]|vv|{-J-rpA5=;=9-=;=9-?;=9->;=6H--------------------r{H----------------\f--------\f----\f----0r{qvs----rpA-vrPr{r-J-n{s|zZ|qrycvrZnv\x07-7-rpA5}ynPr{r9->;=6H----rpA-pyv}Pr{r-J-}|wrpv|{Znv\x07-7-vrPr{rH----<<剔除超出视锥体的}yn----sy|n-pyv}-J->;?-7-pyv}Pr{r;H----vs-5pyv}Pr{r; -I-:pyv}Pr{r;-\v\v-pyv}Pr{r; -K-pyv}Pr{r;-\v\v---------pyv}Pr{r;\x07-I-:pyv}-\v\v-pyv}Pr{r;\x07-K-pyv}-\v\v---------pyv}Pr{r;\b-I-:pyv}-\v\v-pyv}Pr{r;\b-K-pyv}6-\n--------tyl]|vv|{-J-rpA5=;=9-=;=9-?;=9->;=6H--------r{H----\f----rp@-{qpPr{r-J-pyv}Pr{r;\x07\b -<-pyv}Pr{r;H----rp?-s|pny-J-rp?5--------}|wrpv|{Znv\x07h=jh=j-7-r|yv|{;\x07-7-=;B9--------}|wrpv|{Znv\x07h>jh>j-7-r|yv|{;\b-7-=;B----6H--------]|vv|{-J-}|vv|{;\x07\bH----<<-读取协方差数据(使用-unys?\x07>C-打包)----rpA-p|-J-r\x07rySrpu5lr\x07r9-vrp?555}ynV{qr\x07b-3-=\x07@ss6-II->6-\v->9-}ynV{qr\x07b-KK->=69-=6H----rp?->-J-{}npxUnys?\x07>C5p|;\x076H-----rp?-?-J-{}npxUnys?\x07>C5p|;\b6H------rp?-@-J-{}npxUnys?\x07>C5p|; 6H----------sy|n-Z>>-J->;\x07-<-A;=H----sy|n-Z>?-J->;\b-<-A;=H----sy|n-Z>@-J-?;\x07-<-A;=H----sy|n-Z??-J-?;\b-<-A;=H----sy|n-Z?@-J-@;\x07-<-A;=H----sy|n-Z@@-J-@;\b-<-A;=H--------zn@-cx-J-zn@5--------Z>>9-Z>?9-Z>@9--------Z>?9-Z??9-Z?@9----------Z>@9-Z?@9-Z@@-------6H----<<-判断是否是正交模式:透视时-}|wrpv|{Znv\x07h@jh@j-J-=,正交时-J->----o||y-v\\u|tn}uvp-J-}|wrpv|{Znv\x07h@jh@j-K-=;DH----sy|n-n{vznv|{]|tr-J--}|wrpv|{Znv\x07h@jh@jH----zn@-WH----vs-5v\\u|tn}uvp6-\n--------<<-正交模式的雅可比矩阵--------W-J-n{}|r5zn@5------------s|pny;\x079-=;=9-=;=9------------=;=9-s|pny;\b9-=;=9------------=;=9-=;=9-=;=--------66H----\f-ryr-\n--------<<-透视模式的雅可比矩阵--------sy|n--J->;=-<-5vrPr{r; -7-vrPr{r; 6H--------W-J-zn@5------------s|pny;\x07-<-vrPr{r; 9-=;=9-:5s|pny;\x07-7-vrPr{r;\x076-7-9------------=;=9-s|pny;\b-<-vrPr{r; 9-:5s|pny;\b-7-vrPr{r;\b6-7-9------------=;=9-=;=9-=;=--------6H----\f----zn@-d-J-n{}|r5zn@5n{s|zZ|qrycvrZnv\x0766H----zn@-a-J-d-7-WH----<<-将-@Q-协方差矩阵变换为-?Q-协方差矩阵----zn@-p|?Qz-J-n{}|r5a6-7-cx-7-aH----p|?Qzh=jh=j-8J-xr{ry?Q`v rH----p|?Qzh>jh>j-8J-xr{ry?Q`v rH----rp@-p|?Q-J-rp@5p|?Qzh=jh=j9-p|?Qzh=jh>j9-p|?Qzh>jh>j6H----sy|n-n-J-p|?Q;\x07H----sy|n-q-J-p|?Q; H----sy|n-o-J-p|?Q;\bH----sy|n-Q-J-n-7-q-:-o-7-oH----sy|n-npr-J-n-8-qH----sy|n-npr\\r?-J-=;B-7-nprH----sy|n-rz?-J-\05zn\x075=;>9-npr\\r?-7-npr\\r?-:-Q66H----sy|n-rvtr{cnyr>-J-npr\\r?-8-rz?H----sy|n-rvtr{cnyr?-J-npr\\r?-:-rz?H----vs-5rvtr{cnyr?-IJ-=;=6-\n--------r{H----\f----rp?-rvtr{crp|>-J-{|znyv r5rp?5o9-rvtr{cnyr>-:-n66H----rp?-rvtr{crp|?-J-rp?5rvtr{crp|>;\b9-:rvtr{crp|>;\x076H----rp?-onvcrp|>-J-rvtr{crp|>--7-zv{5\0E-7-\05rvtr{cnyr>69-zn\x07`prr{`}npr`}yn`v r6H----rp?-onvcrp|?-J-rvtr{crp|?--7-zv{5\0E-7-\05rvtr{cnyr?69-zn\x07`prr{`}npr`}yn`v r6H----rp?-onvcvr}|-J-rp?5>;=-<-r|yv|{;\x079->;=-<-r|yv|{;\b6H----rp?-{qp\\ssr-J-rp?5]|vv|{;\x07-7-onvcrp|>-8-]|vv|{;\b-7-onvcrp|?6-7---------------------onvcvr}|-7-?;=H----rpA-\0nq]|-J-rpA5{qpPr{r;\x07\b-8-{qp\\ssr9-{qpPr{r; 9->;=6H----tyl]|vv|{-J-\0nq]|H----<<-读取颜色----rpA-p|y|-J-rpA5--------5p|;6-3-=\x07ss9--------5p|;-KK-E6-3-=\x07ss9--------5p|;-KK->C6-3-=\x07ss9--------5p|;-KK-?A6-3-=\x07ss----6-<-?BB;=H----<<应用球谐光照,目前只兼容=>?----vs-5lzn\x07`uQrtrr-KJ->6-\n--------rp@-pnzrn]|V{\\owrp-J-rp@5v{rr5n{s|z6-7-rpA5pnzrn]|vv|{9->;=66H--------rp@-|owrpcvrQv-J-{|znyv r5}ynPr{r-:-pnzrn]|V{\\owrp6H----------------rpA-u=>?@-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9-=9-luar\x07r`v r66H----------rpA-uABCD-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9-A9-luar\x07r`v r66H----------rpA-uEF>=>>-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9-E9-luar\x07r`v r66H-----------------rp@-u>-J-u=>?@;toH-----------------------------------rp@-u?-J-rp@5u=>?@;n9-uABCD;t6H---------------------rp@-u@-J-rp@5uABCD;on9-uEF>=>>;6H-----------------------------sy|n-\x07-J-|owrpcvrQv;\x07H--------sy|n-\b-J-|owrpcvrQv;\bH--------sy|n- -J-|owrpcvrQv; H--------rp@-uP|y|-J-u>-7-5:=;AEEC=?B-7-\b6-8-u?-7-5=;AEEC=?B-7- 6-8-u@-7-5:=;AEEC=?B-7-\x076H--------p|y|;to-8J-uP|y|H----------------vs-5lzn\x07`uQrtrr-KJ-?6-\n----------------------rpA-u>?>@>A>B-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9->?9-luar\x07r`v r66H------------rpA-u>C>D>E>F-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9->C9-luar\x07r`v r66H-------------rpA-u?=?>???@-J-r\x07r5luar\x07r9-tr`UQnnbc5}ynV{qr\x07V9-?=9-luar\x07r`v r66H-------------------------rp@-uA-J-uEF>=>>;tonH------------------------------------rp@-uB-J-u>?>@>A>B;toH----------------------------------rp@-uC-J-rp@5u>?>@>A>B;n9-u>C>D>E>F;t6H---------------rp@-uD-J-rp@5u>C>D>E>F;on9-u?=?>???@;6H---------------rp@-uElqrt?-J-u?=?>???@;tonH-----------------------------------------sy|n-\x07\x07-J-\x07-7-\x07H------------sy|n-\b\b-J-\b-7-\bH------------sy|n- -J- -7- H------------sy|n-\x07\b-J-\x07-7-\bH------------sy|n-\b -J-\b-7- H------------sy|n-\x07 -J-\x07-7- H------------------------p|y|;to-8J----------------5`UlP?l=-7-\x07\b6-7-uA-8----------------5`UlP?l>-7-\b 6-7-uB-8----------------5`UlP?l?-7-5?;=-7- -:-\x07\x07-:-\b\b66-7-uC-8----------------5`UlP?l@-7-\x07 6-7-uD-8----------------5`UlP?lA-7-5\x07\x07-:-\b\b66-7-uElqrt?H--------\f----\f--------p|y|;to-J-pynz}5p|y|;to9-rp@5=;=69-rp@5>;=66H----P|y|-J-p|y|H----]|vv|{-7J-\0EH----b-J-}|vv|{;\x07\bH\f"), _y = function(...e) {
25532
25593
  return e[0].split("").map((e) => e.charCodeAt(0) > 126 ? e : String.fromCharCode((e.charCodeAt(0) + 113) % 126)).join("");
25533
- }("}rpvv|{-uvtu}-sy|nH0v{pyqr-Ip|zz|{Kn\bv{t-rpA-P|y|Hn\bv{t-rp?-]|vv|{Hn\bv{t-rp?-bH|vq-znv{-56-\n----<<-计算从-}yn-中心到当前片段的平方距离----<<-由于-]|vv|{-已经按-\05E6-缩放,平方结果会被缩放-E-倍----<<-如果平方结果大于-E,说明在椭圆外,距离均值超过-\05E6-个标准差----sy|n-N-J-q|5]|vv|{9-]|vv|{6H----vs-5N-K-E;=6-qvpnqH--------rp@-p|y|-J-P|y|;toH--------<<-由于渲染的-}yn-按-\05E6-缩放,高斯公式中的逆协方差矩阵部分变成单位矩阵----<<-因此只剩下-5e-:-zrn{6-7-5e-:-zrn{6,而-zrn{-为零,所以是-e-7-e,即-N----sy|n-|}npv\b-J-r\x07}5:=;B-7-N6-7-P|y|;nH--------tylSntP|y|-J-rpA5p|y|;to9-|}npv\b6H\f"), gy = class extends e.Mesh {
25594
+ }("}rpvv|{-uvtu}-sy|nH0v{pyqr-Ip|zz|{Kn\bv{t-rpA-P|y|Hn\bv{t-rp?-]|vv|{Hn\bv{t-rp?-bH|vq-znv{-56-\n----<<-计算从-}yn-中心到当前片段的平方距离----<<-由于-]|vv|{-已经按-\05E6-缩放,平方结果会被缩放-E-倍----<<-如果平方结果大于-E,说明在椭圆外,距离均值超过-\05E6-个标准差----sy|n-N-J-q|5]|vv|{9-]|vv|{6H----vs-5N-K-E;=6-qvpnqH--------rp@-p|y|-J-P|y|;toH--------<<-由于渲染的-}yn-按-\05E6-缩放,高斯公式中的逆协方差矩阵部分变成单位矩阵----<<-因此只剩下-5e-:-zrn{6-7-5e-:-zrn{6,而-zrn{-为零,所以是-e-7-e,即-N----sy|n-|}npv\b-J-r\x07}5:=;B-7-N6-7-P|y|;nH--------tylSntP|y|-J-rpA5p|y|;to9-|}npv\b6H\f"), vy = class extends e.Mesh {
25534
25595
  constructor() {
25535
- super(), this.renderData = null, this.needsRender = !1, this.sortWorker = null, this.depthIndex = new Uint32Array(), this.splatIndexCapacity = 0, this.dataTexture = null, this.transformsTexture = null, this.transformIndicesTexture = null, this.shTexture = null, this.usedSHDegree = 0, this.onBeforeRender = (t, n, r) => {
25536
- var i, a;
25537
- let o = r, s = this.collectObjects(n);
25538
- if (s.length === 0) {
25596
+ super(), this.renderData = null, this.needsRender = !1, this.sortWorker = null, this.depthIndex = new Uint32Array(), this.splatIndexCapacity = 0, this.activeSlot = null, this.pendingSlot = null, this.rebuildGeneration = 0, this.forceClipperUniformRefresh = !1, this.incrementalUpdateInFlight = !1, this.dataTexture = null, this.transformsTexture = null, this.transformIndicesTexture = null, this.layerIndicesTexture = null, this.shTexture = null, this.usedSHDegree = 0, this.onBeforeRender = (t, n, r) => {
25597
+ let i = r, a = this.collectObjects(n);
25598
+ if (a.length === 0) {
25539
25599
  this.geometry.instanceCount = 0;
25540
25600
  return;
25541
25601
  }
25542
- let c = 0;
25543
- if (s.forEach((e) => {
25544
- e.usedSHDegree > c && (c = e.usedSHDegree);
25545
- }), this.setMaxShDegree(c), this.isSceneNeedsRebuild(s) && (this.renderData && this.renderData.dispose(), this.shTexture && (this.shTexture.dispose(), this.shTexture = null), this.renderData = new uy(s), this.createTextures(), this.ensureSplatIndexCapacity(this.renderData.numPoints)), !this.renderData) return;
25546
- if (s.forEach((e) => {
25547
- e.transformChanged && this.renderData.updateTransform(e);
25548
- }), this.renderData.dataChanged || this.renderData.transformsChanged) {
25549
- let e = new Float32Array(this.renderData.positions.slice().buffer), t = new Float32Array(this.renderData.transforms.slice().buffer), n = new Uint32Array(this.renderData.transformIndices.slice().buffer);
25550
- (i = this.sortWorker) == null || i.postMessage({ sortData: {
25551
- positions: e,
25552
- transforms: t,
25553
- transformIndices: n,
25554
- vertexCount: this.renderData.numPoints
25555
- } }, [
25556
- e.buffer,
25557
- t.buffer,
25558
- n.buffer
25559
- ]);
25560
- }
25561
- this.renderData.dataChanged && this.dataTexture && (this.dataTexture.needsUpdate = !0, this.renderData.dataChanged = !1), this.renderData.transformsChanged && this.transformsTexture && this.transformIndicesTexture && (this.transformsTexture.needsUpdate = !0, this.transformIndicesTexture.needsUpdate = !0, this.renderData.transformsChanged = !1);
25562
- let l = Math.min(this.usedSHDegree, this.renderData.maxShDegree);
25563
- this.material.uniforms.u_maxShDegree.value = l, l > 0 && !this.shTexture ? this.createSHTexture() : l === 0 && this.shTexture && (this.shTexture.dispose(), this.shTexture = null, this.material.uniforms.u_shTexture.value = null);
25564
- let u = new e.Matrix4().multiplyMatrices(o.perspectiveProjectionMatrix, o.matrixWorldInverse);
25565
- (a = this.sortWorker) == null || a.postMessage({ viewProj: u.elements }), this.material.uniforms.resolution.value.set(o.resolution.x, o.resolution.y);
25602
+ let o = 0;
25603
+ a.forEach((e) => {
25604
+ e.usedSHDegree > o && (o = e.usedSHDegree);
25605
+ }), this.setMaxShDegree(o), this.isSceneNeedsRebuild(a) && (this.tryStartIncrementalUpdate(a) || (this.startPendingRebuild(a), this.gsSceneState.lastClipperHash = ""));
25606
+ let s = a.filter((e) => e.transformChanged);
25607
+ s.length > 0 && (this.syncTransformsForSlot(this.activeSlot, s), this.syncTransformsForSlot(this.pendingSlot, s), s.forEach((e) => {
25608
+ e.transformChanged = !1, e.selectedChanged = !1;
25609
+ })), this.activeSlot && this.updateSlotTextures(this.activeSlot), this.pendingSlot && this.updateSlotTextures(this.pendingSlot);
25610
+ let c = new e.Matrix4().multiplyMatrices(i.perspectiveProjectionMatrix, i.matrixWorldInverse).elements;
25611
+ this.pendingSlot && this.pendingSlot.renderData.initialBuildComplete && this.pendingSlot.awaitingFirstSort ? this.requestSort(this.pendingSlot, c) : this.activeSlot && this.requestSort(this.activeSlot, c);
25612
+ let l = this.getClipperHash(a);
25613
+ if ((this.forceClipperUniformRefresh || l !== this.gsSceneState.lastClipperHash) && (this.updateClipperUniforms(a), this.gsSceneState.lastClipperHash = l, this.forceClipperUniformRefresh = !1, this.needsRender = !0), this.activeSlot) {
25614
+ let e = Math.min(this.usedSHDegree, this.activeSlot.renderData.maxShDegree);
25615
+ this.material.uniforms.u_maxShDegree.value = e, e > 0 && !this.activeSlot.textures.shTexture ? this.createSHTexture(this.activeSlot) : e === 0 && this.activeSlot.textures.shTexture && (this.activeSlot.textures.shTexture.dispose(), this.activeSlot.textures.shTexture = null), this.material.uniforms.u_shTexture.value = this.activeSlot.textures.shTexture, this.renderData = this.activeSlot.renderData;
25616
+ } else this.pendingSlot || (this.bindSlotTextures(null), this.material.uniforms.u_maxShDegree.value = 0, this.geometry.instanceCount = 0);
25617
+ this.material.uniforms.resolution.value.set(i.resolution.x, i.resolution.y);
25566
25618
  };
25567
25619
  let t = this.createGeometry(), n = this.createMaterial();
25568
- this.geometry = t, this.material = n, this.frustumCulled = !1, this.renderOrder = -99999999999, this.gsSceneState = { lastObjectsHash: "" }, this.sortWorker = new py(), this.sortWorker.onmessage = (e) => {
25620
+ this.geometry = t, this.material = n, this.frustumCulled = !1, this.renderOrder = -99999999999, this.gsSceneState = {
25621
+ lastObjectsHash: "",
25622
+ lastClipperHash: ""
25623
+ }, this.sortWorker = new hy(), this.sortWorker.postMessage({ warmup: !0 }), fy.warmupWasm(), this.sortWorker.onmessage = (e) => {
25569
25624
  if (e.data.depthIndex) {
25570
- this.depthIndex = e.data.depthIndex;
25571
- let t = this.depthIndex.length, n = this.ensureSplatIndexCapacity(t);
25572
- n.array.set(this.depthIndex, 0), n.count = this.depthIndex.length, n.updateRange.offset = 0, n.updateRange.count = t, n.needsUpdate = !0, this.geometry.instanceCount = this.depthIndex.length, this.needsRender = !0;
25625
+ let t = e.data.generation;
25626
+ if (this.pendingSlot && t === this.pendingSlot.generation) {
25627
+ this.pendingSlot.awaitingFirstSort = !1, this.swapPendingToActive(e.data.depthIndex);
25628
+ return;
25629
+ }
25630
+ this.activeSlot && t === this.activeSlot.generation && (this.activeSlot.awaitingFirstSort = !1, this.applyDepthIndex(e.data.depthIndex));
25573
25631
  }
25574
25632
  };
25575
25633
  }
25576
25634
  ensureSplatIndexCapacity(t) {
25577
25635
  let n = this.geometry.getAttribute("splatIndex");
25578
25636
  if (t <= this.splatIndexCapacity) return n;
25579
- let r = this.getExpandedCapacity(t), i = n.array, a = new Int32Array(r);
25637
+ let r = this.getExpandedCapacity(t), i = n.array, a = new Float32Array(r);
25580
25638
  a.set(i.subarray(0, Math.min(i.length, r)));
25581
25639
  let o = new e.InstancedBufferAttribute(a, 1, !1, 1);
25582
25640
  return o.setUsage(e.DynamicDrawUsage), this.geometry.setAttribute("splatIndex", o), this.splatIndexCapacity = r, this.geometry._maxInstanceCount = r, o;
@@ -25611,19 +25669,28 @@ var my = function(...e) {
25611
25669
  3
25612
25670
  ]);
25613
25671
  t.setIndex(new e.BufferAttribute(r, 1)), this.splatIndexCapacity = 1;
25614
- let i = new Int32Array(this.splatIndexCapacity);
25672
+ let i = new Float32Array(this.splatIndexCapacity);
25615
25673
  for (let e = 0; e < i.length; e++) i[e] = e;
25616
25674
  let a = new e.InstancedBufferAttribute(i, 1, !1, 1);
25617
25675
  return a.setUsage(e.DynamicDrawUsage), t.setAttribute("splatIndex", a), t._maxInstanceCount = this.splatIndexCapacity, t.instanceCount = 0, t;
25618
25676
  }
25619
25677
  createMaterial() {
25620
25678
  return new e.ShaderMaterial({
25621
- vertexShader: my,
25622
- fragmentShader: hy,
25679
+ vertexShader: gy,
25680
+ fragmentShader: _y,
25681
+ defines: {
25682
+ NUM_GS_LAYERS: 0,
25683
+ NUM_GS_CLIPPERS: 0
25684
+ },
25623
25685
  uniforms: {
25624
25686
  u_texture: { value: null },
25625
25687
  u_transforms: { value: null },
25626
25688
  u_transformIndices: { value: null },
25689
+ u_layerIndices: { value: null },
25690
+ u_numGsLayers: { value: 0 },
25691
+ u_numGsClippers: { value: 0 },
25692
+ u_layerClipperRanges: { value: [] },
25693
+ u_clipperMatricesInverse: { value: [] },
25627
25694
  u_shTexture: { value: null },
25628
25695
  u_shTextureSize: { value: new e.Vector2() },
25629
25696
  u_maxShDegree: { value: 0 },
@@ -25636,58 +25703,210 @@ var my = function(...e) {
25636
25703
  depthWrite: !1
25637
25704
  });
25638
25705
  }
25639
- createTextures() {
25640
- this.renderData && (this.dataTexture = new e.DataTexture(this.renderData.data, this.renderData.width, this.renderData.height, e.RGBAIntegerFormat, e.UnsignedIntType), this.dataTexture.internalFormat = "RGBA32UI", this.dataTexture.minFilter = e.NearestFilter, this.dataTexture.magFilter = e.NearestFilter, this.dataTexture.needsUpdate = !0, this.transformsTexture = new e.DataTexture(this.renderData.transforms, this.renderData.transformsWidth, this.renderData.transformsHeight, e.RGBAFormat, e.FloatType), this.transformsTexture.internalFormat = "RGBA32F", this.transformsTexture.minFilter = e.NearestFilter, this.transformsTexture.magFilter = e.NearestFilter, this.transformsTexture.needsUpdate = !0, this.transformIndicesTexture = new e.DataTexture(this.renderData.transformIndices, this.renderData.transformIndicesWidth, this.renderData.transformIndicesHeight, e.RedIntegerFormat, e.UnsignedIntType), this.transformIndicesTexture.internalFormat = "R32UI", this.transformIndicesTexture.minFilter = e.NearestFilter, this.transformIndicesTexture.magFilter = e.NearestFilter, this.transformIndicesTexture.needsUpdate = !0, this.material.uniforms.u_texture.value = this.dataTexture, this.material.uniforms.u_transforms.value = this.transformsTexture, this.material.uniforms.u_transformIndices.value = this.transformIndicesTexture, this.usedSHDegree > 0 && this.renderData.maxShDegree > 0 && this.createSHTexture());
25706
+ createDefaultLayerClipperRanges(t) {
25707
+ return Array.from({ length: t }, () => new e.Vector2(-1, 0));
25708
+ }
25709
+ createDefaultClipperMatrices(t) {
25710
+ return Array.from({ length: t }, () => new e.Matrix4());
25711
+ }
25712
+ createTextures(t) {
25713
+ let n = new e.DataTexture(t.data, t.width, t.height, e.RGBAIntegerFormat, e.UnsignedIntType);
25714
+ n.internalFormat = "RGBA32UI", n.minFilter = e.NearestFilter, n.magFilter = e.NearestFilter, n.needsUpdate = !0;
25715
+ let r = new e.DataTexture(t.transforms, t.transformsWidth, t.transformsHeight, e.RGBAFormat, e.FloatType);
25716
+ r.internalFormat = "RGBA32F", r.minFilter = e.NearestFilter, r.magFilter = e.NearestFilter, r.needsUpdate = !0;
25717
+ let i = new e.DataTexture(t.transformIndices, t.transformIndicesWidth, t.transformIndicesHeight, e.RedIntegerFormat, e.UnsignedIntType);
25718
+ i.internalFormat = "R32UI", i.minFilter = e.NearestFilter, i.magFilter = e.NearestFilter, i.needsUpdate = !0;
25719
+ let a = new e.DataTexture(t.layerIndices, t.layerIndicesWidth, t.layerIndicesHeight, e.RedIntegerFormat, e.UnsignedIntType);
25720
+ return a.internalFormat = "R32UI", a.minFilter = e.NearestFilter, a.magFilter = e.NearestFilter, a.needsUpdate = !0, {
25721
+ dataTexture: n,
25722
+ transformsTexture: r,
25723
+ transformIndicesTexture: i,
25724
+ layerIndicesTexture: a,
25725
+ shTexture: null
25726
+ };
25641
25727
  }
25642
- createSHTexture() {
25643
- if (!this.renderData) return;
25644
- this.shTexture && (this.shTexture.dispose(), this.shTexture = null);
25645
- let t = Math.min(this.usedSHDegree, this.renderData.maxShDegree), n = 0;
25646
- if (t >= 1 && (n += 9), t >= 2 && (n += 15), t >= 3 && (n += 21), n === 0) return;
25647
- let r = n;
25648
- r % 4 != 0 && (r = Math.ceil(r / 4) * 4);
25649
- let i = this.renderData.numPoints * r / 4, a = 2048, o = Math.ceil(i / a), s = new Float32Array(a * o * 4);
25650
- for (let e = 0; e < this.renderData.numPoints; e++) {
25651
- let n = r / 4 * e, i = 0;
25652
- if (this.renderData.sh1 && t >= 1) for (let t = 0; t < 9; t++) {
25653
- let r = n + Math.floor(i / 4), a = i % 4, o = r * 4 + a;
25654
- s[o] = this.renderData.sh1[e * 9 + t], i++;
25728
+ createSHTexture(t) {
25729
+ let { renderData: n, textures: r } = t;
25730
+ r.shTexture && (r.shTexture.dispose(), r.shTexture = null);
25731
+ let i = Math.min(this.usedSHDegree, n.maxShDegree), a = 0;
25732
+ if (i >= 1 && (a += 9), i >= 2 && (a += 15), i >= 3 && (a += 21), a === 0) return;
25733
+ let o = a;
25734
+ o % 4 != 0 && (o = Math.ceil(o / 4) * 4);
25735
+ let s = n.numPoints * o / 4, c = 2048, l = Math.ceil(s / c), u = new Float32Array(c * l * 4);
25736
+ for (let e = 0; e < n.numPoints; e++) {
25737
+ let t = o / 4 * e, r = 0;
25738
+ if (n.sh1 && i >= 1) for (let i = 0; i < 9; i++) {
25739
+ let a = t + Math.floor(r / 4), o = r % 4, s = a * 4 + o;
25740
+ u[s] = n.sh1[e * 9 + i], r++;
25655
25741
  }
25656
- if (this.renderData.sh2 && t >= 2) for (let t = 0; t < 15; t++) {
25657
- let r = n + Math.floor(i / 4), a = i % 4, o = r * 4 + a;
25658
- s[o] = this.renderData.sh2[e * 15 + t], i++;
25742
+ if (n.sh2 && i >= 2) for (let i = 0; i < 15; i++) {
25743
+ let a = t + Math.floor(r / 4), o = r % 4, s = a * 4 + o;
25744
+ u[s] = n.sh2[e * 15 + i], r++;
25659
25745
  }
25660
- if (this.renderData.sh3 && t >= 3) for (let t = 0; t < 21; t++) {
25661
- let r = n + Math.floor(i / 4), a = i % 4, o = r * 4 + a;
25662
- s[o] = this.renderData.sh3[e * 21 + t], i++;
25746
+ if (n.sh3 && i >= 3) for (let i = 0; i < 21; i++) {
25747
+ let a = t + Math.floor(r / 4), o = r % 4, s = a * 4 + o;
25748
+ u[s] = n.sh3[e * 21 + i], r++;
25663
25749
  }
25664
25750
  }
25665
- this.shTexture = new e.DataTexture(s, a, o, e.RGBAFormat, e.FloatType), this.shTexture.internalFormat = "RGBA32F", this.shTexture.minFilter = e.NearestFilter, this.shTexture.magFilter = e.NearestFilter, this.shTexture.needsUpdate = !0, this.material.uniforms.u_shTexture.value = this.shTexture, this.material.uniforms.u_shTextureSize.value.set(a, o), this.material.uniforms.u_maxShDegree.value = t;
25751
+ r.shTexture = new e.DataTexture(u, c, l, e.RGBAFormat, e.FloatType), r.shTexture.internalFormat = "RGBA32F", r.shTexture.minFilter = e.NearestFilter, r.shTexture.magFilter = e.NearestFilter, r.shTexture.needsUpdate = !0, this.material.uniforms.u_shTextureSize.value.set(c, l), this.material.uniforms.u_maxShDegree.value = i;
25666
25752
  }
25667
25753
  setMaxShDegree(e) {
25754
+ var t, n;
25668
25755
  if (e < 0 || e > 2) {
25669
25756
  console.warn(`现在只支持012三种阶数,你输入的是${e}`);
25670
25757
  return;
25671
25758
  }
25672
- let t = this.usedSHDegree;
25673
- this.usedSHDegree = e, t !== e && (this.shTexture && (this.shTexture.dispose(), this.shTexture = null), this.material.uniforms.u_maxShDegree.value = e, e === 0 ? this.material.uniforms.u_shTexture.value = null : this.renderData && this.renderData.maxShDegree > 0 && this.createSHTexture());
25759
+ let r = this.usedSHDegree;
25760
+ this.usedSHDegree = e, r !== e && ((t = this.activeSlot) != null && t.textures.shTexture && (this.activeSlot.textures.shTexture.dispose(), this.activeSlot.textures.shTexture = null), (n = this.pendingSlot) != null && n.textures.shTexture && (this.pendingSlot.textures.shTexture.dispose(), this.pendingSlot.textures.shTexture = null), this.material.uniforms.u_maxShDegree.value = e, e === 0 ? this.material.uniforms.u_shTexture.value = null : this.activeSlot && this.activeSlot.renderData.maxShDegree > 0 && (this.createSHTexture(this.activeSlot), this.material.uniforms.u_shTexture.value = this.activeSlot.textures.shTexture));
25761
+ }
25762
+ bindSlotTextures(e) {
25763
+ if (!e) {
25764
+ this.dataTexture = null, this.transformsTexture = null, this.transformIndicesTexture = null, this.layerIndicesTexture = null, this.shTexture = null, this.material.uniforms.u_texture.value = null, this.material.uniforms.u_transforms.value = null, this.material.uniforms.u_transformIndices.value = null, this.material.uniforms.u_layerIndices.value = null, this.material.uniforms.u_shTexture.value = null;
25765
+ return;
25766
+ }
25767
+ this.dataTexture = e.textures.dataTexture, this.transformsTexture = e.textures.transformsTexture, this.transformIndicesTexture = e.textures.transformIndicesTexture, this.layerIndicesTexture = e.textures.layerIndicesTexture, this.shTexture = e.textures.shTexture, this.material.uniforms.u_texture.value = this.dataTexture, this.material.uniforms.u_transforms.value = this.transformsTexture, this.material.uniforms.u_transformIndices.value = this.transformIndicesTexture, this.material.uniforms.u_layerIndices.value = this.layerIndicesTexture, this.material.uniforms.u_shTexture.value = this.shTexture;
25768
+ }
25769
+ disposeSlot(e) {
25770
+ e && (e.renderData.dispose(), this.disposeTextures(e.textures));
25771
+ }
25772
+ disposeTextures(e) {
25773
+ e.dataTexture.dispose(), e.transformsTexture.dispose(), e.transformIndicesTexture.dispose(), e.layerIndicesTexture.dispose(), e.shTexture && (e.shTexture.dispose(), e.shTexture = null);
25774
+ }
25775
+ applyDepthIndex(e) {
25776
+ this.depthIndex = e;
25777
+ let t = this.depthIndex.length, n = this.ensureSplatIndexCapacity(t);
25778
+ n.array.set(this.depthIndex, 0), n.count = this.depthIndex.length, n.updateRange.offset = 0, n.updateRange.count = t, n.needsUpdate = !0, this.geometry.instanceCount = this.depthIndex.length, this.needsRender = !0;
25779
+ }
25780
+ swapPendingToActive(e) {
25781
+ if (!this.pendingSlot) return;
25782
+ let t = this.activeSlot;
25783
+ this.activeSlot = this.pendingSlot, this.pendingSlot = null, this.renderData = this.activeSlot.renderData, this.ensureSplatIndexCapacity(this.activeSlot.renderData.numPoints), this.bindSlotTextures(this.activeSlot), this.activeSlot.sortDataUploaded = !0, this.forceClipperUniformRefresh = !0, this.applyDepthIndex(e), t && this.disposeSlot(t);
25784
+ }
25785
+ createSlot(e) {
25786
+ let t = {
25787
+ generation: e.generation,
25788
+ renderData: e,
25789
+ textures: this.createTextures(e),
25790
+ awaitingFirstSort: !0,
25791
+ sortDataUploaded: !1
25792
+ };
25793
+ return this.usedSHDegree > 0 && e.maxShDegree > 0 && this.createSHTexture(t), t;
25794
+ }
25795
+ updateSlotTextures(e) {
25796
+ e.renderData.dataChanged && (e.textures.dataTexture.needsUpdate = !0, e.renderData.dataChanged = !1), e.renderData.transformsChanged && (e.textures.transformsTexture.needsUpdate = !0, e.textures.transformIndicesTexture.needsUpdate = !0, e.renderData.transformsChanged = !1);
25797
+ }
25798
+ postSortData(e) {
25799
+ var t;
25800
+ let n = new Float32Array(e.renderData.positions.slice().buffer), r = new Float32Array(e.renderData.transforms.slice().buffer), i = new Uint32Array(e.renderData.transformIndices.slice().buffer);
25801
+ (t = this.sortWorker) == null || t.postMessage({ sortData: {
25802
+ positions: n,
25803
+ transforms: r,
25804
+ transformIndices: i,
25805
+ vertexCount: e.renderData.numPoints,
25806
+ generation: e.generation
25807
+ } }, [
25808
+ n.buffer,
25809
+ r.buffer,
25810
+ i.buffer
25811
+ ]), e.sortDataUploaded = !0;
25812
+ }
25813
+ requestSort(e, t) {
25814
+ var n;
25815
+ e.renderData.initialBuildComplete && ((e.renderData.dataChanged || e.renderData.transformsChanged || !e.sortDataUploaded) && this.postSortData(e), (n = this.sortWorker) == null || n.postMessage({ viewProj: t }));
25816
+ }
25817
+ syncTransformsForSlot(e, t) {
25818
+ e && t.forEach((t) => {
25819
+ e.renderData.splatIndices.has(t) && e.renderData.updateTransform(t);
25820
+ });
25674
25821
  }
25675
25822
  collectObjects(e) {
25676
25823
  let t = [];
25677
25824
  return e.traverse((e) => {
25678
25825
  e instanceof Gn && e.visible && t.push(e);
25826
+ }), t.sort((e, t) => {
25827
+ let n = e.uuid + e.gsViewLayerKey, r = t.uuid + t.gsViewLayerKey;
25828
+ return n < r ? -1 : n > r ? 1 : 0;
25679
25829
  }), t;
25680
25830
  }
25681
25831
  isSceneNeedsRebuild(e) {
25682
- let t = e.reduce((e, t) => e + t.uuid, ""), n = t !== this.gsSceneState.lastObjectsHash;
25832
+ let t = e.map((e) => `${e.uuid}:${e.gsViewLayerKey}`).join("|"), n = t !== this.gsSceneState.lastObjectsHash;
25683
25833
  return this.gsSceneState.lastObjectsHash = t, n;
25684
25834
  }
25835
+ getClipperHash(e) {
25836
+ return e.map((e) => {
25837
+ let t = e.gsClippers.map((e) => {
25838
+ var t;
25839
+ return `${(t = e.floorIndex) == null ? -1 : t}:${e.clippingBoxMatrix.elements.join(",")}`;
25840
+ }).join(";");
25841
+ return `${e.gsViewLayerKey}:${t}`;
25842
+ }).join("|");
25843
+ }
25844
+ updateClipperCounts(e, t) {
25845
+ let n = Math.max(0, e | 0), r = Math.max(0, t | 0), i = this.material.defines;
25846
+ (i.NUM_GS_LAYERS !== n || i.NUM_GS_CLIPPERS !== r) && (i.NUM_GS_LAYERS = n, i.NUM_GS_CLIPPERS = r, this.material.needsUpdate = !0), this.material.uniforms.u_numGsLayers.value = e, this.material.uniforms.u_numGsClippers.value = t;
25847
+ }
25848
+ updateClipperUniforms(e) {
25849
+ var t, n, r, i;
25850
+ let a = (n = (t = this.activeSlot) == null ? void 0 : t.renderData) == null ? null : n;
25851
+ if (!a) {
25852
+ this.material.uniforms.u_layerClipperRanges.value = [], this.material.uniforms.u_clipperMatricesInverse.value = [], this.updateClipperCounts(0, 0);
25853
+ return;
25854
+ }
25855
+ let o = /* @__PURE__ */ new Map();
25856
+ for (let t of e) o.has(t.gsViewLayerKey) || o.set(t.gsViewLayerKey, t.gsClippers);
25857
+ let s = a.layerKeys.length, c = 0;
25858
+ for (let e of a.layerKeys) c += ((r = o.get(e)) == null ? [] : r).length;
25859
+ let l = this.createDefaultLayerClipperRanges(s), u = this.createDefaultClipperMatrices(c), d = 0;
25860
+ for (let e of a.layerKeys) {
25861
+ let t = a.layerKeyToIndex.get(e);
25862
+ if (t === void 0) continue;
25863
+ let n = (i = o.get(e)) == null ? [] : i, r = d, s = 0;
25864
+ for (let e of n) u[d].getInverse(e.clippingBoxMatrix), d++, s++;
25865
+ s > 0 && l[t].set(r, s);
25866
+ }
25867
+ this.material.uniforms.u_layerClipperRanges.value = l, this.material.uniforms.u_clipperMatricesInverse.value = u, this.updateClipperCounts(s, d);
25868
+ }
25869
+ startPendingRebuild(e) {
25870
+ this.pendingSlot && (this.disposeSlot(this.pendingSlot), this.pendingSlot = null), this.rebuildGeneration += 1;
25871
+ let t = new fy(e, this.rebuildGeneration);
25872
+ this.pendingSlot = this.createSlot(t);
25873
+ }
25874
+ tryStartIncrementalUpdate(e) {
25875
+ if (!this.activeSlot || this.pendingSlot || this.incrementalUpdateInFlight) return !1;
25876
+ let t = this.activeSlot.renderData.getObjectsInOrder();
25877
+ if (!this.activeSlot.renderData.canIncrementalAppend(e)) return !1;
25878
+ let n = e.slice(t.length);
25879
+ if (n.length === 0) return !1;
25880
+ this.incrementalUpdateInFlight = !0;
25881
+ let r = this.activeSlot;
25882
+ return r.renderData.appendObjects(n).then((e) => {
25883
+ if (!e || this.activeSlot !== r || r.renderData.disposed) return;
25884
+ let t = r.textures;
25885
+ r.textures = this.createTextures(r.renderData), this.usedSHDegree > 0 && r.renderData.maxShDegree > 0 && this.createSHTexture(r), this.bindSlotTextures(r), this.ensureSplatIndexCapacity(r.renderData.numPoints), r.sortDataUploaded = !1, r.awaitingFirstSort = !0, this.disposeTextures(t), this.forceClipperUniformRefresh = !0, this.gsSceneState.lastClipperHash = "", this.needsRender = !0;
25886
+ }).catch((e) => {
25887
+ console.warn("Incremental append failed, fallback to rebuild:", e);
25888
+ }).finally(() => {
25889
+ this.incrementalUpdateInFlight = !1;
25890
+ }), !0;
25891
+ }
25685
25892
  dispose() {
25686
- this.renderData && this.renderData.dispose(), this.sortWorker && this.sortWorker.terminate(), this.dataTexture && this.dataTexture.dispose(), this.transformsTexture && this.transformsTexture.dispose(), this.transformIndicesTexture && this.transformIndicesTexture.dispose(), this.shTexture && this.shTexture.dispose(), this.geometry.dispose(), this.material.dispose();
25893
+ this.disposeSlot(this.pendingSlot), this.pendingSlot = null, this.disposeSlot(this.activeSlot), this.activeSlot = null, this.renderData = null, this.sortWorker && this.sortWorker.terminate(), this.bindSlotTextures(null), this.geometry.dispose(), this.material.dispose();
25894
+ }
25895
+ }, yy = class extends e.Mesh {
25896
+ constructor() {
25897
+ super(), this.onBeforeRender = (e, t, n) => {
25898
+ this.collectObjects(t).length > 0 && console.warn("未开启webgl2, 3dgs仅支持在开启webgl2模式后使用");
25899
+ };
25900
+ }
25901
+ collectObjects(e) {
25902
+ let t = [];
25903
+ return e.traverse((e) => {
25904
+ e instanceof Gn && e.visible && t.push(e);
25905
+ }), t;
25687
25906
  }
25688
- }, _y = 1e3, vy = 90, yy = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-public.realsee-cdn.cn/").replace("//vrlab-image4.ljcdn.com/", "//vr-image-4.realsee-cdn.cn/").replace("//vrlab-image3.ljcdn.com/", "//vr-image-3.realsee-cdn.cn/").replace("//vrlab-image2.ljcdn.com/", "//vr-image-2.realsee-cdn.cn/").replace("//vrlab-image1.ljcdn.com/", "//vr-image-1.realsee-cdn.cn/"), by = new e.Sphere(), xy = new e.Box3(), Sy = new e.Vector4(), Cy = new e.Vector4(), wy = new e.Color(), Ty = new e.Vector2(), Ey = /* @__PURE__ */ new WeakMap(), Dy = Qp([Yp(null)]), Oy = {}, ky = class t extends rn {
25907
+ }, by = 1e3, xy = 90, Sy = (e) => e.replace("//vrlab-public.ljcdn.com/", "//vr-public.realsee-cdn.cn/").replace("//vrlab-image4.ljcdn.com/", "//vr-image-4.realsee-cdn.cn/").replace("//vrlab-image3.ljcdn.com/", "//vr-image-3.realsee-cdn.cn/").replace("//vrlab-image2.ljcdn.com/", "//vr-image-2.realsee-cdn.cn/").replace("//vrlab-image1.ljcdn.com/", "//vr-image-1.realsee-cdn.cn/"), Cy = new e.Sphere(), wy = new e.Box3(), Ty = new e.Vector4(), Ey = new e.Vector4(), Dy = new e.Color(), Oy = new e.Vector2(), ky = /* @__PURE__ */ new WeakMap(), Ay = Qp([Yp(null)]), jy = {}, My = class t extends rn {
25689
25908
  static get version() {
25690
- return "6.8.0-alpha.20";
25909
+ return "6.8.0-alpha.21";
25691
25910
  }
25692
25911
  static get dracoPath() {
25693
25912
  return Xa.decoderPath;
@@ -25709,7 +25928,7 @@ var my = function(...e) {
25709
25928
  }
25710
25929
  constructor(t = {}) {
25711
25930
  var n, r, i, a, o, s, c, l, u, d, f;
25712
- if (super(), this.pbmGSRenderMesh = null, this.fiveId = Qt(), Oy[this.fiveId] = this, this.currentUpdateArgs = {
25931
+ if (super(), this.pbmGaussianSplattingRenderMesh = null, this.fiveId = Qt(), jy[this.fiveId] = this, this.currentUpdateArgs = {
25713
25932
  time: U(),
25714
25933
  args: []
25715
25934
  }, this.currentMode = "Panorama", this.pano = {
@@ -25726,7 +25945,7 @@ var my = function(...e) {
25726
25945
  }, this.fps = {
25727
25946
  testCount: 0,
25728
25947
  testTime: U()
25729
- }, this.modeChangeDuration = (c = t.modeChangeDuration) == null ? _y : c, this.enableWheel = (l = t.enableWheel) == null ? !0 : l, typeof window < "u") if ("renderer" in t) t.renderer instanceof Gm && this.throwError(/* @__PURE__ */ Error("cannot render a internal renderer")), this.renderer = t.renderer;
25948
+ }, this.modeChangeDuration = (c = t.modeChangeDuration) == null ? by : c, this.enableWheel = (l = t.enableWheel) == null ? !0 : l, typeof window < "u") if ("renderer" in t) t.renderer instanceof Gm && this.throwError(/* @__PURE__ */ Error("cannot render a internal renderer")), this.renderer = t.renderer;
25730
25949
  else try {
25731
25950
  this.renderer = new Gm({
25732
25951
  preserveDrawingBuffer: t.preserveDrawingBuffer,
@@ -25750,7 +25969,7 @@ var my = function(...e) {
25750
25969
  bottom: 0,
25751
25970
  width: 1,
25752
25971
  height: 1
25753
- }, t.viewport), this.camera = new Xt(vy), this.scene = new Qm(), this.xrCustomObjectsScene = new e.Scene(), this.scene.add(this.xrCustomObjectsScene), this.scene.matrixAutoUpdate = !1, this.requestProxy = (f = t.requestProxy) == null ? yy : f, this.networkSubscribe = new rr(), this.networkSubscribe.on("network", (e, t, n, r) => {
25972
+ }, t.viewport), this.camera = new Xt(xy), this.scene = new Qm(), this.xrCustomObjectsScene = new e.Scene(), this.scene.add(this.xrCustomObjectsScene), this.scene.matrixAutoUpdate = !1, this.loadWorkTask = Promise.resolve(), this.requestProxy = (f = t.requestProxy) == null ? Sy : f, this.networkSubscribe = new rr(), this.networkSubscribe.on("network", (e, t, n, r) => {
25754
25973
  var i;
25755
25974
  this.emit("network.resource", $("network.resource", {
25756
25975
  source: e,
@@ -25758,10 +25977,10 @@ var my = function(...e) {
25758
25977
  requestState: n,
25759
25978
  detail: r
25760
25979
  })), (i = this.analysis) == null || i.network(this.works, e, t, n, r);
25761
- }), this.readyCallbacks = [], this.syncingState = !1, this.helperGroup = new e.Group(), this.helperGroup.name = "helper", this.helperGroup.matrixAutoUpdate = !1, this.scene.add(this.helperGroup), Ey.set(this, Dy), this.modelScene = new Uf({ fiveId: this.fiveId }), this.modelScene.addEventListener("model.create", (e) => {
25980
+ }), this.readyCallbacks = [], this.syncingState = !1, this.helperGroup = new e.Group(), this.helperGroup.name = "helper", this.helperGroup.matrixAutoUpdate = !1, this.scene.add(this.helperGroup), ky.set(this, Ay), this.modelScene = new Uf({ fiveId: this.fiveId }), this.modelScene.addEventListener("model.create", (e) => {
25762
25981
  this.bindModel(e.model);
25763
25982
  }), this.scene.add(this.modelScene);
25764
- let [p] = this.modelScene.setModels(Dy, { forceReplaceImmediately: !0 });
25983
+ let [p] = this.modelScene.setModels(Ay, { forceReplaceImmediately: !0 });
25765
25984
  H(p, "loaded", {
25766
25985
  get() {
25767
25986
  return !1;
@@ -25788,7 +26007,7 @@ var my = function(...e) {
25788
26007
  };
25789
26008
  if (typeof document < "u" && document.addEventListener("fullscreenchange", h, !1), this.renderer && this.renderer.domElement.addEventListener("webglcontextrestored", g, !1), this.removeEventListeners = () => {
25790
26009
  typeof document < "u" && document.removeEventListener("fullscreenchange", h, !1), this.renderer && this.renderer.domElement.removeEventListener("webglcontextrestored", g, !1);
25791
- }, this.loadWorkTask = this.prepare(), this.plugins = {}, t.plugins && t.plugins.length) {
26010
+ }, this.plugins = {}, t.plugins && t.plugins.length) {
25792
26011
  for (let e of t.plugins) if (typeof e == "function") e(this);
25793
26012
  else if (Array.isArray(e)) {
25794
26013
  let [t, n, r] = e;
@@ -25798,7 +26017,7 @@ var my = function(...e) {
25798
26017
  }
25799
26018
  }
25800
26019
  }
25801
- Rv(this), this.fiveRenderer = new Wm(), this.adaptiveLuminancePass = new Cm(), this.adaptiveLuminancePass.enabled = !1, this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass), this.eyeDomeLightingPass = new Em(this.camera), this.eyeDomeLightingPass.enabled = !1, this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass), t.webgl2 ? (this.pbmGSRenderMesh = new gy(), this.scene.add(this.pbmGSRenderMesh)) : console.warn("未开启webgl2,3dgs功能不可用");
26020
+ Rv(this), this.fiveRenderer = new Wm(), this.adaptiveLuminancePass = new Cm(), this.adaptiveLuminancePass.enabled = !1, this.fiveRenderer.composer.addPass(this.adaptiveLuminancePass), this.eyeDomeLightingPass = new Em(this.camera), this.eyeDomeLightingPass.enabled = !1, this.fiveRenderer.composer.addPass(this.eyeDomeLightingPass), t.webgl2 ? (this.pbmGaussianSplattingRenderMesh = new vy(), this.scene.add(this.pbmGaussianSplattingRenderMesh)) : this.scene.add(new yy());
25802
26021
  }
25803
26022
  get ident() {
25804
26023
  return this.fiveId;
@@ -25809,17 +26028,14 @@ var my = function(...e) {
25809
26028
  get panoId() {
25810
26029
  return Q(this.pano);
25811
26030
  }
25812
- prepare() {
25813
- return Promise.all([Tr().catch(q)]).then(q);
25814
- }
25815
26031
  dispose() {
25816
26032
  var t;
25817
26033
  if (this.destroyed === !0) return;
25818
- delete Oy[this.fiveId], this.emit("dispose"), this.destroyed = !0, this.pause(), this.stopAnimationLoop && (this.stopAnimationLoop(), this.stopAnimationLoop = void 0), this.off(), this.networkSubscribe.off(), this.controller && (this.controller.destroy(), this.controller = void 0);
26034
+ delete jy[this.fiveId], this.emit("dispose"), this.destroyed = !0, this.pause(), this.stopAnimationLoop && (this.stopAnimationLoop(), this.stopAnimationLoop = void 0), this.off(), this.networkSubscribe.off(), this.controller && (this.controller.destroy(), this.controller = void 0);
25819
26035
  let n = this.getElement();
25820
26036
  n && n.parentNode && n.parentNode.removeChild(n);
25821
26037
  let r = this.modelScene.parameter;
25822
- r.pano0 && r.pano0.map.dispose(), r.pano1 && r.pano1.map !== ((t = r.pano0) == null ? void 0 : t.map) && r.pano1.map.dispose(), r.reset("pano0", "pano1"), this.modelScene.dispose(), this.scene.dispose(), this.xrCustomObjectsScene.dispose(), Ey.set(this, Dy), this.renderer && this.renderer.render(new e.Scene(), new e.Camera()), this.fiveRenderer.dispose(), this.renderer instanceof Gm && (this.renderer.forceContextLoss && this.renderer.forceContextLoss(), this.renderer.dispose());
26038
+ r.pano0 && r.pano0.map.dispose(), r.pano1 && r.pano1.map !== ((t = r.pano0) == null ? void 0 : t.map) && r.pano1.map.dispose(), r.reset("pano0", "pano1"), this.modelScene.dispose(), this.scene.dispose(), this.xrCustomObjectsScene.dispose(), ky.set(this, Ay), this.renderer && this.renderer.render(new e.Scene(), new e.Camera()), this.fiveRenderer.dispose(), this.renderer instanceof Gm && (this.renderer.forceContextLoss && this.renderer.forceContextLoss(), this.renderer.dispose());
25823
26039
  }
25824
26040
  setViewport(e) {
25825
26041
  Object.assign(this.viewport, e), this.needsRender = !0;
@@ -25888,7 +26104,7 @@ var my = function(...e) {
25888
26104
  return this.controller.updateCameraWithKeyframes(e, t, n);
25889
26105
  }
25890
26106
  get works() {
25891
- return Ey.get(this) || Dy;
26107
+ return ky.get(this) || Ay;
25892
26108
  }
25893
26109
  get work() {
25894
26110
  return this.works[0];
@@ -25912,7 +26128,7 @@ var my = function(...e) {
25912
26128
  load_(n, r, i, a = !0) {
25913
26129
  var o, s, c, l, u, d, f, p, m, h;
25914
26130
  let g = {};
25915
- typeof i == "number" ? g.duration = i : typeof i == "object" && Object.assign(g, i), this.works === Dy && (g.duration === void 0 && (g.duration = 0), g.effect === void 0 && (g.effect = "instant"));
26131
+ typeof i == "number" ? g.duration = i : typeof i == "object" && Object.assign(g, i), this.works === Ay && (g.duration === void 0 && (g.duration = 0), g.effect === void 0 && (g.effect = "instant"));
25916
26132
  let _ = {};
25917
26133
  Object.assign(_, g.model), !_["3d-tiles"] && g["3d-tiles"] && (_["3d-tiles"] = g["3d-tiles"]), !_.textureOptions && g.textureOptions && (_.textureOptions = g.textureOptions), !_.textureOptions && this.textureOptions && (_.textureOptions = this.textureOptions);
25918
26134
  let v = [];
@@ -25926,7 +26142,7 @@ var my = function(...e) {
25926
26142
  return this.throwError(e), Promise.reject(e);
25927
26143
  }
25928
26144
  for (let e of y) this.bindWorkFetcher(e);
25929
- r === void 0 && (r = "inherit"), r === "inherit" && this.works === Dy && (r = "initial");
26145
+ r === void 0 && (r = "inherit"), r === "inherit" && this.works === Ay && (r = "initial");
25930
26146
  let b = this.currentMode, x = y.initial, S = x.work.observers[0], C = S ? {
25931
26147
  workCode: S.work.workCode,
25932
26148
  panoIndex: S.panoIndex
@@ -26026,7 +26242,7 @@ var my = function(...e) {
26026
26242
  }
26027
26243
  this.updateTime(this.currentUpdateArgs.time, 0, ...this.currentUpdateArgs.args);
26028
26244
  };
26029
- Ey.set(this, y);
26245
+ ky.set(this, y);
26030
26246
  let k = Promise.resolve();
26031
26247
  if (w === t.Mode.Floorplan || w === t.Mode.Topview || w === t.Mode.Mapview || w === t.Mode.Model) {
26032
26248
  this.modelScene.loaded === !1 && (this.camera.setFromPose(T), Eh(this.state, this.camera.pose));
@@ -26077,12 +26293,12 @@ var my = function(...e) {
26077
26293
  pano0: null,
26078
26294
  pano1: null,
26079
26295
  modelAlpha: 1
26080
- }), Ey.set(this, Dy), this.modelScene.setModels(Dy, { forceReplaceImmediately: !0 }), this.renderer && this.modelScene.update(this.renderer, this.camera), this.needsRender = !0, this.currentMode = "Panorama", this.pano = {
26296
+ }), ky.set(this, Ay), this.modelScene.setModels(Ay, { forceReplaceImmediately: !0 }), this.renderer && this.modelScene.update(this.renderer, this.camera), this.needsRender = !0, this.currentMode = "Panorama", this.pano = {
26081
26297
  workCode: "",
26082
26298
  panoIndex: 0
26083
26299
  }, this.camera.setFromPose({
26084
26300
  distance: 0,
26085
- fov: vy,
26301
+ fov: xy,
26086
26302
  longitude: 0,
26087
26303
  latitude: 0,
26088
26304
  offset: new e.Vector3(0, 0, 0)
@@ -26169,14 +26385,14 @@ var my = function(...e) {
26169
26385
  this.helperVisible = v == null ? this.helperVisible : v, y && (this.controller instanceof Fv.Panorama || this.controller instanceof Fv.VRPanorama || this.controller instanceof Fv.XRPanorama) && y === !0 && this.modelScene.parameter.set("modelAlpha", 1), this.modelScene.update(this.renderer, this.camera);
26170
26386
  let C = this.getPixelsRenderTarget;
26171
26387
  C.setSize(m * g, h * g), this.renderer.setRenderTarget(C), this.camera.pixelRatio = g, this.camera.resolution.set(m, h), this.camera.setViewOffset(d.width, d.height, f, d.height - p - h, m, h), this.camera.aspect = d.width / d.height, this.camera.updateTime(c), this.scene.update(this.renderer, this.camera);
26172
- let w = this.renderer.autoClear, T = this.renderer.autoClearColor, E = this.renderer.autoClearDepth, D = this.renderer.autoClearStencil, O = wy.copy(this.renderer.getClearColor()), k = this.renderer.getClearAlpha(), A = this.renderer.getScissorTest();
26388
+ let w = this.renderer.autoClear, T = this.renderer.autoClearColor, E = this.renderer.autoClearDepth, D = this.renderer.autoClearStencil, O = Dy.copy(this.renderer.getClearColor()), k = this.renderer.getClearAlpha(), A = this.renderer.getScissorTest();
26173
26389
  this.renderer.autoClear = !0, this.renderer.autoClearColor = !0, this.renderer.autoClearDepth = !0, this.renderer.autoClearStencil = !0, this.renderer.setScissorTest(!1);
26174
26390
  let j = this.scene.background;
26175
26391
  this.scene.background = this.camera.isOrthographicCamera ? null : j, this.renderer.render(this.scene, this.camera), this.scene.background = j, this.renderer.autoClear = w, this.renderer.autoClearColor = T, this.renderer.autoClearDepth = E, this.renderer.autoClearStencil = D, this.renderer.setClearColor(O, k), this.renderer.setScissorTest(A), this.helperVisible = x, S === void 0 ? this.modelScene.parameter.reset("modelAlpha") : this.modelScene.parameter.set("modelAlpha", S), this.renderer.setRenderTarget(u), this.camera.clearViewOffset(), this.camera.pixelRatio = l, this.camera.resolution.copy(d), this.camera.aspect = this.camera.resolution.width / this.camera.resolution.height, this.camera.updateTime(c), this.modelScene.update(this.renderer, this.camera), this.scene.update(this.renderer, this.camera);
26176
- let M = m * g, N = h * g, ee = M * N, P = ee * 4;
26392
+ let M = m * g, N = h * g, ee = M * N, te = ee * 4;
26177
26393
  if (b) {
26178
- if (b.length !== P) throw Error(`buffer length is not equals pixels ${P}`);
26179
- } else b = new Uint8Array(P);
26394
+ if (b.length !== te) throw Error(`buffer length is not equals pixels ${te}`);
26395
+ } else b = new Uint8Array(te);
26180
26396
  if (this.renderer.readRenderTargetPixels(C, 0, 0, m * g, h * g, b), _) {
26181
26397
  let e = ee / 2;
26182
26398
  for (let t = 0, n = 0, r = 0, i = 0; n < e; n++) for (i = (N - Math.floor(n / M) - 1) * M + n % M, r = 0; r < 4; r++) t = b[n * 4 + r], b[n * 4 + r] = b[i * 4 + r], b[i * 4 + r] = t;
@@ -26192,9 +26408,9 @@ var my = function(...e) {
26192
26408
  if (!t) return;
26193
26409
  let n = t.getRenderTarget();
26194
26410
  t.setRenderTarget(null);
26195
- let r = t.autoClear, i = t.autoClearColor, a = t.autoClearDepth, o = t.autoClearStencil, s = wy.copy(t.getClearColor()), c = t.getClearAlpha(), l = t.getViewport(Sy), u = t.getScissor(Cy), d = t.getScissorTest();
26411
+ let r = t.autoClear, i = t.autoClearColor, a = t.autoClearDepth, o = t.autoClearStencil, s = Dy.copy(t.getClearColor()), c = t.getClearAlpha(), l = t.getViewport(Ty), u = t.getScissor(Ey), d = t.getScissorTest();
26196
26412
  t.autoClear = !0, t.autoClearColor = !0, t.autoClearDepth = !0, t.autoClearStencil = !0;
26197
- let f = t.getSize(Ty), p = Math.floor(f.x * this.viewport.left), m = Math.floor(f.y * this.viewport.bottom), h = Math.floor(f.x * this.viewport.width), g = Math.floor(f.y * this.viewport.height);
26413
+ let f = t.getSize(Oy), p = Math.floor(f.x * this.viewport.left), m = Math.floor(f.y * this.viewport.bottom), h = Math.floor(f.x * this.viewport.width), g = Math.floor(f.y * this.viewport.height);
26198
26414
  t.setClearColor(this.backgroundColor, this.backgroundAlpha), t.setViewport(p, m, h, g), t.setScissor(p, m, h, g);
26199
26415
  let _ = this.viewport.bottom !== 0 || this.viewport.left !== 0 || this.viewport.width !== 1 || this.viewport.height !== 1;
26200
26416
  t.setScissorTest(_);
@@ -26221,17 +26437,17 @@ var my = function(...e) {
26221
26437
  }, !0, 0, 10);
26222
26438
  }
26223
26439
  if (this.camera.autoNearFar) {
26224
- xy.makeEmpty(), xy.expandByObject(this.modelScene.boundingMesh);
26225
- let t = xy.getBoundingSphere(by), n = t.radius * 2;
26226
- t.containsPoint(this.camera.position) || (n = this.camera.position.distanceTo(t.center) + t.radius);
26227
- let r = W(n / 500, .001, .1), i = W(n, 800);
26228
- this.camera.near !== r && (this.camera.near = r), this.camera.far !== i && (this.camera.far = i), this.camera.updateTime(e);
26440
+ wy.makeEmpty(), wy.expandByObject(this.modelScene.boundingMesh);
26441
+ let t = wy.getBoundingSphere(Cy), n = t.radius * 2;
26442
+ t.containsPoint(this.camera.position) || (n = this.camera.position.distanceTo(t.center) + t.radius), n = W(n, 800);
26443
+ let r = n / 1e4;
26444
+ r = W(r, .03, .1), this.camera.near !== r && (this.camera.near = r), this.camera.far !== n && (this.camera.far = n), this.camera.updateTime(e);
26229
26445
  }
26230
26446
  if (this.renderer) {
26231
26447
  let e = this.modelScene.visible;
26232
26448
  this.modelScene.visible = !1, this.scene.update(this.renderer, this.camera), this.modelScene.visible = e;
26233
26449
  }
26234
- if (this.syncingState = !1, this.controller && this.controller.needsRender === !0 && (this.controller.needsRender = !1, this.needsRender = !0), this.camera.needsRender === !0 && (this.camera.needsRender = !1, this.needsRender = !0), this.modelScene.needsRender === !0 && (this.modelScene.needsRender = !1, this.needsRender = !0), this.scene.needsRender === !0 && (this.scene.needsRender = !1, this.needsRender = !0), this.pbmGSRenderMesh && this.pbmGSRenderMesh.needsRender === !0 && (this.pbmGSRenderMesh.needsRender = !1, this.needsRender = !0), this.onlyRenderIfNeeds !== !0 && (this.needsRender = !0), this.paused === !0) return;
26450
+ if (this.syncingState = !1, this.controller && this.controller.needsRender === !0 && (this.controller.needsRender = !1, this.needsRender = !0), this.camera.needsRender === !0 && (this.camera.needsRender = !1, this.needsRender = !0), this.modelScene.needsRender === !0 && (this.modelScene.needsRender = !1, this.needsRender = !0), this.scene.needsRender === !0 && (this.scene.needsRender = !1, this.needsRender = !0), this.pbmGaussianSplattingRenderMesh && this.pbmGaussianSplattingRenderMesh.needsRender === !0 && (this.pbmGaussianSplattingRenderMesh.needsRender = !1, this.needsRender = !0), this.onlyRenderIfNeeds !== !0 && (this.needsRender = !0), this.paused === !0) return;
26235
26451
  let r = $("render.prepare", { needsRender: this.needsRender });
26236
26452
  this.emit("render.prepare", r), r.defaultPrevented && (this.needsRender = !1);
26237
26453
  let i = this.needsRender;
@@ -26750,7 +26966,7 @@ var my = function(...e) {
26750
26966
  this.modelScene.needsRender = e;
26751
26967
  }
26752
26968
  };
26753
- if (ky.Mode = {
26969
+ My.Mode = {
26754
26970
  Panorama: "Panorama",
26755
26971
  Model: "Model",
26756
26972
  Floorplan: "Floorplan",
@@ -26758,17 +26974,14 @@ if (ky.Mode = {
26758
26974
  Mapview: "Mapview",
26759
26975
  VRPanorama: "VRPanorama",
26760
26976
  XRPanorama: "XRPanorama"
26761
- }, typeof window < "u") {
26762
- let t = {
26763
- THREE: e,
26764
- constructor: ky,
26765
- instances: Oy
26766
- };
26767
- Object.assign(window, { __FIVE_DEBUG__: t });
26768
- }
26977
+ }, typeof window < "u" && Object.assign(window, { __FIVE_DEBUG__: {
26978
+ THREE: e,
26979
+ constructor: My,
26980
+ instances: jy
26981
+ } });
26769
26982
  //#endregion
26770
26983
  //#region build/five/webxr/xrButton.js
26771
- var Ay = class {
26984
+ var Ny = class {
26772
26985
  static createButton(e) {
26773
26986
  let t = document.createElement("button");
26774
26987
  function n() {
@@ -26799,4 +27012,4 @@ var Ay = class {
26799
27012
  }
26800
27013
  };
26801
27014
  //#endregion
26802
- export { Cm as AdaptiveLuminancePass, $r as AnimationFrameLoop, Vf as BoundingMesh, Xt as Camera, on as CustomShader, on as PBMCustomShader, $p as EffectComposer, Em as EyeDomeLightingPass, cr as Fetcher, ky as Five, tm as FivePass, Wm as FiveRenderer, em as FullScreenQuad, pm as Histogram, Gm as InternalWebGLRenderer, Mf as Model, Uf as ModelScene, Z as Motion, rr as NetworkSubscribe, Hn as PBMContainer, Gn as PBMGSObject, yt as PBMGroup, hn as PBMMesh, mn as PBMMeshMaterial, sn as PBMPanoFilter, Tn as PBMPointCloud, wn as PBMPointCloudMaterial, gn as PBMSkinnedMesh, an as PBMUpdateable, Lv as PROXY_CONTROLLER_EVENT_NAMES, rh as PanoCircleMesh, ph as PanoCircleMeshCustom, ch as PanoCircleMeshSolid, K as Parameter, Qm as Scene, rn as Subscribe, di as TextureLoader, Dl as Tile, df as Tile3D, df as Tile3DModel, $u as TileCache, Hu as TileNode, Xu as TileRequestScheduler, ad as Tileset, Ku as Trajectory, qu as TrajectoryNode, Jp as Work, Zp as WorkResolvedObserver, Ay as XRButton, Iv as controllersDefaultInitArgs, Lt as coordinatesToVector, Sl as createDebugBoundingMesh, Qp as createWorks, Hr as defaultImageURLTransform, Xa as draco, Hv as getViewportScale, Bt as headingToLongitude, Tr as imageSupport, _l as isBoundingVolume, pp as isPanoId, io as ktx2, Xi as loadAt3d, $o as loadB3dm, ea as loadDome, sa as loadDomez, mc as loadFbx, cs as loadGltf, Oi as loadPbm, us as loadPly, os as loadPnts, Zc as loadSplat, Jo as loadSpz, Jc as loadX3p, zt as longitudeToHeading, vl as makeBoundingVolume, fp as panoEqual, dp as panoParse, Q as panoStringify, Yp as parseWork, Rt as vectorToCoordinates, Jf as workToJson };
27015
+ export { Cm as AdaptiveLuminancePass, $r as AnimationFrameLoop, Vf as BoundingMesh, Xt as Camera, on as CustomShader, on as PBMCustomShader, $p as EffectComposer, Em as EyeDomeLightingPass, cr as Fetcher, My as Five, tm as FivePass, Wm as FiveRenderer, em as FullScreenQuad, pm as Histogram, Gm as InternalWebGLRenderer, Mf as Model, Uf as ModelScene, Z as Motion, rr as NetworkSubscribe, Hn as PBMContainer, Gn as PBMGSObject, yt as PBMGroup, hn as PBMMesh, mn as PBMMeshMaterial, sn as PBMPanoFilter, Tn as PBMPointCloud, wn as PBMPointCloudMaterial, gn as PBMSkinnedMesh, an as PBMUpdateable, Lv as PROXY_CONTROLLER_EVENT_NAMES, rh as PanoCircleMesh, ph as PanoCircleMeshCustom, ch as PanoCircleMeshSolid, K as Parameter, Qm as Scene, rn as Subscribe, di as TextureLoader, Dl as Tile, df as Tile3D, df as Tile3DModel, $u as TileCache, Hu as TileNode, Xu as TileRequestScheduler, ad as Tileset, Ku as Trajectory, qu as TrajectoryNode, Jp as Work, Zp as WorkResolvedObserver, Ny as XRButton, Iv as controllersDefaultInitArgs, Lt as coordinatesToVector, Sl as createDebugBoundingMesh, Qp as createWorks, Hr as defaultImageURLTransform, Xa as draco, Hv as getViewportScale, Bt as headingToLongitude, Tr as imageSupport, _l as isBoundingVolume, pp as isPanoId, io as ktx2, Xi as loadAt3d, $o as loadB3dm, ea as loadDome, sa as loadDomez, mc as loadFbx, cs as loadGltf, Oi as loadPbm, us as loadPly, os as loadPnts, Zc as loadSplat, Jo as loadSpz, Jc as loadX3p, zt as longitudeToHeading, vl as makeBoundingVolume, fp as panoEqual, dp as panoParse, Q as panoStringify, Yp as parseWork, Rt as vectorToCoordinates, Jf as workToJson };