iflow-engine-base-3d 3.12.21 → 3.12.24

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.
@@ -1,80 +1,80 @@
1
- import * as GaussianSplats3D from '@mkkellogg/gaussian-splats-3d';
2
-
3
- export type GaussianVector3 = [number, number, number];
4
- export type GaussianQuaternion = [number, number, number, number];
5
- export type GaussianOrientationPreset = 'identity' | 'x-90' | 'x90' | 'x180' | 'y-90' | 'y90' | 'z-90' | 'z90' | 'z180';
6
-
7
- export interface EngineGaussianOptions {
8
- containerId: string;
9
- cameraUp?: GaussianVector3;
10
- initialCameraPosition?: GaussianVector3;
11
- initialCameraLookAt?: GaussianVector3;
12
- backgroundColor?: string;
13
- antialias?: boolean;
14
- showLoadingUI?: boolean;
15
- sharedMemoryForWorkers?: boolean;
16
- gpuAcceleratedSort?: boolean;
17
- sphericalHarmonicsDegree?: number;
18
- orientationPreset?: GaussianOrientationPreset;
19
- viewerOptions?: Record<string, any>;
20
- }
21
-
22
- export interface GaussianSceneOptions {
23
- id?: string;
24
- name?: string;
25
- format?: number;
26
- splatAlphaRemovalThreshold?: number;
27
- showLoadingUI?: boolean;
28
- position?: GaussianVector3;
29
- rotation?: GaussianQuaternion;
30
- scale?: GaussianVector3;
31
- progressiveLoad?: boolean;
32
- onProgress?: (...args: any[]) => void;
33
- [key: string]: any;
34
- }
35
-
36
- export interface GaussianSceneInfo {
37
- id: string;
38
- name: string;
39
- url: string;
40
- index: number;
41
- options: GaussianSceneOptions;
42
- }
43
-
44
- export interface GaussianFpsInfo {
45
- fps: number;
46
- frameTimeMs: number;
47
- minFps: number;
48
- }
49
-
50
- export enum EventTypeGaussian {
51
- LoadStart = 'gaussian-load-start',
52
- LoadProgress = 'gaussian-load-progress',
53
- Loaded = 'gaussian-loaded',
54
- LoadError = 'gaussian-load-error',
55
- SceneRemoved = 'gaussian-scene-removed',
56
- FpsUpdated = 'gaussian-fps-updated',
57
- ViewChanged = 'gaussian-view-changed'
58
- }
59
-
60
- export declare class EngineKernelGaussian {
61
- constructor(options: EngineGaussianOptions);
62
- loadModel(url: string, options?: GaussianSceneOptions): Promise<GaussianSceneInfo>;
63
- unloadModel(id: string): Promise<void>;
64
- setOrientationPreset(preset: GaussianOrientationPreset): void;
65
- getOrientationPreset(): GaussianOrientationPreset;
66
- resize(width?: number, height?: number): void;
67
- pauseRendering(): void;
68
- resumeRendering(): void;
69
- resetFpsStats(): void;
70
- getFpsInfo(): GaussianFpsInfo;
71
- on<T = any>(event: EventTypeGaussian, callback: (data: T) => void): void;
72
- off<T = any>(event: EventTypeGaussian, callback: (data: T) => void): void;
73
- getVersion(): string;
74
- dispose(): Promise<void>;
75
- }
76
-
77
- export declare function createEngineGaussian(options: EngineGaussianOptions): EngineKernelGaussian;
78
- export { createEngineGaussian as createGaussian };
79
- export { GaussianSplats3D };
80
- export default createEngineGaussian;
1
+ import * as GaussianSplats3D from '@mkkellogg/gaussian-splats-3d';
2
+
3
+ export type GaussianVector3 = [number, number, number];
4
+ export type GaussianQuaternion = [number, number, number, number];
5
+ export type GaussianOrientationPreset = 'identity' | 'x-90' | 'x90' | 'x180' | 'y-90' | 'y90' | 'z-90' | 'z90' | 'z180';
6
+
7
+ export interface EngineGaussianOptions {
8
+ containerId: string;
9
+ cameraUp?: GaussianVector3;
10
+ initialCameraPosition?: GaussianVector3;
11
+ initialCameraLookAt?: GaussianVector3;
12
+ backgroundColor?: string;
13
+ antialias?: boolean;
14
+ showLoadingUI?: boolean;
15
+ sharedMemoryForWorkers?: boolean;
16
+ gpuAcceleratedSort?: boolean;
17
+ sphericalHarmonicsDegree?: number;
18
+ orientationPreset?: GaussianOrientationPreset;
19
+ viewerOptions?: Record<string, any>;
20
+ }
21
+
22
+ export interface GaussianSceneOptions {
23
+ id?: string;
24
+ name?: string;
25
+ format?: number;
26
+ splatAlphaRemovalThreshold?: number;
27
+ showLoadingUI?: boolean;
28
+ position?: GaussianVector3;
29
+ rotation?: GaussianQuaternion;
30
+ scale?: GaussianVector3;
31
+ progressiveLoad?: boolean;
32
+ onProgress?: (...args: any[]) => void;
33
+ [key: string]: any;
34
+ }
35
+
36
+ export interface GaussianSceneInfo {
37
+ id: string;
38
+ name: string;
39
+ url: string;
40
+ index: number;
41
+ options: GaussianSceneOptions;
42
+ }
43
+
44
+ export interface GaussianFpsInfo {
45
+ fps: number;
46
+ frameTimeMs: number;
47
+ minFps: number;
48
+ }
49
+
50
+ export enum EventTypeGaussian {
51
+ LoadStart = 'gaussian-load-start',
52
+ LoadProgress = 'gaussian-load-progress',
53
+ Loaded = 'gaussian-loaded',
54
+ LoadError = 'gaussian-load-error',
55
+ SceneRemoved = 'gaussian-scene-removed',
56
+ FpsUpdated = 'gaussian-fps-updated',
57
+ ViewChanged = 'gaussian-view-changed'
58
+ }
59
+
60
+ export declare class EngineKernelGaussian {
61
+ constructor(options: EngineGaussianOptions);
62
+ loadModel(url: string, options?: GaussianSceneOptions): Promise<GaussianSceneInfo>;
63
+ unloadModel(id: string): Promise<void>;
64
+ setOrientationPreset(preset: GaussianOrientationPreset): void;
65
+ getOrientationPreset(): GaussianOrientationPreset;
66
+ resize(width?: number, height?: number): void;
67
+ pauseRendering(): void;
68
+ resumeRendering(): void;
69
+ resetFpsStats(): void;
70
+ getFpsInfo(): GaussianFpsInfo;
71
+ on<T = any>(event: EventTypeGaussian, callback: (data: T) => void): void;
72
+ off<T = any>(event: EventTypeGaussian, callback: (data: T) => void): void;
73
+ getVersion(): string;
74
+ dispose(): Promise<void>;
75
+ }
76
+
77
+ export declare function createEngineGaussian(options: EngineGaussianOptions): EngineKernelGaussian;
78
+ export { createEngineGaussian as createGaussian };
79
+ export { GaussianSplats3D };
80
+ export default createEngineGaussian;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iflow-engine-base-3d",
3
- "version": "3.12.21",
3
+ "version": "3.12.24",
4
4
  "description": "BIM Engine SDK for Vue2, Vue3, React and HTML",
5
5
  "main": "./dist/bim-engine-sdk.umd.js",
6
6
  "module": "./dist/bim-engine-sdk.es.js",
@@ -38,8 +38,10 @@
38
38
  "build": "npm run build:full",
39
39
  "build:full": "vite build",
40
40
  "build:3d": "vite build --mode 3d",
41
+ "build:test": "vite build --mode test",
41
42
  "build:720": "vite build --mode 720",
42
43
  "build:gis": "vite build --mode gis",
44
+ "test:v3-ordinary-mesh": "node --experimental-strip-types --test scripts/check-v3-ordinary-mesh-optimization.mjs",
43
45
  "build:dwg-preview": "vite build --mode 2d",
44
46
  "build:2d": "vite build --mode 2d",
45
47
  "build:gaussian": "vite build --mode gaussian"
@@ -62,9 +64,11 @@
62
64
  "vue": "^3.5.25"
63
65
  },
64
66
  "dependencies": {
67
+ "@dgreenheck/ez-tree": "^1.1.0",
68
+ "@lucide/vue": "^1.42.0",
65
69
  "@mkkellogg/gaussian-splats-3d": "^0.4.7",
66
70
  "@noble/ciphers": "^2.2.0",
67
- "@types/three": "^0.181.0",
71
+ "@types/three": "^0.186.0",
68
72
  "axios": "^1.13.2",
69
73
  "cesium": "^1.141.0",
70
74
  "fabric": "^7.3.1",
@@ -73,7 +77,7 @@
73
77
  "opentype.js": "^1.3.4",
74
78
  "shpjs": "^6.2.0",
75
79
  "stats.js": "^0.17.0",
76
- "three": "^0.183.2",
80
+ "three": "^0.186.0",
77
81
  "three-bvh-csg": "^0.0.17",
78
82
  "three-mesh-bvh": "^0.9.10"
79
83
  }
@@ -1 +0,0 @@
1
- .measure-elevation{position:absolute;pointer-events:none}.measureSvg{position:absolute;width:1920px;height:1080px}.catch-point{position:absolute;width:10px;height:10px;background-color:red;border-radius:50%;pointer-events:none}.annotation-container{position:absolute;pointer-events:none;top:0;left:0}.measureLine{position:absolute;pointer-events:none;stroke:#009bea;fill:#009bea;filter:drop-shadow(0px 0px 2px rgba(0,0,0,.3))}.measureBack{cursor:pointer;pointer-events:auto;fill:#fff;rx:5;ry:5;filter:drop-shadow(0px 0px 3px rgba(0,0,0,.3));text-align:center}.measureLabel{position:absolute;fill:#fff;font-family:tahoma;font-size:14px;stroke:#009bea;font-weight:200;pointer-events:none;text-anchor:middle}.measurePointer{fill:#009bea}.Hight{stroke:#fff;font-weight:500;filter:drop-shadow(0px 0px 2px rgb(0,195,255))}.allow-select{pointer-events:auto}.disallow-select{pointer-events:none}.angle-annotation{position:absolute;pointer-events:auto}.measure-2d-selected.measureLine{stroke:#fff;fill:#fff;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measurePointer{fill:#fff;stroke:#00c3ff;stroke-width:2px;filter:drop-shadow(0 0 3px rgb(0,195,255))}.measure-2d-selected.measureBack{fill:#009bea;stroke:#fff;stroke-width:1px;filter:drop-shadow(0 0 4px rgb(0,195,255))}.measure-2d-selected.measureLabel{fill:#fff;stroke:none;font-weight:600}polygon.measure-2d-selected{fill:#00c3ff38}.markup-2d-layer{position:absolute;inset:0;pointer-events:none;z-index:30}.markup-2d-svg{position:absolute;inset:0;overflow:visible;pointer-events:none}.markup-2d-toolbar{position:absolute;top:8px;left:50%;transform:translate(-50%);display:none;align-items:center;gap:6px;padding:6px;background:#fff;border:1px solid #d9d9d9;border-radius:8px;box-shadow:0 4px 14px #00000024;pointer-events:auto;-webkit-user-select:none;user-select:none;z-index:1300}.markup-2d-toolbar button,.markup-2d-toolbar input{height:28px;border:1px solid #d9d9d9;border-radius:4px;background:#fff;color:#1f2937;font-size:12px}.markup-2d-toolbar button{width:28px;min-width:28px;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.markup-2d-toolbar button:hover,.markup-2d-toolbar button.active{color:#1677ff;border-color:#1677ff;background:#eef6ff}.markup-2d-toolbar input[type=color]{width:34px;padding:2px}.markup-2d-toolbar input[type=number]{width:54px;padding:0 4px}.markup-2d-icon-button img{width:16px;height:16px;display:block;pointer-events:none}.markup-2d-divider{width:1px;height:22px;background:#e5e7eb}.markup-2d-shape{pointer-events:auto;cursor:pointer}.markup-2d-shape.selected{filter:drop-shadow(0 0 4px rgba(22,119,255,.9))}.MapController{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.engine-2d-container{position:relative;width:100%;height:100%;overflow:hidden}.engine-2d-canvas{display:block;width:100%;height:100%;outline:none}.engine-2d-version-text{position:absolute;right:10px;bottom:0;z-index:1000;color:#86d9ff;font-size:10px;background:transparent;pointer-events:none}.engine-2d-cad-cursor{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.engine-2d-cad-cursor__h{position:absolute;left:0;width:100%;height:1px;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translateY(-50%)}.engine-2d-cad-cursor__v{position:absolute;top:0;width:1px;height:100%;background:var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%)}.engine-2d-cad-cursor__box{position:absolute;width:8px;height:8px;border:1px solid var(--e2d-cursor, rgba(255, 255, 255, .85));transform:translate(-50%,-50%)}.engine-2d-cad-cursor--short-crosshair .engine-2d-cad-cursor__h{width:72px;left:0;transform:translate(-50%,-50%)}.engine-2d-cad-cursor--short-crosshair .engine-2d-cad-cursor__v{height:72px;top:0;transform:translate(-50%,-50%)}.engine-2d-context-menu{position:absolute;z-index:9999;min-width:140px;background:var(--e2d-bg2, #252526);border:1px solid var(--e2d-border, rgba(255, 255, 255, .12));border-radius:4px;box-shadow:0 4px 16px var(--e2d-shadow, rgba(0, 0, 0, .5));padding:4px 0;display:none;-webkit-user-select:none;user-select:none}.engine-2d-context-menu--visible{display:block}.engine-2d-context-menu__item{padding:7px 16px;font-size:13px;color:var(--e2d-text2, #cccccc);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.engine-2d-context-menu__item:hover{background:var(--e2d-bg-accent, #094771);color:var(--e2d-text-accent, #ffffff)}.engine-2d-context-menu__divider{height:1px;background:var(--e2d-border, rgba(255, 255, 255, .1));margin:4px 0}.engine-2d-stats{position:absolute;top:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .7));color:var(--e2d-text, #e0e0e0);padding:8px 12px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-stats div{margin:2px 0}.engine-2d-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--e2d-float-bg, rgba(0, 0, 0, .8));color:var(--e2d-text, #e0e0e0);padding:20px 40px;border-radius:8px;font-size:16px;text-align:center}.engine-2d-loading-spinner{border:3px solid var(--e2d-border, rgba(255, 255, 255, .3));border-top:3px solid var(--e2d-accent, #4fc3f7);border-radius:50%;width:40px;height:40px;animation:engine-2d-spin 1s linear infinite;margin:0 auto 10px}@keyframes engine-2d-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.engine-2d-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#d32f2feb;color:#fff;padding:20px 40px;border-radius:8px;font-size:14px;max-width:80%;text-align:center}.engine-2d-controls-hint{position:absolute;bottom:10px;left:10px;background:var(--e2d-float-bg, rgba(0, 0, 0, .6));color:var(--e2d-text, #e0e0e0);border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08));padding:8px 12px;border-radius:4px;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}.engine-2d-controls-hint kbd{background:var(--e2d-icon-bg, rgba(255, 255, 255, .2));color:var(--e2d-text, #e0e0e0);padding:2px 6px;border-radius:3px;font-family:monospace}.engine-2d-workspace-tabs{position:absolute;left:12px;bottom:10px;z-index:40;display:flex;align-items:center;max-width:calc(100% - 24px);overflow-x:auto;background:var(--e2d-bg2, rgba(28, 33, 40, .92));border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:4px;box-shadow:0 4px 14px var(--e2d-shadow, rgba(0, 0, 0, .28))}.engine-2d-workspace-tabs__item{flex:0 0 auto;max-width:180px;height:28px;padding:0 12px;border:0;border-right:1px solid var(--e2d-border2, rgba(255, 255, 255, .1));background:transparent;color:var(--e2d-text2, #d7dde4);font-size:12px;line-height:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.engine-2d-workspace-tabs__item:last-child{border-right:0}.engine-2d-workspace-tabs__item:hover:not(:disabled){background:var(--e2d-bg-hover, rgba(79, 195, 247, .12));color:var(--e2d-text-accent, #ffffff)}.engine-2d-workspace-tabs__item--active{background:var(--e2d-accent, #2f80ed);color:#fff;cursor:default}.engine-2d-workspace-tabs__item:disabled{opacity:.9}.engine-2d-search{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9998;display:none}.engine-2d-search--visible{display:block}.engine-2d-search__box{position:absolute;top:14%;left:50%;transform:translate(-50%);width:480px;max-width:calc(100% - 40px);background:var(--e2d-bg, #1e1f22);border:1px solid var(--e2d-border, rgba(255, 255, 255, .14));border-radius:10px;box-shadow:0 8px 40px var(--e2d-shadow-lg, rgba(0, 0, 0, .65)),0 2px 8px var(--e2d-shadow, rgba(0, 0, 0, .4));overflow:hidden;pointer-events:auto;animation:engine-2d-search-in .18s cubic-bezier(.34,1.2,.64,1)}@keyframes engine-2d-search-in{0%{opacity:0;transform:translate(-50%) translateY(-8px) scale(.97)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.engine-2d-search__input-row{display:flex;align-items:center;padding:0 12px;gap:8px;height:48px}.engine-2d-search__icon{flex-shrink:0;color:var(--e2d-icon, rgba(255, 255, 255, .4));display:flex;align-items:center}.engine-2d-search__input{flex:1;background:transparent;border:none;outline:none;color:var(--e2d-text, #e0e0e0);font-size:14px;line-height:1.4;caret-color:var(--e2d-accent, #4fc3f7)}.engine-2d-search__input::placeholder{color:var(--e2d-text3, rgba(255, 255, 255, .25))}.engine-2d-search__clear{flex-shrink:0;background:var(--e2d-icon-bg, rgba(255, 255, 255, .08));border:none;border-radius:4px;color:var(--e2d-icon, rgba(255, 255, 255, .5));cursor:pointer;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;opacity:0;pointer-events:none;transition:opacity .15s,background .15s,color .15s}.engine-2d-search__clear:hover{background:var(--e2d-icon-bg-hover, rgba(255, 255, 255, .16));color:var(--e2d-close-hover, #ffffff)}.engine-2d-search__divider{height:1px;background:var(--e2d-border2, rgba(255, 255, 255, .08));display:none}.engine-2d-search__status{padding:6px 16px;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .35));display:none;-webkit-user-select:none;user-select:none}.engine-2d-search__list{list-style:none;margin:0;padding:4px 0;max-height:320px;overflow-y:auto;display:none;scrollbar-width:thin;scrollbar-color:var(--e2d-scrollbar, rgba(255, 255, 255, .15)) transparent}.engine-2d-search__list::-webkit-scrollbar{width:4px}.engine-2d-search__list::-webkit-scrollbar-track{background:transparent}.engine-2d-search__list::-webkit-scrollbar-thumb{background:var(--e2d-scrollbar, rgba(255, 255, 255, .15));border-radius:2px}.engine-2d-search__item{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;transition:background .1s;min-height:38px;flex-wrap:nowrap}.engine-2d-search__item:hover,.engine-2d-search__item--active{background:var(--e2d-bg-hover, rgba(79, 195, 247, .08))}.engine-2d-search__item-badge{flex-shrink:0;font-size:10px;font-weight:500;padding:2px 6px;border-radius:3px;letter-spacing:.03em;white-space:nowrap;color:var(--e2d-accent, #4fc3f7);background:#4fc3f71f}.engine-2d-search__item-name{flex:1;font-size:13px;color:var(--e2d-text, #e0e0e0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-layer{flex-shrink:0;font-size:11px;color:var(--e2d-text3, rgba(255, 255, 255, .3));white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__item-desc{flex-shrink:0;font-size:11px;color:var(--e2d-text4, rgba(255, 255, 255, .25));white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}.engine-2d-search__mark{background:transparent;color:var(--e2d-accent, #4fc3f7);font-weight:600}.engine-2d-mouse-coord{position:absolute;bottom:10px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--e2d-float-bg, rgba(0, 0, 0, .65));color:var(--e2d-text, #e0e0e0);padding:5px 14px;border-radius:4px;font-family:monospace;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none;border:1px solid var(--e2d-float-border, rgba(255, 255, 255, .08))}.engine-2d-mouse-coord__label{color:var(--e2d-coord-label, rgba(255, 255, 255, .45));font-size:11px;letter-spacing:.05em}.engine-2d-mouse-coord__value{min-width:90px;color:var(--e2d-coord-value, #76c8ff)}
@@ -1,2 +0,0 @@
1
- export { EngineKernel2d, createEngine2d } from './index';
2
- export { createEngine2d as default } from './index';