@j-kyoda/vue-three-vrm 0.5.3 → 0.6.0

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.
@@ -1,8 +1,8 @@
1
- import { getCurrentInstance as Ke, useTemplateRef as Be, watch as Ve, onMounted as Q, createElementBlock as Le, openBlock as de, inject as Pe, ref as W, Fragment as ze, createVNode as J, createBlock as Xe } from "vue";
1
+ import { getCurrentInstance as Be, useTemplateRef as Ve, watch as F, onMounted as $, createElementBlock as Pe, openBlock as pe, inject as Ne, ref as Z, Fragment as ze, createVNode as ee, createBlock as Xe } from "vue";
2
2
  import * as O from "three";
3
- import { Controls as Ye, Vector3 as M, MOUSE as U, TOUCH as H, Quaternion as Z, Spherical as fe, Vector2 as S, Ray as We, Plane as Ze, MathUtils as Ne, TrianglesDrawMode as qe, TriangleFanDrawMode as ae, TriangleStripDrawMode as Oe, Loader as Qe, LoaderUtils as z, FileLoader as De, MeshPhysicalMaterial as N, Color as F, LinearSRGBColorSpace as C, SRGBColorSpace as X, SpotLight as $e, PointLight as Je, DirectionalLight as et, Matrix4 as q, InstancedMesh as tt, InstancedBufferAttribute as st, Object3D as Ce, TextureLoader as nt, ImageBitmapLoader as it, BufferAttribute as ee, InterleavedBuffer as ot, InterleavedBufferAttribute as rt, LinearMipmapLinearFilter as Ie, NearestMipmapLinearFilter as at, LinearMipmapNearestFilter as ct, NearestMipmapNearestFilter as lt, LinearFilter as ce, NearestFilter as ve, RepeatWrapping as le, MirroredRepeatWrapping as ht, ClampToEdgeWrapping as ut, PointsMaterial as dt, Material as te, LineBasicMaterial as pt, MeshStandardMaterial as ke, DoubleSide as ft, MeshBasicMaterial as V, PropertyBinding as mt, BufferGeometry as _t, SkinnedMesh as gt, Mesh as Tt, LineSegments as yt, Line as xt, LineLoop as Et, Points as bt, Group as se, PerspectiveCamera as Rt, OrthographicCamera as Mt, Skeleton as wt, AnimationClip as St, Bone as At, InterpolateDiscrete as Lt, InterpolateLinear as je, Texture as me, VectorKeyframeTrack as _e, NumberKeyframeTrack as ge, QuaternionKeyframeTrack as Te, ColorManagement as ye, FrontSide as Pt, Interpolant as Nt, Box3 as Ot, Sphere as Dt } from "three";
3
+ import { Controls as Ye, Vector3 as M, MOUSE as G, TOUCH as U, Quaternion as q, Spherical as me, Vector2 as S, Ray as We, Plane as Ze, MathUtils as Oe, TrianglesDrawMode as qe, TriangleFanDrawMode as ce, TriangleStripDrawMode as De, Loader as Qe, LoaderUtils as X, FileLoader as Ce, MeshPhysicalMaterial as N, Color as H, LinearSRGBColorSpace as C, SRGBColorSpace as Y, SpotLight as $e, PointLight as Je, DirectionalLight as et, Matrix4 as Q, InstancedMesh as tt, InstancedBufferAttribute as st, Object3D as Ie, TextureLoader as nt, ImageBitmapLoader as it, BufferAttribute as te, InterleavedBuffer as ot, InterleavedBufferAttribute as rt, LinearMipmapLinearFilter as ve, NearestMipmapLinearFilter as at, LinearMipmapNearestFilter as ct, NearestMipmapNearestFilter as lt, LinearFilter as le, NearestFilter as ke, RepeatWrapping as he, MirroredRepeatWrapping as ht, ClampToEdgeWrapping as ut, PointsMaterial as dt, Material as se, LineBasicMaterial as pt, MeshStandardMaterial as je, DoubleSide as ft, MeshBasicMaterial as z, PropertyBinding as mt, BufferGeometry as _t, SkinnedMesh as gt, Mesh as Tt, LineSegments as yt, Line as xt, LineLoop as Et, Points as bt, Group as ne, PerspectiveCamera as Rt, OrthographicCamera as Mt, Skeleton as wt, AnimationClip as St, Bone as At, InterpolateDiscrete as Lt, InterpolateLinear as Fe, Texture as _e, VectorKeyframeTrack as ge, NumberKeyframeTrack as Te, QuaternionKeyframeTrack as ye, ColorManagement as xe, FrontSide as Pt, Interpolant as Nt, Box3 as Ot, Sphere as Dt } from "three";
4
4
  import { VRMLoaderPlugin as Ct, VRMUtils as It } from "@pixiv/three-vrm";
5
- class Fe {
5
+ class He {
6
6
  constructor() {
7
7
  this.status = 0, this.url = null, this.data = null;
8
8
  }
@@ -127,7 +127,7 @@ class vt {
127
127
  return null;
128
128
  }
129
129
  }
130
- class xe {
130
+ class Ee {
131
131
  /**
132
132
  * Returns `true` if WebGL 2 is available.
133
133
  *
@@ -192,7 +192,7 @@ class xe {
192
192
  return console.warn("getWebGLErrorMessage() has been deprecated and will be removed in r178. Use getWebGL2ErrorMessage() instead."), this._getErrorMessage(1);
193
193
  }
194
194
  }
195
- const Ee = { type: "change" }, pe = { type: "start" }, He = { type: "end" }, Y = new We(), be = new Ze(), kt = Math.cos(70 * Ne.DEG2RAD), R = new M(), w = 2 * Math.PI, E = {
195
+ const be = { type: "change" }, fe = { type: "start" }, Ue = { type: "end" }, W = new We(), Re = new Ze(), kt = Math.cos(70 * Oe.DEG2RAD), R = new M(), w = 2 * Math.PI, E = {
196
196
  NONE: -1,
197
197
  ROTATE: 0,
198
198
  DOLLY: 1,
@@ -201,7 +201,7 @@ const Ee = { type: "change" }, pe = { type: "start" }, He = { type: "end" }, Y =
201
201
  TOUCH_PAN: 4,
202
202
  TOUCH_DOLLY_PAN: 5,
203
203
  TOUCH_DOLLY_ROTATE: 6
204
- }, ne = 1e-6;
204
+ }, ie = 1e-6;
205
205
  class jt extends Ye {
206
206
  /**
207
207
  * Constructs a new controls instance.
@@ -210,7 +210,7 @@ class jt extends Ye {
210
210
  * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
211
211
  */
212
212
  constructor(e, t = null) {
213
- super(e, t), this.state = E.NONE, this.target = new M(), this.cursor = new M(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.keyRotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: U.ROTATE, MIDDLE: U.DOLLY, RIGHT: U.PAN }, this.touches = { ONE: H.ROTATE, TWO: H.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new M(), this._lastQuaternion = new Z(), this._lastTargetPosition = new M(), this._quat = new Z().setFromUnitVectors(e.up, new M(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new fe(), this._sphericalDelta = new fe(), this._scale = 1, this._panOffset = new M(), this._rotateStart = new S(), this._rotateEnd = new S(), this._rotateDelta = new S(), this._panStart = new S(), this._panEnd = new S(), this._panDelta = new S(), this._dollyStart = new S(), this._dollyEnd = new S(), this._dollyDelta = new S(), this._dollyDirection = new M(), this._mouse = new S(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove = Ht.bind(this), this._onPointerDown = Ft.bind(this), this._onPointerUp = Ut.bind(this), this._onContextMenu = Yt.bind(this), this._onMouseWheel = Bt.bind(this), this._onKeyDown = Vt.bind(this), this._onTouchStart = zt.bind(this), this._onTouchMove = Xt.bind(this), this._onMouseDown = Gt.bind(this), this._onMouseMove = Kt.bind(this), this._interceptControlDown = Wt.bind(this), this._interceptControlUp = Zt.bind(this), this.domElement !== null && this.connect(this.domElement), this.update();
213
+ super(e, t), this.state = E.NONE, this.target = new M(), this.cursor = new M(), this.minDistance = 0, this.maxDistance = 1 / 0, this.minZoom = 0, this.maxZoom = 1 / 0, this.minTargetRadius = 0, this.maxTargetRadius = 1 / 0, this.minPolarAngle = 0, this.maxPolarAngle = Math.PI, this.minAzimuthAngle = -1 / 0, this.maxAzimuthAngle = 1 / 0, this.enableDamping = !1, this.dampingFactor = 0.05, this.enableZoom = !0, this.zoomSpeed = 1, this.enableRotate = !0, this.rotateSpeed = 1, this.keyRotateSpeed = 1, this.enablePan = !0, this.panSpeed = 1, this.screenSpacePanning = !0, this.keyPanSpeed = 7, this.zoomToCursor = !1, this.autoRotate = !1, this.autoRotateSpeed = 2, this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" }, this.mouseButtons = { LEFT: G.ROTATE, MIDDLE: G.DOLLY, RIGHT: G.PAN }, this.touches = { ONE: U.ROTATE, TWO: U.DOLLY_PAN }, this.target0 = this.target.clone(), this.position0 = this.object.position.clone(), this.zoom0 = this.object.zoom, this._domElementKeyEvents = null, this._lastPosition = new M(), this._lastQuaternion = new q(), this._lastTargetPosition = new M(), this._quat = new q().setFromUnitVectors(e.up, new M(0, 1, 0)), this._quatInverse = this._quat.clone().invert(), this._spherical = new me(), this._sphericalDelta = new me(), this._scale = 1, this._panOffset = new M(), this._rotateStart = new S(), this._rotateEnd = new S(), this._rotateDelta = new S(), this._panStart = new S(), this._panEnd = new S(), this._panDelta = new S(), this._dollyStart = new S(), this._dollyEnd = new S(), this._dollyDelta = new S(), this._dollyDirection = new M(), this._mouse = new S(), this._performCursorZoom = !1, this._pointers = [], this._pointerPositions = {}, this._controlActive = !1, this._onPointerMove = Ht.bind(this), this._onPointerDown = Ft.bind(this), this._onPointerUp = Ut.bind(this), this._onContextMenu = Yt.bind(this), this._onMouseWheel = Bt.bind(this), this._onKeyDown = Vt.bind(this), this._onTouchStart = zt.bind(this), this._onTouchMove = Xt.bind(this), this._onMouseDown = Gt.bind(this), this._onMouseMove = Kt.bind(this), this._interceptControlDown = Wt.bind(this), this._interceptControlUp = Zt.bind(this), this.domElement !== null && this.connect(this.domElement), this.update();
214
214
  }
215
215
  connect(e) {
216
216
  super.connect(e), this.domElement.addEventListener("pointerdown", this._onPointerDown), this.domElement.addEventListener("pointercancel", this._onPointerUp), this.domElement.addEventListener("contextmenu", this._onContextMenu), this.domElement.addEventListener("wheel", this._onMouseWheel, { passive: !1 }), this.domElement.getRootNode().addEventListener("keydown", this._interceptControlDown, { passive: !0, capture: !0 }), this.domElement.style.touchAction = "none";
@@ -271,7 +271,7 @@ class jt extends Ye {
271
271
  * was called, or the initial state.
272
272
  */
273
273
  reset() {
274
- this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(Ee), this.update(), this.state = E.NONE;
274
+ this.target.copy(this.target0), this.object.position.copy(this.position0), this.object.zoom = this.zoom0, this.object.updateProjectionMatrix(), this.dispatchEvent(be), this.update(), this.state = E.NONE;
275
275
  }
276
276
  update(e = null) {
277
277
  const t = this.object.position;
@@ -301,12 +301,12 @@ class jt extends Ye {
301
301
  c.unproject(this.object), this.object.position.sub(c).add(r), this.object.updateMatrixWorld(), o = R.length();
302
302
  } else
303
303
  console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."), this.zoomToCursor = !1;
304
- o !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(o).add(this.object.position) : (Y.origin.copy(this.object.position), Y.direction.set(0, 0, -1).transformDirection(this.object.matrix), Math.abs(this.object.up.dot(Y.direction)) < kt ? this.object.lookAt(this.target) : (be.setFromNormalAndCoplanarPoint(this.object.up, this.target), Y.intersectPlane(be, this.target))));
304
+ o !== null && (this.screenSpacePanning ? this.target.set(0, 0, -1).transformDirection(this.object.matrix).multiplyScalar(o).add(this.object.position) : (W.origin.copy(this.object.position), W.direction.set(0, 0, -1).transformDirection(this.object.matrix), Math.abs(this.object.up.dot(W.direction)) < kt ? this.object.lookAt(this.target) : (Re.setFromNormalAndCoplanarPoint(this.object.up, this.target), W.intersectPlane(Re, this.target))));
305
305
  } else if (this.object.isOrthographicCamera) {
306
306
  const o = this.object.zoom;
307
307
  this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), o !== this.object.zoom && (this.object.updateProjectionMatrix(), i = !0);
308
308
  }
309
- return this._scale = 1, this._performCursorZoom = !1, i || this._lastPosition.distanceToSquared(this.object.position) > ne || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > ne || this._lastTargetPosition.distanceToSquared(this.target) > ne ? (this.dispatchEvent(Ee), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
309
+ return this._scale = 1, this._performCursorZoom = !1, i || this._lastPosition.distanceToSquared(this.object.position) > ie || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > ie || this._lastTargetPosition.distanceToSquared(this.target) > ie ? (this.dispatchEvent(be), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
310
310
  }
311
311
  _getAutoRotationAngle(e) {
312
312
  return e !== null ? w / 60 * this.autoRotateSpeed * e : w / 60 / 60 * this.autoRotateSpeed;
@@ -507,7 +507,7 @@ function Ht(l) {
507
507
  function Ut(l) {
508
508
  switch (this._removePointer(l), this._pointers.length) {
509
509
  case 0:
510
- this.domElement.releasePointerCapture(l.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(He), this.state = E.NONE;
510
+ this.domElement.releasePointerCapture(l.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.domElement.removeEventListener("pointerup", this._onPointerUp), this.dispatchEvent(Ue), this.state = E.NONE;
511
511
  break;
512
512
  case 1:
513
513
  const e = this._pointers[0], t = this._pointerPositions[e];
@@ -531,11 +531,11 @@ function Gt(l) {
531
531
  e = -1;
532
532
  }
533
533
  switch (e) {
534
- case U.DOLLY:
534
+ case G.DOLLY:
535
535
  if (this.enableZoom === !1) return;
536
536
  this._handleMouseDownDolly(l), this.state = E.DOLLY;
537
537
  break;
538
- case U.ROTATE:
538
+ case G.ROTATE:
539
539
  if (l.ctrlKey || l.metaKey || l.shiftKey) {
540
540
  if (this.enablePan === !1) return;
541
541
  this._handleMouseDownPan(l), this.state = E.PAN;
@@ -544,7 +544,7 @@ function Gt(l) {
544
544
  this._handleMouseDownRotate(l), this.state = E.ROTATE;
545
545
  }
546
546
  break;
547
- case U.PAN:
547
+ case G.PAN:
548
548
  if (l.ctrlKey || l.metaKey || l.shiftKey) {
549
549
  if (this.enableRotate === !1) return;
550
550
  this._handleMouseDownRotate(l), this.state = E.ROTATE;
@@ -556,7 +556,7 @@ function Gt(l) {
556
556
  default:
557
557
  this.state = E.NONE;
558
558
  }
559
- this.state !== E.NONE && this.dispatchEvent(pe);
559
+ this.state !== E.NONE && this.dispatchEvent(fe);
560
560
  }
561
561
  function Kt(l) {
562
562
  switch (this.state) {
@@ -575,7 +575,7 @@ function Kt(l) {
575
575
  }
576
576
  }
577
577
  function Bt(l) {
578
- this.enabled === !1 || this.enableZoom === !1 || this.state !== E.NONE || (l.preventDefault(), this.dispatchEvent(pe), this._handleMouseWheel(this._customWheelEvent(l)), this.dispatchEvent(He));
578
+ this.enabled === !1 || this.enableZoom === !1 || this.state !== E.NONE || (l.preventDefault(), this.dispatchEvent(fe), this._handleMouseWheel(this._customWheelEvent(l)), this.dispatchEvent(Ue));
579
579
  }
580
580
  function Vt(l) {
581
581
  this.enabled !== !1 && this._handleKeyDown(l);
@@ -584,11 +584,11 @@ function zt(l) {
584
584
  switch (this._trackPointer(l), this._pointers.length) {
585
585
  case 1:
586
586
  switch (this.touches.ONE) {
587
- case H.ROTATE:
587
+ case U.ROTATE:
588
588
  if (this.enableRotate === !1) return;
589
589
  this._handleTouchStartRotate(l), this.state = E.TOUCH_ROTATE;
590
590
  break;
591
- case H.PAN:
591
+ case U.PAN:
592
592
  if (this.enablePan === !1) return;
593
593
  this._handleTouchStartPan(l), this.state = E.TOUCH_PAN;
594
594
  break;
@@ -598,11 +598,11 @@ function zt(l) {
598
598
  break;
599
599
  case 2:
600
600
  switch (this.touches.TWO) {
601
- case H.DOLLY_PAN:
601
+ case U.DOLLY_PAN:
602
602
  if (this.enableZoom === !1 && this.enablePan === !1) return;
603
603
  this._handleTouchStartDollyPan(l), this.state = E.TOUCH_DOLLY_PAN;
604
604
  break;
605
- case H.DOLLY_ROTATE:
605
+ case U.DOLLY_ROTATE:
606
606
  if (this.enableZoom === !1 && this.enableRotate === !1) return;
607
607
  this._handleTouchStartDollyRotate(l), this.state = E.TOUCH_DOLLY_ROTATE;
608
608
  break;
@@ -613,7 +613,7 @@ function zt(l) {
613
613
  default:
614
614
  this.state = E.NONE;
615
615
  }
616
- this.state !== E.NONE && this.dispatchEvent(pe);
616
+ this.state !== E.NONE && this.dispatchEvent(fe);
617
617
  }
618
618
  function Xt(l) {
619
619
  switch (this._trackPointer(l), this.state) {
@@ -677,7 +677,7 @@ const qt = (l, e) => {
677
677
  },
678
678
  emits: ["init", "animate"],
679
679
  setup(l, { emit: e }) {
680
- const t = e, n = l, s = "dom" + Ke().uid, i = Be(s);
680
+ const t = e, n = l, s = "dom" + Be().uid, i = Ve(s);
681
681
  let o = null, r = null, a = null, c = null, h = null;
682
682
  const u = () => {
683
683
  t("animate", {
@@ -691,7 +691,7 @@ const qt = (l, e) => {
691
691
  }, p = () => {
692
692
  o != null && (cancelAnimationFrame(o), o = null);
693
693
  };
694
- Ve(() => n.animation, (g) => {
694
+ F(() => n.animation, (g) => {
695
695
  g == !0 ? d() : p();
696
696
  });
697
697
  const m = () => {
@@ -725,9 +725,9 @@ const qt = (l, e) => {
725
725
  controls: h
726
726
  });
727
727
  };
728
- return Q(async () => {
729
- if (!xe.isWebGL2Available()) {
730
- const f = xe.getWebGLErrorMessage();
728
+ return $(async () => {
729
+ if (!Ee.isWebGL2Available()) {
730
+ const f = Ee.getWebGLErrorMessage();
731
731
  console.error(f);
732
732
  return;
733
733
  }
@@ -736,7 +736,7 @@ const qt = (l, e) => {
736
736
  c.setPixelRatio(window.devicePixelRatio), c.setSize(_, x), a.aspect = _ / x, a.updateProjectionMatrix();
737
737
  };
738
738
  window.addEventListener("resize", g), m();
739
- }), (g, f) => (de(), Le("div", {
739
+ }), (g, f) => (pe(), Pe("div", {
740
740
  ref: s,
741
741
  class: "box"
742
742
  }));
@@ -760,11 +760,11 @@ const qt = (l, e) => {
760
760
  },
761
761
  emits: ["loading", "loaded"],
762
762
  setup(l, { emit: e }) {
763
- const t = Pe("axios"), n = e, s = l, i = async (r) => {
763
+ const t = Ne("axios"), n = e, s = l, i = async (r) => {
764
764
  if (!r)
765
765
  return;
766
766
  n("loading", s.name, s.command);
767
- const c = await new Fe().loadExpression(t, r);
767
+ const c = await new He().loadExpression(t, r);
768
768
  let h = !1;
769
769
  c && (h = !0), n("loaded", s.name, s.command, h, c);
770
770
  }, o = (r) => {
@@ -772,8 +772,12 @@ const qt = (l, e) => {
772
772
  let a = !1;
773
773
  r && (a = !0), n("loaded", s.name, s.command, a, r);
774
774
  };
775
- return Q(async () => {
775
+ return $(async () => {
776
776
  s.data != null ? o(s.data) : i(s.url);
777
+ }), F(() => s.data, () => {
778
+ s.data != null && o(s.data);
779
+ }), F(() => s.url, () => {
780
+ s.url && i(s.url);
777
781
  }), (r, a) => null;
778
782
  }
779
783
  }, Jt = {
@@ -795,11 +799,11 @@ const qt = (l, e) => {
795
799
  },
796
800
  emits: ["loading", "loaded"],
797
801
  setup(l, { emit: e }) {
798
- const t = Pe("axios"), n = e, s = l, i = async (r) => {
802
+ const t = Ne("axios"), n = e, s = l, i = async (r) => {
799
803
  if (!r)
800
804
  return;
801
805
  n("loading", s.name, s.command);
802
- const c = await new Fe().loadPose(t, r);
806
+ const c = await new He().loadPose(t, r);
803
807
  let h = !1;
804
808
  c && (h = !0), n("loaded", s.name, s.command, h, c);
805
809
  }, o = (r) => {
@@ -807,15 +811,19 @@ const qt = (l, e) => {
807
811
  let a = !1;
808
812
  r && (a = !0), n("loaded", s.name, s.command, a, r);
809
813
  };
810
- return Q(async () => {
814
+ return $(async () => {
811
815
  s.data != null ? o(s.data) : i(s.url);
816
+ }), F(() => s.data, () => {
817
+ s.data != null && o(s.data);
818
+ }), F(() => s.url, () => {
819
+ s.url && i(s.url);
812
820
  }), (r, a) => null;
813
821
  }
814
822
  };
815
- function Re(l, e) {
823
+ function Me(l, e) {
816
824
  if (e === qe)
817
825
  return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), l;
818
- if (e === ae || e === Oe) {
826
+ if (e === ce || e === De) {
819
827
  let t = l.getIndex();
820
828
  if (t === null) {
821
829
  const o = [], r = l.getAttribute("position");
@@ -827,7 +835,7 @@ function Re(l, e) {
827
835
  return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."), l;
828
836
  }
829
837
  const n = t.count - 2, s = [];
830
- if (e === ae)
838
+ if (e === ce)
831
839
  for (let o = 1; o <= n; o++)
832
840
  s.push(t.getX(0)), s.push(t.getX(o)), s.push(t.getX(o + 1));
833
841
  else
@@ -897,14 +905,14 @@ class es extends Qe {
897
905
  if (this.resourcePath !== "")
898
906
  o = this.resourcePath;
899
907
  else if (this.path !== "") {
900
- const c = z.extractUrlBase(e);
901
- o = z.resolveURL(c, this.path);
908
+ const c = X.extractUrlBase(e);
909
+ o = X.resolveURL(c, this.path);
902
910
  } else
903
- o = z.extractUrlBase(e);
911
+ o = X.extractUrlBase(e);
904
912
  this.manager.itemStart(e);
905
913
  const r = function(c) {
906
914
  s ? s(c) : console.error(c), i.manager.itemError(e), i.manager.itemEnd(e);
907
- }, a = new De(this.manager);
915
+ }, a = new Ce(this.manager);
908
916
  a.setPath(this.path), a.setResponseType("arraybuffer"), a.setRequestHeader(this.requestHeader), a.setWithCredentials(this.withCredentials), a.load(e, function(c) {
909
917
  try {
910
918
  i.parse(c, o, function(h) {
@@ -979,7 +987,7 @@ class es extends Qe {
979
987
  if (typeof e == "string")
980
988
  i = JSON.parse(e);
981
989
  else if (e instanceof ArrayBuffer)
982
- if (a.decode(new Uint8Array(e, 0, 4)) === Ue) {
990
+ if (a.decode(new Uint8Array(e, 0, 4)) === Ge) {
983
991
  try {
984
992
  o[y.KHR_BINARY_GLTF] = new xs(e);
985
993
  } catch (u) {
@@ -1103,7 +1111,7 @@ class ss {
1103
1111
  if (s) return s;
1104
1112
  const i = t.json, a = ((i.extensions && i.extensions[this.name] || {}).lights || [])[e];
1105
1113
  let c;
1106
- const h = new F(16777215);
1114
+ const h = new H(16777215);
1107
1115
  a.color !== void 0 && h.setRGB(a.color[0], a.color[1], a.color[2], C);
1108
1116
  const u = a.range !== void 0 ? a.range : 0;
1109
1117
  switch (a.type) {
@@ -1137,18 +1145,18 @@ class ns {
1137
1145
  this.name = y.KHR_MATERIALS_UNLIT;
1138
1146
  }
1139
1147
  getMaterialType() {
1140
- return V;
1148
+ return z;
1141
1149
  }
1142
1150
  extendParams(e, t, n) {
1143
1151
  const s = [];
1144
- e.color = new F(1, 1, 1), e.opacity = 1;
1152
+ e.color = new H(1, 1, 1), e.opacity = 1;
1145
1153
  const i = t.pbrMetallicRoughness;
1146
1154
  if (i) {
1147
1155
  if (Array.isArray(i.baseColorFactor)) {
1148
1156
  const o = i.baseColorFactor;
1149
1157
  e.color.setRGB(o[0], o[1], o[2], C), e.opacity = o[3];
1150
1158
  }
1151
- i.baseColorTexture !== void 0 && s.push(n.assignTexture(e, "map", i.baseColorTexture, X));
1159
+ i.baseColorTexture !== void 0 && s.push(n.assignTexture(e, "map", i.baseColorTexture, Y));
1152
1160
  }
1153
1161
  return Promise.all(s);
1154
1162
  }
@@ -1230,13 +1238,13 @@ class cs {
1230
1238
  if (!s.extensions || !s.extensions[this.name])
1231
1239
  return Promise.resolve();
1232
1240
  const i = [];
1233
- t.sheenColor = new F(0, 0, 0), t.sheenRoughness = 0, t.sheen = 1;
1241
+ t.sheenColor = new H(0, 0, 0), t.sheenRoughness = 0, t.sheen = 1;
1234
1242
  const o = s.extensions[this.name];
1235
1243
  if (o.sheenColorFactor !== void 0) {
1236
1244
  const r = o.sheenColorFactor;
1237
1245
  t.sheenColor.setRGB(r[0], r[1], r[2], C);
1238
1246
  }
1239
- return o.sheenRoughnessFactor !== void 0 && (t.sheenRoughness = o.sheenRoughnessFactor), o.sheenColorTexture !== void 0 && i.push(n.assignTexture(t, "sheenColorMap", o.sheenColorTexture, X)), o.sheenRoughnessTexture !== void 0 && i.push(n.assignTexture(t, "sheenRoughnessMap", o.sheenRoughnessTexture)), Promise.all(i);
1247
+ return o.sheenRoughnessFactor !== void 0 && (t.sheenRoughness = o.sheenRoughnessFactor), o.sheenColorTexture !== void 0 && i.push(n.assignTexture(t, "sheenColorMap", o.sheenColorTexture, Y)), o.sheenRoughnessTexture !== void 0 && i.push(n.assignTexture(t, "sheenRoughnessMap", o.sheenRoughnessTexture)), Promise.all(i);
1240
1248
  }
1241
1249
  }
1242
1250
  class ls {
@@ -1270,7 +1278,7 @@ class hs {
1270
1278
  const i = [], o = s.extensions[this.name];
1271
1279
  t.thickness = o.thicknessFactor !== void 0 ? o.thicknessFactor : 0, o.thicknessTexture !== void 0 && i.push(n.assignTexture(t, "thicknessMap", o.thicknessTexture)), t.attenuationDistance = o.attenuationDistance || 1 / 0;
1272
1280
  const r = o.attenuationColor || [1, 1, 1];
1273
- return t.attenuationColor = new F().setRGB(r[0], r[1], r[2], C), Promise.all(i);
1281
+ return t.attenuationColor = new H().setRGB(r[0], r[1], r[2], C), Promise.all(i);
1274
1282
  }
1275
1283
  }
1276
1284
  class us {
@@ -1304,7 +1312,7 @@ class ds {
1304
1312
  const i = [], o = s.extensions[this.name];
1305
1313
  t.specularIntensity = o.specularFactor !== void 0 ? o.specularFactor : 1, o.specularTexture !== void 0 && i.push(n.assignTexture(t, "specularIntensityMap", o.specularTexture));
1306
1314
  const r = o.specularColorFactor || [1, 1, 1];
1307
- return t.specularColor = new F().setRGB(r[0], r[1], r[2], C), o.specularColorTexture !== void 0 && i.push(n.assignTexture(t, "specularColorMap", o.specularColorTexture, X)), Promise.all(i);
1315
+ return t.specularColor = new H().setRGB(r[0], r[1], r[2], C), o.specularColorTexture !== void 0 && i.push(n.assignTexture(t, "specularColorMap", o.specularColorTexture, Y)), Promise.all(i);
1308
1316
  }
1309
1317
  }
1310
1318
  class ps {
@@ -1434,7 +1442,7 @@ class ys {
1434
1442
  return r.length < 1 ? null : (r.push(this.parser.createNodeMesh(e)), Promise.all(r).then((c) => {
1435
1443
  const h = c.pop(), u = h.isGroup ? h.children : [h], d = c[0].count, p = [];
1436
1444
  for (const m of u) {
1437
- const g = new q(), f = new M(), _ = new Z(), x = new M(1, 1, 1), b = new tt(m.geometry, m.material, d);
1445
+ const g = new Q(), f = new M(), _ = new q(), x = new M(1, 1, 1), b = new tt(m.geometry, m.material, d);
1438
1446
  for (let T = 0; T < d; T++)
1439
1447
  a.TRANSLATION && f.fromBufferAttribute(a.TRANSLATION, T), a.ROTATION && _.fromBufferAttribute(a.ROTATION, T), a.SCALE && x.fromBufferAttribute(a.SCALE, T), b.setMatrixAt(T, g.compose(f, _, x));
1440
1448
  for (const T in a)
@@ -1442,36 +1450,36 @@ class ys {
1442
1450
  const A = a[T];
1443
1451
  b.instanceColor = new st(A.array, A.itemSize, A.normalized);
1444
1452
  } else T !== "TRANSLATION" && T !== "ROTATION" && T !== "SCALE" && m.geometry.setAttribute(T, a[T]);
1445
- Ce.prototype.copy.call(b, m), this.parser.assignFinalMaterial(b), p.push(b);
1453
+ Ie.prototype.copy.call(b, m), this.parser.assignFinalMaterial(b), p.push(b);
1446
1454
  }
1447
1455
  return h.isGroup ? (h.clear(), h.add(...p), h) : p[0];
1448
1456
  }));
1449
1457
  }
1450
1458
  }
1451
- const Ue = "glTF", B = 12, Me = { JSON: 1313821514, BIN: 5130562 };
1459
+ const Ge = "glTF", V = 12, we = { JSON: 1313821514, BIN: 5130562 };
1452
1460
  class xs {
1453
1461
  constructor(e) {
1454
1462
  this.name = y.KHR_BINARY_GLTF, this.content = null, this.body = null;
1455
- const t = new DataView(e, 0, B), n = new TextDecoder();
1463
+ const t = new DataView(e, 0, V), n = new TextDecoder();
1456
1464
  if (this.header = {
1457
1465
  magic: n.decode(new Uint8Array(e.slice(0, 4))),
1458
1466
  version: t.getUint32(4, !0),
1459
1467
  length: t.getUint32(8, !0)
1460
- }, this.header.magic !== Ue)
1468
+ }, this.header.magic !== Ge)
1461
1469
  throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");
1462
1470
  if (this.header.version < 2)
1463
1471
  throw new Error("THREE.GLTFLoader: Legacy binary file detected.");
1464
- const s = this.header.length - B, i = new DataView(e, B);
1472
+ const s = this.header.length - V, i = new DataView(e, V);
1465
1473
  let o = 0;
1466
1474
  for (; o < s; ) {
1467
1475
  const r = i.getUint32(o, !0);
1468
1476
  o += 4;
1469
1477
  const a = i.getUint32(o, !0);
1470
- if (o += 4, a === Me.JSON) {
1471
- const c = new Uint8Array(e, B + o, r);
1478
+ if (o += 4, a === we.JSON) {
1479
+ const c = new Uint8Array(e, V + o, r);
1472
1480
  this.content = n.decode(c);
1473
- } else if (a === Me.BIN) {
1474
- const c = B + o;
1481
+ } else if (a === we.BIN) {
1482
+ const c = V + o;
1475
1483
  this.body = e.slice(c, c + r);
1476
1484
  }
1477
1485
  o += r;
@@ -1489,13 +1497,13 @@ class Es {
1489
1497
  decodePrimitive(e, t) {
1490
1498
  const n = this.json, s = this.dracoLoader, i = e.extensions[this.name].bufferView, o = e.extensions[this.name].attributes, r = {}, a = {}, c = {};
1491
1499
  for (const h in o) {
1492
- const u = he[h] || h.toLowerCase();
1500
+ const u = ue[h] || h.toLowerCase();
1493
1501
  r[u] = o[h];
1494
1502
  }
1495
1503
  for (const h in e.attributes) {
1496
- const u = he[h] || h.toLowerCase();
1504
+ const u = ue[h] || h.toLowerCase();
1497
1505
  if (o[h] !== void 0) {
1498
- const d = n.accessors[e.attributes[h]], p = G[d.componentType];
1506
+ const d = n.accessors[e.attributes[h]], p = K[d.componentType];
1499
1507
  c[u] = p.name, a[u] = d.normalized === !0;
1500
1508
  }
1501
1509
  }
@@ -1525,7 +1533,7 @@ class Rs {
1525
1533
  this.name = y.KHR_MESH_QUANTIZATION;
1526
1534
  }
1527
1535
  }
1528
- class Ge extends Nt {
1536
+ class Ke extends Nt {
1529
1537
  constructor(e, t, n, s) {
1530
1538
  super(e, t, n, s);
1531
1539
  }
@@ -1538,14 +1546,14 @@ class Ge extends Nt {
1538
1546
  interpolate_(e, t, n, s) {
1539
1547
  const i = this.resultBuffer, o = this.sampleValues, r = this.valueSize, a = r * 2, c = r * 3, h = s - t, u = (n - t) / h, d = u * u, p = d * u, m = e * c, g = m - c, f = -2 * p + 3 * d, _ = p - d, x = 1 - f, b = _ - d + u;
1540
1548
  for (let T = 0; T !== r; T++) {
1541
- const A = o[g + T + r], I = o[g + T + a] * h, P = o[m + T + r], K = o[m + T] * h;
1542
- i[T] = x * A + b * I + f * P + _ * K;
1549
+ const A = o[g + T + r], I = o[g + T + a] * h, P = o[m + T + r], B = o[m + T] * h;
1550
+ i[T] = x * A + b * I + f * P + _ * B;
1543
1551
  }
1544
1552
  return i;
1545
1553
  }
1546
1554
  }
1547
- const Ms = new Z();
1548
- class ws extends Ge {
1555
+ const Ms = new q();
1556
+ class ws extends Ke {
1549
1557
  interpolate_(e, t, n, s) {
1550
1558
  const i = super.interpolate_(e, t, n, s);
1551
1559
  return Ms.fromArray(i).normalize().toArray(i), i;
@@ -1559,25 +1567,25 @@ const L = {
1559
1567
  TRIANGLES: 4,
1560
1568
  TRIANGLE_STRIP: 5,
1561
1569
  TRIANGLE_FAN: 6
1562
- }, G = {
1570
+ }, K = {
1563
1571
  5120: Int8Array,
1564
1572
  5121: Uint8Array,
1565
1573
  5122: Int16Array,
1566
1574
  5123: Uint16Array,
1567
1575
  5125: Uint32Array,
1568
1576
  5126: Float32Array
1569
- }, we = {
1570
- 9728: ve,
1571
- 9729: ce,
1577
+ }, Se = {
1578
+ 9728: ke,
1579
+ 9729: le,
1572
1580
  9984: lt,
1573
1581
  9985: ct,
1574
1582
  9986: at,
1575
- 9987: Ie
1576
- }, Se = {
1583
+ 9987: ve
1584
+ }, Ae = {
1577
1585
  33071: ut,
1578
1586
  33648: ht,
1579
- 10497: le
1580
- }, ie = {
1587
+ 10497: he
1588
+ }, oe = {
1581
1589
  SCALAR: 1,
1582
1590
  VEC2: 2,
1583
1591
  VEC3: 3,
@@ -1585,7 +1593,7 @@ const L = {
1585
1593
  MAT2: 4,
1586
1594
  MAT3: 9,
1587
1595
  MAT4: 16
1588
- }, he = {
1596
+ }, ue = {
1589
1597
  POSITION: "position",
1590
1598
  NORMAL: "normal",
1591
1599
  TANGENT: "tangent",
@@ -1605,15 +1613,15 @@ const L = {
1605
1613
  CUBICSPLINE: void 0,
1606
1614
  // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each
1607
1615
  // keyframe track will be initialized with a default interpolation type, then modified.
1608
- LINEAR: je,
1616
+ LINEAR: Fe,
1609
1617
  STEP: Lt
1610
- }, oe = {
1618
+ }, re = {
1611
1619
  OPAQUE: "OPAQUE",
1612
1620
  MASK: "MASK",
1613
1621
  BLEND: "BLEND"
1614
1622
  };
1615
1623
  function As(l) {
1616
- return l.DefaultMaterial === void 0 && (l.DefaultMaterial = new ke({
1624
+ return l.DefaultMaterial === void 0 && (l.DefaultMaterial = new je({
1617
1625
  color: 16777215,
1618
1626
  emissive: 0,
1619
1627
  metalness: 1,
@@ -1679,19 +1687,19 @@ function Ps(l, e) {
1679
1687
  function Ns(l) {
1680
1688
  let e;
1681
1689
  const t = l.extensions && l.extensions[y.KHR_DRACO_MESH_COMPRESSION];
1682
- if (t ? e = "draco:" + t.bufferView + ":" + t.indices + ":" + re(t.attributes) : e = l.indices + ":" + re(l.attributes) + ":" + l.mode, l.targets !== void 0)
1690
+ if (t ? e = "draco:" + t.bufferView + ":" + t.indices + ":" + ae(t.attributes) : e = l.indices + ":" + ae(l.attributes) + ":" + l.mode, l.targets !== void 0)
1683
1691
  for (let n = 0, s = l.targets.length; n < s; n++)
1684
- e += ":" + re(l.targets[n]);
1692
+ e += ":" + ae(l.targets[n]);
1685
1693
  return e;
1686
1694
  }
1687
- function re(l) {
1695
+ function ae(l) {
1688
1696
  let e = "";
1689
1697
  const t = Object.keys(l).sort();
1690
1698
  for (let n = 0, s = t.length; n < s; n++)
1691
1699
  e += t[n] + ":" + l[t[n]] + ";";
1692
1700
  return e;
1693
1701
  }
1694
- function ue(l) {
1702
+ function de(l) {
1695
1703
  switch (l) {
1696
1704
  case Int8Array:
1697
1705
  return 1 / 127;
@@ -1708,7 +1716,7 @@ function ue(l) {
1708
1716
  function Os(l) {
1709
1717
  return l.search(/\.jpe?g($|\?)/i) > 0 || l.search(/^data\:image\/jpeg/) === 0 ? "image/jpeg" : l.search(/\.webp($|\?)/i) > 0 || l.search(/^data\:image\/webp/) === 0 ? "image/webp" : l.search(/\.ktx2($|\?)/i) > 0 || l.search(/^data\:image\/ktx2/) === 0 ? "image/ktx2" : "image/png";
1710
1718
  }
1711
- const Ds = new q();
1719
+ const Ds = new Q();
1712
1720
  class Cs {
1713
1721
  constructor(e = {}, t = {}) {
1714
1722
  this.json = e, this.extensions = {}, this.plugins = {}, this.options = t, this.cache = new ts(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
@@ -1719,7 +1727,7 @@ class Cs {
1719
1727
  const a = r.match(/Version\/(\d+)/);
1720
1728
  s = n && a ? parseInt(a[1], 10) : -1, i = r.indexOf("Firefox") > -1, o = i ? r.match(/Firefox\/([0-9]+)\./)[1] : -1;
1721
1729
  }
1722
- typeof createImageBitmap > "u" || n && s < 17 || i && o < 98 ? this.textureLoader = new nt(this.options.manager) : this.textureLoader = new it(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new De(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
1730
+ typeof createImageBitmap > "u" || n && s < 17 || i && o < 98 ? this.textureLoader = new nt(this.options.manager) : this.textureLoader = new it(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new Ce(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
1723
1731
  }
1724
1732
  setExtensions(e) {
1725
1733
  this.extensions = e;
@@ -1930,7 +1938,7 @@ class Cs {
1930
1938
  return Promise.resolve(this.extensions[y.KHR_BINARY_GLTF].body);
1931
1939
  const s = this.options;
1932
1940
  return new Promise(function(i, o) {
1933
- n.load(z.resolveURL(t.uri, s.path), i, void 0, function() {
1941
+ n.load(X.resolveURL(t.uri, s.path), i, void 0, function() {
1934
1942
  o(new Error('THREE.GLTFLoader: Failed to load buffer "' + t.uri + '".'));
1935
1943
  });
1936
1944
  });
@@ -1959,23 +1967,23 @@ class Cs {
1959
1967
  loadAccessor(e) {
1960
1968
  const t = this, n = this.json, s = this.json.accessors[e];
1961
1969
  if (s.bufferView === void 0 && s.sparse === void 0) {
1962
- const o = ie[s.type], r = G[s.componentType], a = s.normalized === !0, c = new r(s.count * o);
1963
- return Promise.resolve(new ee(c, o, a));
1970
+ const o = oe[s.type], r = K[s.componentType], a = s.normalized === !0, c = new r(s.count * o);
1971
+ return Promise.resolve(new te(c, o, a));
1964
1972
  }
1965
1973
  const i = [];
1966
1974
  return s.bufferView !== void 0 ? i.push(this.getDependency("bufferView", s.bufferView)) : i.push(null), s.sparse !== void 0 && (i.push(this.getDependency("bufferView", s.sparse.indices.bufferView)), i.push(this.getDependency("bufferView", s.sparse.values.bufferView))), Promise.all(i).then(function(o) {
1967
- const r = o[0], a = ie[s.type], c = G[s.componentType], h = c.BYTES_PER_ELEMENT, u = h * a, d = s.byteOffset || 0, p = s.bufferView !== void 0 ? n.bufferViews[s.bufferView].byteStride : void 0, m = s.normalized === !0;
1975
+ const r = o[0], a = oe[s.type], c = K[s.componentType], h = c.BYTES_PER_ELEMENT, u = h * a, d = s.byteOffset || 0, p = s.bufferView !== void 0 ? n.bufferViews[s.bufferView].byteStride : void 0, m = s.normalized === !0;
1968
1976
  let g, f;
1969
1977
  if (p && p !== u) {
1970
1978
  const _ = Math.floor(d / p), x = "InterleavedBuffer:" + s.bufferView + ":" + s.componentType + ":" + _ + ":" + s.count;
1971
1979
  let b = t.cache.get(x);
1972
1980
  b || (g = new c(r, _ * p, s.count * p / h), b = new ot(g, p / h), t.cache.add(x, b)), f = new rt(b, a, d % p / h, m);
1973
1981
  } else
1974
- r === null ? g = new c(s.count * a) : g = new c(r, d, s.count * a), f = new ee(g, a, m);
1982
+ r === null ? g = new c(s.count * a) : g = new c(r, d, s.count * a), f = new te(g, a, m);
1975
1983
  if (s.sparse !== void 0) {
1976
- const _ = ie.SCALAR, x = G[s.sparse.indices.componentType], b = s.sparse.indices.byteOffset || 0, T = s.sparse.values.byteOffset || 0, A = new x(o[1], b, s.sparse.count * _), I = new c(o[2], T, s.sparse.count * a);
1977
- r !== null && (f = new ee(f.array.slice(), f.itemSize, f.normalized)), f.normalized = !1;
1978
- for (let P = 0, K = A.length; P < K; P++) {
1984
+ const _ = oe.SCALAR, x = K[s.sparse.indices.componentType], b = s.sparse.indices.byteOffset || 0, T = s.sparse.values.byteOffset || 0, A = new x(o[1], b, s.sparse.count * _), I = new c(o[2], T, s.sparse.count * a);
1985
+ r !== null && (f = new te(f.array.slice(), f.itemSize, f.normalized)), f.normalized = !1;
1986
+ for (let P = 0, B = A.length; P < B; P++) {
1979
1987
  const v = A[P];
1980
1988
  if (f.setX(v, I[P * a]), a >= 2 && f.setY(v, I[P * a + 1]), a >= 3 && f.setZ(v, I[P * a + 2]), a >= 4 && f.setW(v, I[P * a + 3]), a >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
1981
1989
  }
@@ -2007,7 +2015,7 @@ class Cs {
2007
2015
  const c = this.loadImageSource(t, n).then(function(h) {
2008
2016
  h.flipY = !1, h.name = o.name || r.name || "", h.name === "" && typeof r.uri == "string" && r.uri.startsWith("data:image/") === !1 && (h.name = r.uri);
2009
2017
  const d = (i.samplers || {})[o.sampler] || {};
2010
- return h.magFilter = we[d.magFilter] || ce, h.minFilter = we[d.minFilter] || Ie, h.wrapS = Se[d.wrapS] || le, h.wrapT = Se[d.wrapT] || le, h.generateMipmaps = !h.isCompressedTexture && h.minFilter !== ve && h.minFilter !== ce, s.associations.set(h, { textures: e }), h;
2018
+ return h.magFilter = Se[d.magFilter] || le, h.minFilter = Se[d.minFilter] || ve, h.wrapS = Ae[d.wrapS] || he, h.wrapT = Ae[d.wrapT] || he, h.generateMipmaps = !h.isCompressedTexture && h.minFilter !== ke && h.minFilter !== le, s.associations.set(h, { textures: e }), h;
2011
2019
  }).catch(function() {
2012
2020
  return null;
2013
2021
  });
@@ -2031,9 +2039,9 @@ class Cs {
2031
2039
  return new Promise(function(d, p) {
2032
2040
  let m = d;
2033
2041
  t.isImageBitmapLoader === !0 && (m = function(g) {
2034
- const f = new me(g);
2042
+ const f = new _e(g);
2035
2043
  f.needsUpdate = !0, d(f);
2036
- }), t.load(z.resolveURL(u, i.path), m, void 0, p);
2044
+ }), t.load(X.resolveURL(u, i.path), m, void 0, p);
2037
2045
  });
2038
2046
  }).then(function(u) {
2039
2047
  return c === !0 && r.revokeObjectURL(a), D(u, o), u.userData.mimeType = o.mimeType || Os(o.uri), u;
@@ -2083,11 +2091,11 @@ class Cs {
2083
2091
  if (e.isPoints) {
2084
2092
  const r = "PointsMaterial:" + n.uuid;
2085
2093
  let a = this.cache.get(r);
2086
- a || (a = new dt(), te.prototype.copy.call(a, n), a.color.copy(n.color), a.map = n.map, a.sizeAttenuation = !1, this.cache.add(r, a)), n = a;
2094
+ a || (a = new dt(), se.prototype.copy.call(a, n), a.color.copy(n.color), a.map = n.map, a.sizeAttenuation = !1, this.cache.add(r, a)), n = a;
2087
2095
  } else if (e.isLine) {
2088
2096
  const r = "LineBasicMaterial:" + n.uuid;
2089
2097
  let a = this.cache.get(r);
2090
- a || (a = new pt(), te.prototype.copy.call(a, n), a.color.copy(n.color), a.map = n.map, this.cache.add(r, a)), n = a;
2098
+ a || (a = new pt(), se.prototype.copy.call(a, n), a.color.copy(n.color), a.map = n.map, this.cache.add(r, a)), n = a;
2091
2099
  }
2092
2100
  if (s || i || o) {
2093
2101
  let r = "ClonedMaterial:" + n.uuid + ":";
@@ -2098,7 +2106,7 @@ class Cs {
2098
2106
  e.material = n;
2099
2107
  }
2100
2108
  getMaterialType() {
2101
- return ke;
2109
+ return je;
2102
2110
  }
2103
2111
  /**
2104
2112
  * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials
@@ -2116,27 +2124,27 @@ class Cs {
2116
2124
  o = u.getMaterialType(), c.push(u.extendParams(r, i, t));
2117
2125
  } else {
2118
2126
  const u = i.pbrMetallicRoughness || {};
2119
- if (r.color = new F(1, 1, 1), r.opacity = 1, Array.isArray(u.baseColorFactor)) {
2127
+ if (r.color = new H(1, 1, 1), r.opacity = 1, Array.isArray(u.baseColorFactor)) {
2120
2128
  const d = u.baseColorFactor;
2121
2129
  r.color.setRGB(d[0], d[1], d[2], C), r.opacity = d[3];
2122
2130
  }
2123
- u.baseColorTexture !== void 0 && c.push(t.assignTexture(r, "map", u.baseColorTexture, X)), r.metalness = u.metallicFactor !== void 0 ? u.metallicFactor : 1, r.roughness = u.roughnessFactor !== void 0 ? u.roughnessFactor : 1, u.metallicRoughnessTexture !== void 0 && (c.push(t.assignTexture(r, "metalnessMap", u.metallicRoughnessTexture)), c.push(t.assignTexture(r, "roughnessMap", u.metallicRoughnessTexture))), o = this._invokeOne(function(d) {
2131
+ u.baseColorTexture !== void 0 && c.push(t.assignTexture(r, "map", u.baseColorTexture, Y)), r.metalness = u.metallicFactor !== void 0 ? u.metallicFactor : 1, r.roughness = u.roughnessFactor !== void 0 ? u.roughnessFactor : 1, u.metallicRoughnessTexture !== void 0 && (c.push(t.assignTexture(r, "metalnessMap", u.metallicRoughnessTexture)), c.push(t.assignTexture(r, "roughnessMap", u.metallicRoughnessTexture))), o = this._invokeOne(function(d) {
2124
2132
  return d.getMaterialType && d.getMaterialType(e);
2125
2133
  }), c.push(Promise.all(this._invokeAll(function(d) {
2126
2134
  return d.extendMaterialParams && d.extendMaterialParams(e, r);
2127
2135
  })));
2128
2136
  }
2129
2137
  i.doubleSided === !0 && (r.side = ft);
2130
- const h = i.alphaMode || oe.OPAQUE;
2131
- if (h === oe.BLEND ? (r.transparent = !0, r.depthWrite = !1) : (r.transparent = !1, h === oe.MASK && (r.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && o !== V && (c.push(t.assignTexture(r, "normalMap", i.normalTexture)), r.normalScale = new S(1, 1), i.normalTexture.scale !== void 0)) {
2138
+ const h = i.alphaMode || re.OPAQUE;
2139
+ if (h === re.BLEND ? (r.transparent = !0, r.depthWrite = !1) : (r.transparent = !1, h === re.MASK && (r.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && o !== z && (c.push(t.assignTexture(r, "normalMap", i.normalTexture)), r.normalScale = new S(1, 1), i.normalTexture.scale !== void 0)) {
2132
2140
  const u = i.normalTexture.scale;
2133
2141
  r.normalScale.set(u, u);
2134
2142
  }
2135
- if (i.occlusionTexture !== void 0 && o !== V && (c.push(t.assignTexture(r, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (r.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && o !== V) {
2143
+ if (i.occlusionTexture !== void 0 && o !== z && (c.push(t.assignTexture(r, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (r.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && o !== z) {
2136
2144
  const u = i.emissiveFactor;
2137
- r.emissive = new F().setRGB(u[0], u[1], u[2], C);
2145
+ r.emissive = new H().setRGB(u[0], u[1], u[2], C);
2138
2146
  }
2139
- return i.emissiveTexture !== void 0 && o !== V && c.push(t.assignTexture(r, "emissiveMap", i.emissiveTexture, X)), Promise.all(c).then(function() {
2147
+ return i.emissiveTexture !== void 0 && o !== z && c.push(t.assignTexture(r, "emissiveMap", i.emissiveTexture, Y)), Promise.all(c).then(function() {
2140
2148
  const u = new o(r);
2141
2149
  return i.name && (u.name = i.name), D(u, i), t.associations.set(u, { materials: e }), i.extensions && j(s, u, i), u;
2142
2150
  });
@@ -2165,7 +2173,7 @@ class Cs {
2165
2173
  const t = this, n = this.extensions, s = this.primitiveCache;
2166
2174
  function i(r) {
2167
2175
  return n[y.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(r, t).then(function(a) {
2168
- return Ae(a, r, t);
2176
+ return Le(a, r, t);
2169
2177
  });
2170
2178
  }
2171
2179
  const o = [];
@@ -2175,7 +2183,7 @@ class Cs {
2175
2183
  o.push(u.promise);
2176
2184
  else {
2177
2185
  let d;
2178
- c.extensions && c.extensions[y.KHR_DRACO_MESH_COMPRESSION] ? d = i(c) : d = Ae(new _t(), c, t), s[h] = { primitive: c, promise: d }, o.push(d);
2186
+ c.extensions && c.extensions[y.KHR_DRACO_MESH_COMPRESSION] ? d = i(c) : d = Le(new _t(), c, t), s[h] = { primitive: c, promise: d }, o.push(d);
2179
2187
  }
2180
2188
  }
2181
2189
  return Promise.all(o);
@@ -2200,7 +2208,7 @@ class Cs {
2200
2208
  let _;
2201
2209
  const x = c[p];
2202
2210
  if (f.mode === L.TRIANGLES || f.mode === L.TRIANGLE_STRIP || f.mode === L.TRIANGLE_FAN || f.mode === void 0)
2203
- _ = i.isSkinnedMesh === !0 ? new gt(g, x) : new Tt(g, x), _.isSkinnedMesh === !0 && _.normalizeSkinWeights(), f.mode === L.TRIANGLE_STRIP ? _.geometry = Re(_.geometry, Oe) : f.mode === L.TRIANGLE_FAN && (_.geometry = Re(_.geometry, ae));
2211
+ _ = i.isSkinnedMesh === !0 ? new gt(g, x) : new Tt(g, x), _.isSkinnedMesh === !0 && _.normalizeSkinWeights(), f.mode === L.TRIANGLE_STRIP ? _.geometry = Me(_.geometry, De) : f.mode === L.TRIANGLE_FAN && (_.geometry = Me(_.geometry, ce));
2204
2212
  else if (f.mode === L.LINES)
2205
2213
  _ = new yt(g, x);
2206
2214
  else if (f.mode === L.LINE_STRIP)
@@ -2220,7 +2228,7 @@ class Cs {
2220
2228
  });
2221
2229
  if (u.length === 1)
2222
2230
  return i.extensions && j(s, u[0], i), u[0];
2223
- const d = new se();
2231
+ const d = new ne();
2224
2232
  i.extensions && j(s, d, i), t.associations.set(d, { meshes: e });
2225
2233
  for (let p = 0, m = u.length; p < m; p++)
2226
2234
  d.add(u[p]);
@@ -2241,7 +2249,7 @@ class Cs {
2241
2249
  console.warn("THREE.GLTFLoader: Missing camera parameters.");
2242
2250
  return;
2243
2251
  }
2244
- return n.type === "perspective" ? t = new Rt(Ne.radToDeg(s.yfov), s.aspectRatio || 1, s.znear || 1, s.zfar || 2e6) : n.type === "orthographic" && (t = new Mt(-s.xmag, s.xmag, s.ymag, -s.ymag, s.znear, s.zfar)), n.name && (t.name = this.createUniqueName(n.name)), D(t, n), Promise.resolve(t);
2252
+ return n.type === "perspective" ? t = new Rt(Oe.radToDeg(s.yfov), s.aspectRatio || 1, s.znear || 1, s.zfar || 2e6) : n.type === "orthographic" && (t = new Mt(-s.xmag, s.xmag, s.ymag, -s.ymag, s.znear, s.zfar)), n.name && (t.name = this.createUniqueName(n.name)), D(t, n), Promise.resolve(t);
2245
2253
  }
2246
2254
  /**
2247
2255
  * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins
@@ -2260,7 +2268,7 @@ class Cs {
2260
2268
  const u = o[c];
2261
2269
  if (u) {
2262
2270
  r.push(u);
2263
- const d = new q();
2271
+ const d = new Q();
2264
2272
  i !== null && d.fromArray(i.array, c * 16), a.push(d);
2265
2273
  } else
2266
2274
  console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', t.joints[c]);
@@ -2290,13 +2298,13 @@ class Cs {
2290
2298
  ]).then(function(u) {
2291
2299
  const d = u[0], p = u[1], m = u[2], g = u[3], f = u[4], _ = [];
2292
2300
  for (let x = 0, b = d.length; x < b; x++) {
2293
- const T = d[x], A = p[x], I = m[x], P = g[x], K = f[x];
2301
+ const T = d[x], A = p[x], I = m[x], P = g[x], B = f[x];
2294
2302
  if (T === void 0) continue;
2295
2303
  T.updateMatrix && T.updateMatrix();
2296
- const v = n._createAnimationTracks(T, A, I, P, K);
2304
+ const v = n._createAnimationTracks(T, A, I, P, B);
2297
2305
  if (v)
2298
- for (let $ = 0; $ < v.length; $++)
2299
- _.push(v[$]);
2306
+ for (let J = 0; J < v.length; J++)
2307
+ _.push(v[J]);
2300
2308
  }
2301
2309
  return new St(i, void 0, _);
2302
2310
  });
@@ -2355,11 +2363,11 @@ class Cs {
2355
2363
  r.push(c);
2356
2364
  }), this.nodeCache[e] = Promise.all(r).then(function(c) {
2357
2365
  let h;
2358
- if (i.isBone === !0 ? h = new At() : c.length > 1 ? h = new se() : c.length === 1 ? h = c[0] : h = new Ce(), h !== c[0])
2366
+ if (i.isBone === !0 ? h = new At() : c.length > 1 ? h = new ne() : c.length === 1 ? h = c[0] : h = new Ie(), h !== c[0])
2359
2367
  for (let u = 0, d = c.length; u < d; u++)
2360
2368
  h.add(c[u]);
2361
2369
  if (i.name && (h.userData.name = i.name, h.name = o), D(h, i), i.extensions && j(n, h, i), i.matrix !== void 0) {
2362
- const u = new q();
2370
+ const u = new Q();
2363
2371
  u.fromArray(i.matrix), h.applyMatrix4(u);
2364
2372
  } else
2365
2373
  i.translation !== void 0 && h.position.fromArray(i.translation), i.rotation !== void 0 && h.quaternion.fromArray(i.rotation), i.scale !== void 0 && h.scale.fromArray(i.scale);
@@ -2380,7 +2388,7 @@ class Cs {
2380
2388
  * @return {Promise<Group>}
2381
2389
  */
2382
2390
  loadScene(e) {
2383
- const t = this.extensions, n = this.json.scenes[e], s = this, i = new se();
2391
+ const t = this.extensions, n = this.json.scenes[e], s = this, i = new ne();
2384
2392
  n.name && (i.name = s.createUniqueName(n.name)), D(i, n), n.extensions && j(t, i, n);
2385
2393
  const o = n.nodes || [], r = [];
2386
2394
  for (let a = 0, c = o.length; a < c; a++)
@@ -2391,7 +2399,7 @@ class Cs {
2391
2399
  const c = (h) => {
2392
2400
  const u = /* @__PURE__ */ new Map();
2393
2401
  for (const [d, p] of s.associations)
2394
- (d instanceof te || d instanceof me) && u.set(d, p);
2402
+ (d instanceof se || d instanceof _e) && u.set(d, p);
2395
2403
  return h.traverse((d) => {
2396
2404
  const p = s.associations.get(d);
2397
2405
  p != null && u.set(d, p);
@@ -2408,29 +2416,29 @@ class Cs {
2408
2416
  let c;
2409
2417
  switch (k[i.path]) {
2410
2418
  case k.weights:
2411
- c = ge;
2419
+ c = Te;
2412
2420
  break;
2413
2421
  case k.rotation:
2414
- c = Te;
2422
+ c = ye;
2415
2423
  break;
2416
2424
  case k.translation:
2417
2425
  case k.scale:
2418
- c = _e;
2426
+ c = ge;
2419
2427
  break;
2420
2428
  default:
2421
2429
  switch (n.itemSize) {
2422
2430
  case 1:
2423
- c = ge;
2431
+ c = Te;
2424
2432
  break;
2425
2433
  case 2:
2426
2434
  case 3:
2427
2435
  default:
2428
- c = _e;
2436
+ c = ge;
2429
2437
  break;
2430
2438
  }
2431
2439
  break;
2432
2440
  }
2433
- const h = s.interpolation !== void 0 ? Ss[s.interpolation] : je, u = this._getArrayFromAccessor(n);
2441
+ const h = s.interpolation !== void 0 ? Ss[s.interpolation] : Fe, u = this._getArrayFromAccessor(n);
2434
2442
  for (let d = 0, p = a.length; d < p; d++) {
2435
2443
  const m = new c(
2436
2444
  a[d] + "." + k[i.path],
@@ -2445,7 +2453,7 @@ class Cs {
2445
2453
  _getArrayFromAccessor(e) {
2446
2454
  let t = e.array;
2447
2455
  if (e.normalized) {
2448
- const n = ue(t.constructor), s = new Float32Array(t.length);
2456
+ const n = de(t.constructor), s = new Float32Array(t.length);
2449
2457
  for (let i = 0, o = t.length; i < o; i++)
2450
2458
  s[i] = t[i] * n;
2451
2459
  t = s;
@@ -2454,7 +2462,7 @@ class Cs {
2454
2462
  }
2455
2463
  _createCubicSplineTrackInterpolant(e) {
2456
2464
  e.createInterpolant = function(n) {
2457
- const s = this instanceof Te ? ws : Ge;
2465
+ const s = this instanceof ye ? ws : Ke;
2458
2466
  return new s(this.times, this.values, this.getValueSize() / 3, n);
2459
2467
  }, e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
2460
2468
  }
@@ -2468,7 +2476,7 @@ function Is(l, e, t) {
2468
2476
  new M(a[0], a[1], a[2]),
2469
2477
  new M(c[0], c[1], c[2])
2470
2478
  ), r.normalized) {
2471
- const h = ue(G[r.componentType]);
2479
+ const h = de(K[r.componentType]);
2472
2480
  s.min.multiplyScalar(h), s.max.multiplyScalar(h);
2473
2481
  }
2474
2482
  } else {
@@ -2486,7 +2494,7 @@ function Is(l, e, t) {
2486
2494
  const d = t.json.accessors[u.POSITION], p = d.min, m = d.max;
2487
2495
  if (p !== void 0 && m !== void 0) {
2488
2496
  if (a.setX(Math.max(Math.abs(p[0]), Math.abs(m[0]))), a.setY(Math.max(Math.abs(p[1]), Math.abs(m[1]))), a.setZ(Math.max(Math.abs(p[2]), Math.abs(m[2]))), d.normalized) {
2489
- const g = ue(G[d.componentType]);
2497
+ const g = de(K[d.componentType]);
2490
2498
  a.multiplyScalar(g);
2491
2499
  }
2492
2500
  r.max(a);
@@ -2500,7 +2508,7 @@ function Is(l, e, t) {
2500
2508
  const o = new Dt();
2501
2509
  s.getCenter(o.center), o.radius = s.min.distanceTo(s.max) / 2, l.boundingSphere = o;
2502
2510
  }
2503
- function Ae(l, e, t) {
2511
+ function Le(l, e, t) {
2504
2512
  const n = e.attributes, s = [];
2505
2513
  function i(o, r) {
2506
2514
  return t.getDependency("accessor", o).then(function(a) {
@@ -2508,7 +2516,7 @@ function Ae(l, e, t) {
2508
2516
  });
2509
2517
  }
2510
2518
  for (const o in n) {
2511
- const r = he[o] || o.toLowerCase();
2519
+ const r = ue[o] || o.toLowerCase();
2512
2520
  r in l.attributes || s.push(i(n[o], r));
2513
2521
  }
2514
2522
  if (e.indices !== void 0 && !l.index) {
@@ -2517,7 +2525,7 @@ function Ae(l, e, t) {
2517
2525
  });
2518
2526
  s.push(o);
2519
2527
  }
2520
- return ye.workingColorSpace !== C && "COLOR_0" in n && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ye.workingColorSpace}" not supported.`), D(l, e), Is(l, e, t), Promise.all(s).then(function() {
2528
+ return xe.workingColorSpace !== C && "COLOR_0" in n && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${xe.workingColorSpace}" not supported.`), D(l, e), Is(l, e, t), Promise.all(s).then(function() {
2521
2529
  return e.targets !== void 0 ? Ls(l, e.targets, t) : l;
2522
2530
  });
2523
2531
  }
@@ -2558,8 +2566,12 @@ const vs = {
2558
2566
  let a = !1;
2559
2567
  r && (a = !0), t("loaded", n.name, n.command, a, r);
2560
2568
  };
2561
- return Q(async () => {
2569
+ return $(async () => {
2562
2570
  n.data != null ? o(n.data) : i(n.url);
2571
+ }), F(() => n.data, () => {
2572
+ n.data != null && o(n.data);
2573
+ }), F(() => n.url, () => {
2574
+ n.url && i(n.url);
2563
2575
  }), (r, a) => null;
2564
2576
  }
2565
2577
  }, ks = {
@@ -2601,7 +2613,7 @@ const vs = {
2601
2613
  },
2602
2614
  emits: ["loading", "loaded"],
2603
2615
  setup(l, { emit: e }) {
2604
- const t = e, n = l, s = {}, i = {}, o = W(null), r = W(null), a = W(null), c = (u, d) => {
2616
+ const t = e, n = l, s = {}, i = {}, o = Z(null), r = Z(null), a = Z(null), c = (u, d) => {
2605
2617
  const p = Object.keys(s).length;
2606
2618
  s[u] = d;
2607
2619
  const m = Object.keys(s).length;
@@ -2622,8 +2634,8 @@ const vs = {
2622
2634
  delete i[b];
2623
2635
  }
2624
2636
  };
2625
- return (u, d) => (de(), Le(ze, null, [
2626
- J($t, {
2637
+ return (u, d) => (pe(), Pe(ze, null, [
2638
+ ee($t, {
2627
2639
  command: "load_expression",
2628
2640
  name: n.expression_name,
2629
2641
  url: n.expression_url,
@@ -2631,15 +2643,15 @@ const vs = {
2631
2643
  onLoading: c,
2632
2644
  onLoaded: h
2633
2645
  }, null, 8, ["name", "url", "data"]),
2634
- J(Jt, {
2646
+ ee(Jt, {
2635
2647
  command: "load_pose",
2636
2648
  name: n.pose_name,
2637
2649
  url: n.pose_url,
2638
- data: n.expression_data,
2650
+ data: n.pose_data,
2639
2651
  onLoading: c,
2640
2652
  onLoaded: h
2641
2653
  }, null, 8, ["name", "url", "data"]),
2642
- J(vs, {
2654
+ ee(vs, {
2643
2655
  command: "load_vrm",
2644
2656
  name: n.vrm_name,
2645
2657
  url: n.vrm_url,
@@ -2695,14 +2707,14 @@ const vs = {
2695
2707
  },
2696
2708
  emits: ["loading", "loaded"],
2697
2709
  setup(l, { emit: e }) {
2698
- const t = e, n = W(null);
2710
+ const t = e, n = Z(null);
2699
2711
  n.value = new vt();
2700
2712
  const s = (o) => {
2701
2713
  t("loading", o);
2702
2714
  }, i = (o, r) => {
2703
2715
  "vrm" in r && n.value.setModel(r.vrm), "pose" in r && (n.value.setPose(r.pose), n.value.updatePose()), "expression" in r && (n.value.importExpression(r.expression), n.value.updateExpression()), t("loaded", o, n.value);
2704
2716
  };
2705
- return (o, r) => (de(), Xe(ks, {
2717
+ return (o, r) => (pe(), Xe(ks, {
2706
2718
  name: l.model_name,
2707
2719
  expression_name: l.expression_name,
2708
2720
  expression_url: l.expression_url,
@@ -2719,7 +2731,7 @@ const vs = {
2719
2731
  }
2720
2732
  };
2721
2733
  export {
2722
- Fe as ResourceLoader,
2734
+ He as ResourceLoader,
2723
2735
  Us as ThreeFrame,
2724
2736
  vt as VrmModel,
2725
2737
  Gs as VroidControl,