@realsee/five 5.0.0-alpha.127 → 5.0.0-alpha.128

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 (108) hide show
  1. package/docs/assets/search.js +1 -1
  2. package/docs/classes/five.AnimationFrameLoop.html +1 -1
  3. package/docs/classes/five.BVH.html +1 -1
  4. package/docs/classes/five.BVHIntersect.html +1 -1
  5. package/docs/classes/five.BVHNode.html +1 -1
  6. package/docs/classes/five.BVHVector3.html +1 -1
  7. package/docs/classes/five.Camera.html +1 -1
  8. package/docs/classes/five.Five.html +46 -46
  9. package/docs/classes/five.InternalWebGLRenderer.html +1 -1
  10. package/docs/classes/five.IntersectMesh.html +1 -1
  11. package/docs/classes/five.LegacyPanoCircleMesh.html +1 -1
  12. package/docs/classes/five.Model.html +33 -23
  13. package/docs/classes/five.NetworkSubscribe.html +1 -1
  14. package/docs/classes/five.PBMContainer.html +5 -5
  15. package/docs/classes/five.PBMGroup.html +4 -4
  16. package/docs/classes/five.PBMMaterial.html +10 -8
  17. package/docs/classes/five.PBMMesh.html +1 -1
  18. package/docs/classes/five.PanoCircleMesh.html +1 -1
  19. package/docs/classes/five.Scene.html +1 -1
  20. package/docs/classes/five.Subscribe.html +1 -1
  21. package/docs/classes/five.Tile3DModel.html +15 -0
  22. package/docs/classes/five.Work.html +11 -11
  23. package/docs/classes/gltf_loader.GLTFLoader.html +1 -1
  24. package/docs/classes/gltf_loader.GLTFObject.html +1 -1
  25. package/docs/classes/line.Line.html +1 -1
  26. package/docs/classes/line.LineGeometry.html +1 -1
  27. package/docs/classes/line.LineMaterial.html +1 -1
  28. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  29. package/docs/classes/line.THREE_Line2.html +1 -1
  30. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  31. package/docs/classes/react.Store.html +1 -1
  32. package/docs/classes/server.BVH.html +1 -1
  33. package/docs/classes/server.BVHIntersect.html +1 -1
  34. package/docs/classes/server.BVHNode.html +1 -1
  35. package/docs/classes/server.BVHVector3.html +1 -1
  36. package/docs/classes/server.Model.html +1 -1
  37. package/docs/classes/server.PBMGroup.html +1 -1
  38. package/docs/classes/server.PBMMesh.html +1 -1
  39. package/docs/classes/sticker.Sticker.html +1 -1
  40. package/docs/index.html +1 -1
  41. package/docs/interfaces/five.AddableObject.html +1 -1
  42. package/docs/interfaces/five.AnimationFrame.html +1 -1
  43. package/docs/interfaces/five.CameraPose.html +1 -1
  44. package/docs/interfaces/five.DepthPanoramaControllerCustomInitArgs.html +1 -1
  45. package/docs/interfaces/five.EventCallback.html +5 -5
  46. package/docs/interfaces/five.FiveInitArgs.html +12 -10
  47. package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +1 -1
  48. package/docs/interfaces/five.ImageOptions.html +1 -1
  49. package/docs/interfaces/five.ImageURLMappings.html +1 -1
  50. package/docs/interfaces/five.ImageURLOptions.html +1 -1
  51. package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
  52. package/docs/interfaces/five.Intersection.html +3 -3
  53. package/docs/interfaces/five.MapviewControllerCustomInitArgs.html +15 -0
  54. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  55. package/docs/interfaces/five.ModelEventCallback.html +7 -7
  56. package/docs/interfaces/five.MovePanoOptions.html +5 -3
  57. package/docs/interfaces/five.PBMPanoPicture.html +1 -1
  58. package/docs/interfaces/five.PBMParameters.html +5 -3
  59. package/docs/interfaces/five.PanoCircleMeshInterface.html +1 -1
  60. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  61. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  62. package/docs/interfaces/five.Pose.html +5 -3
  63. package/docs/interfaces/five.Scissor.html +1 -1
  64. package/docs/interfaces/five.State.html +5 -3
  65. package/docs/interfaces/five.SubscribeMixinType.emit.html +1 -1
  66. package/docs/interfaces/five.SubscribeMixinType.hasListener.html +1 -1
  67. package/docs/interfaces/five.SubscribeMixinType.off.html +1 -1
  68. package/docs/interfaces/five.SubscribeMixinType.on.html +1 -1
  69. package/docs/interfaces/five.SubscribeMixinType.once.html +1 -1
  70. package/docs/interfaces/five.TextureOptions.html +1 -1
  71. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  72. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  73. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  74. package/docs/interfaces/five.WorkImage.html +1 -1
  75. package/docs/interfaces/five.WorkInitial.html +2 -2
  76. package/docs/interfaces/five.WorkModel.html +6 -6
  77. package/docs/interfaces/five.WorkModelTiles.html +3 -0
  78. package/docs/interfaces/five.WorkObserver.html +12 -12
  79. package/docs/interfaces/five.WorkTile.html +1 -1
  80. package/docs/interfaces/five.WorkVideo.html +1 -1
  81. package/docs/interfaces/gltf_loader.GLTF.html +1 -1
  82. package/docs/interfaces/react.FiveActionReactCallbacks.html +1 -1
  83. package/docs/interfaces/react.FiveInjectionTypes.html +1 -1
  84. package/docs/interfaces/react.PropTypeOfFiveFeatures.html +1 -1
  85. package/docs/interfaces/server.Intersection.html +1 -1
  86. package/docs/interfaces/server.ModelEventCallback.html +1 -1
  87. package/docs/interfaces/sticker.IntersectionLike.html +1 -1
  88. package/docs/interfaces/vue.FiveActionVueCallbacks.html +1 -1
  89. package/docs/modules/five.SubscribeMixinType.html +1 -1
  90. package/docs/modules/five.html +12 -11
  91. package/docs/modules/gltf_loader.html +1 -1
  92. package/docs/modules/line.html +1 -1
  93. package/docs/modules/react.html +1 -1
  94. package/docs/modules/server.html +1 -1
  95. package/docs/modules/sticker.html +1 -1
  96. package/docs/modules/vue.html +1 -1
  97. package/docs/modules.html +1 -1
  98. package/five/index.d.ts +569 -4
  99. package/five/index.js +12 -12
  100. package/gltf-loader/index.js +2 -2
  101. package/line/index.js +2 -2
  102. package/package.json +2 -1
  103. package/react/index.js +2 -2
  104. package/server/index.d.ts +15 -1
  105. package/server/index.js +3 -3
  106. package/sticker/index.js +2 -2
  107. package/umd/five.js +1 -1
  108. package/vue/index.js +2 -2
package/five/index.d.ts CHANGED
@@ -1,4 +1,8 @@
1
+ import Matrix3 from '@math.gl/core/dist/esm/classes/matrix3';
2
+ import Matrix4 from '@math.gl/core/dist/esm/classes/matrix4';
3
+ import Quaternion from '@math.gl/core/dist/esm/classes/quaternion';
1
4
  import * as THREE_2 from 'three';
5
+ import Vector3 from '@math.gl/core/dist/esm/classes/vector3';
2
6
 
3
7
  export declare interface AddableObject extends THREE_2.Object3D {
4
8
  needsRender?: boolean;
@@ -35,6 +39,51 @@ export declare class AnimationFrameLoop {
35
39
  disponse(): void;
36
40
  }
37
41
 
42
+ declare interface B3DMMapping {
43
+ b3dm_base_url: string;
44
+ b3dm_url: Record<string, string>;
45
+ }
46
+
47
+ declare class BoundingSphere {
48
+ center: Vector3;
49
+ radius: number;
50
+ constructor(center?: number[], radius?: number);
51
+ fromCenterRadius(center: number[], radius: number): this;
52
+ fromCornerPoints(corner: number[], oppositeCorner: number[]): this;
53
+ equals(right: BoundingSphere): boolean;
54
+ clone(): BoundingSphere;
55
+ union(boundingSphere: BoundingSphere): BoundingSphere;
56
+ expand(point: number[]): this;
57
+ transform(transform: Matrix4): this;
58
+ distanceSquaredTo(point: number[]): number;
59
+ distanceTo(point: number[]): number;
60
+ intersectPlane(plane: Plane): number;
61
+ }
62
+
63
+ declare interface BoundingVolume {
64
+ /**
65
+ * Applies a 4x4 affine transformation matrix to a bounding sphere.
66
+ * @param sphere The bounding sphere to apply the transformation to.
67
+ * @param transform The transformation matrix to apply to the bounding sphere.
68
+ * @returns itself, i.e. the modified BoundingVolume.
69
+ */
70
+ transform(transform: readonly number[]): this;
71
+ /** Computes the estimated distance squared from the closest point on a bounding sphere to a point. */
72
+ distanceSquaredTo(point: readonly number[]): number;
73
+ /** Computes the estimated distance from the closest point on a bounding sphere to a point. */
74
+ distanceTo(point: readonly number[]): number;
75
+ /**
76
+ * Determines which side of a plane the oriented bounding box is located.
77
+ *
78
+ * @param plane The plane to test against.
79
+ * @returns
80
+ * - `INTERSECTION.INSIDE` if the entire box is on the side of the plane the normal is pointing.
81
+ * - `INTERSECTION.OUTSIDE` if the entire box is on the opposite side.
82
+ * - `INTERSECTION.INTERSECTING` if the box intersects the plane.
83
+ */
84
+ intersectPlane(plane: Plane): number;
85
+ }
86
+
38
87
  export declare class BVH {
39
88
  trianglesArray?: Float32Array;
40
89
  offsetArray?: Uint32Array;
@@ -91,6 +140,13 @@ export declare class BVHVector3 {
91
140
  clone(): BVHVector3;
92
141
  }
93
142
 
143
+ declare class CacheNode<T> {
144
+ item: T;
145
+ previous: CacheNode<T> | null;
146
+ next: CacheNode<T> | null;
147
+ constructor(item: T, previous: CacheNode<T> | null, next: CacheNode<T> | null);
148
+ }
149
+
94
150
  /** Five 相机 */
95
151
  export declare class Camera extends THREE_2.PerspectiveCamera {
96
152
  /** 相机姿态 */
@@ -119,6 +175,7 @@ export declare type ControllerCustomInitTypes = {
119
175
  VRPanorama: VRPanoramaControllerCustomInitArgs;
120
176
  Model: ModelControllerCustomInitArgs;
121
177
  DepthPanorama: DepthPanoramaControllerCustomInitArgs;
178
+ Mapview: MapviewControllerCustomInitArgs;
122
179
  };
123
180
 
124
181
  export declare type ControllerEventTypes = {
@@ -408,6 +465,20 @@ export declare type ControllerEventTypes = {
408
465
  error(error: Error): void;
409
466
  };
410
467
 
468
+ declare class CullingVolume {
469
+ static get MASK_OUTSIDE(): number;
470
+ static get MASK_INSIDE(): number;
471
+ static get MASK_INDETERMINATE(): number;
472
+ planes: Plane[];
473
+ constructor(planes?: Plane[]);
474
+ fromBoundingSphere(boundingSphere: {
475
+ center: Vector3;
476
+ radius: number;
477
+ }): this;
478
+ computeVisibility(boundingVolume: BoundingVolume): number;
479
+ computeVisibilityWithPlaneMask(boundingVolume: BoundingVolume, parentPlaneMask: number): number;
480
+ }
481
+
411
482
  /**
412
483
  * URL 地址的转换
413
484
  * @param source - url 原地址
@@ -455,14 +526,14 @@ export declare type EventTypes = Pick<ControllerEventTypes, typeof PROXY_CONTROL
455
526
  * @param work - 归一化的标准 work
456
527
  * @param state - 加载时的姿态
457
528
  */
458
- willLoad(input: any, work: Work, state: Omit<State, "offset">): void;
529
+ willLoad(input: any, work: Work, state: Omit<State, "offset" | "distance">): void;
459
530
  /**
460
531
  * 开始加载 Work 数据
461
532
  * @param input - 输入的 work
462
533
  * @param work - 归一化的标准 work
463
534
  * @param state - 加载时的姿态
464
535
  */
465
- load(input: any, work: Work, state: Omit<State, "offset">): void;
536
+ load(input: any, work: Work, state: Omit<State, "offset" | "distance">): void;
466
537
  /**
467
538
  * 加载完 Work 数据
468
539
  * @param input - 输入的 work
@@ -768,7 +839,7 @@ export declare class Five extends Subscribe<EventTypes> {
768
839
  set enableIOSEDR(enable: boolean);
769
840
  get enablePostProcessing(): boolean;
770
841
  set enablePostProcessing(enable: boolean);
771
- updateConfiguration(args: Pick<FiveInitArgs, "panorama" | "model" | "floorplan" | "topview" | "depthPanorama" | "vrPanorama" | "imageOptions">): void;
842
+ updateConfiguration(args: Pick<FiveInitArgs, "panorama" | "model" | "floorplan" | "topview" | "mapview" | "depthPanorama" | "vrPanorama" | "imageOptions">): void;
772
843
  /**
773
844
  * 将显示区域加载到页面 DOM 中
774
845
  * @description
@@ -1110,6 +1181,8 @@ export declare interface FiveInitArgs {
1110
1181
  floorplan?: ControllerCustomInitTypes["Floorplan"];
1111
1182
  /** 户型图模式下的特定参数 */
1112
1183
  topview?: ControllerCustomInitTypes["Topview"];
1184
+ /** 地图模式下的特定参数 */
1185
+ mapview?: ControllerCustomInitTypes["Mapview"];
1113
1186
  /** 深度图游走模式下的特定参数 */
1114
1187
  depthPanorama?: ControllerCustomInitTypes["DepthPanorama"];
1115
1188
  /** VR眼镜模式下的特定参数 */
@@ -1164,6 +1237,11 @@ parameters: Parameters<T>[1]
1164
1237
  */
1165
1238
  export declare type FivePluginInstance<T extends FivePlugin<any, any>> = ReturnType<T>;
1166
1239
 
1240
+ declare interface FloorInfo {
1241
+ ground: number;
1242
+ height: number;
1243
+ }
1244
+
1167
1245
  export declare interface FloorplanControllerCustomInitArgs {
1168
1246
  /** 默认偏航角 */
1169
1247
  defaultLongitude?: number;
@@ -1181,6 +1259,18 @@ export declare interface FloorplanControllerCustomInitArgs {
1181
1259
  minFov?: number;
1182
1260
  }
1183
1261
 
1262
+ declare type FrameState = {
1263
+ camera: {
1264
+ position: number[];
1265
+ direction: number[];
1266
+ up: number[];
1267
+ };
1268
+ height: number;
1269
+ cullingVolume: CullingVolume;
1270
+ frameNumber: number;
1271
+ sseDenominator: number;
1272
+ };
1273
+
1184
1274
  export declare type GestureTypes = "pan" | "tap" | "pinch" | "press" | "mouseWheel";
1185
1275
 
1186
1276
  export declare function getViewportScale(): number;
@@ -1293,6 +1383,20 @@ export declare class LegacyPanoCircleMesh extends THREE_2.Object3D implements Pa
1293
1383
  dispose(): void;
1294
1384
  }
1295
1385
 
1386
+ /** Advanced loader options */
1387
+ declare interface LoaderOptions {
1388
+ updateInterval: number;
1389
+ maxMemoryUsage: number;
1390
+ maxScreenSpaceError: number;
1391
+ viewDistanceScale: number;
1392
+ throttleRequests: boolean;
1393
+ maxRequests: number;
1394
+ onNodeCreated: (node: PBMGroup) => void;
1395
+ allowHosts?: string[];
1396
+ networkSubscribe?: NetworkSubscribe;
1397
+ maxDepth?: number;
1398
+ }
1399
+
1296
1400
  export declare type LooseWork = {
1297
1401
  bvh?: boolean;
1298
1402
  modelAsync?: boolean;
@@ -1367,6 +1471,65 @@ export declare type LooseWorkVideo = {
1367
1471
  size: number[];
1368
1472
  };
1369
1473
 
1474
+ declare class ManagedArray<T> {
1475
+ private map;
1476
+ private array;
1477
+ private _length;
1478
+ constructor();
1479
+ /**
1480
+ * Gets or sets the length of the array.
1481
+ * If the set length is greater than the length of the internal array, the internal array is resized.
1482
+ *
1483
+ * @memberof ManagedArray.prototype
1484
+ * @type Number
1485
+ */
1486
+ get length(): number;
1487
+ /**
1488
+ * Gets the element at an index.
1489
+ * @param { Number } index The index to get.
1490
+ */
1491
+ get(index: number): T;
1492
+ /**
1493
+ * Sets the element at an index. Resizes the array if index is greater than the length of the array.
1494
+ *
1495
+ * @param {Number} index The index to set.
1496
+ * @param {*} element The element to set at index.
1497
+ */
1498
+ set(index: number, element: T): void;
1499
+ delete(element: T): void;
1500
+ /**
1501
+ * Push an element into the array.
1502
+ *
1503
+ * @param {*} element The element to push.
1504
+ */
1505
+ push(element: T): void;
1506
+ /**
1507
+ * Pop an element from the array.
1508
+ *
1509
+ * @returns {*} The last element in the array.
1510
+ */
1511
+ pop(): T;
1512
+ reset(): void;
1513
+ find(target: T): boolean;
1514
+ }
1515
+
1516
+ export declare interface MapviewControllerCustomInitArgs {
1517
+ /** 默认偏航角 */
1518
+ defaultLongitude?: number;
1519
+ /** 默认俯仰角 */
1520
+ defaultLatitude?: number;
1521
+ /** 默认相机距离 */
1522
+ defaultDistance?: number;
1523
+ /** 最大俯仰角 */
1524
+ maxLatitude?: number;
1525
+ /** 最小俯仰角 */
1526
+ minLatitude?: number;
1527
+ /** 最大相机距离 */
1528
+ maxDistance?: number;
1529
+ /** 最小相机距离 */
1530
+ minDistance?: number;
1531
+ }
1532
+
1370
1533
  export declare type Mirror<T extends string> = Record<T, T>;
1371
1534
 
1372
1535
  /**
@@ -1375,6 +1538,7 @@ export declare type Mirror<T extends string> = Record<T, T>;
1375
1538
  * - **Model**: 模型游走模式
1376
1539
  * - **Floorplan**: 模型查看模式
1377
1540
  * - **Topview**: 户型图模式
1541
+ * - **Mapview**: 地图模式
1378
1542
  * - **DepthPanorama**: 深度图游走模式
1379
1543
  * - **VRPanorama**: VR眼镜模式
1380
1544
  */
@@ -1383,6 +1547,8 @@ export declare type Mode =
1383
1547
  "Floorplan" |
1384
1548
  /** 户型图模式 */
1385
1549
  "Topview" |
1550
+ /** 地图模式 */
1551
+ "Mapview" |
1386
1552
  /** 全景图游走模式 */
1387
1553
  "Panorama" |
1388
1554
  /** VR眼镜模式 */
@@ -1411,6 +1577,10 @@ export declare class Model extends PBMContainer implements Subscribe<ModelEventT
1411
1577
  shownFloor: number | null;
1412
1578
  /** 楼层的数量 */
1413
1579
  floorLength: number;
1580
+ /** 模型瓦片 */
1581
+ originModel?: PBMContainer;
1582
+ /** 模型瓦片 */
1583
+ tiledModel?: Tile3DModel;
1414
1584
  /**
1415
1585
  * 判断是否注册了事件
1416
1586
  * 具体可查看 {@link Subscribe.hasListener}
@@ -1454,6 +1624,15 @@ export declare class Model extends PBMContainer implements Subscribe<ModelEventT
1454
1624
  * 请用 shwonFloor 代替
1455
1625
  */
1456
1626
  get shownfloor(): number | null;
1627
+ /**
1628
+ * 当前模型是否支持瓦片
1629
+ */
1630
+ get hasTiles(): boolean;
1631
+ /**
1632
+ * 是否开启瓦片
1633
+ */
1634
+ get enableTiles(): boolean;
1635
+ set enableTiles(enable: boolean);
1457
1636
  /**
1458
1637
  * 获取模型边界线
1459
1638
  * @param threshold - 面片间夹角阈值
@@ -1492,6 +1671,7 @@ export declare class Model extends PBMContainer implements Subscribe<ModelEventT
1492
1671
  * @param imageOptions - 图片参数
1493
1672
  */
1494
1673
  load(workModel: WorkModel, textureOptions?: TextureOptions): Promise<void>;
1674
+ update(renderer: THREE_2.WebGLRenderer, camera: THREE_2.PerspectiveCamera): void;
1495
1675
  /**
1496
1676
  * 析构函数
1497
1677
  * @description
@@ -1602,6 +1782,23 @@ export declare class NetworkSubscribe extends Subscribe<{
1602
1782
 
1603
1783
  export declare type NetworkType = "XMLHttpRequest" | "Script" | "Image" | "Link";
1604
1784
 
1785
+ declare class OrientedBoundingBox {
1786
+ center: Vector3;
1787
+ halfAxes: Matrix3;
1788
+ constructor(center?: number[], halfAxes?: number[]);
1789
+ get halfSize(): number[];
1790
+ get quaternion(): Quaternion;
1791
+ fromCenterHalfSizeQuaternion(center: number[], halfSize: number[], quaternion: number[]): this;
1792
+ clone(): OrientedBoundingBox;
1793
+ equals(right: OrientedBoundingBox): boolean;
1794
+ getBoundingSphere(result?: BoundingSphere): BoundingSphere;
1795
+ intersectPlane(plane: Plane): number;
1796
+ distanceTo(point: number[]): number;
1797
+ distanceSquaredTo(point: number[]): number;
1798
+ computePlaneDistances(position: Vector3, direction: Vector3, result?: number[]): number[];
1799
+ transform(transformation: number[]): this;
1800
+ }
1801
+
1605
1802
  export declare class PanoCircleMesh extends THREE_2.Object3D implements PanoCircleMeshInterface {
1606
1803
  needsRender: boolean;
1607
1804
  private loadingMesh;
@@ -1764,6 +1961,8 @@ export declare class PBMMaterial extends THREE_2.ShaderMaterial implements PBMPa
1764
1961
  /** 模型透明度 */
1765
1962
  opacity: number;
1766
1963
  originOpacity: number;
1964
+ /** 楼层切割参数*/
1965
+ floorInfo: THREE_2.Vector3 | null;
1767
1966
  constructor(parameters?: Partial<PBMParameters>);
1768
1967
  }
1769
1968
 
@@ -1799,6 +1998,22 @@ export declare interface PBMParameters {
1799
1998
  perspToOrtho: number;
1800
1999
  /** 模型透明度 */
1801
2000
  opacity: number;
2001
+ /** 楼层切割参数*/
2002
+ floorInfo?: THREE_2.Vector3 | null;
2003
+ }
2004
+
2005
+ declare class Plane {
2006
+ normal: Vector3;
2007
+ distance: number;
2008
+ constructor(normal?: number[], distance?: number);
2009
+ fromNormalDistance(normal: number[], distance: number): this;
2010
+ fromPointNormal(point: number[], normal: number[]): this;
2011
+ fromCoefficients(a: number, b: number, c: number, d: number): this;
2012
+ clone(): Plane;
2013
+ equals(right: Plane): boolean;
2014
+ getPointDistance(point: number[]): number;
2015
+ transform(matrix4: Matrix4): this;
2016
+ projectPointOntoPlane(point: number[], result?: number[]): Vector3;
1802
2017
  }
1803
2018
 
1804
2019
  /**
@@ -1814,10 +2029,62 @@ export declare interface Pose {
1814
2029
  fov: number;
1815
2030
  /** 相机位置*/
1816
2031
  offset: THREE_2.Vector3;
2032
+ /** 相机距离 */
2033
+ distance: number;
1817
2034
  }
1818
2035
 
1819
2036
  export declare const PROXY_CONTROLLER_EVENT_NAMES: readonly ["cameraDirectionUpdate", "cameraUpdate", "cameraPositionUpdate", "panoSelected", "moveToPano", "moveToPanoCanceled", "panoWillArrive", "movingToPano", "panoArrived", "panoWillLoad", "panoLoaded", "panoLoadError", "initAnimationEnded", "initAnimationWillStart", "wantsGesture", "gesture", "wantsTapGesture", "tapGesture", "wantsPressGesture", "pressGesture", "wantsPanGesture", "wantsInteriaPan", "panGesture", "interiaPan", "wantsPinchGesture", "pinchGesture", "wantsMouseWheel", "mouseWheel", "wantsShowIntersectionOnModel", "intersectionOnModelUpdate", "intersectionHidden", "textureStartLoad", "textureLoading", "textureAbort", "textureLoaded", "textureError"];
1820
2037
 
2038
+ declare type RequestResult = null | {
2039
+ done: () => void;
2040
+ };
2041
+
2042
+ /**
2043
+ * Used to issue a request, without having them "deeply queued" by the browser.
2044
+ * @todo - Track requests globally, across multiple servers
2045
+ */
2046
+ declare class RequestScheduler<Identiy> {
2047
+ private props;
2048
+ private activeRequestCount;
2049
+ /** Tracks the number of active requests and prioritizes/cancels queued requests. */
2050
+ private requestQueue;
2051
+ private requestMap;
2052
+ private deferred;
2053
+ constructor(props?: RequestSchedulerOptions);
2054
+ /**
2055
+ * Called by an application that wants to issue a request, without having it deeply queued by the browser
2056
+ *
2057
+ * When the returned promise resolved, it is OK for the application to issue a request.
2058
+ * The promise resolves to an object that contains a `done` method.
2059
+ * When the application's request has completed (or failed), the application must call the `done` function
2060
+ *
2061
+ * @param identiy
2062
+ * @param getPriority will be called when request "slots" open up,
2063
+ * allowing the caller to update priority or cancel the request
2064
+ * Highest priority executes first, priority < 0 cancels the request
2065
+ * @returns a promise
2066
+ * - resolves to a object (with a `done` field) when the request can be issued without queueing,
2067
+ * - resolves to `null` if the request has been cancelled (by the callback return < 0).
2068
+ * In this case the application should not issue the request
2069
+ */
2070
+ scheduleRequest(identiy: Identiy, getPriority?: (identiy: Identiy) => number): Promise<RequestResult>;
2071
+ private issueRequest;
2072
+ /** We check requests asynchronously, to prevent multiple updates */
2073
+ private issueNewRequests;
2074
+ /** Refresh all requests */
2075
+ private issueNewRequestsAsync;
2076
+ /** Ensure all requests have updated priorities, and that no longer valid requests are cancelled */
2077
+ private updateAllRequests;
2078
+ /** Update a single request by calling the callback */
2079
+ private updateRequest;
2080
+ }
2081
+
2082
+ /** RequestScheduler Options */
2083
+ declare type RequestSchedulerOptions = {
2084
+ throttleRequests?: boolean;
2085
+ maxRequests?: number;
2086
+ };
2087
+
1821
2088
  /** Five 场景*/
1822
2089
  export declare class Scene extends THREE_2.Scene {
1823
2090
  add(...objects: AddableObject[]): this;
@@ -1960,6 +2227,288 @@ export declare interface TextureOptions {
1960
2227
  mappings?: ImageURLMappings;
1961
2228
  }
1962
2229
 
2230
+ /**
2231
+ * A Tile3DHeader represents a tile as Tileset3D. When a tile is first created, its content is not loaded;
2232
+ * the content is loaded on-demand when needed based on the view.
2233
+ * Do not construct this directly, instead access tiles through {@link Tileset3D#tileVisible}.
2234
+ */
2235
+ declare class Tile3D {
2236
+ cacheNode?: CacheNode<Tile3D>;
2237
+ tileset: Tileset3D;
2238
+ header: TilesetJSONNode;
2239
+ content?: TileContent;
2240
+ parent?: Tile3D;
2241
+ boundingVolume: OrientedBoundingBox;
2242
+ contentState: "UNLOADED" | "LOADING" | "PROCESSING" | "READY" | "FAILED";
2243
+ children: Tile3D[];
2244
+ depth: number;
2245
+ selectionDepth: number;
2246
+ transform: Matrix4;
2247
+ computedTransform: Matrix4;
2248
+ frameNumber: number;
2249
+ touchedFrameNumber: number;
2250
+ requestedFrameNumber: number;
2251
+ selectedFrameNumber: number;
2252
+ distanceToCamera: number;
2253
+ centerZDepth: number;
2254
+ screenSpaceError: number;
2255
+ visibilityPlaneMask: number;
2256
+ visible: boolean;
2257
+ shouldRefine: boolean;
2258
+ /**
2259
+ * @constructs
2260
+ * Create a TileHeader instance
2261
+ * @param tileset - Tileset3D instance
2262
+ * @param header - tile header - JSON loaded from a dataset
2263
+ * @param parentHeader - parent TileHeader instance
2264
+ */
2265
+ constructor(tileset: Tileset3D, header: TilesetJSONNode, parentHeader?: Tile3D);
2266
+ get id(): string;
2267
+ get refine(): "REPLACE" | "ADD";
2268
+ get type(): "EMPTY" | "SCENEGRAPH" | "MESH";
2269
+ get contentUrl(): string;
2270
+ get lodMetricType(): "geometricError";
2271
+ get lodMetricValue(): number;
2272
+ get hasEmptyContent(): boolean;
2273
+ get selected(): boolean;
2274
+ /** Returns true if tile is not an empty tile and not an external tileset */
2275
+ get hasRenderContent(): boolean;
2276
+ /** Returns true if tile has children */
2277
+ get hasChildren(): boolean;
2278
+ /**
2279
+ * Determines if the tile's content is ready. This is automatically `true` for
2280
+ * tiles with empty content.
2281
+ */
2282
+ get contentReady(): boolean;
2283
+ /**
2284
+ * Determines if the tile has available content to render. `true` if the tile's
2285
+ * content is ready or if it has expired content this renders while new content loads; otherwise,
2286
+ */
2287
+ get contentAvailable(): boolean;
2288
+ /** Returns true if tile has renderable content but it's unloaded */
2289
+ get hasUnloadedContent(): boolean;
2290
+ /**
2291
+ * Determines if the tile's content has not be requested. `true` if tile's
2292
+ * content has not be requested; otherwise, `false`.
2293
+ */
2294
+ get contentUnloaded(): boolean;
2295
+ get contentFailed(): boolean;
2296
+ /** Get the tile's screen space error. */
2297
+ getScreenSpaceError(frameState: FrameState, useParentLodMetric: boolean): number;
2298
+ getPriority(): number;
2299
+ /**
2300
+ * Requests the tile's content.
2301
+ * The request may not be made if the Request Scheduler can't prioritize it.
2302
+ */
2303
+ loadContent(): Promise<boolean>;
2304
+ unloadContent(): void;
2305
+ /**
2306
+ * Update the tile's visibility
2307
+ */
2308
+ updateVisibility(frameState: FrameState): void;
2309
+ visibility(frameState: FrameState, parentVisibilityPlaneMask: number): number;
2310
+ /**
2311
+ * Computes the (potentially approximate) distance from the closest point of the tile's bounding volume to the camera.
2312
+ * @param frameState The frame state.
2313
+ * @returns {Number} The distance, in meters, or zero if the camera is inside the bounding volume.
2314
+ */
2315
+ distanceToTile(frameState: FrameState): number;
2316
+ updateTransform(parentTransform?: Matrix4): void;
2317
+ }
2318
+
2319
+ export declare class Tile3DModel extends PBMContainer {
2320
+ tileset?: Tileset3D;
2321
+ private options;
2322
+ private nodeGroup;
2323
+ private boundingGroup;
2324
+ private nodes;
2325
+ private boundings;
2326
+ private unloadTileQueue;
2327
+ private timer;
2328
+ private clock;
2329
+ private lastCameraTransform;
2330
+ private lastCameraAspect;
2331
+ private lastCameraFov;
2332
+ private sseDenominator;
2333
+ private lastCamera;
2334
+ private lastRenderer;
2335
+ private enabled;
2336
+ constructor(loaderOptions?: Partial<LoaderOptions>);
2337
+ get enable(): boolean;
2338
+ set enable(value: boolean);
2339
+ load(url: WorkModelTiles_2): void;
2340
+ update(renderer: THREE_2.WebGLRenderer, camera: THREE_2.PerspectiveCamera): void;
2341
+ private tilesetUpdate;
2342
+ reset(): void;
2343
+ }
2344
+
2345
+ declare interface TileContent {
2346
+ version: 1;
2347
+ magic: number;
2348
+ byteLength: number;
2349
+ header: {
2350
+ featureTableJsonByteLength: number;
2351
+ featureTableBinaryByteLength: number;
2352
+ batchTableJsonByteLength: number;
2353
+ batchTableBinaryByteLength: number;
2354
+ batchLength: number;
2355
+ };
2356
+ featureTableJson: Record<string, any>;
2357
+ featureTableBinary: Uint8Array;
2358
+ batchTableJson: Record<string, any>;
2359
+ batchTableBinary: Uint8Array;
2360
+ rotateYtoZ: boolean;
2361
+ gltfUpAxis: "X" | "Y" | "Z";
2362
+ gltfArrayBuffer: ArrayBuffer;
2363
+ gltfByteOffset: number;
2364
+ gltfByteLength: number;
2365
+ rtcCenter?: Float32Array;
2366
+ }
2367
+
2368
+ declare class Tileset3D {
2369
+ rawJson: any;
2370
+ options: Tileset3dOptions;
2371
+ root: Tile3D;
2372
+ traverser: Tileset3DTraverser;
2373
+ cache: TilesetCache;
2374
+ requestScheduler: RequestScheduler<string>;
2375
+ selectedTiles: Tile3D[];
2376
+ requestedTiles: Tile3D[];
2377
+ memoryUsageInBytes: number;
2378
+ frameNumber: number;
2379
+ private _tiles;
2380
+ private pendingCount;
2381
+ b3dmMapping: B3DMMapping;
2382
+ /**
2383
+ * Create a new Tileset3D
2384
+ * @param json
2385
+ * @param options
2386
+ */
2387
+ constructor(json: TilesetJSON, options: Tileset3dOptions);
2388
+ get maxMemoryUsage(): number;
2389
+ get asset(): any;
2390
+ get type(): any;
2391
+ get basePath(): any;
2392
+ get modelMatrix(): Matrix4;
2393
+ get geometricError(): number;
2394
+ get lodMetricType(): number;
2395
+ get lodMetricValue(): number;
2396
+ get refine(): 'ADD' | "REPLACE";
2397
+ get tiles(): Tile3D[];
2398
+ get floorInfo(): FloorInfo[];
2399
+ /** Release resources */
2400
+ reset(): void;
2401
+ /** Is the tileset loaded (update needs to have been called at least once) */
2402
+ isLoaded(): boolean;
2403
+ /**
2404
+ * The callback to post-process tiles after traversal procedure
2405
+ * @param frameState - frame state for tile culling
2406
+ */
2407
+ private onTraversalEnd;
2408
+ loadTile(tile: Tile3D): void;
2409
+ unloadTile(tile: Tile3D): void;
2410
+ }
2411
+
2412
+ declare interface Tileset3dOptions {
2413
+ throttleRequests: boolean;
2414
+ maxRequests: number;
2415
+ maxMemoryUsage: number;
2416
+ modelMatrix: Matrix4;
2417
+ maxScreenSpaceError: number;
2418
+ viewDistanceScale: number;
2419
+ onTileLoad: (tile: Tile3D) => any;
2420
+ onTileUnload: (tile: Tile3D) => any;
2421
+ onTileError: (tile: Tile3D, message: string) => any;
2422
+ contentLoader: (tile: Tile3D) => Promise<void>;
2423
+ onTraversalComplete: (selectedTiles: Tile3D[]) => Tile3D[];
2424
+ allowHosts?: string[];
2425
+ networkSubscribe?: NetworkSubscribe;
2426
+ maxDepth?: number;
2427
+ }
2428
+
2429
+ declare class Tileset3DTraverser {
2430
+ root: Tile3D | null;
2431
+ options: TilesetTraverserProps;
2432
+ requestedTiles: Record<string, Tile3D>;
2433
+ selectedTiles: Record<string, Tile3D>;
2434
+ emptyTiles: Record<string, Tile3D>;
2435
+ protected _traversalStack: ManagedArray<Tile3D>;
2436
+ protected _emptyTraversalStack: ManagedArray<Tile3D>;
2437
+ protected _frameNumber: number | null;
2438
+ constructor(options: TilesetTraverserProps);
2439
+ traverse(root: Tile3D, frameState: FrameState): void;
2440
+ reset(): void;
2441
+ executeTraversal(root: Tile3D, frameState: FrameState): void;
2442
+ updateChildTiles(tile: Tile3D, frameState: FrameState): boolean;
2443
+ updateAndPushChildren(tile: Tile3D, frameState: FrameState, stack: ManagedArray<Tile3D>, depth: number): boolean;
2444
+ updateTile(tile: Tile3D, frameState: FrameState): void;
2445
+ selectTile(tile: Tile3D, frameState: FrameState): void;
2446
+ loadTile(tile: Tile3D, frameState: FrameState): void;
2447
+ touchTile(tile: Tile3D, frameState: FrameState): void;
2448
+ canTraverse(tile: Tile3D, frameState: FrameState, useParentMetric?: boolean, ignoreVisibility?: boolean): boolean;
2449
+ shouldLoadTile(tile: Tile3D): boolean;
2450
+ shouldSelectTile(tile: Tile3D): boolean;
2451
+ shouldRefine(tile: Tile3D, frameState: FrameState, useParentMetric: boolean): boolean;
2452
+ updateTileVisibility(tile: Tile3D, frameState: FrameState): void;
2453
+ meetsScreenSpaceErrorEarly(tile: Tile3D, frameState: FrameState): boolean;
2454
+ compareDistanceToCamera(a: Tile3D, b: Tile3D): number;
2455
+ anyChildrenVisible(tile: Tile3D, frameState: FrameState): boolean;
2456
+ everyChildrenVisibleIsLoaded(tile: Tile3D): boolean;
2457
+ executeEmptyTraversal(root: Tile3D, frameState: FrameState): boolean;
2458
+ }
2459
+
2460
+ declare class TilesetCache {
2461
+ private list;
2462
+ private sentinel;
2463
+ constructor();
2464
+ reset(): void;
2465
+ touch(tile: Tile3D): void;
2466
+ add(tile: Tile3D, addCallback?: (tile: Tile3D) => void): void;
2467
+ unloadTile(tile: Tile3D, unloadCallback?: (tile: Tile3D) => void): void;
2468
+ unloadTiles(isOverMemory: () => boolean, unloadCallback?: (tile: Tile3D) => void): void;
2469
+ }
2470
+
2471
+ declare interface TilesetJSON {
2472
+ asset: {
2473
+ gltfUpAxis: "X" | "Y" | "Z";
2474
+ version: "1.0";
2475
+ };
2476
+ basePath: string;
2477
+ lodMetricType: "geometricError";
2478
+ geometricError: number;
2479
+ lodMetricValue: number;
2480
+ root: TilesetJSONNode;
2481
+ type: "TILES3D";
2482
+ floor_info: FloorInfo[] | [];
2483
+ b3dmMapping: B3DMMapping;
2484
+ }
2485
+
2486
+ declare interface TilesetJSONNode {
2487
+ boundingVolume: {
2488
+ box: number[];
2489
+ };
2490
+ content: {
2491
+ uri: string;
2492
+ };
2493
+ id: string;
2494
+ transform?: number[];
2495
+ contentUrl?: string;
2496
+ children: TilesetJSONNode[];
2497
+ lodMetricType: "geometricError";
2498
+ geometricError: number;
2499
+ lodMetricValue: number;
2500
+ refine: "REPLACE" | "ADD";
2501
+ type: "EMPTY" | "SCENEGRAPH" | "MESH";
2502
+ }
2503
+
2504
+ declare type TilesetTraverserProps = {
2505
+ loadSiblings: boolean;
2506
+ skipLevelOfDetail: boolean;
2507
+ maxScreenSpaceError: number;
2508
+ maxDepth?: number;
2509
+ onTraversalEnd: (frameState: FrameState) => any;
2510
+ };
2511
+
1963
2512
  export declare interface TopviewControllerCustomInitArgs extends Omit<FloorplanControllerCustomInitArgs, "defaultLongitude" | "defaultLatitude" | "maxLatitude" | "minLatitude"> {
1964
2513
  }
1965
2514
 
@@ -2026,7 +2575,7 @@ export declare interface WorkImage extends WorkCubeImage {
2026
2575
  }
2027
2576
 
2028
2577
  /** 初始化位姿参数 */
2029
- export declare interface WorkInitial extends Omit<State, "offset"> {
2578
+ export declare interface WorkInitial extends Omit<State, "offset" | "distance"> {
2030
2579
  }
2031
2580
 
2032
2581
  /** 模型数据 */
@@ -2039,6 +2588,22 @@ export declare interface WorkModel {
2039
2588
  textureBase: string;
2040
2589
  /** 是否开启 bvh 碰撞树,开启会大大加快射线碰撞的执行效率 */
2041
2590
  bvh: boolean;
2591
+ tiles?: WorkModelTiles;
2592
+ }
2593
+
2594
+ /** 模型瓦片 */
2595
+ export declare interface WorkModelTiles {
2596
+ tileset_url: string;
2597
+ tileset_url_md5: string;
2598
+ b3md_mappings_url: string;
2599
+ b3md_mappings_url_md5: string;
2600
+ }
2601
+
2602
+ declare interface WorkModelTiles_2 {
2603
+ tileset_url: string;
2604
+ tileset_url_md5: string;
2605
+ b3md_mappings_url: string;
2606
+ b3md_mappings_url_md5: string;
2042
2607
  }
2043
2608
 
2044
2609
  /** 每个点位的数据 */