iflow-engine-base 3.12.3 → 3.12.5
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.
- package/dist/bim-engine-sdk.es.js +14 -13
- package/dist/bim-engine-sdk.umd.js +705 -675
- package/dist/chunks/{engine-2d-BJU35YiO.js → engine-2d-Bjr3p2Wy.js} +72 -62
- package/dist/chunks/{engine-3d-DoFqnhpo.js → engine-3d-Cap1x_4_.js} +3470 -2146
- package/dist/chunks/{engine-720-pqkCEN7l.js → engine-720-CfHpVklG.js} +15 -15
- package/dist/chunks/{engine-gaussian-B4ULOHAm.js → engine-gaussian-CIruC3PT.js} +2 -2
- package/dist/chunks/{engine-gis-Cx9rI4U4.js → engine-gis-CXVisOHM.js} +3 -3
- package/dist/chunks/{sdk-assets-bsmej2W5.js → sdk-assets-D5UGR827.js} +2 -2
- package/dist/chunks/{sdk-runtime-Bw8B0I-e.js → sdk-runtime-83EeZHe_.js} +16 -16
- package/dist/chunks/{sdk-vendor-DwLu476l.js → sdk-vendor-CvevZpJO.js} +1 -1
- package/dist/chunks/{three-vendor-Bx2tSp_D.js → three-vendor-BL-jpeTM.js} +92 -91
- package/dist/index.d.ts +434 -1
- package/package.json +1 -1
- package/dist/assets/viewcube/cn_back.png +0 -0
- package/dist/assets/viewcube/cn_bottom.png +0 -0
- package/dist/assets/viewcube/cn_front.png +0 -0
- package/dist/assets/viewcube/cn_left.png +0 -0
- package/dist/assets/viewcube/cn_right.png +0 -0
- package/dist/assets/viewcube/cn_top.png +0 -0
- package/dist/assets/viewcube/home.png +0 -0
- package/dist/assets//350/267/263/350/267/263/345/215/241.glb +0 -0
- package/dist/assets//351/227/250/350/264/264.glb +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -551,17 +551,24 @@ declare class Calibration {
|
|
|
551
551
|
private static readonly sourceColor;
|
|
552
552
|
private static readonly targetColor;
|
|
553
553
|
private readonly matrices;
|
|
554
|
+
private readonly histories;
|
|
555
|
+
private readonly historyOrder;
|
|
554
556
|
private pointCalibrationUrl;
|
|
555
557
|
private pointCalibrationPoints;
|
|
558
|
+
private pointCalibrationCallback;
|
|
556
559
|
private behavior;
|
|
560
|
+
private readonly onKeyDown;
|
|
557
561
|
/** 供 handelBehaved 判断不同工具切换时释放当前鼠标监听。 */
|
|
558
562
|
readonly type = "point-calibration";
|
|
559
563
|
constructor(engine: any);
|
|
564
|
+
/** 释放校准管理器的全局快捷键监听。 */
|
|
565
|
+
dispose(): void;
|
|
560
566
|
/**
|
|
561
567
|
* 应用模型校准矩阵。
|
|
562
568
|
* flat 16 数组按 Three.js 列主序处理;二维 4x4 数组按常见行主序处理。
|
|
563
569
|
*/
|
|
564
570
|
apply(options: CalibrationOptions): boolean;
|
|
571
|
+
private applyInternal;
|
|
565
572
|
/**
|
|
566
573
|
* 兼容业务侧更直观的命名。
|
|
567
574
|
*/
|
|
@@ -605,18 +612,57 @@ declare class Calibration {
|
|
|
605
612
|
/**
|
|
606
613
|
* 清除指定模型的校准。
|
|
607
614
|
*/
|
|
608
|
-
clear(url: string): boolean;
|
|
615
|
+
clear(url: string, onChange?: CalibrationChangeCallback): boolean;
|
|
616
|
+
/** 撤回最近一次模型校准;传 url 时只撤回指定模型,不传时撤回最后变更的模型。 */
|
|
617
|
+
undo(url?: string, onChange?: CalibrationChangeCallback): boolean;
|
|
618
|
+
private pushHistory;
|
|
619
|
+
private findLatestHistoryUrl;
|
|
620
|
+
private notifyChange;
|
|
621
|
+
private createChangeEvent;
|
|
622
|
+
private handleKeyDown;
|
|
623
|
+
/** Ctrl+Z / Command+Z 撤回最近一次主模型校准,输入框焦点下保留原生编辑行为。 */
|
|
624
|
+
private isUndoShortcut;
|
|
609
625
|
private updateCachedModelBox;
|
|
610
626
|
private clearRuntimeWorldBoxCache;
|
|
611
627
|
private toThreeMatrix;
|
|
612
628
|
private toVector3;
|
|
613
629
|
}
|
|
614
630
|
|
|
631
|
+
export declare type CalibrationChangeCallback = (event: CalibrationChangeEvent) => void;
|
|
632
|
+
|
|
633
|
+
/** 3D 主模型校准变化回调数据。 */
|
|
634
|
+
export declare interface CalibrationChangeEvent {
|
|
635
|
+
url: string;
|
|
636
|
+
source: CalibrationChangeSource;
|
|
637
|
+
/** 模型根节点当前平移值,单位沿用引擎世界坐标。 */
|
|
638
|
+
offset: CalibrationVector3Array;
|
|
639
|
+
/** 模型根节点当前欧拉角,单位为角度,数组第 4 位保留 Three.js 的旋转顺序。 */
|
|
640
|
+
rotation: CalibrationEulerArray;
|
|
641
|
+
/** 模型根节点当前欧拉角,单位为弧度,供需要 Three.js 原始单位的业务使用。 */
|
|
642
|
+
rotationRadians: CalibrationEulerArray;
|
|
643
|
+
/** 便于 UI 直接显示的三轴角度制旋转值。 */
|
|
644
|
+
rotationDegrees: CalibrationVector3Array;
|
|
645
|
+
/** 模型根节点当前缩放,矩阵校准包含缩放时用于业务侧兜底保存。 */
|
|
646
|
+
scale: CalibrationVector3Array;
|
|
647
|
+
/** 当前 4x4 校准矩阵,按 Three.js 列主序导出。 */
|
|
648
|
+
matrix: number[];
|
|
649
|
+
/** 本次变更前的 4x4 校准矩阵,按 Three.js 列主序导出。 */
|
|
650
|
+
previousMatrix: number[];
|
|
651
|
+
/** 是否由 Ctrl+Z 或 undo 触发。 */
|
|
652
|
+
isUndo: boolean;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
export declare type CalibrationChangeSource = 'apply' | 'segment' | 'point' | 'clear' | 'undo';
|
|
656
|
+
|
|
657
|
+
declare type CalibrationEulerArray = [number, number, number, THREE.EulerOrder];
|
|
658
|
+
|
|
615
659
|
declare type CalibrationMatrixInput = THREE.Matrix4 | number[] | ArrayLike<number> | number[][];
|
|
616
660
|
|
|
617
661
|
export declare interface CalibrationOptions {
|
|
618
662
|
url: string;
|
|
619
663
|
matrix: CalibrationMatrixInput;
|
|
664
|
+
/** 校准成功后返回当前模型的偏移、旋转和矩阵,便于业务侧保存手动调节结果。 */
|
|
665
|
+
onChange?: CalibrationChangeCallback;
|
|
620
666
|
}
|
|
621
667
|
|
|
622
668
|
declare type CalibrationPointInput = THREE.Vector3 | [number, number, number] | {
|
|
@@ -634,6 +680,8 @@ declare interface CalibrationSegmentInput {
|
|
|
634
680
|
end: CalibrationPointInput;
|
|
635
681
|
}
|
|
636
682
|
|
|
683
|
+
declare type CalibrationVector3Array = [number, number, number];
|
|
684
|
+
|
|
637
685
|
declare class CameraModule {
|
|
638
686
|
private static readonly MIN_VISIBLE_HEIGHT;
|
|
639
687
|
private static readonly MIN_CAMERA_DISTANCE;
|
|
@@ -2480,6 +2528,10 @@ declare class EngineKernelV2 {
|
|
|
2480
2528
|
modelPlace: ModelPlace;
|
|
2481
2529
|
/** 基于当前引擎作为基准版本的模型差异比较器。 */
|
|
2482
2530
|
modelComparison: ModelComparison;
|
|
2531
|
+
/** 管理模型炸开代理对象,并保持炸开后的构件交互身份。 */
|
|
2532
|
+
modelExplode: ModelExplode;
|
|
2533
|
+
/** 材质编辑器,提供 DOM 面板、材质修改记录读取和一键还原能力。 */
|
|
2534
|
+
materialTool: MaterialTool;
|
|
2483
2535
|
models: any[];
|
|
2484
2536
|
reactBoundingClientRect: {
|
|
2485
2537
|
left: number;
|
|
@@ -2941,6 +2993,7 @@ export declare enum EventType {
|
|
|
2941
2993
|
Click = "click",// data: ModelClickEventItem[]
|
|
2942
2994
|
MouseMove = "mouse-move",// data: MouseEventData - 鼠标移动事件
|
|
2943
2995
|
ModelPlaceSelected = "model-place-selected",
|
|
2996
|
+
ModelCalibrationChanged = "model-calibration-changed",
|
|
2944
2997
|
CameraChanged = "camera-changed",// 相机移动时持续触发
|
|
2945
2998
|
CameraIdle = "camera-idle",// 相机静止后触发
|
|
2946
2999
|
ViewportResize = "viewport-resize",// 窗口大小变化
|
|
@@ -4022,6 +4075,9 @@ declare class InteractionModule {
|
|
|
4022
4075
|
private intersectsRect;
|
|
4023
4076
|
private getMergedBox;
|
|
4024
4077
|
private getSceneModel;
|
|
4078
|
+
/** 从射线命中的对象还原真实构件 ID,兼容炸开代理和普通模型对象。 */
|
|
4079
|
+
private getHitModelId;
|
|
4080
|
+
private getEngineNode;
|
|
4025
4081
|
}
|
|
4026
4082
|
|
|
4027
4083
|
declare class InteractionModule2d {
|
|
@@ -4673,6 +4729,8 @@ declare class LinkElement2d3d {
|
|
|
4673
4729
|
private disActive;
|
|
4674
4730
|
dispose(): void;
|
|
4675
4731
|
private readonly listenElementClick;
|
|
4732
|
+
/** 二三维模型联动开启时保持 3D 引擎全帧渲染,避免等待空闲限帧间隔。 */
|
|
4733
|
+
private readonly listenLinkStateChange;
|
|
4676
4734
|
}
|
|
4677
4735
|
|
|
4678
4736
|
declare class LinkView2d3d {
|
|
@@ -5089,6 +5147,132 @@ declare interface Markup2dStyle {
|
|
|
5089
5147
|
|
|
5090
5148
|
declare type Markup2dType = 'line' | 'arrow' | 'rect' | 'ellipse' | 'text' | 'polygon' | 'cloudline';
|
|
5091
5149
|
|
|
5150
|
+
export declare interface MaterialEditorMaterialInfo {
|
|
5151
|
+
id: string;
|
|
5152
|
+
name: string;
|
|
5153
|
+
type: string;
|
|
5154
|
+
color?: string;
|
|
5155
|
+
opacity: number;
|
|
5156
|
+
transparent: boolean;
|
|
5157
|
+
roughness?: number;
|
|
5158
|
+
metalness?: number;
|
|
5159
|
+
emissive?: string;
|
|
5160
|
+
emissiveIntensity?: number;
|
|
5161
|
+
side: number;
|
|
5162
|
+
wireframe?: boolean;
|
|
5163
|
+
textures: MaterialTextureInfo[];
|
|
5164
|
+
}
|
|
5165
|
+
|
|
5166
|
+
export declare interface MaterialEditorOptions {
|
|
5167
|
+
visible?: boolean;
|
|
5168
|
+
title?: string;
|
|
5169
|
+
width?: number;
|
|
5170
|
+
}
|
|
5171
|
+
|
|
5172
|
+
export declare interface MaterialEditorTarget {
|
|
5173
|
+
url: string;
|
|
5174
|
+
ids?: Array<string | number>;
|
|
5175
|
+
}
|
|
5176
|
+
|
|
5177
|
+
export declare type MaterialMapSlot = 'map' | 'normalMap' | 'roughnessMap' | 'metalnessMap' | 'alphaMap' | 'aoMap' | 'bumpMap' | 'emissiveMap';
|
|
5178
|
+
|
|
5179
|
+
export declare interface MaterialModificationRecord {
|
|
5180
|
+
id: string;
|
|
5181
|
+
name: string;
|
|
5182
|
+
type: string;
|
|
5183
|
+
objectNames: string[];
|
|
5184
|
+
changes: Record<string, {
|
|
5185
|
+
before: unknown;
|
|
5186
|
+
after: unknown;
|
|
5187
|
+
}>;
|
|
5188
|
+
}
|
|
5189
|
+
|
|
5190
|
+
declare interface MaterialOption {
|
|
5191
|
+
material: THREE.Material;
|
|
5192
|
+
materials?: THREE.Material[];
|
|
5193
|
+
owners: THREE.Object3D[];
|
|
5194
|
+
}
|
|
5195
|
+
|
|
5196
|
+
export declare interface MaterialTextureInfo {
|
|
5197
|
+
slot: MaterialMapSlot;
|
|
5198
|
+
name: string;
|
|
5199
|
+
url: string;
|
|
5200
|
+
hasTexture: boolean;
|
|
5201
|
+
}
|
|
5202
|
+
|
|
5203
|
+
/** 材质编辑器入口,负责对外 API、事件绑定和材质资源生命周期。 */
|
|
5204
|
+
export declare class MaterialTool {
|
|
5205
|
+
private readonly engine;
|
|
5206
|
+
options: Required<MaterialEditorOptions>;
|
|
5207
|
+
selectedMaterials: MaterialOption[];
|
|
5208
|
+
selectedMaterialId: string | null;
|
|
5209
|
+
targetText: string;
|
|
5210
|
+
visible: boolean;
|
|
5211
|
+
private readonly textureLoader;
|
|
5212
|
+
private readonly ownedTextures;
|
|
5213
|
+
private readonly objectUrls;
|
|
5214
|
+
private readonly collector;
|
|
5215
|
+
private readonly snapshots;
|
|
5216
|
+
private readonly panel;
|
|
5217
|
+
private isDisposed;
|
|
5218
|
+
private eventsBound;
|
|
5219
|
+
private readonly handleSelectionChanged;
|
|
5220
|
+
private readonly handleClick;
|
|
5221
|
+
private readonly handleLoadingCompleted;
|
|
5222
|
+
constructor(engine: any, options?: MaterialEditorOptions);
|
|
5223
|
+
/** 初始化 DOM 和事件监听;默认隐藏,业务可调用 show() 打开。 */
|
|
5224
|
+
init(options?: MaterialEditorOptions): void;
|
|
5225
|
+
/** 显示编辑器,可同时传入目标对象或构件选择信息。 */
|
|
5226
|
+
show(target?: THREE.Object3D | MaterialEditorTarget): void;
|
|
5227
|
+
/** 隐藏编辑器但保留已有修改记录。 */
|
|
5228
|
+
hide(): void;
|
|
5229
|
+
/** 切换编辑器显示状态。 */
|
|
5230
|
+
toggle(target?: THREE.Object3D | MaterialEditorTarget): void;
|
|
5231
|
+
/** 根据场景对象读取其下所有材质并刷新面板。 */
|
|
5232
|
+
selectObject(object: THREE.Object3D): MaterialEditorMaterialInfo[];
|
|
5233
|
+
/** 根据当前引擎选择数据读取构件材质。 */
|
|
5234
|
+
selectTarget(target: MaterialEditorTarget): MaterialEditorMaterialInfo[];
|
|
5235
|
+
/** 只读取目标对象材质,不改变当前 UI 选择。 */
|
|
5236
|
+
getMaterialsByObject(object: THREE.Object3D): MaterialEditorMaterialInfo[];
|
|
5237
|
+
/** 只读取指定构件材质,不改变当前 UI 选择。 */
|
|
5238
|
+
getMaterialsByTarget(target: MaterialEditorTarget): MaterialEditorMaterialInfo[];
|
|
5239
|
+
/** 读取当前场景中所有可编辑材质。 */
|
|
5240
|
+
getAllSceneMaterials(): MaterialEditorMaterialInfo[];
|
|
5241
|
+
/** 返回当前选择对象上可编辑的材质信息。 */
|
|
5242
|
+
getSelectedMaterials(): MaterialEditorMaterialInfo[];
|
|
5243
|
+
/** 返回全场景相对快照发生变化的材质信息。 */
|
|
5244
|
+
getModifiedMaterials(): MaterialModificationRecord[];
|
|
5245
|
+
/** 重建当前场景基准快照;通常在模型加载完成后由编辑器自动调用。 */
|
|
5246
|
+
captureSceneSnapshot(): void;
|
|
5247
|
+
/** 批量更新材质参数。 */
|
|
5248
|
+
updateMaterial(materialId: string, patch: Partial<Record<string, unknown>>): void;
|
|
5249
|
+
/** 通过 URL 或 File 修改指定贴图槽;传入 null 时清除贴图。 */
|
|
5250
|
+
setTexture(materialId: string, slot: MaterialMapSlot, source: string | File | null): Promise<void>;
|
|
5251
|
+
/** 一键还原所有有基准快照的场景材质。 */
|
|
5252
|
+
restoreAll(): void;
|
|
5253
|
+
/** 兼容常见命名:重置所有材质修改。 */
|
|
5254
|
+
resetAll(): void;
|
|
5255
|
+
/** 还原单个材质。 */
|
|
5256
|
+
restoreMaterial(materialId: string): void;
|
|
5257
|
+
/** 获取当前面板正在编辑的材质。 */
|
|
5258
|
+
getActiveMaterial(): THREE.Material | null;
|
|
5259
|
+
/** 刷新 DOM 面板。 */
|
|
5260
|
+
render(): void;
|
|
5261
|
+
/** 销毁 DOM、事件监听和编辑器创建的贴图资源。 */
|
|
5262
|
+
dispose(): void;
|
|
5263
|
+
private bindEvents;
|
|
5264
|
+
private setSelectedMaterials;
|
|
5265
|
+
/** 内容完全相同的材质只保留一个卡片,并合并它关联的对象和实际材质实例。 */
|
|
5266
|
+
private dedupeMaterials;
|
|
5267
|
+
private collectSceneMaterials;
|
|
5268
|
+
private findMaterialById;
|
|
5269
|
+
private findMaterialGroupById;
|
|
5270
|
+
private replaceTexture;
|
|
5271
|
+
private loadTexture;
|
|
5272
|
+
private requestRender;
|
|
5273
|
+
private disposeOwnedTextures;
|
|
5274
|
+
}
|
|
5275
|
+
|
|
5092
5276
|
declare class Measure {
|
|
5093
5277
|
private isActive;
|
|
5094
5278
|
private engine;
|
|
@@ -5546,6 +5730,9 @@ declare class ModelEdge {
|
|
|
5546
5730
|
private indexes;
|
|
5547
5731
|
private highlightIndexes;
|
|
5548
5732
|
private highlightEdgeSyncVersion;
|
|
5733
|
+
private explodeHidden;
|
|
5734
|
+
private groupVisibleBeforeExplode;
|
|
5735
|
+
private highlightVisibleBeforeExplode;
|
|
5549
5736
|
private getModelEntry;
|
|
5550
5737
|
private getOrCreateItemIndex;
|
|
5551
5738
|
private getEdgePointsByIndex;
|
|
@@ -5556,6 +5743,8 @@ declare class ModelEdge {
|
|
|
5556
5743
|
disActive(): void;
|
|
5557
5744
|
isEnabled(): boolean;
|
|
5558
5745
|
getOpacity(): number;
|
|
5746
|
+
/** 炸开期间临时隐藏所有边线;退出炸开时恢复进入炸开前的可见状态。 */
|
|
5747
|
+
setExplodeHidden(hidden: boolean): void;
|
|
5559
5748
|
update(): void;
|
|
5560
5749
|
private hasPendingModelEdges;
|
|
5561
5750
|
private loadZipJsonAsync;
|
|
@@ -5579,6 +5768,242 @@ declare class ModelEdge {
|
|
|
5579
5768
|
showModelEdge(url: string, id: Number): void;
|
|
5580
5769
|
}
|
|
5581
5770
|
|
|
5771
|
+
/**
|
|
5772
|
+
* 模型炸开管理器。
|
|
5773
|
+
*
|
|
5774
|
+
* 设计目标:
|
|
5775
|
+
* 1. 炸开期间不直接修改原始构件顶点,而是创建临时代理网格承载位移。
|
|
5776
|
+
* 2. 代理对象保留原始 url/id,点选、高亮、显隐、框选和双击定位仍按完整构件工作。
|
|
5777
|
+
* 3. 原始渲染对象被临时隐藏或拆分隐藏,避免原位模型与代理模型重复显示。
|
|
5778
|
+
* 4. 炸开期间临时隐藏边线,避免边线与代理模型出现错位。
|
|
5779
|
+
*/
|
|
5780
|
+
declare class ModelExplode {
|
|
5781
|
+
private engine;
|
|
5782
|
+
/** 当前是否处于炸开模式;供外部滑块、交互模块判断是否需要走代理逻辑。 */
|
|
5783
|
+
private active;
|
|
5784
|
+
/** 当前炸开倍数。真实代理位移 = record.offsetLocal * factor。 */
|
|
5785
|
+
private factor;
|
|
5786
|
+
/** 本轮炸开创建的所有代理记录,按渲染片段保存。 */
|
|
5787
|
+
private records;
|
|
5788
|
+
/** 非空时表示动画仍在推进,EngineKernel 每帧会调用 update。 */
|
|
5789
|
+
private animation;
|
|
5790
|
+
/** 炸开期间被临时隐藏的高亮/透明/自定义颜色运行时对象,reset 时恢复可见性。 */
|
|
5791
|
+
private hiddenRuntimeObjects;
|
|
5792
|
+
/** 炸开代理专用高亮材质,避免复用原高亮对象导致位置不同步。 */
|
|
5793
|
+
private readonly highlightMaterial;
|
|
5794
|
+
/** 炸开代理专用半透明材质,与原模型透明状态保持一致。 */
|
|
5795
|
+
private readonly translucentMaterial;
|
|
5796
|
+
/** 初始化代理材质,并继承当前剖切平面配置。 */
|
|
5797
|
+
constructor(engine: any);
|
|
5798
|
+
/**
|
|
5799
|
+
* 启动炸开模式。
|
|
5800
|
+
*
|
|
5801
|
+
* 流程:
|
|
5802
|
+
* 1. 清理上一轮代理并恢复边线显示状态,保证重复调用不会叠加状态。
|
|
5803
|
+
* 2. 解析目标构件,未指定 targets 时默认对所有已加载模型执行整模型炸开。
|
|
5804
|
+
* 3. 基于目标包围盒计算每个构件的基础世界位移 offsetWorld。
|
|
5805
|
+
* 4. 为普通网格或实例网格创建代理对象,并隐藏对应原始渲染片段。
|
|
5806
|
+
* 5. 同步当前高亮、隐藏、半透明、自定义颜色状态,并在炸开期间隐藏边线。
|
|
5807
|
+
*/
|
|
5808
|
+
explode(options?: ModelExplodeOptions): void;
|
|
5809
|
+
/**
|
|
5810
|
+
* 设置炸开系数,常用于外部滑杆实时控制。
|
|
5811
|
+
*
|
|
5812
|
+
* factor 只改变代理 position,不重新创建代理,因此拖动滑块时不会破坏
|
|
5813
|
+
* 构件的交互身份和材质状态。
|
|
5814
|
+
*/
|
|
5815
|
+
setFactor(factor: number): void;
|
|
5816
|
+
/**
|
|
5817
|
+
* 每帧推进炸开动画;由 EngineKernel 的主渲染循环调用。
|
|
5818
|
+
* 动画本质上只是在 from/to 之间插值 factor,最终仍复用 setFactor 的统一同步链路。
|
|
5819
|
+
*/
|
|
5820
|
+
update(): void;
|
|
5821
|
+
/**
|
|
5822
|
+
* 清理炸开代理并按当前构件状态恢复原始渲染对象。
|
|
5823
|
+
*
|
|
5824
|
+
* reset 不简单地把所有原对象显示出来,而是重新检查隐藏/高亮/半透明/自定义颜色状态,
|
|
5825
|
+
* 避免用户在炸开期间执行显隐或改色后,退出炸开时丢失业务状态。
|
|
5826
|
+
*/
|
|
5827
|
+
reset(): void;
|
|
5828
|
+
/** 释放炸开管理器持有的专用材质,通常由 EngineKernel 销毁时调用。 */
|
|
5829
|
+
dispose(): void;
|
|
5830
|
+
/** 返回当前是否处于炸开模式。 */
|
|
5831
|
+
isActive(): boolean;
|
|
5832
|
+
/**
|
|
5833
|
+
* 判断某个构件是否已由炸开代理接管。
|
|
5834
|
+
* 八叉树、拾取和框选逻辑可据此跳过原位对象,避免命中已隐藏但仍存在于场景中的源构件。
|
|
5835
|
+
*/
|
|
5836
|
+
hasRecord(url: string, id: any): boolean;
|
|
5837
|
+
/**
|
|
5838
|
+
* 从命中的代理对象还原真实构件 ID,避免 Object3D.name 字符串化造成 nodesMap 查询失败。
|
|
5839
|
+
*/
|
|
5840
|
+
getObjectComponentId(object: any): string | number | null;
|
|
5841
|
+
/**
|
|
5842
|
+
* 返回炸开后用于悬浮高亮的代理网格。
|
|
5843
|
+
* 一个构件可能拆成多个代理片段,调用方应把返回数组整体当作一个完整构件处理。
|
|
5844
|
+
*/
|
|
5845
|
+
getCatchMeshes(url: string, id: any): THREE.Mesh[];
|
|
5846
|
+
/**
|
|
5847
|
+
* 返回炸开后的构件世界包围盒,供框选、双击定位等交互使用。
|
|
5848
|
+
* 这里以代理对象的实时 matrixWorld 为准,因此滑块拖动和动画过程中也能得到正确位置。
|
|
5849
|
+
*/
|
|
5850
|
+
getExplodedWorldBox(url: string, id: any): THREE.Box3 | null;
|
|
5851
|
+
/**
|
|
5852
|
+
* 对炸开代理做独立射线拾取;返回结构与 three.js Raycaster 结果兼容。
|
|
5853
|
+
* 调用方命中代理后,需要再通过 getObjectComponentId 还原真实构件 id。
|
|
5854
|
+
*/
|
|
5855
|
+
raycast(raycaster: THREE.Raycaster): THREE.Intersection[];
|
|
5856
|
+
/**
|
|
5857
|
+
* 同步当前高亮、隐藏、半透明和自定义颜色状态到炸开代理。
|
|
5858
|
+
* 该方法在模型工具模块改变状态后调用,保证炸开期间仍支持完整构件交互。
|
|
5859
|
+
*/
|
|
5860
|
+
syncVisualState(): void;
|
|
5861
|
+
private resolveTargets;
|
|
5862
|
+
/**
|
|
5863
|
+
* 构建本轮炸开需要的空间上下文。
|
|
5864
|
+
* 这里提前缓存整体包围盒、模型中心和分组包围盒,避免每个构件重复遍历 nodesMap。
|
|
5865
|
+
*/
|
|
5866
|
+
private buildExplodeContext;
|
|
5867
|
+
/**
|
|
5868
|
+
* 计算单个构件或分组的基础世界位移。
|
|
5869
|
+
*
|
|
5870
|
+
* radial/type/major 模式按爆炸原点到构件中心的原始向量移动:
|
|
5871
|
+
* newCenter = origin + (center - origin) * (1 + factor),
|
|
5872
|
+
* 因此真正应用到代理上的位移是 (center - origin) * factor。
|
|
5873
|
+
*/
|
|
5874
|
+
private computeOffset;
|
|
5875
|
+
/** 获取本模型的爆炸原点;优先使用业务传入的世界坐标 origin。 */
|
|
5876
|
+
private getExplodeCenter;
|
|
5877
|
+
/**
|
|
5878
|
+
* 根据构件索引创建一条炸开记录。
|
|
5879
|
+
* node.indexes 中的每一项对应一个普通合并网格 group 或一个 InstancedMesh 实例。
|
|
5880
|
+
*/
|
|
5881
|
+
private createRecord;
|
|
5882
|
+
/** 为普通合并网格中的单个构件片段创建代理网格。 */
|
|
5883
|
+
private createMeshProxy;
|
|
5884
|
+
/**
|
|
5885
|
+
* 为 InstancedMesh 中的单个实例创建代理网格。
|
|
5886
|
+
* 实例矩阵会被烘焙进 geometry,后续炸开只移动代理 position,拾取也按普通 Mesh 处理。
|
|
5887
|
+
*/
|
|
5888
|
+
private createInstanceProxy;
|
|
5889
|
+
/** 给代理对象写入稳定交互身份,避免依赖 name 的字符串化 id。 */
|
|
5890
|
+
private assignProxyIdentity;
|
|
5891
|
+
/**
|
|
5892
|
+
* 隐藏源渲染片段,避免与代理对象重复显示。
|
|
5893
|
+
* 普通合并网格通过重建 geometry groups 隐藏局部片段,实例网格通过零缩放矩阵隐藏单个实例。
|
|
5894
|
+
*/
|
|
5895
|
+
private hideSource;
|
|
5896
|
+
/**
|
|
5897
|
+
* 恢复源渲染片段。
|
|
5898
|
+
* 如果构件在炸开期间仍处于隐藏、高亮、半透明或自定义颜色状态,实例源对象继续保持隐藏,
|
|
5899
|
+
* 由对应状态对象负责显示,避免 reset 后出现原模型和状态模型叠加。
|
|
5900
|
+
*/
|
|
5901
|
+
private restoreSource;
|
|
5902
|
+
/**
|
|
5903
|
+
* 确保普通合并网格已进入可按构件片段控制的拆分状态。
|
|
5904
|
+
* 第一次拆分时保存原始片段状态,后续重复同步不覆盖 sourceState。
|
|
5905
|
+
*/
|
|
5906
|
+
private ensureSplitState;
|
|
5907
|
+
/**
|
|
5908
|
+
* 根据每个构件片段的可见性和材质槽位重建 geometry groups。
|
|
5909
|
+
* 连续且材质一致的片段会被合并成一个 group,减少炸开期间状态切换带来的 draw call。
|
|
5910
|
+
*/
|
|
5911
|
+
private rebuildSplitModelGroups;
|
|
5912
|
+
/**
|
|
5913
|
+
* 将业务状态映射到代理对象。
|
|
5914
|
+
* 代理对象不能依赖原场景中的高亮/透明临时对象,因为那些对象仍位于原模型位置。
|
|
5915
|
+
*/
|
|
5916
|
+
private applyProxyVisualState;
|
|
5917
|
+
/**
|
|
5918
|
+
* 生成代理专用自定义颜色材质。
|
|
5919
|
+
* 颜色和透明度相同的请求复用 record.customMaterial,避免滑块或状态同步时反复创建材质。
|
|
5920
|
+
*/
|
|
5921
|
+
private getCustomMaterial;
|
|
5922
|
+
/**
|
|
5923
|
+
* 隐藏原模型位置上的运行时状态对象。
|
|
5924
|
+
* 高亮、半透明和自定义颜色模块通常会创建额外 mesh;炸开时这些 mesh 不会自动跟随代理,
|
|
5925
|
+
* 因此这里临时隐藏它们,并由代理自己承载相同视觉状态。
|
|
5926
|
+
*/
|
|
5927
|
+
private hideRuntimeObjectsForExplodedRecords;
|
|
5928
|
+
/** 恢复 hideRuntimeObjectsForExplodedRecords 临时隐藏的运行时对象。 */
|
|
5929
|
+
private restoreRuntimeObjects;
|
|
5930
|
+
/** 从场景中移除代理对象,并释放代理持有的 geometry 和材质资源。 */
|
|
5931
|
+
private removeProxy;
|
|
5932
|
+
/**
|
|
5933
|
+
* 克隆源材质用于代理。
|
|
5934
|
+
* 当前普通构件代理以主材质为准;高亮、半透明和自定义颜色会在 applyProxyVisualState 中覆盖。
|
|
5935
|
+
*/
|
|
5936
|
+
private cloneProxyMaterial;
|
|
5937
|
+
/**
|
|
5938
|
+
* 读取构件节点的世界包围盒。
|
|
5939
|
+
* 节点 box 通常是模型局部坐标,返回前统一乘以模型组的 matrixWorld。
|
|
5940
|
+
*/
|
|
5941
|
+
private getNodeWorldBox;
|
|
5942
|
+
/** 计算单个模型在世界坐标下的整体包围盒,作为默认爆炸原点的依据。 */
|
|
5943
|
+
private getModelWorldBox;
|
|
5944
|
+
/** 兼容数字 id 和字符串 id 的 nodesMap 查询。 */
|
|
5945
|
+
private getNode;
|
|
5946
|
+
/** 按 url 从引擎模型列表中查找模型条目。 */
|
|
5947
|
+
private getEngineModel;
|
|
5948
|
+
/**
|
|
5949
|
+
* 获取分组 key。
|
|
5950
|
+
* radial/axis 使用构件自身作为分组;level/type/major 使用映射信息让同组构件共享位移方向。
|
|
5951
|
+
*/
|
|
5952
|
+
private getGroupKey;
|
|
5953
|
+
/**
|
|
5954
|
+
* 获取 InstancedMesh 单个实例的原始矩阵。
|
|
5955
|
+
* 优先读取加载器缓存的 matrixsClone/matrixs,避免 getMatrixAt 读到已被隐藏流程改写后的零矩阵。
|
|
5956
|
+
*/
|
|
5957
|
+
private getInstanceMatrix;
|
|
5958
|
+
/**
|
|
5959
|
+
* 将世界坐标位移转换成某个父节点下的局部位移。
|
|
5960
|
+
* 代理对象挂在源 mesh 的父节点下,直接使用世界位移会在模型组存在变换时产生偏差。
|
|
5961
|
+
*/
|
|
5962
|
+
private worldDeltaToLocalDelta;
|
|
5963
|
+
/** 判断构件当前是否处于高亮状态。 */
|
|
5964
|
+
private isHighlighted;
|
|
5965
|
+
/** 判断构件当前是否处于隐藏状态。 */
|
|
5966
|
+
private isHidden;
|
|
5967
|
+
/** 判断构件当前是否处于半透明状态。 */
|
|
5968
|
+
private isTranslucent;
|
|
5969
|
+
/**
|
|
5970
|
+
* reset 时判断实例源对象是否仍应保持隐藏。
|
|
5971
|
+
* 某些状态由独立运行时对象或代理承担显示,如果直接恢复原实例会造成重复显示。
|
|
5972
|
+
*/
|
|
5973
|
+
private shouldKeepOriginalInstanceHidden;
|
|
5974
|
+
/** 统一比较构件 id,兼容业务侧传入数字或字符串。 */
|
|
5975
|
+
private isSameId;
|
|
5976
|
+
/** 归一化炸开系数,非法值按 0 处理,负数不允许反向收缩。 */
|
|
5977
|
+
private normalizeFactor;
|
|
5978
|
+
/** 将任意值转为稳定数字,用于 level 模式缺少可靠排序时生成确定性偏移。 */
|
|
5979
|
+
private getStableNumber;
|
|
5980
|
+
}
|
|
5981
|
+
|
|
5982
|
+
export declare type ModelExplodeAxis = 'x' | 'y' | 'z';
|
|
5983
|
+
|
|
5984
|
+
export declare type ModelExplodeMode = 'radial' | 'axis' | 'level' | 'type' | 'major';
|
|
5985
|
+
|
|
5986
|
+
/**
|
|
5987
|
+
* 炸开配置。
|
|
5988
|
+
* factor 表示炸开位移倍数:0 为原位,1 为基础位移,2 为基础位移的两倍。
|
|
5989
|
+
* origin 用世界坐标表达,未传时默认使用模型自身包围盒中心。
|
|
5990
|
+
*/
|
|
5991
|
+
export declare type ModelExplodeOptions = {
|
|
5992
|
+
targets?: ModelExplodeTarget[];
|
|
5993
|
+
factor?: number;
|
|
5994
|
+
mode?: ModelExplodeMode;
|
|
5995
|
+
axis?: ModelExplodeAxis;
|
|
5996
|
+
origin?: THREE.Vector3;
|
|
5997
|
+
animate?: boolean;
|
|
5998
|
+
duration?: number;
|
|
5999
|
+
};
|
|
6000
|
+
|
|
6001
|
+
/** 炸开目标。未传 ids 时表示对该 url 下的所有构件执行炸开。 */
|
|
6002
|
+
export declare type ModelExplodeTarget = {
|
|
6003
|
+
url: string;
|
|
6004
|
+
ids?: Array<string | number>;
|
|
6005
|
+
};
|
|
6006
|
+
|
|
5582
6007
|
/**
|
|
5583
6008
|
* 通过 window CustomEvent 实现同页面内多个 3D 引擎实例的轻量联动。
|
|
5584
6009
|
*/
|
|
@@ -5616,6 +6041,8 @@ declare class ModelLink3d {
|
|
|
5616
6041
|
isApplyingLinkedEvent(): boolean;
|
|
5617
6042
|
dispose(): void;
|
|
5618
6043
|
private normalizeOptions;
|
|
6044
|
+
/** 模型联动开启后需要持续响应外部视图变化,不能进入空闲限帧。 */
|
|
6045
|
+
private syncIdleFrameRateExempt;
|
|
5619
6046
|
private createViewerGuid;
|
|
5620
6047
|
private wrapModelToolMethods;
|
|
5621
6048
|
private restoreModelToolMethods;
|
|
@@ -5907,6 +6334,8 @@ declare class ModelToolModule {
|
|
|
5907
6334
|
private getModelGuids;
|
|
5908
6335
|
private restoreSplitModelsOnIdle;
|
|
5909
6336
|
getSceneModel(index: number): any;
|
|
6337
|
+
/** 炸开模式下,原模型状态变化后需要同步到代理构件,保证交互语义一致。 */
|
|
6338
|
+
private syncExplodeVisualState;
|
|
5910
6339
|
getModelCenter(models?: any[]): THREE.Vector3 | null;
|
|
5911
6340
|
updateMaterial(): void;
|
|
5912
6341
|
private syncHighlightModelEdges;
|
|
@@ -6642,6 +7071,8 @@ declare interface PerformanceStats {
|
|
|
6642
7071
|
/** 启动四点捕捉校准所需参数。 */
|
|
6643
7072
|
export declare interface PointCalibrationOptions {
|
|
6644
7073
|
url: string;
|
|
7074
|
+
/** 四点采集完成并应用校准后触发。 */
|
|
7075
|
+
onChange?: CalibrationChangeCallback;
|
|
6645
7076
|
}
|
|
6646
7077
|
|
|
6647
7078
|
/**
|
|
@@ -7324,6 +7755,8 @@ export declare interface SegmentCalibrationOptions {
|
|
|
7324
7755
|
url: string;
|
|
7325
7756
|
source: CalibrationSegmentInput;
|
|
7326
7757
|
target: CalibrationSegmentInput;
|
|
7758
|
+
/** 校准成功后返回当前模型的偏移、旋转和矩阵,便于业务侧保存手动调节结果。 */
|
|
7759
|
+
onChange?: CalibrationChangeCallback;
|
|
7327
7760
|
}
|
|
7328
7761
|
|
|
7329
7762
|
/**
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|