@realsee/five 6.8.8 → 6.9.0-alpha.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.
Files changed (145) hide show
  1. package/docs/assets/hierarchy.js +1 -1
  2. package/docs/assets/navigation.js +1 -1
  3. package/docs/assets/search.js +1 -1
  4. package/docs/classes/five.AdaptiveLuminancePass.html +1 -1
  5. package/docs/classes/five.EyeDomeLightingPass.html +1 -1
  6. package/docs/classes/five.FivePass.html +1 -1
  7. package/docs/classes/five.FlowingLight2DPass.html +1 -1
  8. package/docs/classes/five.FlowingLight3DPass.html +1 -1
  9. package/docs/classes/five.GaussianBlurPass.html +1 -1
  10. package/docs/classes/five.Model.html +1 -1
  11. package/docs/classes/five.ModelScene.html +1 -1
  12. package/docs/classes/five.PBMCustomShader.html +1 -1
  13. package/docs/classes/five.PBMGSObject.html +10 -13
  14. package/docs/classes/five.PBMMeshMaterial.html +1 -1
  15. package/docs/classes/five.PBMPanoFilter.html +1 -1
  16. package/docs/classes/five.PBMPointCloudMaterial.html +1 -1
  17. package/docs/classes/five.PBMUpdateable.html +1 -1
  18. package/docs/classes/five.Parameter.html +1 -1
  19. package/docs/classes/five.Tile3D.html +1 -1
  20. package/docs/classes/five.TileNode.html +1 -1
  21. package/docs/classes/five.TrajectoryNode.html +1 -1
  22. package/docs/classes/five.WorkResolvedObserver.html +1 -1
  23. package/docs/classes/gltf-loader.DDSLoader.html +1 -1
  24. package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
  25. package/docs/classes/gltf-loader.GLTFObject.html +1 -1
  26. package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
  27. package/docs/classes/line.LineGeometry.html +1 -1
  28. package/docs/classes/line.LineMaterial.html +1 -1
  29. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  30. package/docs/classes/line.THREE_Line2.html +1 -1
  31. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  32. package/docs/classes/plugins.CSS2DObject.html +1 -1
  33. package/docs/classes/plugins.CSS3DObject.html +1 -1
  34. package/docs/classes/plugins.CSS3DSprite.html +1 -1
  35. package/docs/classes/plugins.InstancedPrefabBufferGeometry.html +1 -1
  36. package/docs/classes/plugins.Object3DHelperController.html +1 -1
  37. package/docs/classes/plugins.PointBufferGeometry.html +1 -1
  38. package/docs/classes/plugins.PrefabBufferGeometry.html +1 -1
  39. package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
  40. package/docs/classes/vfx.Airflow.html +1 -1
  41. package/docs/classes/vfx.Flame.html +1 -1
  42. package/docs/classes/vfx.Particle.html +1 -1
  43. package/docs/classes/vfx.ParticleGPU.html +1 -1
  44. package/docs/classes/vfx.SpotLight.html +1 -1
  45. package/docs/functions/five.loadSpz.html +1 -1
  46. package/docs/hierarchy.html +1 -1
  47. package/docs/interfaces/five.LooseWorkWithExtrinsics.html +1 -1
  48. package/docs/interfaces/five.PBMMaterial.html +1 -1
  49. package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
  50. package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
  51. package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
  52. package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
  53. package/docs/interfaces/five.ParameterValue.html +1 -1
  54. package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
  55. package/docs/interfaces/five.SplatData.html +3 -6
  56. package/docs/interfaces/five.ViewLayer.html +1 -1
  57. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  58. package/docs/interfaces/five.WorkImage.html +1 -1
  59. package/docs/interfaces/five.WorkObserver.html +1 -1
  60. package/docs/interfaces/five.WorkObserverProto.html +1 -1
  61. package/docs/interfaces/five.WorkTile.html +1 -1
  62. package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
  63. package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
  64. package/docs/interfaces/plugins.CSS2DPluginController.html +1 -1
  65. package/docs/interfaces/plugins.CSS2DPluginType.EventMap.html +1 -1
  66. package/docs/interfaces/plugins.CSS2DPluginType.State.html +1 -1
  67. package/docs/interfaces/plugins.CSS3DPluginController.html +1 -1
  68. package/docs/interfaces/plugins.CSS3DPluginType.EventMap.html +1 -1
  69. package/docs/interfaces/plugins.CSS3DPluginType.State.html +1 -1
  70. package/docs/interfaces/plugins.DynamicPathLinePluginController.html +1 -1
  71. package/docs/interfaces/plugins.DynamicPathLinePluginType.EventMap.html +1 -1
  72. package/docs/interfaces/plugins.DynamicPathLinePluginType.State.html +1 -1
  73. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationController.html +1 -1
  74. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.EventMap.html +1 -1
  75. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.State.html +1 -1
  76. package/docs/interfaces/plugins.ItemMaskController.html +1 -1
  77. package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
  78. package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
  79. package/docs/interfaces/plugins.Object3DHelperPluginType.BaseController.html +1 -1
  80. package/docs/interfaces/plugins.Object3DHelperPluginType.BaseHelper.html +1 -1
  81. package/docs/interfaces/plugins.Object3DHelperPluginType.BoundingBoxController.html +1 -1
  82. package/docs/interfaces/plugins.Object3DHelperPluginType.MoveController.html +1 -1
  83. package/docs/interfaces/plugins.Object3DHelperPluginType.MoveHelperAbstract.html +1 -1
  84. package/docs/interfaces/plugins.Object3DHelperPluginType.RotateController.html +1 -1
  85. package/docs/interfaces/plugins.Object3DHelperPluginType.RotateHelperAbstract.html +1 -1
  86. package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
  87. package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
  88. package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
  89. package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
  90. package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
  91. package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
  92. package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
  93. package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
  94. package/docs/interfaces/plugins.TrajectoryController.html +9 -9
  95. package/docs/interfaces/react.FiveInjectionTypes.html +1 -1
  96. package/docs/interfaces/react.UseFivePluginOptions.html +1 -1
  97. package/docs/interfaces/react.UseFivePluginOptionsWithCreate.html +1 -1
  98. package/docs/modules/five.html +1 -1
  99. package/docs/types/five.ParseOptions.html +1 -1
  100. package/five/gaussian-splatting/layerRegistry.d.ts +10 -0
  101. package/five/gaussian-splatting/orderTexture.d.ts +18 -0
  102. package/five/gaussian-splatting/reorderPass.d.ts +34 -0
  103. package/five/gaussian-splatting/shStore.d.ts +16 -0
  104. package/five/gaussian-splatting/splatAssembler.d.ts +60 -0
  105. package/five/gaussian-splatting/tileTexture.d.ts +10 -0
  106. package/five/gaussian-splatting/transformStore.d.ts +20 -0
  107. package/five/index.js +197 -132
  108. package/five/index.mjs +6510 -6490
  109. package/five/model/index.d.ts +0 -1
  110. package/five/model/loaders/spz.d.ts +19 -3
  111. package/five/model/objects/pbmGaussianSplattingObject.d.ts +10 -14
  112. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +48 -42
  113. package/gltf-loader/index.js +3 -3
  114. package/gltf-loader/index.mjs +3 -3
  115. package/line/index.js +3 -3
  116. package/line/index.mjs +3 -3
  117. package/package.json +2 -2
  118. package/pbmGaussianSplattingObject-B2uXNUOB.cjs +255 -0
  119. package/pbmGaussianSplattingObject-yJQySQfR.js +328 -0
  120. package/plugins/index.js +3 -3
  121. package/plugins/index.mjs +13 -13
  122. package/react/index.js +2 -2
  123. package/react/index.mjs +2 -2
  124. package/shader-lib/index.js +2 -2
  125. package/shader-lib/index.mjs +2 -2
  126. package/sticker/index.js +3 -3
  127. package/sticker/index.mjs +3 -3
  128. package/umd/five-gltf-loader.js +3 -3
  129. package/umd/five-line.js +3 -3
  130. package/umd/five-plugins.js +3 -3
  131. package/umd/five-react.js +2 -2
  132. package/umd/five-shader-lib.js +2 -2
  133. package/umd/five-sticker.js +3 -3
  134. package/umd/five-vfx.js +2 -2
  135. package/umd/five-vue.js +2 -2
  136. package/umd/five.js +104 -39
  137. package/vfx/index.js +2 -2
  138. package/vfx/index.mjs +2 -2
  139. package/vue/index.js +2 -2
  140. package/vue/index.mjs +2 -2
  141. package/work-downloader/index.js +2 -2
  142. package/work-downloader/index.mjs +2 -2
  143. package/docs/functions/five.loadSplat.html +0 -1
  144. package/five/gaussian-splatting/util/renderData.d.ts +0 -68
  145. package/five/model/loaders/splat.d.ts +0 -8
@@ -32,7 +32,6 @@ export { loadGltf } from "./loaders/gltf";
32
32
  export { loadPly } from "./loaders/ply";
33
33
  export { loadFbx } from "./loaders/fbx";
34
34
  export { loadX3p } from "./loaders/x3p";
35
- export { loadSplat } from "./loaders/splat";
36
35
  export { loadSpz } from "./loaders/spz";
37
36
  export { type TilesetHeader, type TileHeader, type TrajectoryHeader } from './tile3d/header';
38
37
  export { Tile, type TileContentData } from './tile3d/tile';
@@ -1,9 +1,25 @@
1
1
  import { Fetcher } from "../../utils/ajax";
2
- import { PBMGaussianSplattingObject } from '../objects/pbmGaussianSplattingObject';
3
2
  import { LoadResultType } from './shared';
3
+ import type { PBMGaussianSplattingObject } from '../objects/pbmGaussianSplattingObject';
4
+ /** Convert a float16 stored as a uint16 number back to a float32 */
5
+ export declare function fromHalf(h: number): number;
6
+ export interface DecodedSpz {
7
+ numPoints: number;
8
+ shDegree: number;
9
+ positions: Float32Array;
10
+ colors: Uint8Array;
11
+ scales: Float32Array;
12
+ rotations: Float32Array;
13
+ sh1?: Float32Array;
14
+ sh2?: Float32Array;
15
+ sh3?: Float32Array;
16
+ /** worker 中 pack 好的 GPU 数据(8 uint32/splat),主线程构造 PBMGSObject 后可直接用于上传 */
17
+ packedData?: Uint32Array;
18
+ }
19
+ /** 解码 SPZ 字节流为原始属性数组(gunzip + 逐字段解析) */
20
+ export declare function decodeSpz(fileBytes: Uint8Array | ArrayBuffer): Promise<DecodedSpz>;
4
21
  /**
5
- * 加载spz格式的数据
6
- * @returns Promise<PBMGSObject>
22
+ * 加载 spz 格式的数据,解码在 Worker 中完成,主线程不阻塞。
7
23
  */
8
24
  export declare function parseSpz(fileBytes: Uint8Array | ArrayBuffer): Promise<PBMGaussianSplattingObject>;
9
25
  export declare function loadSpz(url: string, options?: {
@@ -2,43 +2,39 @@ import * as THREE from "three";
2
2
  import type { PBMClipperParameter } from "../materials/pbmMaterial";
3
3
  export interface SplatData {
4
4
  numPoints: number;
5
- positions: Float32Array;
6
- colors: Uint8Array;
7
- scales: Float32Array;
8
- rotations: Float32Array;
5
+ packedData: Uint32Array;
9
6
  sh1?: Float32Array;
10
7
  sh2?: Float32Array;
11
8
  sh3?: Float32Array;
12
9
  shDegree?: number;
13
10
  }
14
11
  export declare class PBMGaussianSplattingObject extends THREE.Points<THREE.BufferGeometry, THREE.ShaderMaterial> {
15
- static RowLength: number;
16
12
  transformChanged: boolean;
17
13
  selectedChanged: boolean;
18
- transferDetached: boolean;
19
14
  numPoints: number;
20
15
  maxSHDegree: number;
21
16
  usedSHDegree: number;
22
17
  initAnimationEnabled: boolean;
23
18
  gsViewLayerKey: string;
24
19
  gsClippers: readonly PBMClipperParameter[];
20
+ /** 加载时在 worker 中预 pack 好的 GPU 数据(8 uint32/splat) */
21
+ packedData: Uint32Array;
25
22
  private _selected;
26
23
  private _boundingBox;
27
24
  lastMatrixWorld: THREE.Matrix4 | null;
28
- get positions(): Float32Array;
29
- get rotations(): Float32Array;
30
- get scales(): Float32Array;
31
- get colors(): Uint8Array;
32
- get selection(): Uint8Array;
33
25
  get sh1(): Float32Array | undefined;
34
26
  get sh2(): Float32Array | undefined;
35
27
  get sh3(): Float32Array | undefined;
36
28
  constructor(splatData?: SplatData);
37
- serialize(): Uint8Array<ArrayBuffer>;
38
- reattach(positions: ArrayBufferLike, rotations: ArrayBufferLike, scales: ArrayBufferLike, colors: ArrayBufferLike, selection: ArrayBufferLike): void;
39
29
  get selected(): boolean;
40
30
  set selected(selected: boolean);
41
31
  get boundingBox(): THREE.Box3;
42
32
  dispose(): void;
43
- raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]): void;
33
+ /**
34
+ * 从 packedData 即时解码第 index 个 splat 的 scale(Vector3) 与 rotation(Quaternion)。
35
+ * 用于 BVH 法线拟合——只在命中点按需解码,不维护独立数组。
36
+ * packedData texel1 布局:[4]=scaleX|scaleY|scaleZ|quatOctZ,[5]=quatOctX|quatOctY|reserved。
37
+ * 编码为有损(log-scale uint8 + octahedral 轴角),对法线方向足够。
38
+ */
39
+ decodeScaleRotation(index: number, scaleOut: THREE.Vector3, quatOut: THREE.Quaternion): boolean;
44
40
  }
@@ -1,60 +1,66 @@
1
1
  import * as THREE from 'three';
2
- import { RenderData } from '../../gaussian-splatting/util/renderData';
3
2
  declare class PBMGaussianSplattingRenderMesh extends THREE.Mesh<THREE.InstancedBufferGeometry, THREE.ShaderMaterial> {
4
- private gsSceneState;
5
- renderData: RenderData | null;
6
3
  needsRender: boolean;
7
4
  private sortWorker;
8
- private depthIndex;
9
5
  private splatIndexCapacity;
10
- private activeSlot;
11
- private pendingSlot;
12
- private rebuildGeneration;
13
- private forceClipperUniformRefresh;
14
- private incrementalUpdateInFlight;
15
- private freeSlotPool;
16
- private dataTexture;
17
- private positionTexture;
18
- private transformsTexture;
19
- private transformIndicesTexture;
20
- private layerIndicesTexture;
21
- private shTexture;
6
+ private sortDataUploaded;
22
7
  private usedSHDegree;
8
+ private transformStore;
9
+ private transformsDirty;
10
+ private layerRegistry;
11
+ private shStore;
12
+ private orderTexture;
13
+ private assembler;
14
+ private reorderPass;
15
+ private orderTarget;
16
+ /** 当前 source order 所基于的布局快照(object→start/count) */
17
+ private orderBaseSnapshot;
18
+ /** 每次上传排序数据打一个 generation,记录该次排序所基于的布局快照;返回的 order 按 generation 取回,避免异步错配 */
19
+ private sortGeneration;
20
+ private snapshotByGen;
21
+ private orderCount;
22
+ private orderDirty;
23
+ private layoutDirty;
24
+ private lastObjectsHash;
25
+ private lastClipperHash;
26
+ /** 上次触发排序时的相机 matrixWorld 快照 */
27
+ private prevSortCameraMatrix;
28
+ /** 平移增量阈值(世界单位):超过才重排 */
29
+ sortCameraDistance: number;
30
+ /** 姿态相似度阈值(|quat 点积|):低于才重排(0.99 ≈ 相机绕轴约 16° 内不重排) */
31
+ sortCameraCoorient: number;
32
+ /** 最小重排间隔(ms):即使脏也不超过此频率,0=不限 */
33
+ sortMinIntervalMs: number;
34
+ private sortLastTime;
23
35
  constructor();
24
- private ensureSplatIndexCapacity;
25
- private getExpandedCapacity;
26
36
  private createGeometry;
37
+ private ensureSplatIndexCapacity;
27
38
  private createMaterial;
28
- private createDefaultLayerClipperRanges;
29
- private createDefaultClipperMatrices;
30
- private createTextures;
31
- private createSHTexture;
32
- /**
33
- * 设置球谐阶数
34
- * @param degree SH 阶数 (0, 1, 或 2),0 表示禁用 SH
35
- */
36
- private setMaxShDegree;
37
- private bindSlotTextures;
38
- private disposeSlot;
39
- /** 回收 slot 到池中复用,而非直接销毁 */
40
- private recycleSlot;
41
- private disposeTextures;
39
+ private rebuildTransformsTexture;
40
+ /** P4:SplatAssembler 增量同步(per-tile 纹理缓存)+ GPU 组装。布局按对象顺序连续。 */
41
+ private rebuildAssembled;
42
+ /** 重建 SH 纹理(数据源按对象顺序连续 offset 读 obj.sh1/2/3)并同步 uniform。 */
43
+ private updateSH;
42
44
  private applyDepthIndex;
43
- private swapPendingToActive;
44
- private createSlot;
45
- private updateSlotTextures;
45
+ private snapshotLayout;
46
+ /** 用「旧 order 布局快照 → 当前布局」的位移/剔除段表,把 source order 修正到当前布局。 */
47
+ private buildSegments;
48
+ /** 每帧(order 或布局变化时)把 source order 经 ReorderPass 修正到当前布局,主 shader 采样 orderTarget。 */
49
+ private runReorder;
46
50
  private postSortData;
47
- private sortDataRebuilding;
51
+ /**
52
+ * 是否需要重排(对齐 aholo isSortDirty):
53
+ * - 数据/布局变化(transformsDirty || 首次未上传)强制重排(≈ aholo isSceneDirty/packQueue);
54
+ * - 否则比较相机相对「上次排序时快照」的平移/姿态增量,均小于阈值则跳过(小角度节流)。
55
+ */
56
+ private shouldSort;
48
57
  private requestSort;
49
- private syncTransformsForSlot;
50
58
  private collectObjects;
51
- private isSceneNeedsRebuild;
52
- private getClipperHash;
59
+ private isSceneChanged;
60
+ private rebuild;
61
+ private updateClipperUniforms;
53
62
  private updateClipperCounts;
54
63
  private updateInitAnimationDefine;
55
- private updateClipperUniforms;
56
- private startPendingRebuild;
57
- private tryStartIncrementalUpdate;
58
64
  onBeforeRender: (renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera) => void;
59
65
  dispose(): void;
60
66
  }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 6/25/2026
5
- * Version: 6.8.8
4
+ * Generated: 7/2/2026
5
+ * Version: 6.9.0-alpha.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -258,4 +258,4 @@
258
258
  `),i=[`float glossinessFactor = glossiness;`,`#ifdef USE_GLOSSINESSMAP`,` vec4 texelGlossiness = texture2D( glossinessMap, vUv );`,` // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture`,` glossinessFactor *= texelGlossiness.a;`,`#endif`].join(`
259
259
  `),a=[`PhysicalMaterial material;`,`material.diffuseColor = diffuseColor.rgb;`,`vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );`,`float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );`,`material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 );// 0.0525 corresponds to the base mip of a 256 cubemap.`,`material.specularRoughness += geometryRoughness;`,`material.specularRoughness = min( material.specularRoughness, 1.0 );`,`material.specularColor = specularFactor.rgb;`].join(`
260
260
  `),o={specular:{value:new c.Color().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=o,this.onBeforeCompile=function(e){for(var s in o)e.uniforms[s]=o[s];e.fragmentShader=e.fragmentShader.replace(`uniform float roughness;`,`uniform vec3 specular;`),e.fragmentShader=e.fragmentShader.replace(`uniform float metalness;`,`uniform float glossiness;`),e.fragmentShader=e.fragmentShader.replace(`#include <roughnessmap_pars_fragment>`,t),e.fragmentShader=e.fragmentShader.replace(`#include <metalnessmap_pars_fragment>`,n),e.fragmentShader=e.fragmentShader.replace(`#include <roughnessmap_fragment>`,r),e.fragmentShader=e.fragmentShader.replace(`#include <metalnessmap_fragment>`,i),e.fragmentShader=e.fragmentShader.replace(`#include <lights_physical_fragment>`,a)},Object.defineProperties(this,{specular:{get:function(){return o.specular.value},set:function(e){o.specular.value=e}},specularMap:{get:function(){return o.specularMap.value},set:function(e){o.specularMap.value=e}},glossiness:{get:function(){return o.glossiness.value},set:function(e){o.glossiness.value=e}},glossinessMap:{get:function(){return o.glossinessMap.value},set:function(e){o.glossinessMap.value=e,e?(this.defines.USE_GLOSSINESSMAP=``,this.defines.USE_ROUGHNESSMAP=``):(delete this.defines.USE_ROUGHNESSMAP,delete this.defines.USE_GLOSSINESSMAP)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(e)}h.prototype=Object.create(c.MeshStandardMaterial.prototype),h.prototype.constructor=h,h.prototype.copy=function(e){return c.MeshStandardMaterial.prototype.copy.call(this,e),this.specularMap=e.specularMap,this.specular.copy(e.specular),this.glossinessMap=e.glossinessMap,this.glossiness=e.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this};function g(){return{name:n.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,specularGlossinessParams:[`color`,`map`,`lightMap`,`lightMapIntensity`,`aoMap`,`aoMapIntensity`,`emissive`,`emissiveIntensity`,`emissiveMap`,`bumpMap`,`bumpScale`,`normalMap`,`normalMapType`,`displacementMap`,`displacementScale`,`displacementBias`,`specularMap`,`specular`,`glossinessMap`,`glossiness`,`alphaMap`,`envMap`,`envMapIntensity`,`refractionRatio`],getMaterialType:function(){return h},extendParams:function(e,t,n){var r=t.extensions[this.name];e.color=new c.Color(1,1,1),e.opacity=1;var i=[];if(Array.isArray(r.diffuseFactor)){var a=r.diffuseFactor;e.color.fromArray(a),e.opacity=a[3]}if(r.diffuseTexture!==void 0&&i.push(n.assignTexture(e,`map`,r.diffuseTexture)),e.emissive=new c.Color(0,0,0),e.glossiness=r.glossinessFactor===void 0?1:r.glossinessFactor,e.specular=new c.Color(1,1,1),Array.isArray(r.specularFactor)&&e.specular.fromArray(r.specularFactor),r.specularGlossinessTexture!==void 0){var o=r.specularGlossinessTexture;i.push(n.assignTexture(e,`glossinessMap`,o)),i.push(n.assignTexture(e,`specularMap`,o))}return Promise.all(i)},createMaterial:function(e){var t=new h(e);return t.fog=!0,t.color=e.color,t.map=e.map===void 0?null:e.map,t.lightMap=null,t.lightMapIntensity=1,t.aoMap=e.aoMap===void 0?null:e.aoMap,t.aoMapIntensity=1,t.emissive=e.emissive,t.emissiveIntensity=1,t.emissiveMap=e.emissiveMap===void 0?null:e.emissiveMap,t.bumpMap=e.bumpMap===void 0?null:e.bumpMap,t.bumpScale=1,t.normalMap=e.normalMap===void 0?null:e.normalMap,t.normalMapType=c.TangentSpaceNormalMap,e.normalScale&&(t.normalScale=e.normalScale),t.displacementMap=null,t.displacementScale=1,t.displacementBias=0,t.specularMap=e.specularMap===void 0?null:e.specularMap,t.specular=e.specular,t.glossinessMap=e.glossinessMap===void 0?null:e.glossinessMap,t.glossiness=e.glossiness,t.alphaMap=null,t.envMap=e.envMap===void 0?null:e.envMap,t.envMapIntensity=1,t.refractionRatio=.98,t}}}function _(){this.name=n.KHR_MESH_QUANTIZATION}function v(e,t,n,r){c.Interpolant.call(this,e,t,n,r)}v.prototype=Object.create(c.Interpolant.prototype),v.prototype.constructor=v,v.prototype.copySampleValue_=function(e){for(var t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,i=e*r*3+r,a=0;a!==r;a++)t[a]=n[i+a];return t},v.prototype.beforeStart_=v.prototype.copySampleValue_,v.prototype.afterEnd_=v.prototype.copySampleValue_,v.prototype.interpolate_=function(e,t,n,r){for(var i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=o*2,c=o*3,l=r-t,u=(n-t)/l,d=u*u,f=d*u,p=e*c,m=p-c,h=-2*f+3*d,g=f-d,_=1-h,v=g-d+u,y=0;y!==o;y++){var b=a[m+y+o],x=a[m+y+s]*l,S=a[p+y+o],C=a[p+y]*l;i[y]=_*b+v*x+h*S+g*C}return i};function y(e){this.parser=e,this.name=n.REALSEE_MATERIALS_LIGHTMAP}y.prototype.getMaterialType=function(e){return c.MeshPhongMaterial},y.prototype.extendParams=function(e,t,n){if(!t.extensions||!t.extensions[this.name])return Promise.resolve();var r=[],i=t.extensions[this.name];return i.lightMapTexture!==void 0&&r.push(n.assignTexture(e,`lightMap`,i.lightMapTexture)),i.lightMapIntensity!==void 0&&(e.lightMapIntensity=i.lightMapIntensity),Promise.all(r)};var b={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},x={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},S={9728:c.NearestFilter,9729:c.LinearFilter,9984:c.NearestMipmapNearestFilter,9985:c.LinearMipmapNearestFilter,9986:c.NearestMipmapLinearFilter,9987:c.LinearMipmapLinearFilter},C={33071:c.ClampToEdgeWrapping,33648:c.MirroredRepeatWrapping,10497:c.RepeatWrapping},w={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},T={POSITION:`position`,NORMAL:`normal`,TANGENT:`tangent`,TEXCOORD_0:`uv`,TEXCOORD_1:`uv2`,COLOR_0:`color`,WEIGHTS_0:`skinWeight`,JOINTS_0:`skinIndex`},E={scale:`scale`,translation:`position`,rotation:`quaternion`,weights:`morphTargetInfluences`},D={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete},O={OPAQUE:`OPAQUE`,MASK:`MASK`,BLEND:`BLEND`},k={"image/png":c.RGBAFormat,"image/jpeg":c.RGBFormat};function A(e,t){return typeof e!=`string`||e===``?``:(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,`$1`)),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}function j(e){return e.DefaultMaterial===void 0&&(e.DefaultMaterial=new c.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:c.FrontSide})),e.DefaultMaterial}function M(e,t,n){for(var r in n.extensions)e[r]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=n.extensions[r])}function N(e,t){t.extras!==void 0&&(typeof t.extras==`object`?Object.assign(e.userData,t.extras):console.warn(`THREE.GLTFLoader: Ignoring primitive type .extras, `+t.extras))}function P(e,t,n){for(var r=!1,i=!1,a=0,o=t.length;a<o;a++){var s=t[a];if(s.POSITION!==void 0&&(r=!0),s.NORMAL!==void 0&&(i=!0),r&&i)break}if(!r&&!i)return Promise.resolve(e);for(var c=[],l=[],a=0,o=t.length;a<o;a++){var s=t[a];if(r){var u=s.POSITION===void 0?e.attributes.position:n.getDependency(`accessor`,s.POSITION);c.push(u)}if(i){var u=s.NORMAL===void 0?e.attributes.normal:n.getDependency(`accessor`,s.NORMAL);l.push(u)}}return Promise.all([Promise.all(c),Promise.all(l)]).then(function(t){var n=t[0],a=t[1];return r&&(e.morphAttributes.position=n),i&&(e.morphAttributes.normal=a),e.morphTargetsRelative=!0,e})}function F(e,t){if(e.updateMorphTargets(),t.weights!==void 0)for(var n=0,r=t.weights.length;n<r;n++)e.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){var i=t.extras.targetNames;if(e.morphTargetInfluences.length===i.length){e.morphTargetDictionary={};for(var n=0,r=i.length;n<r;n++)e.morphTargetDictionary[i[n]]=n}else console.warn(`THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.`)}}function I(e){var t=e.extensions&&e.extensions[n.KHR_DRACO_MESH_COMPRESSION];return t?`draco:`+t.bufferView+`:`+t.indices+`:`+L(t.attributes):e.indices+`:`+L(e.attributes)+`:`+e.mode}function L(e){for(var t=``,n=Object.keys(e).sort(),r=0,i=n.length;r<i;r++)t+=n[r]+`:`+e[n[r]]+`;`;return t}function R(e,n,r){this.json=e||{},this.extensions=n||{},this.options=r||{},this.cache=new t,this.associations=new Map,this.primitiveCache={},this.textureLoader=new c.TextureLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.fileLoader=new c.FileLoader(this.options.manager),this.fileLoader.setResponseType(`arraybuffer`),this.options.crossOrigin===`use-credentials`&&this.fileLoader.setWithCredentials(!0)}R.prototype.parse=function(e,t){var n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.markDefs(),Promise.all([this.getDependencies(`scene`),this.getDependencies(`animation`),this.getDependencies(`camera`)]).then(function(t){var a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};M(i,a,r),N(a,r),e(a)}).catch(t)},R.prototype.markDefs=function(){for(var e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[],r={},i={},a=0,o=t.length;a<o;a++)for(var s=t[a].joints,c=0,l=s.length;c<l;c++)e[s[c]].isBone=!0;for(var u=0,d=e.length;u<d;u++){var f=e[u];f.mesh!==void 0&&(r[f.mesh]===void 0&&(r[f.mesh]=i[f.mesh]=0),r[f.mesh]++,f.skin!==void 0&&(n[f.mesh].isSkinnedMesh=!0))}this.json.meshReferences=r,this.json.meshUses=i},R.prototype.getDependency=function(e,t){var r=e+`:`+t,i=this.cache.get(r);if(!i){switch(e){case`scene`:i=this.loadScene(t);break;case`node`:i=this.loadNode(t);break;case`mesh`:i=this.loadMesh(t);break;case`accessor`:i=this.loadAccessor(t);break;case`bufferView`:i=this.loadBufferView(t);break;case`buffer`:i=this.loadBuffer(t);break;case`material`:i=this.loadMaterial(t);break;case`texture`:i=this.loadTexture(t);break;case`skin`:i=this.loadSkin(t);break;case`animation`:i=this.loadAnimation(t);break;case`camera`:i=this.loadCamera(t);break;case`light`:i=this.extensions[n.KHR_LIGHTS_PUNCTUAL].loadLight(t);break;default:throw Error(`Unknown type: `+e)}this.cache.add(r,i)}return i},R.prototype.getDependencies=function(e){var t=this.cache.get(e);if(!t){var n=this,r=this.json[e+(e===`mesh`?`es`:`s`)]||[];t=Promise.all(r.map(function(t,r){return n.getDependency(e,r)})),this.cache.add(e,t)}return t},R.prototype.loadBuffer=function(e){var t=this.json.buffers[e],r=this.fileLoader;if(t.type&&t.type!==`arraybuffer`)throw Error(`THREE.GLTFLoader: `+t.type+` buffer type is not supported.`);if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[n.KHR_BINARY_GLTF].body);var i=this.options;return new Promise(function(e,n){r.load(A(t.uri,i.path),e,void 0,function(){n(Error(`THREE.GLTFLoader: Failed to load buffer "`+t.uri+`".`))})})},R.prototype.loadBufferView=function(e){var t=this.json.bufferViews[e];return this.getDependency(`buffer`,t.buffer).then(function(e){var n=t.byteLength||0,r=t.byteOffset||0;return e.slice(r,r+n)})},R.prototype.loadAccessor=function(e){var t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0)return Promise.resolve(null);var i=[];return r.bufferView===void 0?i.push(null):i.push(this.getDependency(`bufferView`,r.bufferView)),r.sparse!==void 0&&(i.push(this.getDependency(`bufferView`,r.sparse.indices.bufferView)),i.push(this.getDependency(`bufferView`,r.sparse.values.bufferView))),Promise.all(i).then(function(e){var i=e[0],a=w[r.type],o=x[r.componentType],s=o.BYTES_PER_ELEMENT,l=s*a,u=r.byteOffset||0,d=r.bufferView===void 0?void 0:n.bufferViews[r.bufferView].byteStride,f=r.normalized===!0,p,m;if(d&&d!==l){var h=Math.floor(u/d),g=`InterleavedBuffer:`+r.bufferView+`:`+r.componentType+`:`+h+`:`+r.count,_=t.cache.get(g);_||(p=new o(i,h*d,r.count*d/s),_=new c.InterleavedBuffer(p,d/s),t.cache.add(g,_)),m=new c.InterleavedBufferAttribute(_,a,u%d/s,f)}else p=i===null?new o(r.count*a):new o(i,u,r.count*a),m=new c.BufferAttribute(p,a,f);if(r.sparse!==void 0){var v=w.SCALAR,y=x[r.sparse.indices.componentType],b=r.sparse.indices.byteOffset||0,S=r.sparse.values.byteOffset||0,C=new y(e[1],b,r.sparse.count*v),T=new o(e[2],S,r.sparse.count*a);i!==null&&(m=new c.BufferAttribute(m.array.slice(),m.itemSize,m.normalized));for(var E=0,D=C.length;E<D;E++){var O=C[E];if(m.setX(O,T[E*a]),a>=2&&m.setY(O,T[E*a+1]),a>=3&&m.setZ(O,T[E*a+2]),a>=4&&m.setW(O,T[E*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}}return m})},R.prototype.loadTexture=function(e){var t=this,r=this.json,i=this.options,a=this.textureLoader,o=self.URL||self.webkitURL,s=r.textures[e],l=s.extensions||{},u=l[n.MSFT_TEXTURE_DDS]?r.images[l[n.MSFT_TEXTURE_DDS].source]:r.images[s.source],d=u.uri,f=!1;return u.bufferView!==void 0&&(d=t.getDependency(`bufferView`,u.bufferView).then(function(e){f=!0;var t=new Blob([e],{type:u.mimeType});return d=o.createObjectURL(t),d})),Promise.resolve(d).then(function(e){var r=i.manager.getHandler(e);return r||(r=l[n.MSFT_TEXTURE_DDS]?t.extensions[n.MSFT_TEXTURE_DDS].ddsLoader:a),new Promise(function(t,n){r.load(A(e,i.path),t,void 0,n)})}).then(function(n){f===!0&&o.revokeObjectURL(d),n.flipY=!1,s.name&&(n.name=s.name),u.mimeType in k&&(n.format=k[u.mimeType]);var i=(r.samplers||{})[s.sampler]||{};return n.magFilter=S[i.magFilter]||c.LinearFilter,n.minFilter=S[i.minFilter]||c.LinearMipmapLinearFilter,n.wrapS=C[i.wrapS]||c.RepeatWrapping,n.wrapT=C[i.wrapT]||c.RepeatWrapping,t.associations.set(n,{type:`textures`,index:e}),n})},R.prototype.assignTexture=function(e,t,r){var i=this;return this.getDependency(`texture`,r.index).then(function(a){if(!a.isCompressedTexture)switch(t){case`aoMap`:case`emissiveMap`:case`metalnessMap`:case`normalMap`:case`roughnessMap`:a.format=c.RGBFormat;break}if(r.texCoord!==void 0&&r.texCoord!=0&&!(t===`aoMap`&&r.texCoord==1)&&console.warn(`THREE.GLTFLoader: Custom UV set `+r.texCoord+` for texture `+t+` not yet supported.`),i.extensions[n.KHR_TEXTURE_TRANSFORM]){var o=r.extensions===void 0?void 0:r.extensions[n.KHR_TEXTURE_TRANSFORM];if(o){var s=i.associations.get(a);a=i.extensions[n.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),i.associations.set(a,s)}}e[t]=a})},R.prototype.assignFinalMaterial=function(e){var t=e.geometry,n=e.material,r=t.attributes.tangent!==void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0,o=e.isSkinnedMesh===!0,s=Object.keys(t.morphAttributes).length>0,l=s&&t.morphAttributes.normal!==void 0;if(e.isPoints){var u=`PointsMaterial:`+n.uuid,d=this.cache.get(u);d||(d=new c.PointsMaterial,c.Material.prototype.copy.call(d,n),d.color.copy(n.color),d.map=n.map,d.sizeAttenuation=!1,this.cache.add(u,d)),n=d}else if(e.isLine){var u=`LineBasicMaterial:`+n.uuid,f=this.cache.get(u);f||(f=new c.LineBasicMaterial,c.Material.prototype.copy.call(f,n),f.color.copy(n.color),this.cache.add(u,f)),n=f}if(r||i||a||o||s){var u=`ClonedMaterial:`+n.uuid+`:`;n.isGLTFSpecularGlossinessMaterial&&(u+=`specular-glossiness:`),o&&(u+=`skinning:`),r&&(u+=`vertex-tangents:`),i&&(u+=`vertex-colors:`),a&&(u+=`flat-shading:`),s&&(u+=`morph-targets:`),l&&(u+=`morph-normals:`);var p=this.cache.get(u);p||(p=n.clone(),o&&(p.skinning=!0),r&&(p.vertexTangents=!0),i&&(p.vertexColors=!0),a&&(p.flatShading=!0),s&&(p.morphTargets=!0),l&&(p.morphNormals=!0),this.cache.add(u,p),this.associations.set(p,this.associations.get(n))),n=p}n.aoMap&&t.attributes.uv2===void 0&&t.attributes.uv!==void 0&&t.setAttribute(`uv2`,t.attributes.uv),n.normalScale&&!r&&(n.normalScale.y=-n.normalScale.y),n.clearcoatNormalScale&&!r&&(n.clearcoatNormalScale.y=-n.clearcoatNormalScale.y),e.material=n},R.prototype.loadMaterial=function(e){var t=this,r=this.json,i=this.extensions,a=r.materials[e],o,s={},l=a.extensions||{},u=[];if(l[n.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){var d=i[n.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];o=d.getMaterialType(),u.push(d.extendParams(s,a,t))}else if(l[n.KHR_MATERIALS_UNLIT]){var f=i[n.KHR_MATERIALS_UNLIT];o=f.getMaterialType(),u.push(f.extendParams(s,a,t))}else{o=c.MeshStandardMaterial;var p=a.pbrMetallicRoughness||{};if(s.color=new c.Color(1,1,1),s.opacity=1,Array.isArray(p.baseColorFactor)){var m=p.baseColorFactor;s.color.fromArray(m),s.opacity=m[3]}p.baseColorTexture!==void 0&&u.push(t.assignTexture(s,`map`,p.baseColorTexture)),s.metalness=p.metallicFactor===void 0?1:p.metallicFactor,s.roughness=p.roughnessFactor===void 0?1:p.roughnessFactor,p.metallicRoughnessTexture!==void 0&&(u.push(t.assignTexture(s,`metalnessMap`,p.metallicRoughnessTexture)),u.push(t.assignTexture(s,`roughnessMap`,p.metallicRoughnessTexture)))}a.doubleSided===!0&&(s.side=c.DoubleSide);var g=a.alphaMode||O.OPAQUE;if(g===O.BLEND?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,g===O.MASK&&(s.alphaTest=a.alphaCutoff===void 0?.5:a.alphaCutoff)),a.normalTexture!==void 0&&o!==c.MeshBasicMaterial&&(u.push(t.assignTexture(s,`normalMap`,a.normalTexture)),s.normalScale=new c.Vector2(1,1),a.normalTexture.scale!==void 0&&s.normalScale.set(a.normalTexture.scale,a.normalTexture.scale)),a.occlusionTexture!==void 0&&o!==c.MeshBasicMaterial&&(u.push(t.assignTexture(s,`aoMap`,a.occlusionTexture)),a.occlusionTexture.strength!==void 0&&(s.aoMapIntensity=a.occlusionTexture.strength)),a.emissiveFactor!==void 0&&o!==c.MeshBasicMaterial&&(s.emissive=new c.Color().fromArray(a.emissiveFactor)),a.emissiveTexture!==void 0&&o!==c.MeshBasicMaterial&&u.push(t.assignTexture(s,`emissiveMap`,a.emissiveTexture)),l[n.KHR_MATERIALS_CLEARCOAT]){var _=i[n.KHR_MATERIALS_CLEARCOAT];o=_.getMaterialType(),u.push(_.extendParams(s,{extensions:l},t))}if(l[n.KHR_MATERIALS_TRANSMISSION]){var _=i[n.KHR_MATERIALS_TRANSMISSION];o=_.getMaterialType(),u.push(_.extendParams(s,{extensions:l},t))}if(l[n.REALSEE_MATERIALS_LIGHTMAP]){var v=i[n.REALSEE_MATERIALS_LIGHTMAP];o=v.getMaterialType(),u.push(v.extendParams(s,{extensions:l},t))}return Promise.all(u).then(function(){var r=o===h?i[n.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(s):new o(s);return a.name&&(r.name=a.name),r.map&&(r.map.encoding=c.sRGBEncoding),r.emissiveMap&&(r.emissiveMap.encoding=c.sRGBEncoding),N(r,a),t.associations.set(r,{type:`materials`,index:e}),a.extensions&&M(i,r,a),r})};function z(e,t,n){var r=t.attributes,i=new c.Box3;if(r.POSITION!==void 0){var a=n.json.accessors[r.POSITION],o=a.min,s=a.max;if(o!==void 0&&s!==void 0)i.set(new c.Vector3(o[0],o[1],o[2]),new c.Vector3(s[0],s[1],s[2]));else{console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`);return}}else return;var l=t.targets;if(l!==void 0){for(var u=new c.Vector3,d=new c.Vector3,f=0,p=l.length;f<p;f++){var m=l[f];if(m.POSITION!==void 0){var a=n.json.accessors[m.POSITION],o=a.min,s=a.max;o!==void 0&&s!==void 0?(d.setX(Math.max(Math.abs(o[0]),Math.abs(s[0]))),d.setY(Math.max(Math.abs(o[1]),Math.abs(s[1]))),d.setZ(Math.max(Math.abs(o[2]),Math.abs(s[2]))),u.max(d)):console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`)}}i.expandByVector(u)}e.boundingBox=i;var h=new c.Sphere;i.getCenter(h.center),h.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=h}function B(e,t,n){var r=t.attributes,i=[];function a(t,r){return n.getDependency(`accessor`,t).then(function(t){e.setAttribute(r,t)})}for(var o in r){var s=T[o]||o.toLowerCase();s in e.attributes||i.push(a(r[o],s))}if(t.indices!==void 0&&!e.index){var c=n.getDependency(`accessor`,t.indices).then(function(t){e.setIndex(t)});i.push(c)}return N(e,t),z(e,t,n),Promise.all(i).then(function(){return t.targets===void 0?e:P(e,t.targets,n)})}function V(e,t){var n=e.getIndex();if(n===null){var r=[],i=e.getAttribute(`position`);if(i!==void 0){for(var a=0;a<i.count;a++)r.push(a);e.setIndex(r),n=e.getIndex()}else return console.error(`THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.`),e}var o=n.count-2,s=[];if(t===c.TriangleFanDrawMode)for(var a=1;a<=o;a++)s.push(n.getX(0)),s.push(n.getX(a)),s.push(n.getX(a+1));else for(var a=0;a<o;a++)a%2==0?(s.push(n.getX(a)),s.push(n.getX(a+1)),s.push(n.getX(a+2))):(s.push(n.getX(a+2)),s.push(n.getX(a+1)),s.push(n.getX(a)));s.length/3!==o&&console.error(`THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.`);var l=e.clone();return l.setIndex(s),l}return R.prototype.loadGeometries=function(e){var t=this,r=this.extensions,i=this.primitiveCache;function a(e){return r[n.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return B(n,e,t)})}for(var o=[],s=0,l=e.length;s<l;s++){var u=e[s],d=I(u),f=i[d];if(f)o.push(f.promise);else{var p=u.extensions&&u.extensions[n.KHR_DRACO_MESH_COMPRESSION]?a(u):B(new c.BufferGeometry,u,t);i[d]={primitive:u,promise:p},o.push(p)}}return Promise.all(o)},R.prototype.loadMesh=function(e){for(var t=this,n=this.json.meshes[e],r=n.primitives,i=[],a=0,o=r.length;a<o;a++){var s=r[a].material===void 0?j(this.cache):this.getDependency(`material`,r[a].material);i.push(s)}return i.push(t.loadGeometries(r)),Promise.all(i).then(function(i){for(var a=i.slice(0,i.length-1),o=i[i.length-1],s=[],l=0,u=o.length;l<u;l++){var d=o[l],f=r[l],p,m=a[l];if(f.mode===b.TRIANGLES||f.mode===b.TRIANGLE_STRIP||f.mode===b.TRIANGLE_FAN||f.mode===void 0)p=n.isSkinnedMesh===!0?new c.SkinnedMesh(d,m):new c.Mesh(d,m),p.isSkinnedMesh===!0&&!p.geometry.attributes.skinWeight.normalized&&p.normalizeSkinWeights(),f.mode===b.TRIANGLE_STRIP?p.geometry=V(p.geometry,c.TriangleStripDrawMode):f.mode===b.TRIANGLE_FAN&&(p.geometry=V(p.geometry,c.TriangleFanDrawMode));else if(f.mode===b.LINES)p=new c.LineSegments(d,m);else if(f.mode===b.LINE_STRIP)p=new c.Line(d,m);else if(f.mode===b.LINE_LOOP)p=new c.LineLoop(d,m);else if(f.mode===b.POINTS)p=new c.Points(d,m);else throw Error(`THREE.GLTFLoader: Primitive mode unsupported: `+f.mode);Object.keys(p.geometry.morphAttributes).length>0&&F(p,n),p.name=n.name||`mesh_`+e,o.length>1&&(p.name+=`_`+l),N(p,n),t.assignFinalMaterial(p),s.push(p)}if(s.length===1)return s[0];for(var h=new c.Group,l=0,u=s.length;l<u;l++)h.add(s[l]);return h})},R.prototype.loadCamera=function(e){var t,n=this.json.cameras[e],r=n[n.type];if(!r){console.warn(`THREE.GLTFLoader: Missing camera parameters.`);return}return n.type===`perspective`?t=new c.PerspectiveCamera(c.MathUtils.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type===`orthographic`&&(t=new c.OrthographicCamera(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=n.name),N(t,n),Promise.resolve(t)},R.prototype.loadSkin=function(e){var t=this.json.skins[e],n={joints:t.joints};return t.inverseBindMatrices===void 0?Promise.resolve(n):this.getDependency(`accessor`,t.inverseBindMatrices).then(function(e){return n.inverseBindMatrices=e,n})},R.prototype.loadAnimation=function(e){for(var t=this.json.animations[e],n=[],r=[],i=[],a=[],o=[],s=0,l=t.channels.length;s<l;s++){var u=t.channels[s],d=t.samplers[u.sampler],f=u.target,p=f.node===void 0?f.id:f.node,m=t.parameters===void 0?d.input:t.parameters[d.input],h=t.parameters===void 0?d.output:t.parameters[d.output];n.push(this.getDependency(`node`,p)),r.push(this.getDependency(`accessor`,m)),i.push(this.getDependency(`accessor`,h)),a.push(d),o.push(f)}return Promise.all([Promise.all(n),Promise.all(r),Promise.all(i),Promise.all(a),Promise.all(o)]).then(function(n){for(var r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],l=[],u=0,d=r.length;u<d;u++){var f=r[u],p=i[u],m=a[u],h=o[u],g=s[u];if(f!==void 0){f.updateMatrix(),f.matrixAutoUpdate=!0;var _;switch(E[g.path]){case E.weights:_=c.NumberKeyframeTrack;break;case E.rotation:_=c.QuaternionKeyframeTrack;break;case E.position:case E.scale:default:_=c.VectorKeyframeTrack;break}var y=f.name?f.name:f.uuid,b=h.interpolation===void 0?c.InterpolateLinear:D[h.interpolation],x=[];E[g.path]===E.weights?f.traverse(function(e){e.isMesh===!0&&e.morphTargetInfluences&&x.push(e.name?e.name:e.uuid)}):x.push(y);var S=m.array;if(m.normalized){var C;if(S.constructor===Int8Array)C=1/127;else if(S.constructor===Uint8Array)C=1/255;else if(S.constructor==Int16Array)C=1/32767;else if(S.constructor===Uint16Array)C=1/65535;else throw Error(`THREE.GLTFLoader: Unsupported output accessor component type.`);for(var w=new Float32Array(S.length),T=0,O=S.length;T<O;T++)w[T]=S[T]*C;S=w}for(var T=0,O=x.length;T<O;T++){var k=new _(x[T]+`.`+E[g.path],p.array,S,b);h.interpolation===`CUBICSPLINE`&&(k.createInterpolant=function(e){return new v(this.times,this.values,this.getValueSize()/3,e)},k.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),l.push(k)}}}return new c.AnimationClip(t.name?t.name:`animation_`+e,void 0,l)})},R.prototype.loadNode=function(e){var t=this.json,r=this.extensions,i=this,a=t.meshReferences,o=t.meshUses,s=t.nodes[e];return function(){var e=[];return s.mesh!==void 0&&e.push(i.getDependency(`mesh`,s.mesh).then(function(e){var t;if(a[s.mesh]>1){var n=o[s.mesh]++;t=e.clone(),t.name+=`_instance_`+n}else t=e;return s.weights!==void 0&&t.traverse(function(e){if(e.isMesh)for(var t=0,n=s.weights.length;t<n;t++)e.morphTargetInfluences[t]=s.weights[t]}),t})),s.camera!==void 0&&e.push(i.getDependency(`camera`,s.camera)),s.extensions&&s.extensions[n.KHR_LIGHTS_PUNCTUAL]&&s.extensions[n.KHR_LIGHTS_PUNCTUAL].light!==void 0&&e.push(i.getDependency(`light`,s.extensions[n.KHR_LIGHTS_PUNCTUAL].light)),Promise.all(e)}().then(function(t){var n=s.isBone===!0?new c.Bone:t.length>1?new c.Group:t.length===1?t[0]:new c.Object3D;if(n!==t[0])for(var a=0,o=t.length;a<o;a++)n.add(t[a]);if(s.name&&(n.userData.name=s.name,n.name=c.PropertyBinding.sanitizeNodeName(s.name)),N(n,s),s.extensions&&M(r,n,s),s.matrix!==void 0){var l=new c.Matrix4;l.fromArray(s.matrix),n.applyMatrix4(l)}else s.translation!==void 0&&n.position.fromArray(s.translation),s.rotation!==void 0&&n.quaternion.fromArray(s.rotation),s.scale!==void 0&&n.scale.fromArray(s.scale);return i.associations.set(n,{type:`nodes`,index:e}),n})},R.prototype.loadScene=function(){function e(t,n,r,i){var a=r.nodes[t];return i.getDependency(`node`,t).then(function(e){if(a.skin===void 0)return e;var t;return i.getDependency(`skin`,a.skin).then(function(e){t=e;for(var n=[],r=0,a=t.joints.length;r<a;r++)n.push(i.getDependency(`node`,t.joints[r]));return Promise.all(n)}).then(function(n){return e.traverse(function(e){if(e.isMesh){for(var r=[],i=[],a=0,o=n.length;a<o;a++){var s=n[a];if(s){r.push(s);var l=new c.Matrix4;t.inverseBindMatrices!==void 0&&l.fromArray(t.inverseBindMatrices.array,a*16),i.push(l)}else console.warn(`THREE.GLTFLoader: Joint "%s" could not be found.`,t.joints[a])}e.bind(new c.Skeleton(r,i),e.matrixWorld)}}),e})}).then(function(t){n.add(t);var o=[];if(a.children)for(var s=a.children,c=0,l=s.length;c<l;c++){var u=s[c];o.push(e(u,t,r,i))}return Promise.all(o)})}return function(t){var n=this.json,r=this.extensions,i=this.json.scenes[t],a=this,o=new c.Group;i.name&&(o.name=i.name),N(o,i),i.extensions&&M(r,o,i);for(var s=i.nodes||[],l=[],u=0,d=s.length;u<d;u++)l.push(e(s[u],o,n,a));return Promise.all(l).then(function(){return o})}}(),e})(),u=function(e){c.Loader.call(this,e),this.decoderPath=``,this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL=``,this.defaultAttributeIDs={position:`POSITION`,normal:`NORMAL`,color:`COLOR`,uv:`TEX_COORD`},this.defaultAttributeTypes={position:`Float32Array`,normal:`Float32Array`,color:`Float32Array`,uv:`Float32Array`}};u.prototype=Object.assign(Object.create(c.Loader.prototype),{constructor:u,setDecoderPath:function(e){return this.decoderPath=e,this},setDecoderConfig:function(e){return this.decoderConfig=e,this},setWorkerLimit:function(e){return this.workerLimit=e,this},setVerbosity:function(){console.warn(`THREE.DRACOLoader: The .setVerbosity() method has been removed.`)},setDrawMode:function(){console.warn(`THREE.DRACOLoader: The .setDrawMode() method has been removed.`)},setSkipDequantization:function(){console.warn(`THREE.DRACOLoader: The .setSkipDequantization() method has been removed.`)},load:function(e,t,n,r){var i=new c.FileLoader(this.manager);i.setPath(this.path),i.setResponseType(`arraybuffer`),this.crossOrigin===`use-credentials`&&i.setWithCredentials(!0),i.load(e,e=>{var n={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,n).then(t).catch(r)},n,r)},decodeDracoFile:function(e,t,n,r){var i={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n};this.decodeGeometry(e,i).then(t)},decodeGeometry:function(e,t){for(var n in t.attributeTypes){var r=t.attributeTypes[n];r.BYTES_PER_ELEMENT!==void 0&&(t.attributeTypes[n]=r.name)}var i=JSON.stringify(t);if(u.taskCache.has(e)){var a=u.taskCache.get(e);if(a.key===i)return a.promise;if(e.byteLength===0)throw Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}var o,s=this.workerNextTaskID++,c=e.byteLength,l=this._getWorker(s,c).then(n=>(o=n,new Promise((n,r)=>{o._callbacks[s]={resolve:n,reject:r},o.postMessage({type:`decode`,id:s,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return l.catch(()=>!0).then(()=>{o&&s&&this._releaseTask(o,s)}),u.taskCache.set(e,{key:i,promise:l}),l},_createGeometry:function(e){var t=new c.BufferGeometry;e.index&&t.setIndex(new c.BufferAttribute(e.index.array,1));for(var n=0;n<e.attributes.length;n++){var r=e.attributes[n],i=r.name,a=r.array,o=r.itemSize;t.setAttribute(i,new c.BufferAttribute(a,o))}return t},_loadLibrary:function(e,t){var n=new c.FileLoader(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),new Promise((t,r)=>{n.load(e,t,void 0,r)})},preload:function(){return this._initDecoder(),this},_initDecoder:function(){if(this.decoderPending)return this.decoderPending;var e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,t=[];return e?t.push(this._loadLibrary(`draco_decoder.js`,`text`)):(t.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),t.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(t).then(t=>{var n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);var r=u.DRACOWorker.toString(),i=[`/* draco decoder */`,n,``,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(`
261
- `);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending},_getWorker:function(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){var n=new Worker(this.workerSourceURL);n._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:`init`,decoderConfig:this.decoderConfig}),n.onmessage=function(e){var t=e.data;switch(t.type){case`decode`:n._callbacks[t.id].resolve(t);break;case`error`:n._callbacks[t.id].reject(t);break;default:console.error(`THREE.DRACOLoader: Unexpected message, "`+t.type+`"`)}},this.workerPool.push(n)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});var n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})},_releaseTask:function(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]},debug:function(){console.log(`Task load: `,this.workerPool.map(e=>e._taskLoad))},dispose:function(){for(var e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}),u.DRACOWorker=function(){var e,t;onmessage=function(r){var i=r.data;switch(i.type){case`init`:e=i.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case`decode`:var a=i.buffer,o=i.taskConfig;t.then(e=>{var t=e.draco,r=new t.Decoder,s=new t.DecoderBuffer;s.Init(new Int8Array(a),a.byteLength);try{var c=n(t,r,s,o),l=c.attributes.map(e=>e.array.buffer);c.index&&l.push(c.index.array.buffer),self.postMessage({type:`decode`,id:i.id,geometry:c},l)}catch(e){console.error(e),self.postMessage({type:`error`,id:i.id,error:e.message})}finally{t.destroy(s),t.destroy(r)}});break}};function n(e,t,n,i){var a=i.attributeIDs,o=i.attributeTypes,s,c,l=t.GetEncodedGeometryType(n);if(l===e.TRIANGULAR_MESH)s=new e.Mesh,c=t.DecodeBufferToMesh(n,s);else if(l===e.POINT_CLOUD)s=new e.PointCloud,c=t.DecodeBufferToPointCloud(n,s);else throw Error(`THREE.DRACOLoader: Unexpected geometry type.`);if(!c.ok()||s.ptr===0)throw Error(`THREE.DRACOLoader: Decoding failed: `+c.error_msg());var u={index:null,attributes:[]};for(var d in a){var f=self[o[d]],p,m;if(i.useUniqueIDs)m=a[d],p=t.GetAttributeByUniqueId(s,m);else{if(m=t.GetAttributeId(s,e[a[d]]),m===-1)continue;p=t.GetAttribute(s,m)}u.attributes.push(r(e,t,s,d,f,p))}if(l===e.TRIANGULAR_MESH){for(var h=s.num_faces(),g=h*3,_=new Uint32Array(g),v=new e.DracoInt32Array,y=0;y<h;++y){t.GetFaceFromMesh(s,y,v);for(var b=0;b<3;++b)_[y*3+b]=v.GetValue(b)}u.index={array:_,itemSize:1},e.destroy(v)}return e.destroy(s),u}function r(e,t,n,r,i,a){var o=a.num_components(),s=n.num_points()*o,c,l;switch(i){case Float32Array:c=new e.DracoFloat32Array,t.GetAttributeFloatForAllPoints(n,a,c),l=new Float32Array(s);break;case Int8Array:c=new e.DracoInt8Array,t.GetAttributeInt8ForAllPoints(n,a,c),l=new Int8Array(s);break;case Int16Array:c=new e.DracoInt16Array,t.GetAttributeInt16ForAllPoints(n,a,c),l=new Int16Array(s);break;case Int32Array:c=new e.DracoInt32Array,t.GetAttributeInt32ForAllPoints(n,a,c),l=new Int32Array(s);break;case Uint8Array:c=new e.DracoUInt8Array,t.GetAttributeUInt8ForAllPoints(n,a,c),l=new Uint8Array(s);break;case Uint16Array:c=new e.DracoUInt16Array,t.GetAttributeUInt16ForAllPoints(n,a,c),l=new Uint16Array(s);break;case Uint32Array:c=new e.DracoUInt32Array,t.GetAttributeUInt32ForAllPoints(n,a,c),l=new Uint32Array(s);break;default:throw Error(`THREE.DRACOLoader: Unexpected attribute type.`)}for(var u=0;u<s;u++)l[u]=c.GetValue(u);return e.destroy(c),{name:r,array:l,itemSize:o}}},u.taskCache=new WeakMap,u.setDecoderPath=function(){console.warn(`THREE.DRACOLoader: The .setDecoderPath() method has been removed. Use instance methods.`)},u.setDecoderConfig=function(){console.warn(`THREE.DRACOLoader: The .setDecoderConfig() method has been removed. Use instance methods.`)},u.releaseDecoderModule=function(){console.warn(`THREE.DRACOLoader: The .releaseDecoderModule() method has been removed. Use instance methods.`)},u.getDecoderModule=function(){console.warn(`THREE.DRACOLoader: The .getDecoderModule() method has been removed. Use instance methods.`)};var d=function(e){c.CompressedTextureLoader.call(this,e)};d.prototype=Object.assign(Object.create(c.CompressedTextureLoader.prototype),{constructor:d,parse:function(e,t){var n={mipmaps:[],width:0,height:0,format:null,mipmapCount:1},r=542327876,i=131072,a=512,o=1024,s=2048,l=4096,u=8192,d=16384,f=32768,p=4;function m(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}function h(e){return String.fromCharCode(e&255,e>>8&255,e>>16&255,e>>24&255)}function g(e,t,n,r){for(var i=n*r*4,a=new Uint8Array(e,t,i),o=new Uint8Array(i),s=0,c=0,l=0;l<r;l++)for(var u=0;u<n;u++){var d=a[c];c++;var f=a[c];c++;var p=a[c];c++;var m=a[c];c++,o[s]=p,s++,o[s]=f,s++,o[s]=d,s++,o[s]=m,s++}return o}var _=m(`DXT1`),v=m(`DXT3`),y=m(`DXT5`),b=m(`ETC1`),x=31,S=0,C=1,w=2,T=3,E=4,D=7,O=20,k=21,A=22,j=23,M=24,N=25,P=26,F=28,I=new Int32Array(e,0,x);if(I[S]!==r)return console.error(`THREE.DDSLoader.parse: Invalid magic number in DDS header.`),n;if(!I[O]&p)return console.error(`THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code.`),n;var L,R=I[k],z=!1;switch(R){case _:L=8,n.format=c.RGB_S3TC_DXT1_Format;break;case v:L=16,n.format=c.RGBA_S3TC_DXT3_Format;break;case y:L=16,n.format=c.RGBA_S3TC_DXT5_Format;break;case b:L=8,n.format=c.RGB_ETC1_Format;break;default:if(I[A]===32&&I[j]&16711680&&I[M]&65280&&I[N]&255&&I[P]&4278190080)z=!0,L=64,n.format=c.RGBAFormat;else return console.error(`THREE.DDSLoader.parse: Unsupported FourCC code `,h(R)),n}n.mipmapCount=1,I[w]&i&&t!==!1&&(n.mipmapCount=Math.max(1,I[D]));var B=I[F];if(n.isCubemap=!!(B&a),n.isCubemap&&(!(B&o)||!(B&s)||!(B&l)||!(B&u)||!(B&d)||!(B&f)))return console.error(`THREE.DDSLoader.parse: Incomplete cubemap faces`),n;n.width=I[E],n.height=I[T];for(var V=I[C]+4,H=n.isCubemap?6:1,U=0;U<H;U++)for(var W=n.width,G=n.height,K=0;K<n.mipmapCount;K++){if(z)var q=g(e,V,W,G),J=q.length;else var J=Math.max(4,W)/4*Math.max(4,G)/4*L,q=new Uint8Array(e,V,J);var Y={data:q,width:W,height:G};n.mipmaps.push(Y),V+=J,W=Math.max(W>>1,1),G=Math.max(G>>1,1)}return n}});var f=class extends c.Group{constructor(e){super(),this.needsRender=!0,e&&e.children.length&&this.add(...e.children),this.mixer=new c.AnimationMixer(this)}clone(){let e=super.clone(!0);return e.mixer=new c.AnimationMixer(e),e.needsRender=!0,e}},p=`https://vr-public.realsee-cdn.cn/release/static/image/release/five/resource/draco/1.5.6/`,m=class extends l{static get version(){return`6.8.8`}constructor(e){super(e),this.ddsLoader=new d(e),this.dracoLoader=new u(e),this.dracoLoader.setDecoderPath(p)}load(e,t,n,r){return super.load(e,t,n,r)}parse(e,t,n,r){return super.parse(e,t,e=>{let t=new f(e.scene),r=e.scenes.map(n=>n===e.scene?t:new f(n));n(Object.assign(e,{scene:t,scenes:r}))},r)}};exports.DDSLoader=d,exports.DRACOLoader=u,exports.GLTFLoader=m,exports.GLTFObject=f,exports.THREEGLTFLoader=l;
261
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending},_getWorker:function(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){var n=new Worker(this.workerSourceURL);n._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:`init`,decoderConfig:this.decoderConfig}),n.onmessage=function(e){var t=e.data;switch(t.type){case`decode`:n._callbacks[t.id].resolve(t);break;case`error`:n._callbacks[t.id].reject(t);break;default:console.error(`THREE.DRACOLoader: Unexpected message, "`+t.type+`"`)}},this.workerPool.push(n)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});var n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})},_releaseTask:function(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]},debug:function(){console.log(`Task load: `,this.workerPool.map(e=>e._taskLoad))},dispose:function(){for(var e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}),u.DRACOWorker=function(){var e,t;onmessage=function(r){var i=r.data;switch(i.type){case`init`:e=i.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case`decode`:var a=i.buffer,o=i.taskConfig;t.then(e=>{var t=e.draco,r=new t.Decoder,s=new t.DecoderBuffer;s.Init(new Int8Array(a),a.byteLength);try{var c=n(t,r,s,o),l=c.attributes.map(e=>e.array.buffer);c.index&&l.push(c.index.array.buffer),self.postMessage({type:`decode`,id:i.id,geometry:c},l)}catch(e){console.error(e),self.postMessage({type:`error`,id:i.id,error:e.message})}finally{t.destroy(s),t.destroy(r)}});break}};function n(e,t,n,i){var a=i.attributeIDs,o=i.attributeTypes,s,c,l=t.GetEncodedGeometryType(n);if(l===e.TRIANGULAR_MESH)s=new e.Mesh,c=t.DecodeBufferToMesh(n,s);else if(l===e.POINT_CLOUD)s=new e.PointCloud,c=t.DecodeBufferToPointCloud(n,s);else throw Error(`THREE.DRACOLoader: Unexpected geometry type.`);if(!c.ok()||s.ptr===0)throw Error(`THREE.DRACOLoader: Decoding failed: `+c.error_msg());var u={index:null,attributes:[]};for(var d in a){var f=self[o[d]],p,m;if(i.useUniqueIDs)m=a[d],p=t.GetAttributeByUniqueId(s,m);else{if(m=t.GetAttributeId(s,e[a[d]]),m===-1)continue;p=t.GetAttribute(s,m)}u.attributes.push(r(e,t,s,d,f,p))}if(l===e.TRIANGULAR_MESH){for(var h=s.num_faces(),g=h*3,_=new Uint32Array(g),v=new e.DracoInt32Array,y=0;y<h;++y){t.GetFaceFromMesh(s,y,v);for(var b=0;b<3;++b)_[y*3+b]=v.GetValue(b)}u.index={array:_,itemSize:1},e.destroy(v)}return e.destroy(s),u}function r(e,t,n,r,i,a){var o=a.num_components(),s=n.num_points()*o,c,l;switch(i){case Float32Array:c=new e.DracoFloat32Array,t.GetAttributeFloatForAllPoints(n,a,c),l=new Float32Array(s);break;case Int8Array:c=new e.DracoInt8Array,t.GetAttributeInt8ForAllPoints(n,a,c),l=new Int8Array(s);break;case Int16Array:c=new e.DracoInt16Array,t.GetAttributeInt16ForAllPoints(n,a,c),l=new Int16Array(s);break;case Int32Array:c=new e.DracoInt32Array,t.GetAttributeInt32ForAllPoints(n,a,c),l=new Int32Array(s);break;case Uint8Array:c=new e.DracoUInt8Array,t.GetAttributeUInt8ForAllPoints(n,a,c),l=new Uint8Array(s);break;case Uint16Array:c=new e.DracoUInt16Array,t.GetAttributeUInt16ForAllPoints(n,a,c),l=new Uint16Array(s);break;case Uint32Array:c=new e.DracoUInt32Array,t.GetAttributeUInt32ForAllPoints(n,a,c),l=new Uint32Array(s);break;default:throw Error(`THREE.DRACOLoader: Unexpected attribute type.`)}for(var u=0;u<s;u++)l[u]=c.GetValue(u);return e.destroy(c),{name:r,array:l,itemSize:o}}},u.taskCache=new WeakMap,u.setDecoderPath=function(){console.warn(`THREE.DRACOLoader: The .setDecoderPath() method has been removed. Use instance methods.`)},u.setDecoderConfig=function(){console.warn(`THREE.DRACOLoader: The .setDecoderConfig() method has been removed. Use instance methods.`)},u.releaseDecoderModule=function(){console.warn(`THREE.DRACOLoader: The .releaseDecoderModule() method has been removed. Use instance methods.`)},u.getDecoderModule=function(){console.warn(`THREE.DRACOLoader: The .getDecoderModule() method has been removed. Use instance methods.`)};var d=function(e){c.CompressedTextureLoader.call(this,e)};d.prototype=Object.assign(Object.create(c.CompressedTextureLoader.prototype),{constructor:d,parse:function(e,t){var n={mipmaps:[],width:0,height:0,format:null,mipmapCount:1},r=542327876,i=131072,a=512,o=1024,s=2048,l=4096,u=8192,d=16384,f=32768,p=4;function m(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}function h(e){return String.fromCharCode(e&255,e>>8&255,e>>16&255,e>>24&255)}function g(e,t,n,r){for(var i=n*r*4,a=new Uint8Array(e,t,i),o=new Uint8Array(i),s=0,c=0,l=0;l<r;l++)for(var u=0;u<n;u++){var d=a[c];c++;var f=a[c];c++;var p=a[c];c++;var m=a[c];c++,o[s]=p,s++,o[s]=f,s++,o[s]=d,s++,o[s]=m,s++}return o}var _=m(`DXT1`),v=m(`DXT3`),y=m(`DXT5`),b=m(`ETC1`),x=31,S=0,C=1,w=2,T=3,E=4,D=7,O=20,k=21,A=22,j=23,M=24,N=25,P=26,F=28,I=new Int32Array(e,0,x);if(I[S]!==r)return console.error(`THREE.DDSLoader.parse: Invalid magic number in DDS header.`),n;if(!I[O]&p)return console.error(`THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code.`),n;var L,R=I[k],z=!1;switch(R){case _:L=8,n.format=c.RGB_S3TC_DXT1_Format;break;case v:L=16,n.format=c.RGBA_S3TC_DXT3_Format;break;case y:L=16,n.format=c.RGBA_S3TC_DXT5_Format;break;case b:L=8,n.format=c.RGB_ETC1_Format;break;default:if(I[A]===32&&I[j]&16711680&&I[M]&65280&&I[N]&255&&I[P]&4278190080)z=!0,L=64,n.format=c.RGBAFormat;else return console.error(`THREE.DDSLoader.parse: Unsupported FourCC code `,h(R)),n}n.mipmapCount=1,I[w]&i&&t!==!1&&(n.mipmapCount=Math.max(1,I[D]));var B=I[F];if(n.isCubemap=!!(B&a),n.isCubemap&&(!(B&o)||!(B&s)||!(B&l)||!(B&u)||!(B&d)||!(B&f)))return console.error(`THREE.DDSLoader.parse: Incomplete cubemap faces`),n;n.width=I[E],n.height=I[T];for(var V=I[C]+4,H=n.isCubemap?6:1,U=0;U<H;U++)for(var W=n.width,G=n.height,K=0;K<n.mipmapCount;K++){if(z)var q=g(e,V,W,G),J=q.length;else var J=Math.max(4,W)/4*Math.max(4,G)/4*L,q=new Uint8Array(e,V,J);var Y={data:q,width:W,height:G};n.mipmaps.push(Y),V+=J,W=Math.max(W>>1,1),G=Math.max(G>>1,1)}return n}});var f=class extends c.Group{constructor(e){super(),this.needsRender=!0,e&&e.children.length&&this.add(...e.children),this.mixer=new c.AnimationMixer(this)}clone(){let e=super.clone(!0);return e.mixer=new c.AnimationMixer(e),e.needsRender=!0,e}},p=`https://vr-public.realsee-cdn.cn/release/static/image/release/five/resource/draco/1.5.6/`,m=class extends l{static get version(){return`6.9.0-alpha.0`}constructor(e){super(e),this.ddsLoader=new d(e),this.dracoLoader=new u(e),this.dracoLoader.setDecoderPath(p)}load(e,t,n,r){return super.load(e,t,n,r)}parse(e,t,n,r){return super.parse(e,t,e=>{let t=new f(e.scene),r=e.scenes.map(n=>n===e.scene?t:new f(n));n(Object.assign(e,{scene:t,scenes:r}))},r)}};exports.DDSLoader=d,exports.DRACOLoader=u,exports.GLTFLoader=m,exports.GLTFObject=f,exports.THREEGLTFLoader=l;
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 6/25/2026
5
- * Version: 6.8.8
4
+ * Generated: 7/2/2026
5
+ * Version: 6.9.0-alpha.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -1588,7 +1588,7 @@ var K = class extends e.Group {
1588
1588
  }
1589
1589
  }, Te = "https://vr-public.realsee-cdn.cn/release/static/image/release/five/resource/draco/1.5.6/", Ee = class extends U {
1590
1590
  static get version() {
1591
- return "6.8.8";
1591
+ return "6.9.0-alpha.0";
1592
1592
  }
1593
1593
  constructor(e) {
1594
1594
  super(e), this.ddsLoader = new G(e), this.dracoLoader = new W(e), this.dracoLoader.setDecoderPath(Te);
package/line/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 6/25/2026
5
- * Version: 6.8.8
4
+ * Generated: 7/2/2026
5
+ * Version: 6.9.0-alpha.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -451,4 +451,4 @@
451
451
  #include <premultiplied_alpha_fragment>
452
452
 
453
453
  }
454
- `},d=class extends c.ShaderMaterial{constructor(e){super({uniforms:c.UniformsUtils.clone(u.uniforms),vertexShader:u.vertexShader,fragmentShader:u.fragmentShader,clipping:!0}),this.type=`LineMaterial`,this.dashed=!1,Object.defineProperties(this,{color:{enumerable:!0,get(){return this.uniforms.diffuse.value},set(e){this.uniforms.diffuse.value=e}},linewidth:{enumerable:!0,get(){return this.uniforms.linewidth.value},set(e){this.uniforms.linewidth.value=e}},dashScale:{enumerable:!0,get(){return this.uniforms.dashScale.value},set(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get(){return this.uniforms.dashSize.value},set(e){this.uniforms.dashSize.value=e}},gapSize:{enumerable:!0,get(){return this.uniforms.gapSize.value},set(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get(){return this.uniforms.opacity.value},set(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get(){return this.uniforms.resolution.value},set(e){this.uniforms.resolution.value.copy(e)}}}),this.setValues(e)}};Object.assign(d.prototype,{isLineMaterial:!0});var f=class extends c.Mesh{constructor(e,t){super(),this.type=`LineSegments2`,this.geometry=e===void 0?new l:e,this.material=t===void 0?new d({color:Math.random()*16777215}):t}computeLineDistances(){let e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,r=new Float32Array(2*t.count),i=new c.Vector3,a=new c.Vector3;for(var o=0,s=0,l=t.count;o<l;o++,s+=2)i.fromBufferAttribute(t,o),a.fromBufferAttribute(n,o),r[s]=s===0?0:r[s-1],r[s+1]=r[s]+i.distanceTo(a);let u=new c.InstancedInterleavedBuffer(r,2,1);return e.setAttribute(`instanceDistanceStart`,new c.InterleavedBufferAttribute(u,1,0)),e.setAttribute(`instanceDistanceEnd`,new c.InterleavedBufferAttribute(u,1,1)),this}raycast(e,t){e.camera===null&&console.error(`LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.`);let n=e.ray,r=e.camera,i=r.projectionMatrix,a=this.geometry,o=this.material,s=o.resolution,l=o.linewidth,u=a.attributes.instanceStart,d=a.attributes.instanceEnd,f=new c.Vector4,p=new c.Vector4,m=new c.Vector4,h=new c.Vector3,g=new c.Matrix4,_=new c.Line3,v=new c.Vector3;n.at(1,m),m.w=1,m.applyMatrix4(r.matrixWorldInverse),m.applyMatrix4(i),m.multiplyScalar(1/m.w),m.x*=s.x/2,m.y*=s.y/2,m.z=0,h.copy(m);let y=this.matrixWorld;g.multiplyMatrices(r.matrixWorldInverse,y);for(var b=0,x=u.count;b<x;b++){f.fromBufferAttribute(u,b),p.fromBufferAttribute(d,b),f.w=1,p.w=1,f.applyMatrix4(g),p.applyMatrix4(g),f.applyMatrix4(i),p.applyMatrix4(i),f.multiplyScalar(1/f.w),p.multiplyScalar(1/p.w);var S=f.z<-1&&p.z<-1,C=f.z>1&&p.z>1;if(S||C)continue;f.x*=s.x/2,f.y*=s.y/2,p.x*=s.x/2,p.y*=s.y/2,_.start.copy(f),_.start.z=0,_.end.copy(p),_.end.z=0;let e=_.closestPointToPointParameter(h,!0);_.at(e,v);let r=c.MathUtils.lerp(f.z,p.z,e),a=r>=-1&&r<=1;var w=h.distanceTo(v)<l*.5;if(a&&w){_.start.fromBufferAttribute(u,b),_.end.fromBufferAttribute(d,b),_.start.applyMatrix4(y),_.end.applyMatrix4(y);var T=new c.Vector3,E=new c.Vector3;n.distanceSqToSegment(_.start,_.end,E,T),t.push({point:E,pointOnLine:T,distance:n.origin.distanceTo(E),object:this,faceIndex:b})}}}};Object.assign(f.prototype,{isLineSegments2:!0});var p=class extends f{constructor(e,t){super(e,t),this.type=`Line2`}};Object.assign(p.prototype,{isLine2:!0});var m=class extends l{constructor(){super(),this.type=`LineGeometry`}setPositions(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setPositions(n),this}setColors(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setColors(n),this}fromLine(e){let t=e.geometry;if(t instanceof c.Geometry){let e=new c.BufferGeometry().fromGeometry(t);this.setPositions(e.attributes.position.array)}else t instanceof c.BufferGeometry&&this.setPositions(t.attributes.position.array);return this}copy(){return this}};Object.assign(m.prototype,{isLineGeometry:!0});var h=14467195,g=8,_=2,v=20,y=null,b=class extends c.Object3D{static get version(){return`6.8.8`}constructor(e=new c.Vector3,t=new c.Vector3){super(),this.type=`FiveLine`,this.needsRender=!0;let n=new m,r=new d({color:h,linewidth:_,dashScale:v,dashed:!1});this.line=new p(n,r);let i=new c.BufferGeometry,a=new c.PointsMaterial({color:h,size:g,map:y||(y=new c.TextureLoader().load(`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==`)),sizeAttenuation:!1,transparent:!0});this.points=new c.Points(i,a),this.points.renderOrder=11,this.points.frustumCulled=!1,this.setPoints(e,t),this.add(this.line,this.points)}setPoints(e,t){let n=[].concat(e.toArray(),t.toArray());this.points.geometry.setAttribute(`position`,new c.BufferAttribute(new Float32Array(n),3)),this.line.geometry.setPositions(n),this.line.computeLineDistances(),this.needsRender=!0}getPoints(){let e=this.points.geometry.attributes.position.array;return[new c.Vector3(e[0],e[1],e[2]),new c.Vector3(e[3],e[4],e[5])]}setMaterial(e){let t=this.line.material;for(let n in e){if(!e.hasOwnProperty(n))continue;let r=e[n];n===`dashed`?(t.dashed=r,r?t.defines.USE_DASH=``:delete t.defines.USE_DASH,t.needsUpdate=!0):t[n]=e[n]}this.needsRender=!0}setResolution(e,t){let n=this.line.material.resolution;(n.x!==e||n.y!==t)&&(n.set(e,t),this.needsRender=!0)}};Object.assign(b.prototype,{isFiveLine:!0}),exports.Line=b,exports.LineGeometry=m,exports.LineMaterial=d,exports.LineSegmentsGeometry=l,exports.THREE_Line2=p,exports.THREE_LineSegments2=f;
454
+ `},d=class extends c.ShaderMaterial{constructor(e){super({uniforms:c.UniformsUtils.clone(u.uniforms),vertexShader:u.vertexShader,fragmentShader:u.fragmentShader,clipping:!0}),this.type=`LineMaterial`,this.dashed=!1,Object.defineProperties(this,{color:{enumerable:!0,get(){return this.uniforms.diffuse.value},set(e){this.uniforms.diffuse.value=e}},linewidth:{enumerable:!0,get(){return this.uniforms.linewidth.value},set(e){this.uniforms.linewidth.value=e}},dashScale:{enumerable:!0,get(){return this.uniforms.dashScale.value},set(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get(){return this.uniforms.dashSize.value},set(e){this.uniforms.dashSize.value=e}},gapSize:{enumerable:!0,get(){return this.uniforms.gapSize.value},set(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get(){return this.uniforms.opacity.value},set(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get(){return this.uniforms.resolution.value},set(e){this.uniforms.resolution.value.copy(e)}}}),this.setValues(e)}};Object.assign(d.prototype,{isLineMaterial:!0});var f=class extends c.Mesh{constructor(e,t){super(),this.type=`LineSegments2`,this.geometry=e===void 0?new l:e,this.material=t===void 0?new d({color:Math.random()*16777215}):t}computeLineDistances(){let e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,r=new Float32Array(2*t.count),i=new c.Vector3,a=new c.Vector3;for(var o=0,s=0,l=t.count;o<l;o++,s+=2)i.fromBufferAttribute(t,o),a.fromBufferAttribute(n,o),r[s]=s===0?0:r[s-1],r[s+1]=r[s]+i.distanceTo(a);let u=new c.InstancedInterleavedBuffer(r,2,1);return e.setAttribute(`instanceDistanceStart`,new c.InterleavedBufferAttribute(u,1,0)),e.setAttribute(`instanceDistanceEnd`,new c.InterleavedBufferAttribute(u,1,1)),this}raycast(e,t){e.camera===null&&console.error(`LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.`);let n=e.ray,r=e.camera,i=r.projectionMatrix,a=this.geometry,o=this.material,s=o.resolution,l=o.linewidth,u=a.attributes.instanceStart,d=a.attributes.instanceEnd,f=new c.Vector4,p=new c.Vector4,m=new c.Vector4,h=new c.Vector3,g=new c.Matrix4,_=new c.Line3,v=new c.Vector3;n.at(1,m),m.w=1,m.applyMatrix4(r.matrixWorldInverse),m.applyMatrix4(i),m.multiplyScalar(1/m.w),m.x*=s.x/2,m.y*=s.y/2,m.z=0,h.copy(m);let y=this.matrixWorld;g.multiplyMatrices(r.matrixWorldInverse,y);for(var b=0,x=u.count;b<x;b++){f.fromBufferAttribute(u,b),p.fromBufferAttribute(d,b),f.w=1,p.w=1,f.applyMatrix4(g),p.applyMatrix4(g),f.applyMatrix4(i),p.applyMatrix4(i),f.multiplyScalar(1/f.w),p.multiplyScalar(1/p.w);var S=f.z<-1&&p.z<-1,C=f.z>1&&p.z>1;if(S||C)continue;f.x*=s.x/2,f.y*=s.y/2,p.x*=s.x/2,p.y*=s.y/2,_.start.copy(f),_.start.z=0,_.end.copy(p),_.end.z=0;let e=_.closestPointToPointParameter(h,!0);_.at(e,v);let r=c.MathUtils.lerp(f.z,p.z,e),a=r>=-1&&r<=1;var w=h.distanceTo(v)<l*.5;if(a&&w){_.start.fromBufferAttribute(u,b),_.end.fromBufferAttribute(d,b),_.start.applyMatrix4(y),_.end.applyMatrix4(y);var T=new c.Vector3,E=new c.Vector3;n.distanceSqToSegment(_.start,_.end,E,T),t.push({point:E,pointOnLine:T,distance:n.origin.distanceTo(E),object:this,faceIndex:b})}}}};Object.assign(f.prototype,{isLineSegments2:!0});var p=class extends f{constructor(e,t){super(e,t),this.type=`Line2`}};Object.assign(p.prototype,{isLine2:!0});var m=class extends l{constructor(){super(),this.type=`LineGeometry`}setPositions(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setPositions(n),this}setColors(e){let t=e.length-3,n=new Float32Array(2*t);for(let r=0;r<t;r+=3)n[2*r]=e[r],n[2*r+1]=e[r+1],n[2*r+2]=e[r+2],n[2*r+3]=e[r+3],n[2*r+4]=e[r+4],n[2*r+5]=e[r+5];return super.setColors(n),this}fromLine(e){let t=e.geometry;if(t instanceof c.Geometry){let e=new c.BufferGeometry().fromGeometry(t);this.setPositions(e.attributes.position.array)}else t instanceof c.BufferGeometry&&this.setPositions(t.attributes.position.array);return this}copy(){return this}};Object.assign(m.prototype,{isLineGeometry:!0});var h=14467195,g=8,_=2,v=20,y=null,b=class extends c.Object3D{static get version(){return`6.9.0-alpha.0`}constructor(e=new c.Vector3,t=new c.Vector3){super(),this.type=`FiveLine`,this.needsRender=!0;let n=new m,r=new d({color:h,linewidth:_,dashScale:v,dashed:!1});this.line=new p(n,r);let i=new c.BufferGeometry,a=new c.PointsMaterial({color:h,size:g,map:y||(y=new c.TextureLoader().load(`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==`)),sizeAttenuation:!1,transparent:!0});this.points=new c.Points(i,a),this.points.renderOrder=11,this.points.frustumCulled=!1,this.setPoints(e,t),this.add(this.line,this.points)}setPoints(e,t){let n=[].concat(e.toArray(),t.toArray());this.points.geometry.setAttribute(`position`,new c.BufferAttribute(new Float32Array(n),3)),this.line.geometry.setPositions(n),this.line.computeLineDistances(),this.needsRender=!0}getPoints(){let e=this.points.geometry.attributes.position.array;return[new c.Vector3(e[0],e[1],e[2]),new c.Vector3(e[3],e[4],e[5])]}setMaterial(e){let t=this.line.material;for(let n in e){if(!e.hasOwnProperty(n))continue;let r=e[n];n===`dashed`?(t.dashed=r,r?t.defines.USE_DASH=``:delete t.defines.USE_DASH,t.needsUpdate=!0):t[n]=e[n]}this.needsRender=!0}setResolution(e,t){let n=this.line.material.resolution;(n.x!==e||n.y!==t)&&(n.set(e,t),this.needsRender=!0)}};Object.assign(b.prototype,{isFiveLine:!0}),exports.Line=b,exports.LineGeometry=m,exports.LineMaterial=d,exports.LineSegmentsGeometry=l,exports.THREE_Line2=p,exports.THREE_LineSegments2=f;
package/line/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 6/25/2026
5
- * Version: 6.8.8
4
+ * Generated: 7/2/2026
5
+ * Version: 6.9.0-alpha.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -549,7 +549,7 @@ Object.assign(o.prototype, { isLineGeometry: !0 });
549
549
  //#region build/line/index.js
550
550
  var s = 14467195, c = 8, l = 2, u = 20, d = null, f = class extends e.Object3D {
551
551
  static get version() {
552
- return "6.8.8";
552
+ return "6.9.0-alpha.0";
553
553
  }
554
554
  constructor(t = new e.Vector3(), n = new e.Vector3()) {
555
555
  super(), this.type = "FiveLine", this.needsRender = !0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realsee/five",
3
- "version": "6.8.8",
3
+ "version": "6.9.0-alpha.0",
4
4
  "description": "Realsee Renderer SDK",
5
5
  "author": "BEIKE REALSEE TECHNOLOGY (HK) LIMITED",
6
6
  "license": "SEE LICENSE IN TERMS.txt",
@@ -21,7 +21,7 @@
21
21
  }
22
22
  },
23
23
  "dependencies": {
24
- "protobufjs": "^8.0.1",
24
+ "protobufjs": "8.0.1",
25
25
  "sharp": "^0.34.3",
26
26
  "tslib": "^2.8.1"
27
27
  },