@cognite/reveal 2.1.2 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/core/cad.d.ts +1 -2
  2. package/core/src/datamodels/cad/CadManager.d.ts +10 -10
  3. package/core/src/datamodels/cad/CadModelFactory.d.ts +10 -4
  4. package/core/src/datamodels/cad/createCadManager.d.ts +4 -5
  5. package/core/src/datamodels/cad/picking.d.ts +1 -1
  6. package/core/src/datamodels/cad/rendering/RenderAlreadyLoadedGeometryProvider.d.ts +2 -1
  7. package/core/src/datamodels/cad/styling/AssetNodeCollection.d.ts +8 -2
  8. package/core/src/datamodels/cad/styling/InvertedNodeCollection.d.ts +3 -2
  9. package/core/src/datamodels/cad/styling/PopulateIndexSetFromPagedResponseHelper.d.ts +10 -4
  10. package/core/src/datamodels/cad/styling/PropertyFilterNodeCollection.d.ts +5 -11
  11. package/core/src/datamodels/cad/styling/SinglePropertyFilterNodeCollection.d.ts +5 -14
  12. package/core/src/datamodels/pointcloud/PointCloudManager.d.ts +5 -4
  13. package/core/src/datamodels/pointcloud/PointCloudMetadataRepository.d.ts +6 -5
  14. package/core/src/datamodels/pointcloud/createPointCloudManager.d.ts +2 -4
  15. package/core/src/datamodels/pointcloud/index.d.ts +5 -0
  16. package/core/src/index.d.ts +1 -1
  17. package/core/src/internals.d.ts +15 -0
  18. package/core/src/public/RevealManager.d.ts +11 -8
  19. package/core/src/public/createRevealManager.d.ts +2 -3
  20. package/core/src/public/migration/Cognite3DModel.d.ts +20 -1
  21. package/core/src/public/migration/Cognite3DViewer.d.ts +30 -10
  22. package/core/src/public/migration/types.d.ts +36 -23
  23. package/core/src/public/types.d.ts +3 -1
  24. package/core/src/{public/migration → storage}/RevealManagerHelper.d.ts +7 -7
  25. package/core/src/utilities/Spinner.d.ts +4 -5
  26. package/core/src/utilities/ViewStateHelper.d.ts +2 -2
  27. package/core/src/utilities/worldToViewport.d.ts +1 -2
  28. package/extensions/datasource.d.ts +9 -0
  29. package/extensions/datasource.js +30 -0
  30. package/extensions/datasource.map +1 -0
  31. package/index.d.ts +2 -1
  32. package/index.js +214 -125
  33. package/index.map +1 -1
  34. package/package.json +6 -8
  35. package/packages/cad-geometry-loaders/index.d.ts +4 -11
  36. package/packages/cad-geometry-loaders/src/{CadModelSectorBudget.d.ts → CadModelBudget.d.ts} +3 -10
  37. package/packages/cad-geometry-loaders/src/CadModelUpdateHandler.d.ts +5 -7
  38. package/packages/cad-geometry-loaders/src/sector/SectorLoader.d.ts +7 -6
  39. package/packages/cad-geometry-loaders/src/sector/culling/ByScreenSizeSectorCuller.d.ts +23 -0
  40. package/packages/cad-geometry-loaders/src/sector/culling/ByVisibilityGpuSectorCuller.d.ts +3 -5
  41. package/packages/cad-geometry-loaders/src/sector/culling/WeightFunctionsHelper.d.ts +50 -0
  42. package/packages/cad-geometry-loaders/src/sector/culling/computeNdcAreaOfBox.d.ts +12 -0
  43. package/packages/cad-geometry-loaders/src/sector/culling/computeSectorCost.d.ts +7 -0
  44. package/packages/cad-geometry-loaders/src/sector/culling/createV8SectorCuller.d.ts +7 -0
  45. package/packages/cad-geometry-loaders/src/sector/culling/takensectors/TakenSectorMapBase.d.ts +11 -0
  46. package/packages/cad-geometry-loaders/src/sector/culling/takensectors/TakenV8SectorMap.d.ts +17 -0
  47. package/packages/cad-geometry-loaders/src/sector/culling/{TakenSectorTree.d.ts → takensectors/TakenV8SectorTree.d.ts} +6 -6
  48. package/packages/cad-geometry-loaders/src/sector/culling/takensectors/TakenV9SectorMap.d.ts +20 -0
  49. package/packages/cad-geometry-loaders/src/sector/culling/takensectors/index.d.ts +5 -0
  50. package/packages/cad-geometry-loaders/src/sector/culling/transformBoxToNDC.d.ts +5 -0
  51. package/packages/cad-geometry-loaders/src/sector/culling/types.d.ts +16 -4
  52. package/packages/cad-geometry-loaders/src/sector/rxSectorUtilities.d.ts +2 -2
  53. package/packages/cad-geometry-loaders/src/utilities/rxOperations.d.ts +3 -2
  54. package/packages/cad-geometry-loaders/src/utilities/types.d.ts +0 -23
  55. package/packages/cad-parsers/index.d.ts +7 -6
  56. package/packages/{cad-geometry-loaders/src/material-manager/rendering → cad-parsers/src/cad}/filterInstanceMesh.d.ts +1 -1
  57. package/packages/cad-parsers/src/cad/filterPrimitivesCommon.d.ts +5 -0
  58. package/packages/cad-parsers/src/cad/{filterPrimitives.d.ts → filterPrimitivesV8.d.ts} +0 -0
  59. package/packages/cad-parsers/src/cad/filterPrimitivesV9.d.ts +6 -0
  60. package/packages/cad-parsers/src/cad/primitiveGeometries.d.ts +1 -1
  61. package/packages/{cad-geometry-loaders/src/material-manager/rendering → cad-parsers/src/cad}/triangleMeshes.d.ts +1 -1
  62. package/packages/cad-parsers/src/cad/types.d.ts +2 -2
  63. package/packages/cad-parsers/src/metadata/CadModelMetadata.d.ts +10 -0
  64. package/packages/cad-parsers/src/metadata/CadModelMetadataRepository.d.ts +6 -6
  65. package/packages/cad-parsers/src/metadata/MetadataRepository.d.ts +3 -2
  66. package/packages/cad-parsers/src/metadata/parsers/CadMetadataParserGltf.d.ts +6 -0
  67. package/packages/cad-parsers/src/metadata/parsers/CadMetadataParserV8.d.ts +2 -47
  68. package/packages/cad-parsers/src/metadata/parsers/types.d.ts +60 -0
  69. package/packages/cad-parsers/src/metadata/types.d.ts +15 -4
  70. package/packages/{cad-geometry-loaders → cad-parsers}/src/sector/RootSectorNode.d.ts +1 -1
  71. package/packages/{cad-geometry-loaders → cad-parsers}/src/sector/SectorNode.d.ts +1 -1
  72. package/packages/cad-parsers/src/utilities/SectorSceneFactory.d.ts +2 -5
  73. package/packages/cad-parsers/src/utilities/computeBoundingBoxFromAttributes.d.ts +10 -0
  74. package/packages/{cad-geometry-loaders → cad-parsers}/src/utilities/float32BufferToMatrix.d.ts +0 -0
  75. package/packages/cad-parsers/src/utilities/types.d.ts +26 -0
  76. package/packages/cad-styling/index.d.ts +4 -0
  77. package/packages/cad-styling/src/CombineNodeCollectionBase.d.ts +4 -2
  78. package/packages/cad-styling/src/IntersectionNodeCollection.d.ts +4 -0
  79. package/packages/cad-styling/src/NodeAppearance.d.ts +23 -0
  80. package/packages/cad-styling/src/NodeAppearanceProvider.d.ts +7 -0
  81. package/packages/cad-styling/src/NodeCollectionBase.d.ts +7 -0
  82. package/packages/cad-styling/src/TreeIndexNodeCollection.d.ts +17 -1
  83. package/packages/cad-styling/src/UnionNodeCollection.d.ts +3 -0
  84. package/packages/cad-styling/src/prioritized/AreaCollection.d.ts +39 -0
  85. package/packages/cad-styling/src/prioritized/BoxClusterer.d.ts +29 -0
  86. package/packages/cad-styling/src/prioritized/ClusteredAreaCollection.d.ts +17 -0
  87. package/packages/cad-styling/src/prioritized/EmptyAreaCollection.d.ts +18 -0
  88. package/packages/cad-styling/src/prioritized/types.d.ts +7 -0
  89. package/packages/camera-manager/index.d.ts +3 -1
  90. package/packages/camera-manager/src/CameraManager.d.ts +84 -0
  91. package/packages/camera-manager/src/ComboControls.d.ts +60 -42
  92. package/packages/camera-manager/src/Keyboard.d.ts +10 -7
  93. package/packages/camera-manager/src/types.d.ts +64 -0
  94. package/packages/data-source/index.d.ts +6 -0
  95. package/packages/data-source/src/CdfDataSource.d.ts +19 -0
  96. package/packages/data-source/src/DataSource.d.ts +26 -0
  97. package/packages/data-source/src/LocalDataSource.d.ts +15 -0
  98. package/packages/metrics/index.d.ts +5 -0
  99. package/packages/metrics/src/MetricsLogger.d.ts +21 -0
  100. package/packages/metrics/src/types.d.ts +7 -0
  101. package/packages/modeldata-api/index.d.ts +8 -3
  102. package/packages/modeldata-api/src/{CdfModelDataClient.d.ts → CdfModelDataProvider.d.ts} +6 -6
  103. package/packages/modeldata-api/src/CdfModelIdentifier.d.ts +15 -0
  104. package/packages/modeldata-api/src/CdfModelMetadataProvider.d.ts +11 -27
  105. package/packages/modeldata-api/src/CdfModelOutputsProvider.d.ts +16 -0
  106. package/packages/modeldata-api/src/LocalModelDataProvider.d.ts +10 -0
  107. package/packages/modeldata-api/src/LocalModelIdentifier.d.ts +14 -0
  108. package/packages/modeldata-api/src/LocalModelMetadataProvider.d.ts +11 -14
  109. package/packages/modeldata-api/src/ModelIdentifier.d.ts +12 -0
  110. package/packages/modeldata-api/src/ModelMetadataProvider.d.ts +19 -0
  111. package/packages/modeldata-api/src/types.d.ts +19 -26
  112. package/packages/nodes-api/index.d.ts +0 -1
  113. package/packages/nodes-api/src/NodesApiClient.d.ts +16 -8
  114. package/packages/nodes-api/src/NodesCdfClient.d.ts +9 -4
  115. package/packages/nodes-api/src/NodesLocalClient.d.ts +10 -5
  116. package/packages/nodes-api/src/types.d.ts +0 -4
  117. package/packages/rendering/index.d.ts +17 -0
  118. package/packages/{cad-geometry-loaders/src/material-manager → rendering/src}/CadMaterialManager.d.ts +5 -5
  119. package/packages/rendering/src/GeometryBatchingManager.d.ts +30 -0
  120. package/packages/{cad-geometry-loaders → rendering}/src/InstancedMeshManager.d.ts +1 -1
  121. package/packages/{cad-geometry-loaders → rendering}/src/cameraconfig.d.ts +0 -0
  122. package/packages/{cad-geometry-loaders/src/material-manager → rendering/src}/rendering/EffectRenderManager.d.ts +28 -12
  123. package/packages/{cad-geometry-loaders/src/material-manager/styling → rendering/src/rendering}/NodeAppearanceTextureBuilder.d.ts +8 -7
  124. package/packages/{cad-parsers/src/cad → rendering/src/rendering}/RenderMode.d.ts +0 -0
  125. package/packages/{cad-geometry-loaders/src/material-manager → rendering/src}/rendering/createSimpleGeometryMesh.d.ts +1 -1
  126. package/packages/{cad-parsers/src/cad → rendering/src/rendering}/matCapTextureData.d.ts +0 -0
  127. package/packages/{cad-parsers/src/cad → rendering/src/rendering}/materials.d.ts +0 -0
  128. package/packages/{cad-parsers/src/cad → rendering/src/rendering}/primitives.d.ts +3 -3
  129. package/packages/{cad-parsers/src/cad → rendering/src/rendering}/shaders.d.ts +1 -1
  130. package/packages/{cad-geometry-loaders/src/material-manager → rendering/src}/rendering/types.d.ts +1 -1
  131. package/packages/{cad-geometry-loaders/src → rendering/src/sector}/CadNode.d.ts +18 -9
  132. package/packages/{cad-geometry-loaders/src/material-manager/styling → rendering/src/transform}/NodeTransformProvider.d.ts +1 -1
  133. package/packages/{cad-geometry-loaders/src/material-manager/styling → rendering/src/transform}/NodeTransformTextureBuilder.d.ts +1 -1
  134. package/packages/{cad-geometry-loaders/src/material-manager/styling → rendering/src/transform}/TransformOverrideBuffer.d.ts +3 -3
  135. package/packages/rendering/src/utilities/types.d.ts +26 -0
  136. package/packages/sector-loader/index.d.ts +6 -0
  137. package/packages/sector-loader/src/GltfSectorRepository.d.ts +14 -0
  138. package/packages/{cad-geometry-loaders/src/sector/Repository.d.ts → sector-loader/src/SectorRepository.d.ts} +2 -2
  139. package/packages/{cad-geometry-loaders/src/sector/CachedRepository.d.ts → sector-loader/src/V8SectorRepository.d.ts} +6 -6
  140. package/packages/{cad-geometry-loaders/src/sector → sector-loader/src/v8}/SimpleAndDetailedToSector3D.d.ts +4 -4
  141. package/packages/{cad-geometry-loaders/src/utilities → sector-loader/src/v8}/arrays.d.ts +0 -0
  142. package/packages/{cad-geometry-loaders/src/utilities → sector-loader/src/v8}/groupMeshesByNumber.d.ts +0 -0
  143. package/packages/sector-loader/src/v8/sectorUtilities.d.ts +16 -0
  144. package/packages/sector-parser/index.d.ts +5 -0
  145. package/packages/sector-parser/src/GltfSectorParser.d.ts +18 -0
  146. package/packages/sector-parser/src/reveal-glb-parser/GlbMetadataParser.d.ts +14 -0
  147. package/packages/sector-parser/src/reveal-glb-parser/primitiveGeometries.d.ts +12 -0
  148. package/packages/sector-parser/src/types.d.ts +98 -0
  149. package/packages/tools/index.d.ts +4 -1
  150. package/packages/tools/src/AxisView/AxisViewTool.d.ts +2 -2
  151. package/packages/tools/src/DebugLoadedSectorsTool.d.ts +1 -1
  152. package/packages/tools/src/Geomap/Geomap.d.ts +5 -2
  153. package/packages/tools/src/Geomap/GeomapTool.d.ts +5 -2
  154. package/packages/tools/src/HtmlOverlay/BucketGrid2D.d.ts +28 -0
  155. package/packages/tools/src/HtmlOverlay/HtmlOverlayTool.d.ts +160 -0
  156. package/packages/tools/src/Timeline/Keyframe.d.ts +39 -0
  157. package/packages/tools/src/Timeline/TimelineTool.d.ts +79 -0
  158. package/packages/tools/src/Timeline/types.d.ts +13 -0
  159. package/packages/utilities/index.d.ts +7 -3
  160. package/packages/utilities/src/NumericRange.d.ts +2 -1
  161. package/packages/utilities/src/RandomColors.d.ts +34 -0
  162. package/packages/utilities/src/WebGLRendererStateHelper.d.ts +1 -1
  163. package/packages/utilities/src/counterMap.d.ts +5 -0
  164. package/packages/utilities/src/datastructures/DynamicDefragmentedBuffer.d.ts +18 -5
  165. package/packages/utilities/src/events/InputHandler.d.ts +25 -0
  166. package/packages/utilities/src/events/index.d.ts +1 -0
  167. package/packages/utilities/src/indexset/IndexSet.d.ts +1 -1
  168. package/packages/utilities/src/three/isBox3OnPositiveSideOfPlane.d.ts +10 -0
  169. package/packages/utilities/src/three/toThreeBox3.d.ts +6 -0
  170. package/packages/utilities/src/three/visitBox3CornerPoints.d.ts +12 -0
  171. package/packages/utilities/src/types.d.ts +1 -0
  172. package/tools.js +77 -117
  173. package/tools.map +1 -1
  174. package/packages/cad-geometry-loaders/src/sector/sectorUtilities.d.ts +0 -19
  175. package/packages/cad-parsers/src/cad/computeBoundingBoxFromAttributes.d.ts +0 -9
  176. package/packages/modeldata-api/src/LocalModelDataClient.d.ts +0 -10
  177. package/packages/tools/src/HtmlOverlayTool.d.ts +0 -88
  178. package/packages/utilities/src/metrics.d.ts +0 -15
  179. package/packages/utilities/src/three/getBox3CornerPoints.d.ts +0 -5
@@ -2,50 +2,5 @@
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
4
  import { SectorScene } from '../../utilities/types';
5
- export interface CadSectorMetadataV8 {
6
- readonly id: number;
7
- readonly parentId: number;
8
- readonly path: string;
9
- readonly depth: number;
10
- readonly estimatedDrawCallCount: number;
11
- readonly estimatedTriangleCount: number;
12
- readonly boundingBox: {
13
- readonly min: {
14
- x: number;
15
- y: number;
16
- z: number;
17
- };
18
- readonly max: {
19
- x: number;
20
- y: number;
21
- z: number;
22
- };
23
- };
24
- readonly indexFile: {
25
- readonly fileName: string;
26
- readonly peripheralFiles: string[];
27
- readonly downloadSize: number;
28
- };
29
- readonly facesFile: {
30
- readonly quadSize: number;
31
- readonly coverageFactors: {
32
- xy: number;
33
- yz: number;
34
- xz: number;
35
- };
36
- readonly recursiveCoverageFactors: {
37
- xy: number;
38
- yz: number;
39
- xz: number;
40
- } | undefined;
41
- readonly fileName: string | null;
42
- readonly downloadSize: number;
43
- } | null;
44
- }
45
- export interface CadMetadataV8 {
46
- readonly version: 8;
47
- readonly maxTreeIndex: number;
48
- readonly sectors: CadSectorMetadataV8[];
49
- readonly unit: string | null;
50
- }
51
- export declare function parseCadMetadataV8(metadata: CadMetadataV8): SectorScene;
5
+ import { CadSceneRootMetadata } from './types';
6
+ export declare function parseCadMetadataV8(metadata: CadSceneRootMetadata): SectorScene;
@@ -0,0 +1,60 @@
1
+ /*!
2
+ * Copyright 2021 Cognite AS
3
+ */
4
+ export declare type CadSceneRootMetadata = {
5
+ readonly version: number;
6
+ readonly maxTreeIndex: number;
7
+ readonly sectors: SceneSectorMetadata[];
8
+ readonly unit: string | null;
9
+ };
10
+ export declare type SceneSectorMetadata = BaseSceneSectorMetadata & (GltfSceneSectorMetadata | I3dF3dSceneSectorMetadata);
11
+ export declare type V8SceneSectorMetadata = BaseSceneSectorMetadata & I3dF3dSceneSectorMetadata;
12
+ export declare type V9SceneSectorMetadata = BaseSceneSectorMetadata & GltfSceneSectorMetadata;
13
+ export declare type BaseSceneSectorMetadata = {
14
+ readonly id: number;
15
+ readonly parentId: number | null;
16
+ readonly path: string;
17
+ readonly depth: number;
18
+ readonly estimatedDrawCallCount: number;
19
+ readonly estimatedTriangleCount: number;
20
+ readonly boundingBox: {
21
+ readonly min: {
22
+ x: number;
23
+ y: number;
24
+ z: number;
25
+ };
26
+ readonly max: {
27
+ x: number;
28
+ y: number;
29
+ z: number;
30
+ };
31
+ };
32
+ };
33
+ export declare type GltfSceneSectorMetadata = {
34
+ readonly sectorFileName: string | null;
35
+ readonly maxDiagonalLength: number;
36
+ readonly minDiagonalLength: number;
37
+ readonly downloadSize: number;
38
+ };
39
+ export declare type I3dF3dSceneSectorMetadata = {
40
+ readonly indexFile: {
41
+ readonly fileName: string;
42
+ readonly peripheralFiles: string[];
43
+ readonly downloadSize: number;
44
+ };
45
+ readonly facesFile: {
46
+ readonly quadSize: number;
47
+ readonly coverageFactors: {
48
+ xy: number;
49
+ yz: number;
50
+ xz: number;
51
+ };
52
+ readonly recursiveCoverageFactors: {
53
+ xy: number;
54
+ yz: number;
55
+ xz: number;
56
+ } | undefined;
57
+ readonly fileName: string | null;
58
+ readonly downloadSize: number;
59
+ } | null;
60
+ };
@@ -28,14 +28,25 @@ export interface SectorMetadataFacesFileSection {
28
28
  readonly fileName: string | null;
29
29
  readonly downloadSize: number;
30
30
  }
31
- export interface SectorMetadata {
31
+ export declare type BaseSectorMetadata = {
32
32
  readonly id: number;
33
33
  readonly path: string;
34
34
  readonly depth: number;
35
35
  readonly bounds: THREE.Box3;
36
- readonly indexFile: SectorMetadataIndexFileSection;
37
- readonly facesFile: SectorMetadataFacesFileSection;
38
36
  readonly children: SectorMetadata[];
39
37
  readonly estimatedDrawCallCount: number;
40
38
  readonly estimatedRenderCost: number;
41
- }
39
+ };
40
+ export declare type SectorMetadata = BaseSectorMetadata & (I3dF3dSectorMetadata | GltfSectorMetadata);
41
+ export declare type V8SectorMetadata = BaseSectorMetadata & I3dF3dSectorMetadata;
42
+ export declare type V9SectorMetadata = BaseSectorMetadata & GltfSectorMetadata;
43
+ export declare type I3dF3dSectorMetadata = {
44
+ readonly indexFile: SectorMetadataIndexFileSection;
45
+ readonly facesFile: SectorMetadataFacesFileSection;
46
+ };
47
+ export declare type GltfSectorMetadata = {
48
+ readonly sectorFileName: string | null;
49
+ readonly maxDiagonalLength: number;
50
+ readonly minDiagonalLength: number;
51
+ readonly downloadSize: number;
52
+ };
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import * as THREE from 'three';
5
5
  import { SectorNode } from './SectorNode';
6
- import { CadModelMetadata } from '../../../cad-parsers';
6
+ import { CadModelMetadata } from '../metadata/CadModelMetadata';
7
7
  export declare class RootSectorNode extends SectorNode {
8
8
  readonly sectorNodeMap: Map<number, SectorNode>;
9
9
  constructor(modelMetadata: CadModelMetadata);
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import * as THREE from 'three';
5
5
  import { AutoDisposeGroup } from '../../../utilities';
6
- import { LevelOfDetail } from '../../../cad-parsers';
6
+ import { LevelOfDetail } from '../cad/LevelOfDetail';
7
7
  export declare class SectorNode extends THREE.Group {
8
8
  readonly sectorPath: string;
9
9
  readonly sectorId: number;
@@ -1,12 +1,9 @@
1
- /*!
2
- * Copyright 2021 Cognite AS
3
- */
4
- import { SectorSceneImpl } from './SectorScene';
5
1
  import { SectorMetadata } from '../metadata/types';
2
+ import { SectorScene } from './types';
6
3
  /**
7
4
  * Factory for creating instance of {@link SectorScene} based on
8
5
  * the version of the format provided.
9
6
  */
10
7
  export declare class SectorSceneFactory {
11
- createSectorScene(version: number, maxTreeIndex: number, unit: string, root: SectorMetadata): SectorSceneImpl;
8
+ createSectorScene(version: number, maxTreeIndex: number, unit: string, root: SectorMetadata): SectorScene;
12
9
  }
@@ -0,0 +1,10 @@
1
+ /*!
2
+ * Copyright 2021 Cognite AS
3
+ */
4
+ import * as THREE from 'three';
5
+ import { ParsePrimitiveAttribute } from '@cognite/reveal-parser-worker';
6
+ export declare function computeBoundingBoxFromCenterAndRadiusAttributes(attributeFloatValues: Float32Array, centerAByteOffset: number, centerBByteOffset: number, radiusAByteOffset: number, radiusBByteOffset: number, elementSize: number, elementIndex: number, out: THREE.Box3): THREE.Box3;
7
+ export declare function computeBoundingBoxFromVertexAttributes(vertex1AttributeByteOffset: number, vertex2AttributeByteOffset: number, vertex3AttributeByteOffset: number, vertex4AttributeByteOffset: number, attributeFloatValues: Float32Array, elementSize: number, elementIndex: number, out: THREE.Box3): THREE.Box3;
8
+ export declare function computeBoundingBoxFromInstanceMatrixAttributes(attributeFloatValues: Float32Array, byteOffset: number, elementSize: number, elementIndex: number, baseBoundingBox: THREE.Box3, out: THREE.Box3): THREE.Box3;
9
+ export declare function computeBoundingBoxFromEllipseValues(radius1: number, radius2: number, height: number, center: THREE.Vector3, out: THREE.Box3): THREE.Box3;
10
+ export declare function computeBoundingBoxFromEllipseAttributes(centerAttribute: ParsePrimitiveAttribute, radius1Attribute: ParsePrimitiveAttribute, radius2Attribute: ParsePrimitiveAttribute, heightAttribute: ParsePrimitiveAttribute, attributeFloatValues: Float32Array, elementSize: number, elementIndex: number, out: THREE.Box3): THREE.Box3;
@@ -46,3 +46,29 @@ export interface SectorScene {
46
46
  getSectorsIntersectingFrustum(projectionMatrix: THREE.Matrix4, inverseCameraModelMatrix: THREE.Matrix4): SectorMetadata[];
47
47
  getAllSectors(): SectorMetadata[];
48
48
  }
49
+ export interface SectorMetadataIndexFileSection {
50
+ readonly fileName: string;
51
+ readonly peripheralFiles: string[];
52
+ readonly downloadSize: number;
53
+ }
54
+ export interface SectorMetadataFacesFileSection {
55
+ readonly quadSize: number;
56
+ /**
57
+ * Coverage factors for the sector without children.
58
+ */
59
+ readonly coverageFactors: {
60
+ xy: number;
61
+ yz: number;
62
+ xz: number;
63
+ };
64
+ /**
65
+ * Coverage factor for the sectors including children.
66
+ */
67
+ readonly recursiveCoverageFactors: {
68
+ xy: number;
69
+ yz: number;
70
+ xz: number;
71
+ };
72
+ readonly fileName: string | null;
73
+ readonly downloadSize: number;
74
+ }
@@ -7,3 +7,7 @@ export { TreeIndexNodeCollection } from './src/TreeIndexNodeCollection';
7
7
  export { UnionNodeCollection } from './src/UnionNodeCollection';
8
8
  export { NodeAppearance, DefaultNodeAppearance, NodeOutlineColor } from './src/NodeAppearance';
9
9
  export { NodeAppearanceProvider } from './src/NodeAppearanceProvider';
10
+ export { AreaCollection } from './src/prioritized/AreaCollection';
11
+ export { EmptyAreaCollection } from './src/prioritized/EmptyAreaCollection';
12
+ export { ClusteredAreaCollection } from './src/prioritized/ClusteredAreaCollection';
13
+ export { PrioritizedArea } from './src/prioritized/types';
@@ -2,12 +2,13 @@
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
4
  import { IndexSet } from '../../utilities';
5
+ import { AreaCollection } from './prioritized/AreaCollection';
5
6
  import { NodeCollectionBase, SerializedNodeCollection } from './NodeCollectionBase';
6
7
  /**
7
8
  * Node collection that combines the result from multiple underlying node collections.
8
9
  */
9
10
  export declare abstract class CombineNodeCollectionBase extends NodeCollectionBase {
10
- private _changedUnderlyingNodeCollectionHandler;
11
+ private readonly _changedUnderlyingNodeCollectionHandler;
11
12
  private _cachedCombinedIndexSet;
12
13
  protected _nodeCollections: NodeCollectionBase[];
13
14
  constructor(classToken: string, nodeCollections?: NodeCollectionBase[]);
@@ -17,7 +18,7 @@ export declare abstract class CombineNodeCollectionBase extends NodeCollectionBa
17
18
  * Clears all underlying node collections.
18
19
  */
19
20
  clear(): void;
20
- private makeDirty;
21
+ protected makeDirty(): void;
21
22
  /**
22
23
  * @override
23
24
  */
@@ -27,5 +28,6 @@ export declare abstract class CombineNodeCollectionBase extends NodeCollectionBa
27
28
  */
28
29
  get isLoading(): boolean;
29
30
  abstract serialize(): SerializedNodeCollection;
31
+ abstract getAreas(): AreaCollection;
30
32
  protected abstract createCombinedIndexSet(): IndexSet;
31
33
  }
@@ -3,13 +3,17 @@
3
3
  */
4
4
  import { NodeCollectionBase, SerializedNodeCollection } from './NodeCollectionBase';
5
5
  import { CombineNodeCollectionBase } from './CombineNodeCollectionBase';
6
+ import { AreaCollection } from './prioritized/AreaCollection';
6
7
  import { IndexSet } from '../../utilities';
7
8
  /**
8
9
  * Node collection that is the intersection between a set of underlying node collections.
9
10
  */
10
11
  export declare class IntersectionNodeCollection extends CombineNodeCollectionBase {
12
+ private _cachedNodeAreas;
11
13
  static readonly classToken = "IntersectionNodeCollection";
12
14
  constructor(nodeCollections?: NodeCollectionBase[]);
13
15
  serialize(): SerializedNodeCollection;
14
16
  protected createCombinedIndexSet(): IndexSet;
17
+ makeDirty(): void;
18
+ getAreas(): AreaCollection;
15
19
  }
@@ -42,6 +42,28 @@ export declare type NodeAppearance = {
42
42
  * node to make it stand out.
43
43
  */
44
44
  readonly outlineColor?: NodeOutlineColor;
45
+ /**
46
+ * When provided, this value can be used to prioritize certain areas of the
47
+ * 3D model to be loaded. This can be useful to prioritize key objects in the
48
+ * 3D model to always be loaded.
49
+ *
50
+ * When non-zero, sectors containing geometry in the vicinity of the prioritized
51
+ * sectors are given an *extra* priority. Recommended values are in range 1 (somewhat
52
+ * higher priority to be loaded) to 10 (very likely to be loaded). Usually values around 4-5
53
+ * is recommended.
54
+ *
55
+ * Prioritized nodes are loaded at the expense of non-prioritized areas. There are no
56
+ * guarantees that the nodes are actually loaded, and the more prioritized areas/nodes
57
+ * provided, the less likely it is that the hint is obeyed.
58
+ *
59
+ * Extra priority doesn't accumulate when sectors are prioritized because they intersect/contain
60
+ * several nodes.
61
+ *
62
+ * **This is an advanced feature and not recommended for most users**
63
+ *
64
+ * @version Only works with 3D models converted later than Q4 2021.
65
+ */
66
+ readonly prioritizedForLoadingHint?: number;
45
67
  };
46
68
  /**
47
69
  * A set of default node appearances used in Reveal.
@@ -58,5 +80,6 @@ export declare const DefaultNodeAppearance: {
58
80
  renderInFront?: boolean | undefined;
59
81
  renderGhosted?: boolean | undefined;
60
82
  outlineColor?: NodeOutlineColor | undefined;
83
+ prioritizedForLoadingHint?: number | undefined;
61
84
  };
62
85
  };
@@ -4,6 +4,7 @@
4
4
  import { NodeAppearance } from './NodeAppearance';
5
5
  import { NodeCollectionBase } from './NodeCollectionBase';
6
6
  import { IndexSet } from '../../utilities';
7
+ import { PrioritizedArea } from './prioritized/types';
7
8
  /**
8
9
  * Delegate for applying styles in {@see NodeStyleProvider}.
9
10
  * @param treeIndices Set of tree indices that the style is applied to.
@@ -13,6 +14,7 @@ export declare type ApplyStyleDelegate = (treeIndices: IndexSet, appearance: Nod
13
14
  export declare class NodeAppearanceProvider {
14
15
  private readonly _styledCollections;
15
16
  private _lastFiredLoadingState?;
17
+ private _cachedPrioritizedAreas?;
16
18
  private readonly _events;
17
19
  on(event: 'changed', listener: () => void): void;
18
20
  on(event: 'loadingStateChanged', listener: (isLoading: boolean) => void): void;
@@ -21,9 +23,14 @@ export declare class NodeAppearanceProvider {
21
23
  assignStyledNodeCollection(nodeCollection: NodeCollectionBase, appearance: NodeAppearance): void;
22
24
  unassignStyledNodeCollection(nodeCollection: NodeCollectionBase): void;
23
25
  applyStyles(applyCb: ApplyStyleDelegate): void;
26
+ getPrioritizedAreas(): PrioritizedArea[];
24
27
  clear(): void;
25
28
  get isLoading(): boolean;
26
29
  private notifyChanged;
30
+ /**
31
+ * Schedules event 'changed' to trigger at the next tick.
32
+ */
33
+ private readonly scheduleNotifyChanged;
27
34
  private notifyLoadingStateChanged;
28
35
  private handleNodeCollectionChanged;
29
36
  }
@@ -2,6 +2,7 @@
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
4
  import { IndexSet } from '../../utilities';
5
+ import { AreaCollection } from './prioritized/AreaCollection';
5
6
  export declare type SerializedNodeCollection = {
6
7
  token: string;
7
8
  state: any;
@@ -35,6 +36,12 @@ export declare abstract class NodeCollectionBase {
35
36
  * of the nodes contained by the set.
36
37
  */
37
38
  abstract getIndexSet(): IndexSet;
39
+ /**
40
+ * Returns a set of areas that together contain all the nodes
41
+ * in the node collection. Note that this not necessarily is a minimum
42
+ * set of encapsulating areas.
43
+ */
44
+ abstract getAreas(): AreaCollection;
38
45
  /**
39
46
  * Clears the set, making it empty.
40
47
  */
@@ -1,14 +1,17 @@
1
1
  /*!
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
- import { NumericRange, IndexSet } from '../../utilities';
4
+ import * as THREE from 'three';
5
+ import { AreaCollection } from './prioritized/AreaCollection';
5
6
  import { NodeCollectionBase, SerializedNodeCollection } from './NodeCollectionBase';
7
+ import { NumericRange, IndexSet } from '../../utilities';
6
8
  /**
7
9
  * Node collection that holds a set of nodes defined by a set of tree indices.
8
10
  */
9
11
  export declare class TreeIndexNodeCollection extends NodeCollectionBase {
10
12
  static readonly classToken = "TreeIndexNodeCollection";
11
13
  private _treeIndices;
14
+ private _areaCollection;
12
15
  constructor(treeIndexSet?: IndexSet);
13
16
  constructor(treeIndices?: Iterable<number>);
14
17
  constructor(treeIndexRange?: NumericRange);
@@ -18,6 +21,19 @@ export declare class TreeIndexNodeCollection extends NodeCollectionBase {
18
21
  */
19
22
  clear(): void;
20
23
  getIndexSet(): IndexSet;
24
+ getAreas(): AreaCollection;
25
+ /**
26
+ * Add areas to this node collection's area set.
27
+ * Nearby areas may be clustered and merged together to keep
28
+ * the number of areas in the set small.
29
+ */
30
+ addAreas(areas: THREE.Box3[]): void;
31
+ /**
32
+ * Add points to this node collection's area set.
33
+ * This effectively adds boxes of size 1x1x1 meter with the points as their centers.
34
+ */
35
+ addAreaPoints(points: THREE.Vector3[]): void;
36
+ clearAreas(): void;
21
37
  get isLoading(): boolean;
22
38
  serialize(): SerializedNodeCollection;
23
39
  }
@@ -3,13 +3,16 @@
3
3
  */
4
4
  import { NodeCollectionBase, SerializedNodeCollection } from './NodeCollectionBase';
5
5
  import { CombineNodeCollectionBase } from './CombineNodeCollectionBase';
6
+ import { AreaCollection } from './prioritized/AreaCollection';
6
7
  import { IndexSet } from '../../utilities';
7
8
  /**
8
9
  * Node collection that takes the set union of multiple node collections.
9
10
  */
10
11
  export declare class UnionNodeCollection extends CombineNodeCollectionBase {
12
+ private _cachedNodeAreas;
11
13
  static readonly classToken = "UnionNodeCollection";
12
14
  constructor(nodeCollections?: NodeCollectionBase[]);
13
15
  serialize(): SerializedNodeCollection;
14
16
  protected createCombinedIndexSet(): IndexSet;
17
+ getAreas(): AreaCollection;
15
18
  }
@@ -0,0 +1,39 @@
1
+ /*!
2
+ * Copyright 2021 Cognite AS
3
+ */
4
+ /**
5
+ * Represents a collection of areas/axis-aligned
6
+ * bounding boxes for use e.g. for load prioritization. Implementations
7
+ * are not expected to store all areas inserted with `addAreas`,
8
+ * but rather some "representative box set" covering the inserted areas.
9
+ * Performance will be better the fewer boxes the representative set contains,
10
+ * while the effectiveness of node prioritization will suffer if the
11
+ * representative set covers too much area that is not part
12
+ * of the inserted boxes
13
+ */
14
+ export interface AreaCollection {
15
+ readonly isEmpty: boolean;
16
+ /**
17
+ * Return some set of boxes that cover the boxes inserted with `addAreas`.
18
+ * It is required that each inserted box is completely covered by some
19
+ * subset of boxes in the set returned from `areas`
20
+ */
21
+ areas(): Generator<THREE.Box3>;
22
+ /**
23
+ * Return whether the input box intersects the AreaCollection.
24
+ */
25
+ intersectsBox(box: THREE.Box3): boolean;
26
+ /**
27
+ * Add areas to be covered by the representative set of this
28
+ * AreaCollection.
29
+ */
30
+ addAreas(boxes: Iterable<THREE.Box3>): void;
31
+ /**
32
+ * Alter the representative set to cover only the intersection between the
33
+ * representative set of this AreaCollection and the incoming boxes.
34
+ * Note that the intersection of two representative sets A' and B' that
35
+ * represent the original box sets A and B will cover the intersection between
36
+ * A and B, and will thus be a valid representative set for the intersection of A and B.
37
+ */
38
+ intersectWith(boxes: Iterable<THREE.Box3>): void;
39
+ }
@@ -0,0 +1,29 @@
1
+ /*!
2
+ * Copyright 2021 Cognite AS
3
+ */
4
+ import { Box3 } from 'three';
5
+ /**
6
+ * SmartMergeBoxes - takes in batches of bounding boxes and
7
+ * clusters them together in larger bounding boxes. The union of the larger
8
+ * boxes contains all boxes that have been inserted
9
+ */
10
+ export declare class BoxClusterer {
11
+ private readonly resultBoxes;
12
+ private addedSinceSquash;
13
+ constructor();
14
+ constructor(boxes: Box3[]);
15
+ private mergeBoxesAtIndices;
16
+ private readonly _surfaceAreaVars;
17
+ private surfaceArea;
18
+ private readonly _shouldMergeBoxesVars;
19
+ private shouldMergeBoxes;
20
+ private addBox;
21
+ get boxCount(): number;
22
+ addBoxes(boxes: Iterable<Box3>): void;
23
+ squashBoxes(): void;
24
+ getBoxes(): Generator<Box3>;
25
+ intersectsBox(box: Box3): boolean;
26
+ union(boxes: Iterable<Box3>): BoxClusterer;
27
+ private addIntersectionIfNonempty;
28
+ intersection(other: Iterable<THREE.Box3>): BoxClusterer;
29
+ }
@@ -0,0 +1,17 @@
1
+ /*!
2
+ * Copyright 2021 Cognite AS
3
+ */
4
+ import { AreaCollection } from './AreaCollection';
5
+ /**
6
+ * AreaCollection that stores a representative box set by merging
7
+ * inserted boxes that are overlapping or close to each other.
8
+ * It uses simple heuristics to determine which boxes are to be merged.
9
+ */
10
+ export declare class ClusteredAreaCollection implements AreaCollection {
11
+ private readonly _clusterer;
12
+ get isEmpty(): boolean;
13
+ areas(): Generator<THREE.Box3>;
14
+ intersectsBox(box: THREE.Box3): boolean;
15
+ addAreas(boxes: Iterable<THREE.Box3>): void;
16
+ intersectWith(boxes: Iterable<THREE.Box3>): void;
17
+ }
@@ -0,0 +1,18 @@
1
+ /*!
2
+ * Copyright 2021 Cognite AS
3
+ */
4
+ import { AreaCollection } from './AreaCollection';
5
+ /**
6
+ * Convenience implementation to represent an empty collection of areas.
7
+ * that can be shared among several instances.
8
+ */
9
+ export declare class EmptyAreaCollection implements AreaCollection {
10
+ private static _instance;
11
+ static instance(): AreaCollection;
12
+ private constructor();
13
+ areas(): Generator<THREE.Box3>;
14
+ intersectsBox(_box: THREE.Box3): boolean;
15
+ addAreas(_: Iterable<THREE.Box3>): void;
16
+ intersectWith(_: Iterable<THREE.Box3>): void;
17
+ get isEmpty(): boolean;
18
+ }
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * Copyright 2021 Cognite AS
3
+ */
4
+ export declare type PrioritizedArea = {
5
+ area: THREE.Box3;
6
+ extraPriority: number;
7
+ };
@@ -1,4 +1,6 @@
1
1
  /*!
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
- export { default } from './src/ComboControls';
4
+ export { ComboControls } from './src/ComboControls';
5
+ export { CameraManager } from './src/CameraManager';
6
+ export * from './src/types';
@@ -0,0 +1,84 @@
1
+ /*!
2
+ * Copyright 2021 Cognite AS
3
+ */
4
+ import * as THREE from 'three';
5
+ import { ComboControls } from './ComboControls';
6
+ import { CameraManagerCallbackData, CameraControlsOptions, CameraChangeData, ControlsState } from './types';
7
+ export declare class CameraManager {
8
+ private readonly _events;
9
+ private readonly _controls;
10
+ private readonly _camera;
11
+ private readonly _domElement;
12
+ private readonly _inputHandler;
13
+ private readonly _raycaster;
14
+ private isDisposed;
15
+ private readonly _modelRaycastCallback;
16
+ private _onClick;
17
+ private _onWheel;
18
+ private static readonly DefaultAnimationDuration;
19
+ private static readonly DefaultMinAnimationDuration;
20
+ private static readonly DefaultMaxAnimationDuration;
21
+ private static readonly DefaultMinDistance;
22
+ private static readonly DefaultMinZoomDistance;
23
+ private static readonly DefaultMinimalTimeBetweenRaycasts;
24
+ private static readonly DefaultCameraControlsOptions;
25
+ private _cameraControlsOptions;
26
+ automaticNearFarPlane: boolean;
27
+ automaticControlsSensitivity: boolean;
28
+ /**
29
+ * Reusable buffers used by functions in Cognite3dViewer to avoid allocations.
30
+ */
31
+ private readonly _updateNearAndFarPlaneBuffers;
32
+ private readonly _calculateCameraFarBuffers;
33
+ constructor(camera: THREE.PerspectiveCamera, domElement: HTMLElement, raycastFunction: (x: number, y: number) => Promise<CameraManagerCallbackData>);
34
+ on(event: 'cameraChange', callback: CameraChangeData): void;
35
+ off(event: 'cameraChange', callback: CameraChangeData): void;
36
+ fitCameraToBoundingBox(box: THREE.Box3, duration?: number, radiusFactor?: number): void;
37
+ set cameraControlsEnabled(enabled: boolean);
38
+ get cameraControlsEnabled(): boolean;
39
+ set keyboardNavigationEnabled(enabled: boolean);
40
+ get keyboardNavigationEnabled(): boolean;
41
+ get cameraControls(): ComboControls;
42
+ setCameraTarget(target: THREE.Vector3, animated?: boolean): void;
43
+ setCameraControlsState(controlsState: ControlsState): void;
44
+ getCameraControlsState(): ControlsState;
45
+ getCameraControlsOptions(): CameraControlsOptions;
46
+ setCameraControlsOptions(controlsOptions: CameraControlsOptions): void;
47
+ moveCameraTo(position: THREE.Vector3, target: THREE.Vector3, duration?: number): void;
48
+ moveCameraTargetTo(target: THREE.Vector3, duration?: number): void;
49
+ updateCameraNearAndFar(camera: THREE.PerspectiveCamera, combinedBbox: THREE.Box3): void;
50
+ updateCameraControlsState(deltaTime: number): void;
51
+ dispose(): void;
52
+ private calculateAnimationStartTarget;
53
+ private createTweenAnimation;
54
+ private calculateCameraFar;
55
+ private calculateCameraNear;
56
+ /**
57
+ * Calculates new target when raycaster doesn't have any intersections with the model.
58
+ * @param cursorPosition Cursor position for desired calculations.
59
+ * @param cursorPosition.x
60
+ * @param cursorPosition.y
61
+ */
62
+ private calculateNewTargetWithoutModel;
63
+ /**
64
+ * Calculates new camera target based on cursor position.
65
+ * @param event MouseEvent that contains pointer location data.
66
+ */
67
+ private calculateNewTarget;
68
+ /**
69
+ * Removes controls event listeners if they are defined.
70
+ */
71
+ private teardownControls;
72
+ private handleMouseWheelActionChange;
73
+ /**
74
+ * Method for setting up camera controls listeners and values inside current controls class.
75
+ */
76
+ private setupControls;
77
+ /**
78
+ * Convert pixel coordinates of the cursor to [-1,1]^2 coordinates.
79
+ * @param pixelX
80
+ * @param pixelY
81
+ */
82
+ private convertPixelCoordinatesToNormalized;
83
+ private calculateDefaultDuration;
84
+ }