@cognite/reveal 4.1.1-dev.20230222 → 4.1.1-dev.20230224

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.
@@ -2,14 +2,23 @@
2
2
  * Copyright 2022 Cognite AS
3
3
  */
4
4
  import { Image360Entity } from '../entity/Image360Entity';
5
+ export type DownloadRequest = {
6
+ entity: Image360Entity;
7
+ load360Image: Promise<void>;
8
+ abort: () => void;
9
+ };
5
10
  export declare class Image360LoadingCache {
6
- private readonly _cacheSize;
11
+ private readonly _imageCacheSize;
12
+ private readonly _downloadCacheSize;
7
13
  private readonly _loaded360Images;
8
- private readonly _inFlightEntities;
14
+ private readonly _inProgressDownloads;
9
15
  get cachedEntities(): Image360Entity[];
10
- get currentlyLoadingEntities(): Map<Image360Entity, Promise<void>>;
11
- constructor(_cacheSize?: number);
16
+ get currentlyLoadingEntities(): DownloadRequest[];
17
+ getDownloadInProgress(entity: Image360Entity): DownloadRequest | undefined;
18
+ constructor(_imageCacheSize?: number, _downloadCacheSize?: number);
12
19
  cachedPreload(entity: Image360Entity): Promise<void>;
13
20
  purge(entity: Image360Entity): Promise<void>;
14
21
  private purgeLastRecentlyUsedInvisibleEntity;
22
+ private abortLastRecentlyReqestedEntity;
23
+ private createAbortSignal;
15
24
  }
@@ -34,7 +34,7 @@ export declare class Image360Entity implements Image360 {
34
34
  /**
35
35
  * Loads the 360 image (6 faces) into the visualization object.
36
36
  */
37
- load360Image(): Promise<void>;
37
+ load360Image(abortSignal?: AbortSignal): Promise<void>;
38
38
  /**
39
39
  * Drops the GPU resources for the 360 image
40
40
  * the icon will be preserved.
@@ -17,6 +17,7 @@ export declare class Image360Icon {
17
17
  constructor(position: THREE.Vector3, hoverIconTexture: THREE.CanvasTexture, sceneHandler: SceneHandler, alphaAttributeAccessor: AttributeDataAccessor<Uint8ClampedArray>, minPixelSize: number, maxPixelSize: number, onRenderTrigger: EventTrigger<(renderer: THREE.WebGLRenderer, camera: THREE.Camera) => void>);
18
18
  set visible(visible: boolean);
19
19
  get visible(): boolean;
20
+ get position(): Vector3;
20
21
  set hoverSpriteVisible(visible: boolean);
21
22
  intersect(ray: Ray): Vector3 | null;
22
23
  dispose(): void;
@@ -56,7 +56,8 @@ export declare class Cognite3DViewer {
56
56
  private readonly _models;
57
57
  private isDisposed;
58
58
  private latestRequestId;
59
- private readonly clock;
59
+ private readonly sessionLogger;
60
+ private readonly cameraManagerClock;
60
61
  private _clippingNeedsUpdate;
61
62
  private readonly spinner;
62
63
  private get revealManager();
@@ -29,6 +29,7 @@ export type SceneSectorMetadata = {
29
29
  readonly boundingBox: BoundingBox;
30
30
  readonly geometryBoundingBox?: BoundingBox;
31
31
  readonly sectorFileName: string | null;
32
+ readonly texturedFileName: string | null;
32
33
  readonly maxDiagonalLength: number;
33
34
  readonly minDiagonalLength: number;
34
35
  readonly downloadSize: number;
@@ -8,7 +8,7 @@ export declare class Cdf360ImageEventProvider implements Image360Provider<Metada
8
8
  private readonly _client;
9
9
  constructor(client: CogniteClient);
10
10
  get360ImageDescriptors(metadataFilter: Metadata, preMultipliedRotation: boolean): Promise<Image360Descriptor[]>;
11
- get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[]): Promise<Image360Face[]>;
11
+ get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
12
12
  private mergeDescriptors;
13
13
  private listEvents;
14
14
  private listFiles;
@@ -4,5 +4,5 @@ export declare class Local360ImageProvider implements Image360Provider<unknown>
4
4
  private readonly _modelUrl;
5
5
  constructor(modelUrl: string);
6
6
  get360ImageDescriptors(): Promise<Image360Descriptor[]>;
7
- get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[]): Promise<Image360Face[]>;
7
+ get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
8
8
  }
@@ -12,7 +12,7 @@ export interface Image360DescriptorProvider<T> {
12
12
  get360ImageDescriptors(metadataFilter: T, preMultipliedRotation: boolean): Promise<Image360Descriptor[]>;
13
13
  }
14
14
  export interface Image360FileProvider {
15
- get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[]): Promise<Image360Face[]>;
15
+ get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
16
16
  }
17
17
  export type Image360Descriptor = Image360EventDescriptor & {
18
18
  faceDescriptors: Image360FileDescriptor[];
@@ -2,3 +2,4 @@
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
4
  export { MetricsLogger } from './src/MetricsLogger';
5
+ export { SessionLogger } from './src/SessionLogger';
@@ -0,0 +1,22 @@
1
+ export declare class SessionLogger {
2
+ private _wasPreviousAnimationFrameRendered;
3
+ private _renderedFramesPerCameraMovement;
4
+ private _renderedFramesStartTime;
5
+ private _averageFpsPerMovementSum;
6
+ private _movementsCount;
7
+ private _canvasVisibility;
8
+ private _sessionStartTime;
9
+ private _isDisposed;
10
+ constructor();
11
+ updateCanvasVisibility(isCanvasVisible: boolean): void;
12
+ tickCurrentAnimationFrame(isRendered: boolean): void;
13
+ dispose(): void;
14
+ private resetSessionState;
15
+ private countCurrentCameraMovement;
16
+ private countCurrentRenderedFrame;
17
+ private resetCurrentCameraMovement;
18
+ private calculateAverageFpsForCurrentMovement;
19
+ private calculateAverageSessionFps;
20
+ private trackSessionEnded;
21
+ private readonly onRevealPageVisibilityChange;
22
+ }
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
- export type TrackedEvents = 'init' | 'construct3dViewer' | 'loadModel' | 'error' | 'cameraNavigated' | 'toolCreated' | 'cadModelStyleAssigned' | 'cadNodeTransformOverridden' | '360ImageCollectionAdded' | '360ImageEntered' | '360ImageTransitioned' | '360ImageExited' | 'measurementAdded';
4
+ export type TrackedEvents = 'init' | 'construct3dViewer' | 'loadModel' | 'error' | 'cameraNavigated' | 'sessionEnded' | 'toolCreated' | 'cadModelStyleAssigned' | 'cadNodeTransformOverridden' | '360ImageCollectionAdded' | '360ImageEntered' | '360ImageTransitioned' | '360ImageExited' | 'measurementAdded' | 'texturedModelLoaded';
5
5
  export type EventProps = {
6
6
  [key: string]: any;
7
7
  };
@@ -18,6 +18,8 @@ export declare class CadMaterialManager {
18
18
  off(event: 'materialsChanged', listener: () => void): void;
19
19
  addModelMaterials(modelIdentifier: string, maxTreeIndex: number): void;
20
20
  removeModelMaterials(modelIdentifier: string): void;
21
+ addTexturedMeshMaterial(modelIdentifier: string, sectorId: number, texture: THREE.Texture): THREE.RawShaderMaterial;
22
+ removeTexturedMeshMaterial(modelIdentifier: string, sectorId: number): void;
21
23
  getModelMaterials(modelIdentifier: string): Materials;
22
24
  getModelNodeAppearanceProvider(modelIdentifier: string): NodeAppearanceProvider;
23
25
  getModelNodeTransformProvider(modelIdentifier: string): NodeTransformProvider;
@@ -38,4 +40,5 @@ export declare class CadMaterialManager {
38
40
  private getModelMaterialsWrapper;
39
41
  private applyToAllMaterials;
40
42
  private triggerMaterialsChanged;
43
+ private initializeDefinesAndUniforms;
41
44
  }
@@ -19,5 +19,10 @@ export interface Materials {
19
19
  instancedMesh: THREE.RawShaderMaterial;
20
20
  triangleMesh: THREE.RawShaderMaterial;
21
21
  simple: THREE.RawShaderMaterial;
22
+ texturedMaterials: {
23
+ [key: string]: THREE.RawShaderMaterial;
24
+ };
22
25
  }
23
- export declare function createMaterials(renderMode: RenderMode, clippingPlanes: THREE.Plane[], overrideColorPerTreeIndex: THREE.DataTexture, transformOverrideIndexTexture: THREE.DataTexture, transformOverrideLookupTexture: THREE.DataTexture): Materials;
26
+ export declare function forEachMaterial(materials: Materials, callback: (material: THREE.RawShaderMaterial) => void): void;
27
+ export declare function createMaterials(renderMode: RenderMode, clippingPlanes: THREE.Plane[], overrideColorPerTreeIndex: THREE.DataTexture, transformOverrideIndexTexture: THREE.DataTexture, transformOverrideLookupTexture: THREE.DataTexture, matCapTexture: THREE.Texture): Materials;
28
+ export declare function initializeDefinesAndUniforms(material: THREE.RawShaderMaterial, overrideColorPerTreeIndex: THREE.DataTexture, transformOverrideIndexTexture: THREE.DataTexture, transformOverrideTexture: THREE.DataTexture, matCapTexture: THREE.Texture, renderMode: RenderMode): void;
@@ -1,14 +1,6 @@
1
1
  /*!
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
- /**
5
- * Defines used to enable debugging features in shaders.
6
- */
7
- export declare const shaderDefines: {
8
- defines: {
9
- COGNITE_COLOR_BY_TREE_INDEX: boolean;
10
- };
11
- };
12
4
  export declare const sectorShaders: {
13
5
  simpleMesh: {
14
6
  fragment: string;
@@ -8,6 +8,7 @@ export declare class GltfSectorParser {
8
8
  private processInstancedTriangleMesh;
9
9
  private processPrimitiveCollection;
10
10
  private processTriangleMesh;
11
+ private getDiffuseTexture;
11
12
  private getVertexBuffer;
12
13
  private setIndexBuffer;
13
14
  private setPositionBuffer;
@@ -7,10 +7,13 @@ export type GltfJson = {
7
7
  bufferViews: BufferView[];
8
8
  buffers: Buffer[];
9
9
  extensionsUsed: string[];
10
+ images: Image[];
11
+ materials: Material[];
10
12
  meshes: Mesh[];
11
13
  nodes: Node[];
12
14
  scene: number;
13
15
  scenes: Scene[];
16
+ textures: Texture[];
14
17
  };
15
18
  export type Scene = {
16
19
  nodes: number[];
@@ -66,6 +69,22 @@ export type Primitive = {
66
69
  bufferView: number;
67
70
  } | undefined;
68
71
  };
72
+ material: number | undefined;
73
+ };
74
+ export type Material = {
75
+ name: string;
76
+ pbrMetallicRoughness: {
77
+ baseColorTexture: {
78
+ index: number;
79
+ };
80
+ };
81
+ };
82
+ export type Texture = {
83
+ source: number;
84
+ };
85
+ export type Image = {
86
+ bufferView: number;
87
+ mimeType: string;
69
88
  };
70
89
  export declare enum RevealGeometryCollectionType {
71
90
  BoxCollection = 0,
@@ -80,7 +99,8 @@ export declare enum RevealGeometryCollectionType {
80
99
  TrapeziumCollection = 9,
81
100
  NutCollection = 10,
82
101
  TriangleMesh = 11,
83
- InstanceMesh = 12
102
+ TexturedTriangleMesh = 12,
103
+ InstanceMesh = 13
84
104
  }
85
105
  export type GlbHeaderData = {
86
106
  json: GltfJson;
@@ -97,10 +117,12 @@ export type GeometryProcessingPayload = {
97
117
  } | undefined;
98
118
  meshId: number | undefined;
99
119
  glbHeaderData: GlbHeaderData;
120
+ texture?: THREE.Texture;
100
121
  data: ArrayBuffer;
101
122
  };
102
123
  export type ParsedGeometry = {
103
124
  type: RevealGeometryCollectionType;
104
125
  geometryBuffer: THREE.BufferGeometry;
126
+ texture?: THREE.Texture;
105
127
  instanceId?: string;
106
128
  };
@@ -32,6 +32,7 @@ export { MostFrequentlyUsedCache } from './src/cache/MostFrequentlyUsedCache';
32
32
  export { disposeAttributeArrayOnUpload } from './src/disposeAttributeArrayOnUpload';
33
33
  export { incrementOrInsertIndex, decrementOrDeleteIndex } from './src/counterMap';
34
34
  export { calculateVolumeOfMesh } from './src/calculateVolumeOfMesh';
35
+ export { getApproximateProjectedBounds, getScreenArea } from './src/projectedBounds';
35
36
  export { worldToNormalizedViewportCoordinates, worldToViewportCoordinates, pixelToNormalizedDeviceCoordinates } from './src/worldToViewport';
36
37
  export { DeferredPromise } from './src/DeferredPromise';
37
38
  export { SceneHandler } from './src/SceneHandler';
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ import { Box2, Box3, Matrix4 } from 'three';
5
+ export declare function getApproximateProjectedBounds(box: Box3, viewProjectionMatrix: Matrix4): Box2;
6
+ export declare function getScreenArea(projectedBounds: Box2): number;
@@ -10,3 +10,4 @@ import * as THREE from 'three';
10
10
  * it must be cloned first.
11
11
  */
12
12
  export declare function visitBox3CornerPoints(box: THREE.Box3, callback: (corner: THREE.Vector3) => void): void;
13
+ export declare function getBox3CornerPoints(box: THREE.Box3): THREE.Vector4[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognite/reveal",
3
- "version": "4.1.1-dev.20230222",
3
+ "version": "4.1.1-dev.20230224",
4
4
  "description": "WebGL based 3D viewer for CAD and point clouds processed in Cognite Data Fusion.",
5
5
  "homepage": "https://github.com/cognitedata/reveal/tree/master/viewer",
6
6
  "repository": {
@@ -80,6 +80,7 @@
80
80
  "path-browserify": "1.0.1",
81
81
  "rxjs": "7.8.0",
82
82
  "skmeans": "0.11.3",
83
+ "sparse-octree": "7.1.6",
83
84
  "three-stdlib": "2.21.1"
84
85
  },
85
86
  "devDependencies": {