@realsee/five 6.8.0-alpha.5 → 6.8.0-alpha.7

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 (243) hide show
  1. package/README.md +2 -5
  2. package/ai_guides/README.md +5 -0
  3. package/ai_guides/api.md +13 -0
  4. package/ai_guides/features/flowing-light-2d-pass.md +218 -0
  5. package/ai_guides/features/flowing-light-3d-pass.md +240 -0
  6. package/ai_guides/features/gaussian-blur-pass.md +202 -0
  7. package/ai_guides/features/load-external-model.md +16 -0
  8. package/ai_guides/features/load-progress.md +140 -0
  9. package/ai_guides/features/parameter.md +7 -0
  10. package/ai_guides/features/postprocessing.md +35 -2
  11. package/ai_guides/features/raycast.md +9 -0
  12. package/ai_guides/features/view-layer.md +8 -3
  13. package/ai_guides/features/work.md +17 -0
  14. package/ai_guides/glossary.md +17 -0
  15. package/ai_guides/release_notes/6.8.md +81 -0
  16. package/docs/assets/hierarchy.js +1 -1
  17. package/docs/assets/navigation.js +1 -1
  18. package/docs/assets/search.js +1 -1
  19. package/docs/classes/five.AdaptiveLuminancePass.html +1 -1
  20. package/docs/classes/five.BoundingMesh.html +1 -1
  21. package/docs/classes/five.Camera.html +1 -1
  22. package/docs/classes/five.EyeDomeLightingPass.html +1 -1
  23. package/docs/classes/five.Five.html +71 -71
  24. package/docs/classes/five.FivePass.html +1 -1
  25. package/docs/classes/five.InternalWebGLRenderer.html +1 -1
  26. package/docs/classes/five.Model.html +31 -31
  27. package/docs/classes/five.ModelScene.html +1 -1
  28. package/docs/classes/five.NetworkSubscribe.html +1 -1
  29. package/docs/classes/five.PBMContainer.html +1 -1
  30. package/docs/classes/five.PBMGSObject.html +1 -1
  31. package/docs/classes/five.PBMGroup.html +1 -1
  32. package/docs/classes/five.PBMMesh.html +1 -1
  33. package/docs/classes/five.PBMMeshMaterial.html +1 -1
  34. package/docs/classes/five.PBMPointCloud.html +1 -1
  35. package/docs/classes/five.PBMPointCloudMaterial.html +1 -1
  36. package/docs/classes/five.PBMSkinnedMesh.html +1 -1
  37. package/docs/classes/five.PanoCircleMesh.html +1 -1
  38. package/docs/classes/five.PanoCircleMeshCustom.html +1 -1
  39. package/docs/classes/five.PanoCircleMeshSolid.html +1 -1
  40. package/docs/classes/five.Parameter.html +1 -1
  41. package/docs/classes/five.Scene.html +1 -1
  42. package/docs/classes/five.Subscribe.html +1 -1
  43. package/docs/classes/five.Tile.html +1 -1
  44. package/docs/classes/five.Tile3D.html +30 -26
  45. package/docs/classes/five.TileNode.html +1 -1
  46. package/docs/classes/five.Trajectory.html +1 -1
  47. package/docs/classes/five.TrajectoryNode.html +1 -1
  48. package/docs/classes/five.Work.html +16 -16
  49. package/docs/classes/five.WorkResolvedObserver.html +27 -2
  50. package/docs/classes/gltf-loader.DDSLoader.html +1 -1
  51. package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
  52. package/docs/classes/gltf-loader.GLTFLoader.html +1 -1
  53. package/docs/classes/gltf-loader.GLTFObject.html +1 -1
  54. package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
  55. package/docs/classes/line.Line.html +1 -1
  56. package/docs/classes/line.LineGeometry.html +1 -1
  57. package/docs/classes/line.LineMaterial.html +1 -1
  58. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  59. package/docs/classes/line.THREE_Line2.html +1 -1
  60. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  61. package/docs/classes/plugins.BasePlugin.Controller.html +1 -1
  62. package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
  63. package/docs/classes/sticker.Sticker.html +1 -1
  64. package/docs/classes/vfx.Airflow.html +1 -1
  65. package/docs/classes/vfx.Flame.html +1 -1
  66. package/docs/classes/vfx.Particle.html +1 -1
  67. package/docs/classes/vfx.ParticleGPU.html +1 -1
  68. package/docs/classes/vfx.SpotLight.html +1 -1
  69. package/docs/documents/README.html +5 -0
  70. package/docs/documents/api.html +28 -3
  71. package/docs/documents/features_flowing-light-2d-pass.html +124 -0
  72. package/docs/documents/features_flowing-light-3d-pass.html +129 -0
  73. package/docs/documents/features_gaussian-blur-pass.html +182 -0
  74. package/docs/documents/features_load-external-model.html +19 -2
  75. package/docs/documents/features_load-progress.html +110 -0
  76. package/docs/documents/features_parameter.html +7 -0
  77. package/docs/documents/features_postprocessing.html +17 -3
  78. package/docs/documents/features_raycast.html +1 -1
  79. package/docs/documents/features_view-layer.html +9 -3
  80. package/docs/documents/features_work.html +1 -1
  81. package/docs/documents/glossary.html +21 -1
  82. package/docs/documents/release_notes_6.8.html +92 -0
  83. package/docs/functions/five.loadAt3d.html +1 -1
  84. package/docs/functions/five.loadB3dm.html +1 -1
  85. package/docs/functions/five.loadDome.html +1 -1
  86. package/docs/functions/five.loadDomez.html +1 -1
  87. package/docs/functions/five.loadFbx.html +1 -1
  88. package/docs/functions/five.loadGltf.html +1 -1
  89. package/docs/functions/five.loadPbm.html +1 -1
  90. package/docs/functions/five.loadPly.html +1 -1
  91. package/docs/functions/five.loadPnts.html +1 -1
  92. package/docs/functions/five.loadSplat.html +1 -1
  93. package/docs/functions/five.loadSpz.html +1 -1
  94. package/docs/functions/five.loadX3p.html +1 -1
  95. package/docs/functions/five.parseWork.html +1 -1
  96. package/docs/functions/vue.useFiveWorks.html +2 -2
  97. package/docs/hierarchy.html +1 -1
  98. package/docs/index.html +5 -0
  99. package/docs/interfaces/five.AddableObject.html +1 -1
  100. package/docs/interfaces/five.AjaxOptions.html +1 -1
  101. package/docs/interfaces/five.BaseEvent.html +2 -2
  102. package/docs/interfaces/five.EventCallback.html +15 -11
  103. package/docs/interfaces/five.GestureEvent.html +2 -2
  104. package/docs/interfaces/five.ImageOptions.html +1 -1
  105. package/docs/interfaces/five.IntersectEvent.html +2 -2
  106. package/docs/interfaces/five.IntersectMesh.html +1 -1
  107. package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
  108. package/docs/interfaces/five.Intersection.html +4 -3
  109. package/docs/interfaces/five.LooseWorkWithExtrinsics.html +6 -6
  110. package/docs/interfaces/five.ModeChangeEvent.html +2 -2
  111. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  112. package/docs/interfaces/five.ModelEvent.html +2 -2
  113. package/docs/interfaces/five.ModelSceneEvent.html +2 -2
  114. package/docs/interfaces/five.ModelTileEvent.html +8 -0
  115. package/docs/interfaces/five.MovePanoOptions.html +1 -1
  116. package/docs/interfaces/five.NetworkAbortError.html +1 -1
  117. package/docs/interfaces/five.NetworkFirbiddenError.html +1 -1
  118. package/docs/interfaces/five.NetworkOptions.html +1 -1
  119. package/docs/interfaces/five.NetworkProxyError.html +1 -1
  120. package/docs/interfaces/five.NetworkResourceEvent.html +2 -2
  121. package/docs/interfaces/five.NetworkResponseError.html +1 -1
  122. package/docs/interfaces/five.NetworkTimeoutError.html +1 -1
  123. package/docs/interfaces/five.ObjectEvent.html +2 -2
  124. package/docs/interfaces/five.PBMMaterial.html +1 -1
  125. package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
  126. package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
  127. package/docs/interfaces/five.PanoCircleMeshInterface.html +1 -1
  128. package/docs/interfaces/five.PanoEvent.html +2 -2
  129. package/docs/interfaces/five.PanoTextureEvent.html +2 -2
  130. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  131. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  132. package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
  133. package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
  134. package/docs/interfaces/five.ParameterValue.html +1 -1
  135. package/docs/interfaces/five.Pose.html +1 -1
  136. package/docs/interfaces/five.RenderEvent.html +2 -2
  137. package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
  138. package/docs/interfaces/five.State.html +1 -1
  139. package/docs/interfaces/five.StateEvent.html +2 -2
  140. package/docs/interfaces/five.TextureOptions.html +1 -1
  141. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  142. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  143. package/docs/interfaces/five.ViewLayer.html +30 -26
  144. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  145. package/docs/interfaces/five.WorkImage.html +1 -1
  146. package/docs/interfaces/five.WorkModel.html +8 -8
  147. package/docs/interfaces/five.WorkModelLayer.html +6 -6
  148. package/docs/interfaces/five.WorkObserver.html +27 -2
  149. package/docs/interfaces/five.WorkTile.html +1 -1
  150. package/docs/interfaces/five.WorksEvent.html +2 -2
  151. package/docs/interfaces/five.XRControllerEvent.html +2 -2
  152. package/docs/interfaces/five.XRGestureEvent.html +2 -2
  153. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
  154. package/docs/interfaces/five.XRSessionEvent.html +2 -2
  155. package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
  156. package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
  157. package/docs/interfaces/plugins.BasePlugin.State.html +1 -1
  158. package/docs/interfaces/plugins.DynamicPathLinePluginController.html +1 -1
  159. package/docs/interfaces/plugins.DynamicPathLinePluginType.EventMap.html +1 -1
  160. package/docs/interfaces/plugins.DynamicPathLinePluginType.State.html +1 -1
  161. package/docs/interfaces/plugins.ItemMaskController.html +1 -1
  162. package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
  163. package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
  164. package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
  165. package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
  166. package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
  167. package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
  168. package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
  169. package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
  170. package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
  171. package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
  172. package/docs/interfaces/plugins.TrajectoryController.html +1 -1
  173. package/docs/interfaces/react.FiveInjectionTypes.html +13 -13
  174. package/docs/modules/five.html +1 -1
  175. package/docs/modules.html +1 -1
  176. package/docs/types/five.EventTypes.html +12 -10
  177. package/docs/types/five.NetworkProgressCallback.html +1 -1
  178. package/docs/types/five.ParseOptions.html +6 -6
  179. package/docs/types/plugins.BasePlugin.EventMap.html +1 -1
  180. package/five/application/events.d.ts +5 -1
  181. package/five/declare.d.ts +2 -1
  182. package/five/index.d.ts +1 -1
  183. package/five/index.js +429 -73
  184. package/five/index.mjs +5385 -4485
  185. package/five/model/intersection.d.ts +2 -0
  186. package/five/model/loaders/at3d.d.ts +1 -0
  187. package/five/model/loaders/b3dm.d.ts +1 -0
  188. package/five/model/loaders/dome.d.ts +1 -0
  189. package/five/model/loaders/domez.d.ts +1 -0
  190. package/five/model/loaders/fbx.d.ts +1 -0
  191. package/five/model/loaders/glTF-helpers/extensions/KHR_animation_pointer.d.ts +6 -0
  192. package/five/model/loaders/glTF-helpers/extensions/KHR_node_visibility.d.ts +6 -0
  193. package/five/model/loaders/glTF-helpers/index.d.ts +4 -0
  194. package/five/model/loaders/gltf.d.ts +1 -0
  195. package/five/model/loaders/obj.d.ts +1 -0
  196. package/five/model/loaders/pbm.d.ts +1 -0
  197. package/five/model/loaders/ply.d.ts +1 -0
  198. package/five/model/loaders/pnts.d.ts +1 -0
  199. package/five/model/loaders/splat.d.ts +1 -0
  200. package/five/model/loaders/spz.d.ts +1 -0
  201. package/five/model/loaders/x3p.d.ts +1 -0
  202. package/five/model/model.d.ts +26 -1
  203. package/five/model/tile3d/index.d.ts +5 -1
  204. package/five/model/tile3d/tile.d.ts +1 -0
  205. package/five/model/tile3d/trajectory.d.ts +1 -0
  206. package/five/model/view-layer.d.ts +1 -2
  207. package/five/renderer/postprocessing/index.d.ts +2 -0
  208. package/five/renderer/postprocessing/passes/flowing-light-2d-pass.d.ts +22 -0
  209. package/five/renderer/postprocessing/passes/flowing-light-3d-pass.d.ts +22 -0
  210. package/five/renderer/postprocessing/passes/gaussian-blur-pass.d.ts +1 -0
  211. package/five/utils/ajax.d.ts +1 -1
  212. package/five/utils/event.d.ts +6 -0
  213. package/five/work/work.d.ts +35 -2
  214. package/five/work/workObserverUtils.d.ts +36 -0
  215. package/gltf-loader/index.js +3 -3
  216. package/gltf-loader/index.mjs +3 -3
  217. package/line/index.js +3 -3
  218. package/line/index.mjs +3 -3
  219. package/llms.txt +5 -0
  220. package/package.json +1 -1
  221. package/plugins/index.js +2 -2
  222. package/plugins/index.mjs +2 -2
  223. package/react/index.js +2 -2
  224. package/react/index.mjs +2 -2
  225. package/shader-lib/index.js +2 -2
  226. package/shader-lib/index.mjs +2 -2
  227. package/sticker/index.js +3 -3
  228. package/sticker/index.mjs +3 -3
  229. package/umd/five-gltf-loader.js +3 -3
  230. package/umd/five-line.js +3 -3
  231. package/umd/five-plugins.js +2 -2
  232. package/umd/five-react.js +2 -2
  233. package/umd/five-shader-lib.js +2 -2
  234. package/umd/five-sticker.js +3 -3
  235. package/umd/five-vfx.js +2 -2
  236. package/umd/five-vue.js +2 -2
  237. package/umd/five.js +429 -73
  238. package/vfx/index.js +2 -2
  239. package/vfx/index.mjs +2 -2
  240. package/vue/index.js +2 -2
  241. package/vue/index.mjs +2 -2
  242. package/work-downloader/index.js +2 -2
  243. package/work-downloader/index.mjs +2 -2
@@ -1,6 +1,7 @@
1
1
  import * as THREE from 'three';
2
2
  import { type ViewLayer } from './view-layer';
3
3
  import { type Model } from './model';
4
+ import { type Tile } from './tile3d/tile';
4
5
  export interface Intersection extends THREE.Intersection {
5
6
  /** 楼层 */
6
7
  floorIndex: number;
@@ -12,5 +13,6 @@ export interface Intersection extends THREE.Intersection {
12
13
  floor: number;
13
14
  model?: Model;
14
15
  viewLayer?: ViewLayer;
16
+ tile?: Tile;
15
17
  }
16
18
  export declare function sortIntersects(intersects: Intersection[], sortByDistance?: boolean, firstHitOnly?: boolean): Intersection[];
@@ -8,4 +8,5 @@ export declare function loadAt3d(url: string, options?: {
8
8
  textureBaseUri?: string;
9
9
  textureArray?: string[];
10
10
  fetcher?: Fetcher;
11
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
11
12
  }): Promise<LoadResultType>;
@@ -5,4 +5,5 @@ export declare function loadB3dm(url: string, options?: {
5
5
  upAxis?: 'Y' | 'Z';
6
6
  light?: boolean;
7
7
  fetcher?: Fetcher;
8
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
8
9
  }): Promise<LoadResultType>;
@@ -10,6 +10,7 @@ export declare function loadDome(url: string, options?: {
10
10
  textureOptions?: TextureOptions;
11
11
  textureBaseUri?: string;
12
12
  fetcher?: Fetcher;
13
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
13
14
  }): Promise<LoadResultType>;
14
15
  declare function parse(domeBuffer: ArrayLike<number>, light: boolean, textureBase: WorkModel["textureBase"], textureOptions: TextureOptions, fetcher: Fetcher): Promise<{
15
16
  createAt: number;
@@ -7,4 +7,5 @@ export declare function loadDomez(url: string, options?: {
7
7
  textureOptions?: TextureOptions;
8
8
  textureBaseUri?: string;
9
9
  fetcher?: Fetcher;
10
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
10
11
  }): Promise<LoadResultType>;
@@ -4,4 +4,5 @@ export declare function loadFbx(url: string, options?: {
4
4
  upAxis?: 'Y' | 'Z';
5
5
  light?: boolean;
6
6
  fetcher?: Fetcher;
7
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
7
8
  }): Promise<LoadResultType>;
@@ -0,0 +1,6 @@
1
+ import { BaseExtension } from './base';
2
+ /**
3
+ * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_animation_pointer
4
+ */
5
+ export declare class KHR_animation_pointer extends BaseExtension {
6
+ }
@@ -0,0 +1,6 @@
1
+ import { BaseExtension } from './base';
2
+ /**
3
+ * Specification: https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_node_visibility
4
+ */
5
+ export declare class KHR_node_visibility extends BaseExtension {
6
+ }
@@ -7,6 +7,8 @@ import { KHR_texture_basisu } from './extensions/KHR_texture_basisu';
7
7
  import { KHR_texture_transform } from './extensions/KHR_texture_transform';
8
8
  import { KHR_mesh_quantization } from './extensions/KHR_mesh_quantization';
9
9
  import { KHR_materials_unlit } from './extensions/KHR_materials_unlit';
10
+ import { KHR_node_visibility } from './extensions/KHR_node_visibility';
11
+ import { KHR_animation_pointer } from './extensions/KHR_animation_pointer';
10
12
  import { EXT_meshopt_compression } from './extensions/EXT_meshopt_compression';
11
13
  import { EXT_texture_webp } from './extensions/EXT_texture_webp';
12
14
  import { CESIUM_RTC } from './extensions/CESIUM_RTC';
@@ -20,6 +22,8 @@ export declare const EXTENSIONS: {
20
22
  KHR_texture_transform: typeof KHR_texture_transform;
21
23
  KHR_mesh_quantization: typeof KHR_mesh_quantization;
22
24
  KHR_materials_unlit: typeof KHR_materials_unlit;
25
+ KHR_node_visibility: typeof KHR_node_visibility;
26
+ KHR_animation_pointer: typeof KHR_animation_pointer;
23
27
  EXT_meshopt_compression: typeof EXT_meshopt_compression;
24
28
  EXT_texture_webp: typeof EXT_texture_webp;
25
29
  CESIUM_RTC: typeof CESIUM_RTC;
@@ -5,4 +5,5 @@ export declare function loadGltf(url: string, options?: {
5
5
  upAxis?: 'Y' | 'Z';
6
6
  light?: boolean;
7
7
  fetcher?: Fetcher;
8
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
8
9
  }): Promise<LoadResultType>;
@@ -5,4 +5,5 @@ export declare function loadObj(url: string, options?: {
5
5
  upAxis?: 'Y' | 'Z';
6
6
  light?: boolean;
7
7
  fetcher?: Fetcher;
8
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
8
9
  }): Promise<LoadResultType>;
@@ -12,6 +12,7 @@ export declare function loadPbm(url: string, options?: {
12
12
  textureBaseUri?: string;
13
13
  textureArray?: string[];
14
14
  fetcher?: Fetcher;
15
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
15
16
  }): Promise<LoadResultType>;
16
17
  declare function loadTexture(url: string, textureOptions: TextureOptions, fetcher: Fetcher): Promise<THREE.Texture>;
17
18
  declare function parse(pbmModel: IModel, light: boolean, textureBaseUri: string, textures: string[], textureOptions: TextureOptions, textureCachePromiseMap: Map<string, Promise<THREE.Texture>> | null, fetcher: Fetcher): Promise<{
@@ -20,4 +20,5 @@ export declare function loadPly<Type extends 'geometry' | 'line' | 'pbmMesh' | '
20
20
  }>;
21
21
  type?: Type;
22
22
  fetcher?: Fetcher;
23
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
23
24
  }): Promise<LoadResultType<ResultType>>;
@@ -4,4 +4,5 @@ export declare function loadPnts(url: string, options?: {
4
4
  upAxis?: 'Y' | 'Z';
5
5
  fetcher?: Fetcher;
6
6
  computeBoundingBox?: boolean;
7
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
7
8
  }): Promise<LoadResultType>;
@@ -4,4 +4,5 @@ export declare function loadSplat(url: string, options?: {
4
4
  modelUpAxis?: 'Y' | 'Z';
5
5
  upAxis?: 'Y' | 'Z';
6
6
  fetcher?: Fetcher;
7
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
7
8
  }): Promise<LoadResultType>;
@@ -10,4 +10,5 @@ export declare function loadSpz(url: string, options?: {
10
10
  modelUpAxis?: 'Y' | 'Z';
11
11
  upAxis?: 'Y' | 'Z';
12
12
  fetcher?: Fetcher;
13
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
13
14
  }): Promise<LoadResultType>;
@@ -7,6 +7,7 @@ export declare function loadX3p(url: string, options?: {
7
7
  color?: THREE.Color;
8
8
  light?: boolean;
9
9
  fetcher?: Fetcher;
10
+ onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
10
11
  }): Promise<LoadResultType>;
11
12
  declare function parse(arrayBuffer: Uint8Array, options: {
12
13
  light?: boolean;
@@ -6,6 +6,7 @@ import { type Intersection } from "./intersection";
6
6
  import { type Camera } from "../core/camera";
7
7
  import { Parameter, type ParameterValue } from './parameter';
8
8
  import { type ModelScene } from './model-scene';
9
+ import { type Tile } from './tile3d/tile';
9
10
  export interface Model {
10
11
  dispatchEvent(event: {
11
12
  type: 'error';
@@ -18,9 +19,17 @@ export interface Model {
18
19
  type: 'dispose';
19
20
  }): void;
20
21
  dispatchEvent(event: {
21
- type: 'shownFloorChange';
22
+ type: 'changeShownFloor';
22
23
  floorIndex: number | null;
23
24
  }): void;
25
+ dispatchEvent(event: {
26
+ type: 'tileLoad';
27
+ tile: Tile;
28
+ }): void;
29
+ dispatchEvent(event: {
30
+ type: 'tileUnload';
31
+ tile: Tile;
32
+ }): void;
24
33
  dispatchEvent(event: {
25
34
  type: string;
26
35
  [attachment: string]: any;
@@ -39,6 +48,14 @@ export interface Model {
39
48
  type: 'changeShownFloor';
40
49
  floorIndex: number | null;
41
50
  }) => void): void;
51
+ addEventListener(type: 'tileLoad', listener: (event: THREE.Event & {
52
+ type: 'tileLoad';
53
+ tile: Tile;
54
+ }) => void): void;
55
+ addEventListener(type: 'tileUnload', listener: (event: THREE.Event & {
56
+ type: 'tileUnload';
57
+ tile: Tile;
58
+ }) => void): void;
42
59
  addEventListener(type: string, listener: (event: THREE.Event) => void): void;
43
60
  removeEventListener(type: 'error', listener: (event: THREE.Event & {
44
61
  type: 'error';
@@ -54,6 +71,14 @@ export interface Model {
54
71
  type: 'changeShownFloor';
55
72
  floorIndex: number | null;
56
73
  }) => void): void;
74
+ removeEventListener(type: 'tileLoad', listener: (event: THREE.Event & {
75
+ type: 'tileLoad';
76
+ tile: Tile;
77
+ }) => void): void;
78
+ removeEventListener(type: 'tileUnload', listener: (event: THREE.Event & {
79
+ type: 'tileUnload';
80
+ tile: Tile;
81
+ }) => void): void;
57
82
  removeEventListener(type: string, listener: (event: THREE.Event) => void): void;
58
83
  }
59
84
  /**
@@ -30,8 +30,12 @@ export declare class Tile3D extends THREE.Object3D {
30
30
  parent: Model | null;
31
31
  /** meta 信息加载错误 */
32
32
  error?: Error | null;
33
- /** meta 信息加载错误 */
33
+ /** 加载错误 */
34
34
  onError?: (error: Error) => void;
35
+ /** 当瓦片加载 */
36
+ onTileLoad?: (tile: Tile) => void;
37
+ /** 当瓦片卸载 */
38
+ onTileUnload?: (tile: Tile) => void;
35
39
  /** 更新帧次数 */
36
40
  frameNumber: number;
37
41
  parameter: Parameter;
@@ -25,6 +25,7 @@ export declare class Tile {
25
25
  group?: number;
26
26
  data?: TileContentData;
27
27
  loadState: 'LOADING' | 'UNLOADED' | 'READY' | 'FAILED';
28
+ loadProgress: number;
28
29
  loadStateUpdateTime: number;
29
30
  loadfailRetryDelay: number;
30
31
  byteLength: number;
@@ -20,6 +20,7 @@ export declare class Trajectory {
20
20
  uri: string;
21
21
  data?: TrajectoryContentData;
22
22
  loadState: 'LOADING' | 'UNLOADED' | 'READY' | 'FAILED';
23
+ loadProgress: number;
23
24
  loadStateUpdateTime: number;
24
25
  loadfailRetryDelay: number;
25
26
  byteLength: number;
@@ -17,5 +17,4 @@ export declare function loadViewLayers(workModel: WorkModel, options: {
17
17
  fetcher: Fetcher;
18
18
  light: boolean;
19
19
  textureOptions?: TextureOptions;
20
- onError?: (error: Error) => void;
21
- }): Promise<ViewLayer>[];
20
+ }): Promise<ViewLayer[]>;
@@ -3,3 +3,5 @@ export { type Pass, FivePass } from './passes/pass';
3
3
  export { AdaptiveLuminancePass } from './passes/adaptive-luminance-pass';
4
4
  export { EyeDomeLightingPass } from './passes/eye-dome-lighting-pass';
5
5
  export { GaussianBlurPass } from './passes/gaussian-blur-pass';
6
+ export { FlowingLight2DPass } from './passes/flowing-light-2d-pass';
7
+ export { FlowingLight3DPass } from './passes/flowing-light-3d-pass';
@@ -0,0 +1,22 @@
1
+ import * as THREE from 'three';
2
+ import { FivePass } from './pass';
3
+ import { type Camera } from '../../../core/camera';
4
+ type Line = {
5
+ points: THREE.Vector2[];
6
+ totalLength: number;
7
+ color: THREE.Color;
8
+ opacity?: number;
9
+ duration?: number;
10
+ };
11
+ export declare class FlowingLight2DPass extends FivePass {
12
+ private camera;
13
+ private fsQuad;
14
+ private material;
15
+ private uTime;
16
+ constructor(camera: Camera);
17
+ setLines(lines: Line[]): void;
18
+ private createDataTexture;
19
+ render(renderer: THREE.WebGLRenderer, writeBuffer: THREE.WebGLRenderTarget, readBuffer: THREE.WebGLRenderTarget, deltaTime: number, maskActive?: boolean): void;
20
+ dispose(): void;
21
+ }
22
+ export {};
@@ -0,0 +1,22 @@
1
+ import * as THREE from 'three';
2
+ import { FivePass } from './pass';
3
+ import { type Camera } from '../../../core/camera';
4
+ type Line = {
5
+ points: THREE.Vector3[];
6
+ totalLength: number;
7
+ color: THREE.Color;
8
+ opacity?: number;
9
+ duration?: number;
10
+ };
11
+ export declare class FlowingLight3DPass extends FivePass {
12
+ private camera;
13
+ private fsQuad;
14
+ private material;
15
+ private uTime;
16
+ constructor(camera: Camera);
17
+ setLines(lines: Line[]): void;
18
+ private createDataTexture;
19
+ render(renderer: THREE.WebGLRenderer, writeBuffer: THREE.WebGLRenderTarget, readBuffer: THREE.WebGLRenderTarget, deltaTime: number, maskActive?: boolean): void;
20
+ dispose(): void;
21
+ }
22
+ export {};
@@ -7,5 +7,6 @@ export declare class GaussianBlurPass extends FivePass {
7
7
  private material;
8
8
  constructor(camera: Camera);
9
9
  render(renderer: THREE.WebGLRenderer, writeBuffer: THREE.WebGLRenderTarget, readBuffer: THREE.WebGLRenderTarget, deltaTime: number, maskActive?: boolean): void;
10
+ setRadius(radius: number): void;
10
11
  dispose(): void;
11
12
  }
@@ -36,7 +36,7 @@ type NetworkError = NetworkResponseError | NetworkAbortError | NetworkTimeoutErr
36
36
  type NetworkCallback = (error: NetworkError | null, response: NetworkResponse | null) => void;
37
37
  type NetworkSuccessCallback<T = any> = (response: NetworkResponse<T>) => void;
38
38
  type NetworkErrorCallback = (error: NetworkError) => void;
39
- type NetworkProgressCallback = (percent: number) => void;
39
+ type NetworkProgressCallback = (percent: number, loaded?: number, total?: number) => void;
40
40
  declare class NetworkSubscribe extends Subscribe<{
41
41
  network(source: string, type: NetworkType, state: NetworkState, detail: string): void;
42
42
  }> {
@@ -5,6 +5,7 @@ import { Mode } from '../application/mode';
5
5
  import { NetWorkMeta, NetworkType, NetworkState } from './ajax';
6
6
  import { Works, Work } from '../work';
7
7
  import { ModelScene, Model } from '../model';
8
+ import { type Tile } from '../model/tile3d/tile';
8
9
  import { Intersection } from '../model/intersection';
9
10
  import { MovePanoOptions } from '../types/movePanoOptions';
10
11
  export interface BaseEvent {
@@ -124,6 +125,11 @@ export interface ModelEvent extends BaseEvent {
124
125
  work: Work;
125
126
  error: Error | null;
126
127
  }
128
+ export interface ModelTileEvent extends BaseEvent {
129
+ model: Model;
130
+ work: Work;
131
+ tile: Tile;
132
+ }
127
133
  export interface ModeChangeEvent extends StateEvent {
128
134
  prevMode: Mode;
129
135
  mode: Mode;
@@ -1,7 +1,7 @@
1
1
  import * as THREE from "three";
2
2
  import type { Mode } from "../application/mode";
3
3
  import type { TilesetHeader } from "../model/tile3d/header";
4
- import { LooseWork, LoosePanoWork } from "./looseWorkType";
4
+ import type { LooseWork, LoosePanoWork } from "./looseWorkType";
5
5
  import { CubeFace } from "../types/cube";
6
6
  import type { PanoId } from "../utils/pano";
7
7
  /** 全景视频贴片 */
@@ -94,11 +94,44 @@ export interface WorkObserver {
94
94
  quaternion: THREE.Quaternion;
95
95
  /** 点位和模型的旋转对齐关系矩阵 */
96
96
  matrix: THREE.Matrix4;
97
+ /**
98
+ * 将方向向量转化为全景图 uv。
99
+ * @param vector - 全局的方向向量。单位向量。
100
+ * @param uvOrigin - top-left 原点在左上角,x轴向右,y轴向下[默认]。bottom-left 原点左下角,x轴向右,y轴向上。
101
+ * @returns uv坐标 取值范围 [0,1]。
102
+ */
103
+ vectorToEquirectangularUv(this: WorkObserver, vector: THREE.Vector3, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector2;
104
+ /**
105
+ * 将全景图 uv 转化为方向向量。
106
+ * @param uv - uv坐标 取值范围 [0,1]。
107
+ * @param uvOrigin - top-left 原点在左上角,x轴向右,y轴向下[默认]。bottom-left 原点左下角,x轴向右,y轴向上。
108
+ * @returns 全局的方向向量。单位向量。
109
+ */
110
+ equirectangularUvToVector(this: WorkObserver, uv: THREE.Vector2, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector3;
111
+ /**
112
+ * 将方向向量转化为获六视图 uv
113
+ * @param vector - 全局的方向向量。单位向量。
114
+ * @param uvOrigin - top-left 原点在左上角,x轴向右,y轴向下[默认]。bottom-left 原点左下角,x轴向右,y轴向上。
115
+ * @returns uv 坐标,取值范围 [0,1]
116
+ */
117
+ vectorToCubemapUv(this: WorkObserver, vector: THREE.Vector3, uvOrigin?: 'top-left' | 'bottom-left'): [cubeFace: CubeFace, cubemapUv: THREE.Vector2];
118
+ /**
119
+ * 将六视图 uv 转化为方向向量
120
+ * @param cubeFace - 六视图的某一面。
121
+ * @param uv - uv坐标 取值范围 [0,1]。
122
+ * @param uvOrigin - top-left 原点在左上角,x轴向右,y轴向下[默认]。bottom-left 原点左下角,x轴向右,y轴向上。
123
+ * @returns 全局的方向向量。单位向量。
124
+ */
125
+ cubemapUvToVector(this: WorkObserver, cubeFace: CubeFace, uv: THREE.Vector2, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector3;
126
+ /** 获取点位的全局坐标 */
127
+ getWorldPosition(this: WorkObserver): THREE.Vector3;
128
+ /** 获取点位的全局地面坐标 */
129
+ getWorldStandingPosition(this: WorkObserver): THREE.Vector3;
97
130
  }
98
131
  export interface WorkModelLayer {
99
132
  /** work */
100
133
  work: Work;
101
- /** 模型类型 point_cloud mesh gaussian_splatting */
134
+ /** 模型类型 point_cloud | mesh | gaussian_splatting */
102
135
  type: 'point_cloud' | 'mesh' | 'gaussian_splatting';
103
136
  /** 模型名称 */
104
137
  name: string;
@@ -0,0 +1,36 @@
1
+ import * as THREE from 'three';
2
+ import { type WorkObserver } from './work';
3
+ import { type CubeFace } from '../types/cube';
4
+ /**
5
+ * 将方向向量转化为全景图 uv。
6
+ * @param vector - 全局的方向向量。单位向量。
7
+ * @param uvOrigin - top-left 原点在左上角,x轴向右,y轴向下[默认]。bottom-left 原点左下角,x轴向右,y轴向上。
8
+ * @returns uv坐标 取值范围 [0,1]。
9
+ */
10
+ export declare function vectorToEquirectangularUv(this: WorkObserver, vector: THREE.Vector3, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector2;
11
+ /**
12
+ * 将全景图 uv 转化为方向向量。
13
+ * @param uv - uv坐标 取值范围 [0,1]。
14
+ * @param uvOrigin - top-left 原点在左上角,x轴向右,y轴向下[默认]。bottom-left 原点左下角,x轴向右,y轴向上。
15
+ * @returns 全局的方向向量。单位向量。
16
+ */
17
+ export declare function equirectangularUvToVector(this: WorkObserver, uv: THREE.Vector2, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector3;
18
+ /**
19
+ * 将方向向量转化为获六视图 uv
20
+ * @param vector - 全局的方向向量。单位向量。
21
+ * @param uvOrigin - top-left 原点在左上角,x轴向右,y轴向下[默认]。bottom-left 原点左下角,x轴向右,y轴向上。
22
+ * @returns uv 坐标,取值范围 [0,1]
23
+ */
24
+ export declare function vectorToCubemapUv(this: WorkObserver, vector: THREE.Vector3, uvOrigin?: 'top-left' | 'bottom-left'): [cubeFace: CubeFace, cubemapUv: THREE.Vector2];
25
+ /**
26
+ * 将六视图 uv 转化为方向向量
27
+ * @param cubeFace - 六视图的某一面。
28
+ * @param uv - uv坐标 取值范围 [0,1]。
29
+ * @param uvOrigin - top-left 原点在左上角,x轴向右,y轴向下[默认]。bottom-left 原点左下角,x轴向右,y轴向上。
30
+ * @returns 全局的方向向量。单位向量。
31
+ */
32
+ export declare function cubemapUvToVector(this: WorkObserver, cubeFace: CubeFace, uv: THREE.Vector2, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector3;
33
+ /** 获取点位的全局坐标 */
34
+ export declare function getWorldPosition(this: WorkObserver): THREE.Vector3;
35
+ /** 获取点位的全局地面坐标 */
36
+ export declare function getWorldStandingPosition(this: WorkObserver): THREE.Vector3;
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 2026/1/30
5
- * Version: 6.8.0-alpha.5
4
+ * Generated: 2026/2/10
5
+ * Version: 6.8.0-alpha.7
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -258,4 +258,4 @@
258
258
  `),a=["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
  `),i=["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
  `),s={specular:{value:new c.Color().setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};this._extraUniforms=s,this.onBeforeCompile=function(o){for(var l in s)o.uniforms[l]=s[l];o.fragmentShader=o.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;"),o.fragmentShader=o.fragmentShader.replace("uniform float metalness;","uniform float glossiness;"),o.fragmentShader=o.fragmentShader.replace("#include <roughnessmap_pars_fragment>",r),o.fragmentShader=o.fragmentShader.replace("#include <metalnessmap_pars_fragment>",n),o.fragmentShader=o.fragmentShader.replace("#include <roughnessmap_fragment>",t),o.fragmentShader=o.fragmentShader.replace("#include <metalnessmap_fragment>",a),o.fragmentShader=o.fragmentShader.replace("#include <lights_physical_fragment>",i)},Object.defineProperties(this,{specular:{get:function(){return s.specular.value},set:function(o){s.specular.value=o}},specularMap:{get:function(){return s.specularMap.value},set:function(o){s.specularMap.value=o}},glossiness:{get:function(){return s.glossiness.value},set:function(o){s.glossiness.value=o}},glossinessMap:{get:function(){return s.glossinessMap.value},set:function(o){s.glossinessMap.value=o,o?(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)}b.prototype=Object.create(c.MeshStandardMaterial.prototype),b.prototype.constructor=b,b.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 j(){return{name:u.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 b},extendParams:function(e,r,n){var t=r.extensions[this.name];e.color=new c.Color(1,1,1),e.opacity=1;var a=[];if(Array.isArray(t.diffuseFactor)){var i=t.diffuseFactor;e.color.fromArray(i),e.opacity=i[3]}if(t.diffuseTexture!==void 0&&a.push(n.assignTexture(e,"map",t.diffuseTexture)),e.emissive=new c.Color(0,0,0),e.glossiness=t.glossinessFactor!==void 0?t.glossinessFactor:1,e.specular=new c.Color(1,1,1),Array.isArray(t.specularFactor)&&e.specular.fromArray(t.specularFactor),t.specularGlossinessTexture!==void 0){var s=t.specularGlossinessTexture;a.push(n.assignTexture(e,"glossinessMap",s)),a.push(n.assignTexture(e,"specularMap",s))}return Promise.all(a)},createMaterial:function(e){var r=new b(e);return r.fog=!0,r.color=e.color,r.map=e.map===void 0?null:e.map,r.lightMap=null,r.lightMapIntensity=1,r.aoMap=e.aoMap===void 0?null:e.aoMap,r.aoMapIntensity=1,r.emissive=e.emissive,r.emissiveIntensity=1,r.emissiveMap=e.emissiveMap===void 0?null:e.emissiveMap,r.bumpMap=e.bumpMap===void 0?null:e.bumpMap,r.bumpScale=1,r.normalMap=e.normalMap===void 0?null:e.normalMap,r.normalMapType=c.TangentSpaceNormalMap,e.normalScale&&(r.normalScale=e.normalScale),r.displacementMap=null,r.displacementScale=1,r.displacementBias=0,r.specularMap=e.specularMap===void 0?null:e.specularMap,r.specular=e.specular,r.glossinessMap=e.glossinessMap===void 0?null:e.glossinessMap,r.glossiness=e.glossiness,r.alphaMap=null,r.envMap=e.envMap===void 0?null:e.envMap,r.envMapIntensity=1,r.refractionRatio=.98,r}}}function te(){this.name=u.KHR_MESH_QUANTIZATION}function P(e,r,n,t){c.Interpolant.call(this,e,r,n,t)}P.prototype=Object.create(c.Interpolant.prototype),P.prototype.constructor=P,P.prototype.copySampleValue_=function(e){for(var r=this.resultBuffer,n=this.sampleValues,t=this.valueSize,a=e*t*3+t,i=0;i!==t;i++)r[i]=n[a+i];return r},P.prototype.beforeStart_=P.prototype.copySampleValue_,P.prototype.afterEnd_=P.prototype.copySampleValue_,P.prototype.interpolate_=function(e,r,n,t){for(var a=this.resultBuffer,i=this.sampleValues,s=this.valueSize,o=s*2,l=s*3,f=t-r,v=(n-r)/f,d=v*v,h=d*v,S=e*l,L=S-l,E=-2*h+3*d,y=h-d,R=1-E,F=y-d+v,H=0;H!==s;H++){var ne=i[L+H+s],ae=i[L+H+o]*f,ee=i[S+H+s],K=i[S+H]*f;a[H]=R*ne+F*ae+E*ee+y*K}return a};function Q(e){this.parser=e,this.name=u.REALSEE_MATERIALS_LIGHTMAP}Q.prototype.getMaterialType=function(e){return c.MeshPhongMaterial},Q.prototype.extendParams=function(e,r,n){if(!r.extensions||!r.extensions[this.name])return Promise.resolve();var t=[],a=r.extensions[this.name];return a.lightMapTexture!==void 0&&t.push(n.assignTexture(e,"lightMap",a.lightMapTexture)),a.lightMapIntensity!==void 0&&(e.lightMapIntensity=a.lightMapIntensity),Promise.all(t)};var B={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Z={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},$={9728:c.NearestFilter,9729:c.LinearFilter,9984:c.NearestMipmapNearestFilter,9985:c.LinearMipmapNearestFilter,9986:c.NearestMipmapLinearFilter,9987:c.LinearMipmapLinearFilter},z={33071:c.ClampToEdgeWrapping,33648:c.MirroredRepeatWrapping,10497:c.RepeatWrapping},W={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},le={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},V={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Ae={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete},ce={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"},pe={"image/png":c.RGBAFormat,"image/jpeg":c.RGBFormat};function he(e,r){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(r)&&/^\//.test(e)&&(r=r.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:r+e)}function Se(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 oe(e,r,n){for(var t in n.extensions)e[t]===void 0&&(r.userData.gltfExtensions=r.userData.gltfExtensions||{},r.userData.gltfExtensions[t]=n.extensions[t])}function Y(e,r){r.extras!==void 0&&(typeof r.extras=="object"?Object.assign(e.userData,r.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+r.extras))}function ye(e,r,n){for(var t=!1,a=!1,i=0,s=r.length;i<s;i++){var o=r[i];if(o.POSITION!==void 0&&(t=!0),o.NORMAL!==void 0&&(a=!0),t&&a)break}if(!t&&!a)return Promise.resolve(e);for(var l=[],f=[],i=0,s=r.length;i<s;i++){var o=r[i];if(t){var v=o.POSITION!==void 0?n.getDependency("accessor",o.POSITION):e.attributes.position;l.push(v)}if(a){var v=o.NORMAL!==void 0?n.getDependency("accessor",o.NORMAL):e.attributes.normal;f.push(v)}}return Promise.all([Promise.all(l),Promise.all(f)]).then(function(d){var h=d[0],S=d[1];return t&&(e.morphAttributes.position=h),a&&(e.morphAttributes.normal=S),e.morphTargetsRelative=!0,e})}function Ee(e,r){if(e.updateMorphTargets(),r.weights!==void 0)for(var n=0,t=r.weights.length;n<t;n++)e.morphTargetInfluences[n]=r.weights[n];if(r.extras&&Array.isArray(r.extras.targetNames)){var a=r.extras.targetNames;if(e.morphTargetInfluences.length===a.length){e.morphTargetDictionary={};for(var n=0,t=a.length;n<t;n++)e.morphTargetDictionary[a[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function G(e){var r=e.extensions&&e.extensions[u.KHR_DRACO_MESH_COMPRESSION],n;return r?n="draco:"+r.bufferView+":"+r.indices+":"+q(r.attributes):n=e.indices+":"+q(e.attributes)+":"+e.mode,n}function q(e){for(var r="",n=Object.keys(e).sort(),t=0,a=n.length;t<a;t++)r+=n[t]+":"+e[n[t]]+";";return r}function O(e,r,n){this.json=e||{},this.extensions=r||{},this.options=n||{},this.cache=new g,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)}O.prototype.parse=function(e,r){var n=this,t=this.json,a=this.extensions;this.cache.removeAll(),this.markDefs(),Promise.all([this.getDependencies("scene"),this.getDependencies("animation"),this.getDependencies("camera")]).then(function(i){var s={scene:i[0][t.scene||0],scenes:i[0],animations:i[1],cameras:i[2],asset:t.asset,parser:n,userData:{}};oe(a,s,t),Y(s,t),e(s)}).catch(r)},O.prototype.markDefs=function(){for(var e=this.json.nodes||[],r=this.json.skins||[],n=this.json.meshes||[],t={},a={},i=0,s=r.length;i<s;i++)for(var o=r[i].joints,l=0,f=o.length;l<f;l++)e[o[l]].isBone=!0;for(var v=0,d=e.length;v<d;v++){var h=e[v];h.mesh!==void 0&&(t[h.mesh]===void 0&&(t[h.mesh]=a[h.mesh]=0),t[h.mesh]++,h.skin!==void 0&&(n[h.mesh].isSkinnedMesh=!0))}this.json.meshReferences=t,this.json.meshUses=a},O.prototype.getDependency=function(e,r){var n=e+":"+r,t=this.cache.get(n);if(!t){switch(e){case"scene":t=this.loadScene(r);break;case"node":t=this.loadNode(r);break;case"mesh":t=this.loadMesh(r);break;case"accessor":t=this.loadAccessor(r);break;case"bufferView":t=this.loadBufferView(r);break;case"buffer":t=this.loadBuffer(r);break;case"material":t=this.loadMaterial(r);break;case"texture":t=this.loadTexture(r);break;case"skin":t=this.loadSkin(r);break;case"animation":t=this.loadAnimation(r);break;case"camera":t=this.loadCamera(r);break;case"light":t=this.extensions[u.KHR_LIGHTS_PUNCTUAL].loadLight(r);break;default:throw new Error("Unknown type: "+e)}this.cache.add(n,t)}return t},O.prototype.getDependencies=function(e){var r=this.cache.get(e);if(!r){var n=this,t=this.json[e+(e==="mesh"?"es":"s")]||[];r=Promise.all(t.map(function(a,i){return n.getDependency(e,i)})),this.cache.add(e,r)}return r},O.prototype.loadBuffer=function(e){var r=this.json.buffers[e],n=this.fileLoader;if(r.type&&r.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+r.type+" buffer type is not supported.");if(r.uri===void 0&&e===0)return Promise.resolve(this.extensions[u.KHR_BINARY_GLTF].body);var t=this.options;return new Promise(function(a,i){n.load(he(r.uri,t.path),a,void 0,function(){i(new Error('THREE.GLTFLoader: Failed to load buffer "'+r.uri+'".'))})})},O.prototype.loadBufferView=function(e){var r=this.json.bufferViews[e];return this.getDependency("buffer",r.buffer).then(function(n){var t=r.byteLength||0,a=r.byteOffset||0;return n.slice(a,a+t)})},O.prototype.loadAccessor=function(e){var r=this,n=this.json,t=this.json.accessors[e];if(t.bufferView===void 0&&t.sparse===void 0)return Promise.resolve(null);var a=[];return t.bufferView!==void 0?a.push(this.getDependency("bufferView",t.bufferView)):a.push(null),t.sparse!==void 0&&(a.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),a.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(a).then(function(i){var s=i[0],o=W[t.type],l=Z[t.componentType],f=l.BYTES_PER_ELEMENT,v=f*o,d=t.byteOffset||0,h=t.bufferView!==void 0?n.bufferViews[t.bufferView].byteStride:void 0,S=t.normalized===!0,L,E;if(h&&h!==v){var y=Math.floor(d/h),R="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+y+":"+t.count,F=r.cache.get(R);F||(L=new l(s,y*h,t.count*h/f),F=new c.InterleavedBuffer(L,h/f),r.cache.add(R,F)),E=new c.InterleavedBufferAttribute(F,o,d%h/f,S)}else s===null?L=new l(t.count*o):L=new l(s,d,t.count*o),E=new c.BufferAttribute(L,o,S);if(t.sparse!==void 0){var H=W.SCALAR,ne=Z[t.sparse.indices.componentType],ae=t.sparse.indices.byteOffset||0,ee=t.sparse.values.byteOffset||0,K=new ne(i[1],ae,t.sparse.count*H),ue=new l(i[2],ee,t.sparse.count*o);s!==null&&(E=new c.BufferAttribute(E.array.slice(),E.itemSize,E.normalized));for(var N=0,Le=K.length;N<Le;N++){var se=K[N];if(E.setX(se,ue[N*o]),o>=2&&E.setY(se,ue[N*o+1]),o>=3&&E.setZ(se,ue[N*o+2]),o>=4&&E.setW(se,ue[N*o+3]),o>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return E})},O.prototype.loadTexture=function(e){var r=this,n=this.json,t=this.options,a=this.textureLoader,i=self.URL||self.webkitURL,s=n.textures[e],o=s.extensions||{},l;o[u.MSFT_TEXTURE_DDS]?l=n.images[o[u.MSFT_TEXTURE_DDS].source]:l=n.images[s.source];var f=l.uri,v=!1;return l.bufferView!==void 0&&(f=r.getDependency("bufferView",l.bufferView).then(function(d){v=!0;var h=new Blob([d],{type:l.mimeType});return f=i.createObjectURL(h),f})),Promise.resolve(f).then(function(d){var h=t.manager.getHandler(d);return h||(h=o[u.MSFT_TEXTURE_DDS]?r.extensions[u.MSFT_TEXTURE_DDS].ddsLoader:a),new Promise(function(S,L){h.load(he(d,t.path),S,void 0,L)})}).then(function(d){v===!0&&i.revokeObjectURL(f),d.flipY=!1,s.name&&(d.name=s.name),l.mimeType in pe&&(d.format=pe[l.mimeType]);var h=n.samplers||{},S=h[s.sampler]||{};return d.magFilter=$[S.magFilter]||c.LinearFilter,d.minFilter=$[S.minFilter]||c.LinearMipmapLinearFilter,d.wrapS=z[S.wrapS]||c.RepeatWrapping,d.wrapT=z[S.wrapT]||c.RepeatWrapping,r.associations.set(d,{type:"textures",index:e}),d})},O.prototype.assignTexture=function(e,r,n){var t=this;return this.getDependency("texture",n.index).then(function(a){if(!a.isCompressedTexture)switch(r){case"aoMap":case"emissiveMap":case"metalnessMap":case"normalMap":case"roughnessMap":a.format=c.RGBFormat;break}if(n.texCoord!==void 0&&n.texCoord!=0&&!(r==="aoMap"&&n.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+n.texCoord+" for texture "+r+" not yet supported."),t.extensions[u.KHR_TEXTURE_TRANSFORM]){var i=n.extensions!==void 0?n.extensions[u.KHR_TEXTURE_TRANSFORM]:void 0;if(i){var s=t.associations.get(a);a=t.extensions[u.KHR_TEXTURE_TRANSFORM].extendTexture(a,i),t.associations.set(a,s)}}e[r]=a})},O.prototype.assignFinalMaterial=function(e){var r=e.geometry,n=e.material,t=r.attributes.tangent!==void 0,a=r.attributes.color!==void 0,i=r.attributes.normal===void 0,s=e.isSkinnedMesh===!0,o=Object.keys(r.morphAttributes).length>0,l=o&&r.morphAttributes.normal!==void 0;if(e.isPoints){var f="PointsMaterial:"+n.uuid,v=this.cache.get(f);v||(v=new c.PointsMaterial,c.Material.prototype.copy.call(v,n),v.color.copy(n.color),v.map=n.map,v.sizeAttenuation=!1,this.cache.add(f,v)),n=v}else if(e.isLine){var f="LineBasicMaterial:"+n.uuid,d=this.cache.get(f);d||(d=new c.LineBasicMaterial,c.Material.prototype.copy.call(d,n),d.color.copy(n.color),this.cache.add(f,d)),n=d}if(t||a||i||s||o){var f="ClonedMaterial:"+n.uuid+":";n.isGLTFSpecularGlossinessMaterial&&(f+="specular-glossiness:"),s&&(f+="skinning:"),t&&(f+="vertex-tangents:"),a&&(f+="vertex-colors:"),i&&(f+="flat-shading:"),o&&(f+="morph-targets:"),l&&(f+="morph-normals:");var h=this.cache.get(f);h||(h=n.clone(),s&&(h.skinning=!0),t&&(h.vertexTangents=!0),a&&(h.vertexColors=!0),i&&(h.flatShading=!0),o&&(h.morphTargets=!0),l&&(h.morphNormals=!0),this.cache.add(f,h),this.associations.set(h,this.associations.get(n))),n=h}n.aoMap&&r.attributes.uv2===void 0&&r.attributes.uv!==void 0&&r.setAttribute("uv2",r.attributes.uv),n.normalScale&&!t&&(n.normalScale.y=-n.normalScale.y),n.clearcoatNormalScale&&!t&&(n.clearcoatNormalScale.y=-n.clearcoatNormalScale.y),e.material=n},O.prototype.loadMaterial=function(e){var r=this,n=this.json,t=this.extensions,a=n.materials[e],i,s={},o=a.extensions||{},l=[];if(o[u.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){var f=t[u.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];i=f.getMaterialType(),l.push(f.extendParams(s,a,r))}else if(o[u.KHR_MATERIALS_UNLIT]){var v=t[u.KHR_MATERIALS_UNLIT];i=v.getMaterialType(),l.push(v.extendParams(s,a,r))}else{i=c.MeshStandardMaterial;var d=a.pbrMetallicRoughness||{};if(s.color=new c.Color(1,1,1),s.opacity=1,Array.isArray(d.baseColorFactor)){var h=d.baseColorFactor;s.color.fromArray(h),s.opacity=h[3]}d.baseColorTexture!==void 0&&l.push(r.assignTexture(s,"map",d.baseColorTexture)),s.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,s.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(l.push(r.assignTexture(s,"metalnessMap",d.metallicRoughnessTexture)),l.push(r.assignTexture(s,"roughnessMap",d.metallicRoughnessTexture)))}a.doubleSided===!0&&(s.side=c.DoubleSide);var S=a.alphaMode||ce.OPAQUE;if(S===ce.BLEND?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,S===ce.MASK&&(s.alphaTest=a.alphaCutoff!==void 0?a.alphaCutoff:.5)),a.normalTexture!==void 0&&i!==c.MeshBasicMaterial&&(l.push(r.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&&i!==c.MeshBasicMaterial&&(l.push(r.assignTexture(s,"aoMap",a.occlusionTexture)),a.occlusionTexture.strength!==void 0&&(s.aoMapIntensity=a.occlusionTexture.strength)),a.emissiveFactor!==void 0&&i!==c.MeshBasicMaterial&&(s.emissive=new c.Color().fromArray(a.emissiveFactor)),a.emissiveTexture!==void 0&&i!==c.MeshBasicMaterial&&l.push(r.assignTexture(s,"emissiveMap",a.emissiveTexture)),o[u.KHR_MATERIALS_CLEARCOAT]){var L=t[u.KHR_MATERIALS_CLEARCOAT];i=L.getMaterialType(),l.push(L.extendParams(s,{extensions:o},r))}if(o[u.KHR_MATERIALS_TRANSMISSION]){var L=t[u.KHR_MATERIALS_TRANSMISSION];i=L.getMaterialType(),l.push(L.extendParams(s,{extensions:o},r))}if(o[u.REALSEE_MATERIALS_LIGHTMAP]){var E=t[u.REALSEE_MATERIALS_LIGHTMAP];i=E.getMaterialType(),l.push(E.extendParams(s,{extensions:o},r))}return Promise.all(l).then(function(){var y;return i===b?y=t[u.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(s):y=new i(s),a.name&&(y.name=a.name),y.map&&(y.map.encoding=c.sRGBEncoding),y.emissiveMap&&(y.emissiveMap.encoding=c.sRGBEncoding),Y(y,a),r.associations.set(y,{type:"materials",index:e}),a.extensions&&oe(t,y,a),y})};function ve(e,r,n){var t=r.attributes,a=new c.Box3;if(t.POSITION!==void 0){var i=n.json.accessors[t.POSITION],s=i.min,o=i.max;if(s!==void 0&&o!==void 0)a.set(new c.Vector3(s[0],s[1],s[2]),new c.Vector3(o[0],o[1],o[2]));else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;var l=r.targets;if(l!==void 0){for(var f=new c.Vector3,v=new c.Vector3,d=0,h=l.length;d<h;d++){var S=l[d];if(S.POSITION!==void 0){var i=n.json.accessors[S.POSITION],s=i.min,o=i.max;s!==void 0&&o!==void 0?(v.setX(Math.max(Math.abs(s[0]),Math.abs(o[0]))),v.setY(Math.max(Math.abs(s[1]),Math.abs(o[1]))),v.setZ(Math.max(Math.abs(s[2]),Math.abs(o[2]))),f.max(v)):console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}a.expandByVector(f)}e.boundingBox=a;var L=new c.Sphere;a.getCenter(L.center),L.radius=a.min.distanceTo(a.max)/2,e.boundingSphere=L}function X(e,r,n){var t=r.attributes,a=[];function i(f,v){return n.getDependency("accessor",f).then(function(d){e.setAttribute(v,d)})}for(var s in t){var o=le[s]||s.toLowerCase();o in e.attributes||a.push(i(t[s],o))}if(r.indices!==void 0&&!e.index){var l=n.getDependency("accessor",r.indices).then(function(f){e.setIndex(f)});a.push(l)}return Y(e,r),ve(e,r,n),Promise.all(a).then(function(){return r.targets!==void 0?ye(e,r.targets,n):e})}function ie(e,r){var n=e.getIndex();if(n===null){var t=[],a=e.getAttribute("position");if(a!==void 0){for(var i=0;i<a.count;i++)t.push(i);e.setIndex(t),n=e.getIndex()}else return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e}var s=n.count-2,o=[];if(r===c.TriangleFanDrawMode)for(var i=1;i<=s;i++)o.push(n.getX(0)),o.push(n.getX(i)),o.push(n.getX(i+1));else for(var i=0;i<s;i++)i%2===0?(o.push(n.getX(i)),o.push(n.getX(i+1)),o.push(n.getX(i+2))):(o.push(n.getX(i+2)),o.push(n.getX(i+1)),o.push(n.getX(i)));o.length/3!==s&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");var l=e.clone();return l.setIndex(o),l}return O.prototype.loadGeometries=function(e){var r=this,n=this.extensions,t=this.primitiveCache;function a(h){return n[u.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(h,r).then(function(S){return X(S,h,r)})}for(var i=[],s=0,o=e.length;s<o;s++){var l=e[s],f=G(l),v=t[f];if(v)i.push(v.promise);else{var d;l.extensions&&l.extensions[u.KHR_DRACO_MESH_COMPRESSION]?d=a(l):d=X(new c.BufferGeometry,l,r),t[f]={primitive:l,promise:d},i.push(d)}}return Promise.all(i)},O.prototype.loadMesh=function(e){for(var r=this,n=this.json,t=n.meshes[e],a=t.primitives,i=[],s=0,o=a.length;s<o;s++){var l=a[s].material===void 0?Se(this.cache):this.getDependency("material",a[s].material);i.push(l)}return i.push(r.loadGeometries(a)),Promise.all(i).then(function(f){for(var v=f.slice(0,f.length-1),d=f[f.length-1],h=[],S=0,L=d.length;S<L;S++){var E=d[S],y=a[S],R,F=v[S];if(y.mode===B.TRIANGLES||y.mode===B.TRIANGLE_STRIP||y.mode===B.TRIANGLE_FAN||y.mode===void 0)R=t.isSkinnedMesh===!0?new c.SkinnedMesh(E,F):new c.Mesh(E,F),R.isSkinnedMesh===!0&&!R.geometry.attributes.skinWeight.normalized&&R.normalizeSkinWeights(),y.mode===B.TRIANGLE_STRIP?R.geometry=ie(R.geometry,c.TriangleStripDrawMode):y.mode===B.TRIANGLE_FAN&&(R.geometry=ie(R.geometry,c.TriangleFanDrawMode));else if(y.mode===B.LINES)R=new c.LineSegments(E,F);else if(y.mode===B.LINE_STRIP)R=new c.Line(E,F);else if(y.mode===B.LINE_LOOP)R=new c.LineLoop(E,F);else if(y.mode===B.POINTS)R=new c.Points(E,F);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+y.mode);Object.keys(R.geometry.morphAttributes).length>0&&Ee(R,t),R.name=t.name||"mesh_"+e,d.length>1&&(R.name+="_"+S),Y(R,t),r.assignFinalMaterial(R),h.push(R)}if(h.length===1)return h[0];for(var H=new c.Group,S=0,L=h.length;S<L;S++)H.add(h[S]);return H})},O.prototype.loadCamera=function(e){var r,n=this.json.cameras[e],t=n[n.type];if(!t){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?r=new c.PerspectiveCamera(c.MathUtils.radToDeg(t.yfov),t.aspectRatio||1,t.znear||1,t.zfar||2e6):n.type==="orthographic"&&(r=new c.OrthographicCamera(-t.xmag,t.xmag,t.ymag,-t.ymag,t.znear,t.zfar)),n.name&&(r.name=n.name),Y(r,n),Promise.resolve(r)},O.prototype.loadSkin=function(e){var r=this.json.skins[e],n={joints:r.joints};return r.inverseBindMatrices===void 0?Promise.resolve(n):this.getDependency("accessor",r.inverseBindMatrices).then(function(t){return n.inverseBindMatrices=t,n})},O.prototype.loadAnimation=function(e){for(var r=this.json,n=r.animations[e],t=[],a=[],i=[],s=[],o=[],l=0,f=n.channels.length;l<f;l++){var v=n.channels[l],d=n.samplers[v.sampler],h=v.target,S=h.node!==void 0?h.node:h.id,L=n.parameters!==void 0?n.parameters[d.input]:d.input,E=n.parameters!==void 0?n.parameters[d.output]:d.output;t.push(this.getDependency("node",S)),a.push(this.getDependency("accessor",L)),i.push(this.getDependency("accessor",E)),s.push(d),o.push(h)}return Promise.all([Promise.all(t),Promise.all(a),Promise.all(i),Promise.all(s),Promise.all(o)]).then(function(y){for(var R=y[0],F=y[1],H=y[2],ne=y[3],ae=y[4],ee=[],K=0,ue=R.length;K<ue;K++){var N=R[K],Le=F[K],se=H[K],Me=ne[K],_e=ae[K];if(N!==void 0){N.updateMatrix(),N.matrixAutoUpdate=!0;var ge;switch(V[_e.path]){case V.weights:ge=c.NumberKeyframeTrack;break;case V.rotation:ge=c.QuaternionKeyframeTrack;break;case V.position:case V.scale:default:ge=c.VectorKeyframeTrack;break}var De=N.name?N.name:N.uuid,Pe=Me.interpolation!==void 0?Ae[Me.interpolation]:c.InterpolateLinear,Te=[];V[_e.path]===V.weights?N.traverse(function(de){de.isMesh===!0&&de.morphTargetInfluences&&Te.push(de.name?de.name:de.uuid)}):Te.push(De);var J=se.array;if(se.normalized){var fe;if(J.constructor===Int8Array)fe=1/127;else if(J.constructor===Uint8Array)fe=1/255;else if(J.constructor==Int16Array)fe=1/32767;else if(J.constructor===Uint16Array)fe=1/65535;else throw new Error("THREE.GLTFLoader: Unsupported output accessor component type.");for(var Ce=new Float32Array(J.length),re=0,Re=J.length;re<Re;re++)Ce[re]=J[re]*fe;J=Ce}for(var re=0,Re=Te.length;re<Re;re++){var we=new ge(Te[re]+"."+V[_e.path],Le.array,J,Pe);Me.interpolation==="CUBICSPLINE"&&(we.createInterpolant=function(Ge){return new P(this.times,this.values,this.getValueSize()/3,Ge)},we.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),ee.push(we)}}}var Ue=n.name?n.name:"animation_"+e;return new c.AnimationClip(Ue,void 0,ee)})},O.prototype.loadNode=function(e){var r=this.json,n=this.extensions,t=this,a=r.meshReferences,i=r.meshUses,s=r.nodes[e];return(function(){var o=[];return s.mesh!==void 0&&o.push(t.getDependency("mesh",s.mesh).then(function(l){var f;if(a[s.mesh]>1){var v=i[s.mesh]++;f=l.clone(),f.name+="_instance_"+v}else f=l;return s.weights!==void 0&&f.traverse(function(d){if(d.isMesh)for(var h=0,S=s.weights.length;h<S;h++)d.morphTargetInfluences[h]=s.weights[h]}),f})),s.camera!==void 0&&o.push(t.getDependency("camera",s.camera)),s.extensions&&s.extensions[u.KHR_LIGHTS_PUNCTUAL]&&s.extensions[u.KHR_LIGHTS_PUNCTUAL].light!==void 0&&o.push(t.getDependency("light",s.extensions[u.KHR_LIGHTS_PUNCTUAL].light)),Promise.all(o)})().then(function(o){var l;if(s.isBone===!0?l=new c.Bone:o.length>1?l=new c.Group:o.length===1?l=o[0]:l=new c.Object3D,l!==o[0])for(var f=0,v=o.length;f<v;f++)l.add(o[f]);if(s.name&&(l.userData.name=s.name,l.name=c.PropertyBinding.sanitizeNodeName(s.name)),Y(l,s),s.extensions&&oe(n,l,s),s.matrix!==void 0){var d=new c.Matrix4;d.fromArray(s.matrix),l.applyMatrix4(d)}else s.translation!==void 0&&l.position.fromArray(s.translation),s.rotation!==void 0&&l.quaternion.fromArray(s.rotation),s.scale!==void 0&&l.scale.fromArray(s.scale);return t.associations.set(l,{type:"nodes",index:e}),l})},O.prototype.loadScene=(function(){function e(r,n,t,a){var i=t.nodes[r];return a.getDependency("node",r).then(function(s){if(i.skin===void 0)return s;var o;return a.getDependency("skin",i.skin).then(function(l){o=l;for(var f=[],v=0,d=o.joints.length;v<d;v++)f.push(a.getDependency("node",o.joints[v]));return Promise.all(f)}).then(function(l){return s.traverse(function(f){if(f.isMesh){for(var v=[],d=[],h=0,S=l.length;h<S;h++){var L=l[h];if(L){v.push(L);var E=new c.Matrix4;o.inverseBindMatrices!==void 0&&E.fromArray(o.inverseBindMatrices.array,h*16),d.push(E)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',o.joints[h])}f.bind(new c.Skeleton(v,d),f.matrixWorld)}}),s})}).then(function(s){n.add(s);var o=[];if(i.children)for(var l=i.children,f=0,v=l.length;f<v;f++){var d=l[f];o.push(e(d,s,t,a))}return Promise.all(o)})}return function(n){var t=this.json,a=this.extensions,i=this.json.scenes[n],s=this,o=new c.Group;i.name&&(o.name=i.name),Y(o,i),i.extensions&&oe(a,o,i);for(var l=i.nodes||[],f=[],v=0,d=l.length;v<d;v++)f.push(e(l[v],o,t,s));return Promise.all(f).then(function(){return o})}})(),p})(),k=function(p){c.Loader.call(this,p),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"}};k.prototype=Object.assign(Object.create(c.Loader.prototype),{constructor:k,setDecoderPath:function(p){return this.decoderPath=p,this},setDecoderConfig:function(p){return this.decoderConfig=p,this},setWorkerLimit:function(p){return this.workerLimit=p,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(p,g,u,m){var T=new c.FileLoader(this.manager);T.setPath(this.path),T.setResponseType("arraybuffer"),this.crossOrigin==="use-credentials"&&T.setWithCredentials(!0),T.load(p,A=>{var M={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(A,M).then(g).catch(m)},u,m)},decodeDracoFile:function(p,g,u,m){var T={attributeIDs:u||this.defaultAttributeIDs,attributeTypes:m||this.defaultAttributeTypes,useUniqueIDs:!!u};this.decodeGeometry(p,T).then(g)},decodeGeometry:function(p,g){for(var u in g.attributeTypes){var m=g.attributeTypes[u];m.BYTES_PER_ELEMENT!==void 0&&(g.attributeTypes[u]=m.name)}var T=JSON.stringify(g);if(k.taskCache.has(p)){var A=k.taskCache.get(p);if(A.key===T)return A.promise;if(p.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}var M,C=this.workerNextTaskID++,D=p.byteLength,_=this._getWorker(C,D).then(I=>(M=I,new Promise((U,x)=>{M._callbacks[C]={resolve:U,reject:x},M.postMessage({type:"decode",id:C,taskConfig:g,buffer:p},[p])}))).then(I=>this._createGeometry(I.geometry));return _.catch(()=>!0).then(()=>{M&&C&&this._releaseTask(M,C)}),k.taskCache.set(p,{key:T,promise:_}),_},_createGeometry:function(p){var g=new c.BufferGeometry;p.index&&g.setIndex(new c.BufferAttribute(p.index.array,1));for(var u=0;u<p.attributes.length;u++){var m=p.attributes[u],T=m.name,A=m.array,M=m.itemSize;g.setAttribute(T,new c.BufferAttribute(A,M))}return g},_loadLibrary:function(p,g){var u=new c.FileLoader(this.manager);return u.setPath(this.decoderPath),u.setResponseType(g),new Promise((m,T)=>{u.load(p,m,void 0,T)})},preload:function(){return this._initDecoder(),this},_initDecoder:function(){if(this.decoderPending)return this.decoderPending;var p=typeof WebAssembly!="object"||this.decoderConfig.type==="js",g=[];return p?g.push(this._loadLibrary("draco_decoder.js","text")):(g.push(this._loadLibrary("draco_wasm_wrapper.js","text")),g.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(g).then(u=>{var m=u[0];p||(this.decoderConfig.wasmBinary=u[1]);var T=k.DRACOWorker.toString(),A=["/* draco decoder */",m,"","/* worker */",T.substring(T.indexOf("{")+1,T.lastIndexOf("}"))].join(`
261
- `);this.workerSourceURL=URL.createObjectURL(new Blob([A]))}),this.decoderPending},_getWorker:function(p,g){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){var u=new Worker(this.workerSourceURL);u._callbacks={},u._taskCosts={},u._taskLoad=0,u.postMessage({type:"init",decoderConfig:this.decoderConfig}),u.onmessage=function(T){var A=T.data;switch(A.type){case"decode":u._callbacks[A.id].resolve(A);break;case"error":u._callbacks[A.id].reject(A);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+A.type+'"')}},this.workerPool.push(u)}else this.workerPool.sort(function(m,T){return m._taskLoad>T._taskLoad?-1:1});var u=this.workerPool[this.workerPool.length-1];return u._taskCosts[p]=g,u._taskLoad+=g,u})},_releaseTask:function(p,g){p._taskLoad-=p._taskCosts[g],delete p._callbacks[g],delete p._taskCosts[g]},debug:function(){console.log("Task load: ",this.workerPool.map(p=>p._taskLoad))},dispose:function(){for(var p=0;p<this.workerPool.length;++p)this.workerPool[p].terminate();return this.workerPool.length=0,this}});k.DRACOWorker=function(){var p,g;onmessage=function(T){var A=T.data;switch(A.type){case"init":p=A.decoderConfig,g=new Promise(function(D){p.onModuleLoaded=function(_){D({draco:_})},DracoDecoderModule(p)});break;case"decode":var M=A.buffer,C=A.taskConfig;g.then(D=>{var _=D.draco,I=new _.Decoder,U=new _.DecoderBuffer;U.Init(new Int8Array(M),M.byteLength);try{var x=u(_,I,U,C),w=x.attributes.map(b=>b.array.buffer);x.index&&w.push(x.index.array.buffer),self.postMessage({type:"decode",id:A.id,geometry:x},w)}catch(b){console.error(b),self.postMessage({type:"error",id:A.id,error:b.message})}finally{_.destroy(U),_.destroy(I)}});break}};function u(T,A,M,C){var D=C.attributeIDs,_=C.attributeTypes,I,U,x=A.GetEncodedGeometryType(M);if(x===T.TRIANGULAR_MESH)I=new T.Mesh,U=A.DecodeBufferToMesh(M,I);else if(x===T.POINT_CLOUD)I=new T.PointCloud,U=A.DecodeBufferToPointCloud(M,I);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!U.ok()||I.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+U.error_msg());var w={index:null,attributes:[]};for(var b in D){var j=self[_[b]],te,P;if(C.useUniqueIDs)P=D[b],te=A.GetAttributeByUniqueId(I,P);else{if(P=A.GetAttributeId(I,T[D[b]]),P===-1)continue;te=A.GetAttribute(I,P)}w.attributes.push(m(T,A,I,b,j,te))}if(x===T.TRIANGULAR_MESH){for(var Q=I.num_faces(),B=Q*3,Z=new Uint32Array(B),$=new T.DracoInt32Array,z=0;z<Q;++z){A.GetFaceFromMesh(I,z,$);for(var W=0;W<3;++W)Z[z*3+W]=$.GetValue(W)}w.index={array:Z,itemSize:1},T.destroy($)}return T.destroy(I),w}function m(T,A,M,C,D,_){var I=_.num_components(),U=M.num_points(),x=U*I,w,b;switch(D){case Float32Array:w=new T.DracoFloat32Array,A.GetAttributeFloatForAllPoints(M,_,w),b=new Float32Array(x);break;case Int8Array:w=new T.DracoInt8Array,A.GetAttributeInt8ForAllPoints(M,_,w),b=new Int8Array(x);break;case Int16Array:w=new T.DracoInt16Array,A.GetAttributeInt16ForAllPoints(M,_,w),b=new Int16Array(x);break;case Int32Array:w=new T.DracoInt32Array,A.GetAttributeInt32ForAllPoints(M,_,w),b=new Int32Array(x);break;case Uint8Array:w=new T.DracoUInt8Array,A.GetAttributeUInt8ForAllPoints(M,_,w),b=new Uint8Array(x);break;case Uint16Array:w=new T.DracoUInt16Array,A.GetAttributeUInt16ForAllPoints(M,_,w),b=new Uint16Array(x);break;case Uint32Array:w=new T.DracoUInt32Array,A.GetAttributeUInt32ForAllPoints(M,_,w),b=new Uint32Array(x);break;default:throw new Error("THREE.DRACOLoader: Unexpected attribute type.")}for(var j=0;j<x;j++)b[j]=w.GetValue(j);return T.destroy(w),{name:C,array:b,itemSize:I}}};k.taskCache=new WeakMap;k.setDecoderPath=function(){console.warn("THREE.DRACOLoader: The .setDecoderPath() method has been removed. Use instance methods.")};k.setDecoderConfig=function(){console.warn("THREE.DRACOLoader: The .setDecoderConfig() method has been removed. Use instance methods.")};k.releaseDecoderModule=function(){console.warn("THREE.DRACOLoader: The .releaseDecoderModule() method has been removed. Use instance methods.")};k.getDecoderModule=function(){console.warn("THREE.DRACOLoader: The .getDecoderModule() method has been removed. Use instance methods.")};var me=function(p){c.CompressedTextureLoader.call(this,p)};me.prototype=Object.assign(Object.create(c.CompressedTextureLoader.prototype),{constructor:me,parse:function(p,g){var u={mipmaps:[],width:0,height:0,format:null,mipmapCount:1},m=542327876,T=131072,A=512,M=1024,C=2048,D=4096,_=8192,I=16384,U=32768,x=4;function w(l){return l.charCodeAt(0)+(l.charCodeAt(1)<<8)+(l.charCodeAt(2)<<16)+(l.charCodeAt(3)<<24)}function b(l){return String.fromCharCode(l&255,l>>8&255,l>>16&255,l>>24&255)}function j(l,f,v,d){for(var h=v*d*4,S=new Uint8Array(l,f,h),L=new Uint8Array(h),E=0,y=0,R=0;R<d;R++)for(var F=0;F<v;F++){var H=S[y];y++;var ne=S[y];y++;var ae=S[y];y++;var ee=S[y];y++,L[E]=ae,E++,L[E]=ne,E++,L[E]=H,E++,L[E]=ee,E++}return L}var te=w("DXT1"),P=w("DXT3"),Q=w("DXT5"),B=w("ETC1"),Z=31,$=0,z=1,W=2,le=3,V=4,Ae=7,ce=20,pe=21,he=22,Se=23,oe=24,Y=25,ye=26,Ee=28,G=new Int32Array(p,0,Z);if(G[$]!==m)return console.error("THREE.DDSLoader.parse: Invalid magic number in DDS header."),u;if(!G[ce]&x)return console.error("THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code."),u;var q,O=G[pe],ve=!1;switch(O){case te:q=8,u.format=c.RGB_S3TC_DXT1_Format;break;case P:q=16,u.format=c.RGBA_S3TC_DXT3_Format;break;case Q:q=16,u.format=c.RGBA_S3TC_DXT5_Format;break;case B:q=8,u.format=c.RGB_ETC1_Format;break;default:if(G[he]===32&&G[Se]&16711680&&G[oe]&65280&&G[Y]&255&&G[ye]&4278190080)ve=!0,q=64,u.format=c.RGBAFormat;else return console.error("THREE.DDSLoader.parse: Unsupported FourCC code ",b(O)),u}u.mipmapCount=1,G[W]&T&&g!==!1&&(u.mipmapCount=Math.max(1,G[Ae]));var X=G[Ee];if(u.isCubemap=!!(X&A),u.isCubemap&&(!(X&M)||!(X&C)||!(X&D)||!(X&_)||!(X&I)||!(X&U)))return console.error("THREE.DDSLoader.parse: Incomplete cubemap faces"),u;u.width=G[V],u.height=G[le];for(var ie=G[z]+4,e=u.isCubemap?6:1,r=0;r<e;r++)for(var n=u.width,t=u.height,a=0;a<u.mipmapCount;a++){if(ve)var i=j(p,ie,n,t),s=i.length;else var s=Math.max(4,n)/4*Math.max(4,t)/4*q,i=new Uint8Array(p,ie,s);var o={data:i,width:n,height:t};u.mipmaps.push(o),ie+=s,n=Math.max(n>>1,1),t=Math.max(t>>1,1)}return u}});var xe=(function(p){Oe(g,p);function g(u){var m=p.call(this)||this;return m.needsRender=!0,u&&u.children.length&&m.add.apply(m,u.children),m.mixer=new be.AnimationMixer(m),m}return g.prototype.clone=function(){var u=p.prototype.clone.call(this,!0),m=new be.AnimationMixer(u);return u.mixer=m,u.needsRender=!0,u},g})(be.Group),Ne="https://vr-public.realsee-cdn.cn/release/static/image/release/five/resource/draco/1.5.6/",ke=(function(p){Oe(g,p);function g(u){var m=p.call(this,u)||this;return m.ddsLoader=new me(u),m.dracoLoader=new k(u),m.dracoLoader.setDecoderPath(Ne),m}return Object.defineProperty(g,"version",{get:function(){return"6.8.0-alpha.5"},enumerable:!1,configurable:!0}),g.prototype.load=function(u,m,T,A){return p.prototype.load.call(this,u,m,T,A)},g.prototype.parse=function(u,m,T,A){return p.prototype.parse.call(this,u,m,function(M){var C=new xe(M.scene),D=M.scenes.map(function(_){return _===M.scene?C:new xe(_)});T(Object.assign(M,{scene:C,scenes:D}))},A)},g})(Fe);exports.DDSLoader=me;exports.DRACOLoader=k;exports.GLTFLoader=ke;exports.GLTFObject=xe;exports.THREEGLTFLoader=Fe;
261
+ `);this.workerSourceURL=URL.createObjectURL(new Blob([A]))}),this.decoderPending},_getWorker:function(p,g){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){var u=new Worker(this.workerSourceURL);u._callbacks={},u._taskCosts={},u._taskLoad=0,u.postMessage({type:"init",decoderConfig:this.decoderConfig}),u.onmessage=function(T){var A=T.data;switch(A.type){case"decode":u._callbacks[A.id].resolve(A);break;case"error":u._callbacks[A.id].reject(A);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+A.type+'"')}},this.workerPool.push(u)}else this.workerPool.sort(function(m,T){return m._taskLoad>T._taskLoad?-1:1});var u=this.workerPool[this.workerPool.length-1];return u._taskCosts[p]=g,u._taskLoad+=g,u})},_releaseTask:function(p,g){p._taskLoad-=p._taskCosts[g],delete p._callbacks[g],delete p._taskCosts[g]},debug:function(){console.log("Task load: ",this.workerPool.map(p=>p._taskLoad))},dispose:function(){for(var p=0;p<this.workerPool.length;++p)this.workerPool[p].terminate();return this.workerPool.length=0,this}});k.DRACOWorker=function(){var p,g;onmessage=function(T){var A=T.data;switch(A.type){case"init":p=A.decoderConfig,g=new Promise(function(D){p.onModuleLoaded=function(_){D({draco:_})},DracoDecoderModule(p)});break;case"decode":var M=A.buffer,C=A.taskConfig;g.then(D=>{var _=D.draco,I=new _.Decoder,U=new _.DecoderBuffer;U.Init(new Int8Array(M),M.byteLength);try{var x=u(_,I,U,C),w=x.attributes.map(b=>b.array.buffer);x.index&&w.push(x.index.array.buffer),self.postMessage({type:"decode",id:A.id,geometry:x},w)}catch(b){console.error(b),self.postMessage({type:"error",id:A.id,error:b.message})}finally{_.destroy(U),_.destroy(I)}});break}};function u(T,A,M,C){var D=C.attributeIDs,_=C.attributeTypes,I,U,x=A.GetEncodedGeometryType(M);if(x===T.TRIANGULAR_MESH)I=new T.Mesh,U=A.DecodeBufferToMesh(M,I);else if(x===T.POINT_CLOUD)I=new T.PointCloud,U=A.DecodeBufferToPointCloud(M,I);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!U.ok()||I.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+U.error_msg());var w={index:null,attributes:[]};for(var b in D){var j=self[_[b]],te,P;if(C.useUniqueIDs)P=D[b],te=A.GetAttributeByUniqueId(I,P);else{if(P=A.GetAttributeId(I,T[D[b]]),P===-1)continue;te=A.GetAttribute(I,P)}w.attributes.push(m(T,A,I,b,j,te))}if(x===T.TRIANGULAR_MESH){for(var Q=I.num_faces(),B=Q*3,Z=new Uint32Array(B),$=new T.DracoInt32Array,z=0;z<Q;++z){A.GetFaceFromMesh(I,z,$);for(var W=0;W<3;++W)Z[z*3+W]=$.GetValue(W)}w.index={array:Z,itemSize:1},T.destroy($)}return T.destroy(I),w}function m(T,A,M,C,D,_){var I=_.num_components(),U=M.num_points(),x=U*I,w,b;switch(D){case Float32Array:w=new T.DracoFloat32Array,A.GetAttributeFloatForAllPoints(M,_,w),b=new Float32Array(x);break;case Int8Array:w=new T.DracoInt8Array,A.GetAttributeInt8ForAllPoints(M,_,w),b=new Int8Array(x);break;case Int16Array:w=new T.DracoInt16Array,A.GetAttributeInt16ForAllPoints(M,_,w),b=new Int16Array(x);break;case Int32Array:w=new T.DracoInt32Array,A.GetAttributeInt32ForAllPoints(M,_,w),b=new Int32Array(x);break;case Uint8Array:w=new T.DracoUInt8Array,A.GetAttributeUInt8ForAllPoints(M,_,w),b=new Uint8Array(x);break;case Uint16Array:w=new T.DracoUInt16Array,A.GetAttributeUInt16ForAllPoints(M,_,w),b=new Uint16Array(x);break;case Uint32Array:w=new T.DracoUInt32Array,A.GetAttributeUInt32ForAllPoints(M,_,w),b=new Uint32Array(x);break;default:throw new Error("THREE.DRACOLoader: Unexpected attribute type.")}for(var j=0;j<x;j++)b[j]=w.GetValue(j);return T.destroy(w),{name:C,array:b,itemSize:I}}};k.taskCache=new WeakMap;k.setDecoderPath=function(){console.warn("THREE.DRACOLoader: The .setDecoderPath() method has been removed. Use instance methods.")};k.setDecoderConfig=function(){console.warn("THREE.DRACOLoader: The .setDecoderConfig() method has been removed. Use instance methods.")};k.releaseDecoderModule=function(){console.warn("THREE.DRACOLoader: The .releaseDecoderModule() method has been removed. Use instance methods.")};k.getDecoderModule=function(){console.warn("THREE.DRACOLoader: The .getDecoderModule() method has been removed. Use instance methods.")};var me=function(p){c.CompressedTextureLoader.call(this,p)};me.prototype=Object.assign(Object.create(c.CompressedTextureLoader.prototype),{constructor:me,parse:function(p,g){var u={mipmaps:[],width:0,height:0,format:null,mipmapCount:1},m=542327876,T=131072,A=512,M=1024,C=2048,D=4096,_=8192,I=16384,U=32768,x=4;function w(l){return l.charCodeAt(0)+(l.charCodeAt(1)<<8)+(l.charCodeAt(2)<<16)+(l.charCodeAt(3)<<24)}function b(l){return String.fromCharCode(l&255,l>>8&255,l>>16&255,l>>24&255)}function j(l,f,v,d){for(var h=v*d*4,S=new Uint8Array(l,f,h),L=new Uint8Array(h),E=0,y=0,R=0;R<d;R++)for(var F=0;F<v;F++){var H=S[y];y++;var ne=S[y];y++;var ae=S[y];y++;var ee=S[y];y++,L[E]=ae,E++,L[E]=ne,E++,L[E]=H,E++,L[E]=ee,E++}return L}var te=w("DXT1"),P=w("DXT3"),Q=w("DXT5"),B=w("ETC1"),Z=31,$=0,z=1,W=2,le=3,V=4,Ae=7,ce=20,pe=21,he=22,Se=23,oe=24,Y=25,ye=26,Ee=28,G=new Int32Array(p,0,Z);if(G[$]!==m)return console.error("THREE.DDSLoader.parse: Invalid magic number in DDS header."),u;if(!G[ce]&x)return console.error("THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code."),u;var q,O=G[pe],ve=!1;switch(O){case te:q=8,u.format=c.RGB_S3TC_DXT1_Format;break;case P:q=16,u.format=c.RGBA_S3TC_DXT3_Format;break;case Q:q=16,u.format=c.RGBA_S3TC_DXT5_Format;break;case B:q=8,u.format=c.RGB_ETC1_Format;break;default:if(G[he]===32&&G[Se]&16711680&&G[oe]&65280&&G[Y]&255&&G[ye]&4278190080)ve=!0,q=64,u.format=c.RGBAFormat;else return console.error("THREE.DDSLoader.parse: Unsupported FourCC code ",b(O)),u}u.mipmapCount=1,G[W]&T&&g!==!1&&(u.mipmapCount=Math.max(1,G[Ae]));var X=G[Ee];if(u.isCubemap=!!(X&A),u.isCubemap&&(!(X&M)||!(X&C)||!(X&D)||!(X&_)||!(X&I)||!(X&U)))return console.error("THREE.DDSLoader.parse: Incomplete cubemap faces"),u;u.width=G[V],u.height=G[le];for(var ie=G[z]+4,e=u.isCubemap?6:1,r=0;r<e;r++)for(var n=u.width,t=u.height,a=0;a<u.mipmapCount;a++){if(ve)var i=j(p,ie,n,t),s=i.length;else var s=Math.max(4,n)/4*Math.max(4,t)/4*q,i=new Uint8Array(p,ie,s);var o={data:i,width:n,height:t};u.mipmaps.push(o),ie+=s,n=Math.max(n>>1,1),t=Math.max(t>>1,1)}return u}});var xe=(function(p){Oe(g,p);function g(u){var m=p.call(this)||this;return m.needsRender=!0,u&&u.children.length&&m.add.apply(m,u.children),m.mixer=new be.AnimationMixer(m),m}return g.prototype.clone=function(){var u=p.prototype.clone.call(this,!0),m=new be.AnimationMixer(u);return u.mixer=m,u.needsRender=!0,u},g})(be.Group),Ne="https://vr-public.realsee-cdn.cn/release/static/image/release/five/resource/draco/1.5.6/",ke=(function(p){Oe(g,p);function g(u){var m=p.call(this,u)||this;return m.ddsLoader=new me(u),m.dracoLoader=new k(u),m.dracoLoader.setDecoderPath(Ne),m}return Object.defineProperty(g,"version",{get:function(){return"6.8.0-alpha.7"},enumerable:!1,configurable:!0}),g.prototype.load=function(u,m,T,A){return p.prototype.load.call(this,u,m,T,A)},g.prototype.parse=function(u,m,T,A){return p.prototype.parse.call(this,u,m,function(M){var C=new xe(M.scene),D=M.scenes.map(function(_){return _===M.scene?C:new xe(_)});T(Object.assign(M,{scene:C,scenes:D}))},A)},g})(Fe);exports.DDSLoader=me;exports.DRACOLoader=k;exports.GLTFLoader=ke;exports.GLTFObject=xe;exports.THREEGLTFLoader=Fe;
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 2026/1/30
5
- * Version: 6.8.0-alpha.5
4
+ * Generated: 2026/2/10
5
+ * Version: 6.8.0-alpha.7
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -1683,7 +1683,7 @@ var Qe = (
1683
1683
  }
1684
1684
  return Object.defineProperty(T, "version", {
1685
1685
  get: function() {
1686
- return "6.8.0-alpha.5";
1686
+ return "6.8.0-alpha.7";
1687
1687
  },
1688
1688
  enumerable: !1,
1689
1689
  configurable: !0