@inweb/viewer-three 26.8.0 → 26.8.2

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 (54) hide show
  1. package/dist/plugins/components/RoomEnvironmentComponent.js +75 -40
  2. package/dist/plugins/components/RoomEnvironmentComponent.js.map +1 -1
  3. package/dist/plugins/components/RoomEnvironmentComponent.min.js +1 -1
  4. package/dist/plugins/components/StatsPanelComponent.js +1 -1
  5. package/dist/plugins/components/StatsPanelComponent.js.map +1 -1
  6. package/dist/plugins/components/StatsPanelComponent.min.js +1 -1
  7. package/dist/plugins/components/StatsPanelComponent.module.js +1 -1
  8. package/dist/plugins/components/StatsPanelComponent.module.js.map +1 -1
  9. package/dist/plugins/loaders/GLTFCloudLoader.js +225 -94
  10. package/dist/plugins/loaders/GLTFCloudLoader.js.map +1 -1
  11. package/dist/plugins/loaders/GLTFCloudLoader.min.js +1 -1
  12. package/dist/plugins/loaders/IFCXLoader.js +1977 -881
  13. package/dist/plugins/loaders/IFCXLoader.js.map +1 -1
  14. package/dist/plugins/loaders/IFCXLoader.min.js +1 -1
  15. package/dist/plugins/loaders/IFCXLoader.module.js +477 -154
  16. package/dist/plugins/loaders/IFCXLoader.module.js.map +1 -1
  17. package/dist/viewer-three.js +31149 -5503
  18. package/dist/viewer-three.js.map +1 -1
  19. package/dist/viewer-three.min.js +3 -3
  20. package/dist/viewer-three.module.js +406 -298
  21. package/dist/viewer-three.module.js.map +1 -1
  22. package/lib/Viewer/Viewer.d.ts +17 -3
  23. package/lib/Viewer/commands/SetDefaultViewPosition.d.ts +6 -6
  24. package/lib/Viewer/components/HighlighterComponent.d.ts +5 -4
  25. package/lib/Viewer/components/SelectionComponent.d.ts +1 -1
  26. package/lib/Viewer/loaders/DynamicGltfLoader/DynamicModelImpl.d.ts +3 -1
  27. package/lib/Viewer/models/IModelImpl.d.ts +27 -0
  28. package/lib/Viewer/models/ModelImpl.d.ts +27 -0
  29. package/lib/Viewer/scenes/Helpers.d.ts +7 -0
  30. package/lib/index.d.ts +2 -1
  31. package/package.json +9 -9
  32. package/plugins/components/StatsPanelComponent.ts +1 -1
  33. package/plugins/loaders/IFCX/IFCXLoader.ts +4 -7
  34. package/plugins/loaders/IFCX/render.js +686 -181
  35. package/plugins/loaders/IFCXCloudLoader.ts +1 -1
  36. package/src/Viewer/Viewer.ts +124 -48
  37. package/src/Viewer/commands/SetDefaultViewPosition.ts +8 -8
  38. package/src/Viewer/components/CameraComponent.ts +20 -16
  39. package/src/Viewer/components/ExtentsComponent.ts +1 -0
  40. package/src/Viewer/components/HighlighterComponent.ts +78 -80
  41. package/src/Viewer/components/LightComponent.ts +10 -4
  42. package/src/Viewer/components/ResizeCanvasComponent.ts +1 -0
  43. package/src/Viewer/components/SelectionComponent.ts +1 -1
  44. package/src/Viewer/helpers/WCSHelper.ts +8 -5
  45. package/src/Viewer/loaders/DynamicGltfLoader/DynamicGltfLoader.js +33 -16
  46. package/src/Viewer/loaders/DynamicGltfLoader/DynamicModelImpl.ts +12 -5
  47. package/src/Viewer/loaders/DynamicGltfLoader/GltfStructure.js +100 -20
  48. package/src/Viewer/loaders/GLTFCloudDynamicLoader.ts +4 -2
  49. package/src/Viewer/loaders/GLTFFileLoader.ts +1 -1
  50. package/src/Viewer/models/IModelImpl.ts +67 -0
  51. package/src/Viewer/models/ModelImpl.ts +214 -0
  52. package/src/Viewer/postprocessing/SSAARenderPass.js +245 -0
  53. package/src/Viewer/scenes/Helpers.ts +42 -0
  54. package/src/index.ts +2 -1
@@ -1,9 +1,16 @@
1
1
  import { Box3, Object3D, OrthographicCamera, PerspectiveCamera, Scene, Vector3, WebGLRenderer } from "three";
2
+ import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer.js";
3
+ import { RenderPass } from "three/examples/jsm/postprocessing/RenderPass.js";
4
+ import { FXAAPass } from "three/examples/jsm/postprocessing/FXAAPass.js";
5
+ import { SMAAPass } from "three/examples/jsm/postprocessing/SMAAPass.js";
6
+ import { SSAARenderPass } from "./postprocessing/SSAARenderPass.js";
7
+ import { OutputPass } from "three/examples/jsm/postprocessing/OutputPass.js";
2
8
  import { EventEmitter2 } from "@inweb/eventemitter2";
3
9
  import { Assembly, Client, Model, File } from "@inweb/client";
4
10
  import { CanvasEventMap, FileSource, IComponent, IDragger, ILoader, IOptions, IViewer, IViewpoint, Options, OptionsEventMap, ViewerEventMap } from "@inweb/viewer-core";
5
11
  import { IMarkup, IWorldTransform } from "@inweb/markup";
6
- import { IModelImpl } from "./model";
12
+ import { IModelImpl } from "./models/IModelImpl";
13
+ import { Helpers } from "./scenes/Helpers";
7
14
  /**
8
15
  * 3D viewer powered by {@link https://threejs.org/ | Three.js}.
9
16
  */
@@ -14,9 +21,16 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
14
21
  canvas: HTMLCanvasElement | undefined;
15
22
  canvasEvents: string[];
16
23
  scene: Scene | undefined;
17
- helpers: Scene | undefined;
24
+ helpers: Helpers | undefined;
18
25
  camera: PerspectiveCamera | OrthographicCamera | undefined;
19
26
  renderer: WebGLRenderer | undefined;
27
+ renderPass: RenderPass | undefined;
28
+ helpersPass: RenderPass | undefined;
29
+ fxaaPass: FXAAPass | undefined;
30
+ smaaPass: SMAAPass | undefined;
31
+ ssaaRenderPass: SSAARenderPass | undefined;
32
+ outputPass: OutputPass | undefined;
33
+ composer: EffectComposer | undefined;
20
34
  loaders: ILoader[];
21
35
  models: IModelImpl[];
22
36
  selected: Object3D[];
@@ -46,7 +60,7 @@ export declare class Viewer extends EventEmitter2<ViewerEventMap & CanvasEventMa
46
60
  dispose(): this;
47
61
  isInitialized(): boolean;
48
62
  update(force?: boolean): void;
49
- render(time: DOMHighResTimeStamp): void;
63
+ render(time?: DOMHighResTimeStamp, force?: boolean): void;
50
64
  loadReferences(model: Model | File | Assembly): Promise<this>;
51
65
  /**
52
66
  * Loads a file into the viewer.
@@ -1,15 +1,15 @@
1
1
  import { Vector3 } from "three";
2
2
  import type { Viewer } from "../Viewer";
3
3
  export declare const defaultViewPositions: {
4
- top: Vector3;
5
- bottom: Vector3;
6
- left: Vector3;
7
- right: Vector3;
8
4
  front: Vector3;
9
5
  back: Vector3;
6
+ left: Vector3;
7
+ right: Vector3;
8
+ bottom: Vector3;
9
+ top: Vector3;
10
+ ns: Vector3;
10
11
  sw: Vector3;
11
- se: Vector3;
12
- ne: Vector3;
13
12
  nw: Vector3;
13
+ se: Vector3;
14
14
  };
15
15
  export declare function setDefaultViewPosition(viewer: Viewer, position: string): void;
@@ -5,15 +5,16 @@ import { Viewer } from "../Viewer";
5
5
  export declare class HighlighterComponent implements IComponent {
6
6
  protected viewer: Viewer;
7
7
  renderTarget: WebGLRenderTarget;
8
- highlightMaterial: MeshPhongMaterial;
9
- outlineMaterial: LineMaterial;
10
- highlightLineMaterial: LineBasicMaterial;
11
- highlightLineGlowMaterial: LineMaterial;
8
+ facesMaterial: MeshPhongMaterial;
9
+ edgesMaterial: LineMaterial;
10
+ lineMaterial: LineBasicMaterial;
11
+ lineGlowMaterial: LineMaterial;
12
12
  constructor(viewer: Viewer);
13
13
  dispose(): void;
14
14
  highlight(objects: Object3D | Object3D[]): void;
15
15
  unhighlight(objects: Object3D | Object3D[]): void;
16
16
  geometryEnd: () => void;
17
17
  optionsChange: () => void;
18
+ syncHighlightColors(): void;
18
19
  viewerResize(event: ResizeEvent): void;
19
20
  }
@@ -1,7 +1,7 @@
1
1
  import { Intersection, Object3D, Raycaster, Vector2 } from "three";
2
2
  import type { IComponent } from "@inweb/viewer-core";
3
3
  import type { Viewer } from "../Viewer";
4
- import type { IModelImpl } from "../model";
4
+ import type { IModelImpl } from "../models/IModelImpl";
5
5
  import type { HighlighterComponent } from "./HighlighterComponent";
6
6
  export declare class SelectionComponent implements IComponent {
7
7
  protected viewer: Viewer;
@@ -1,13 +1,15 @@
1
1
  import { Box3, Object3D } from "three";
2
- import { ModelImpl } from "../../model";
2
+ import { ModelImpl } from "../../models/ModelImpl";
3
3
  import { DynamicGltfLoader } from "./DynamicGltfLoader.js";
4
4
  export declare class DynamicModelImpl extends ModelImpl {
5
5
  gltfLoader: DynamicGltfLoader;
6
+ modelId: number;
6
7
  getExtents(target: Box3): Box3;
7
8
  getObjects(): Object3D[];
8
9
  getVisibleObjects(): Object3D[];
9
10
  hasObject(object: any): boolean;
10
11
  getObjectsByHandles(handles: string | string[]): Object3D[];
12
+ getHandlesByObjects(objects: Object3D | Object3D[]): string[];
11
13
  hideObjects(objects: Object3D | Object3D[]): this;
12
14
  isolateObjects(objects: Object3D | Object3D[]): this;
13
15
  showObjects(objects: Object3D | Object3D[]): this;
@@ -0,0 +1,27 @@
1
+ import { Box3, Object3D } from "three";
2
+ import { ILoader, IViewer } from "@inweb/viewer-core";
3
+ /**
4
+ * Model interface.
5
+ */
6
+ export interface IModelImpl {
7
+ handle: string;
8
+ scene: Object3D;
9
+ loader: ILoader;
10
+ viewer: IViewer;
11
+ dispose(): void;
12
+ getExtents(target: Box3): Box3;
13
+ getObjects(): Object3D[];
14
+ getVisibleObjects(): Object3D[];
15
+ hasObject(objects: Object3D): boolean;
16
+ getOwnObjects(objects: Object3D | Object3D[]): Object3D[];
17
+ getObjectsByHandles(handles: string | string[]): Object3D[];
18
+ getHandlesByObjects(objects: Object3D | Object3D[]): string[];
19
+ hideObjects(objects: Object3D | Object3D[]): this;
20
+ hideAllObjects(): this;
21
+ isolateObjects(objects: Object3D | Object3D[]): this;
22
+ showObjects(objects: Object3D | Object3D[]): this;
23
+ showAllObjects(): this;
24
+ showOriginalObjects(objects: Object3D | Object3D[]): this;
25
+ hideOriginalObjects(objects: Object3D | Object3D[]): this;
26
+ explode(scale: number, coeff?: number): this;
27
+ }
@@ -0,0 +1,27 @@
1
+ import { Box3, Object3D } from "three";
2
+ import { ILoader } from "@inweb/viewer-core";
3
+ import { IModelImpl } from "./IModelImpl";
4
+ import { Viewer } from "../Viewer";
5
+ export declare class ModelImpl implements IModelImpl {
6
+ handle: string;
7
+ scene: Object3D;
8
+ loader: ILoader;
9
+ viewer: Viewer;
10
+ constructor(scene: Object3D);
11
+ dispose(): void;
12
+ getExtents(target: Box3): Box3;
13
+ getObjects(): Object3D[];
14
+ getVisibleObjects(): Object3D[];
15
+ hasObject(object: Object3D): boolean;
16
+ getOwnObjects(objects: Object3D | Object3D[]): Object3D[];
17
+ getObjectsByHandles(handles: string | string[]): Object3D[];
18
+ getHandlesByObjects(objects: Object3D | Object3D[]): string[];
19
+ hideObjects(objects: Object3D | Object3D[]): this;
20
+ hideAllObjects(): this;
21
+ isolateObjects(objects: Object3D | Object3D[]): this;
22
+ showObjects(objects: Object3D | Object3D[]): this;
23
+ showAllObjects(): this;
24
+ showOriginalObjects(objects: Object3D | Object3D[]): this;
25
+ hideOriginalObjects(objects: Object3D | Object3D[]): this;
26
+ explode(scale?: number, coeff?: number): this;
27
+ }
@@ -0,0 +1,7 @@
1
+ import { Scene, WebGLRenderer } from "three";
2
+ export declare class Helpers extends Scene {
3
+ private oldAutoClear;
4
+ private oldClippingPlanes;
5
+ onBeforeRender(renderer: WebGLRenderer): void;
6
+ onAfterRender(renderer: WebGLRenderer): void;
7
+ }
package/lib/index.d.ts CHANGED
@@ -3,7 +3,8 @@ export * from "./Viewer/commands";
3
3
  export * from "./Viewer/components";
4
4
  export * from "./Viewer/loaders";
5
5
  export * from "./Viewer/loaders/GLTFLoadingManager";
6
- export * from "./Viewer/model";
6
+ export * from "./Viewer/models/IModelImpl";
7
+ export * from "./Viewer/models/ModelImpl";
7
8
  export * from "./Viewer/Viewer";
8
9
  export * from "@inweb/viewer-core";
9
10
  export * from "@inweb/markup";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inweb/viewer-three",
3
- "version": "26.8.0",
3
+ "version": "26.8.2",
4
4
  "description": "JavaScript library for rendering CAD and BIM files in a browser using Three.js",
5
5
  "homepage": "https://cloud.opendesign.com/docs/index.html",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -35,17 +35,17 @@
35
35
  "docs": "typedoc"
36
36
  },
37
37
  "dependencies": {
38
- "@inweb/client": "~26.8.0",
39
- "@inweb/eventemitter2": "~26.8.0",
40
- "@inweb/markup": "~26.8.0",
41
- "@inweb/viewer-core": "~26.8.0"
38
+ "@inweb/client": "~26.8.2",
39
+ "@inweb/eventemitter2": "~26.8.2",
40
+ "@inweb/markup": "~26.8.2",
41
+ "@inweb/viewer-core": "~26.8.2"
42
42
  },
43
43
  "devDependencies": {
44
- "@types/three": "^0.173.0",
45
- "three": "^0.173.0"
44
+ "@types/three": "^0.179.0",
45
+ "three": "^0.179.1"
46
46
  },
47
47
  "peerDependencies": {
48
- "@types/three": "^0.173.0",
49
- "three": "^0.173.0"
48
+ "@types/three": "^0.179.0",
49
+ "three": "^0.179.1"
50
50
  }
51
51
  }
@@ -45,8 +45,8 @@ class StatsPanelComponent implements IComponent {
45
45
  }
46
46
 
47
47
  updateStats = () => {
48
+ this.viewer.render(null, true);
48
49
  this.stats.update();
49
- this.viewer.update();
50
50
  };
51
51
  }
52
52
 
@@ -58,13 +58,10 @@ class IFCXLoader extends Loader<Scene> {
58
58
  }
59
59
 
60
60
  parse(json: any, onLoad: (scene: Scene) => void, onError: (err: unknown) => void) {
61
- try {
62
- onLoad(parse(json));
63
- } catch (e) {
64
- onError(e);
65
- } finally {
66
- clear();
67
- }
61
+ parse(json)
62
+ .then((scene: Scene) => onLoad(scene))
63
+ .catch((err: unknown) => onError(err))
64
+ .finally(() => clear());
68
65
  }
69
66
  }
70
67