# BIM Engine SDK API 文档 本文档为 BIM Engine SDK 的完整 API 参考,适合大模型阅读和理解引擎的功能结构。 ## 目录 1. [核心引擎类](#1-核心引擎类) 2. [基础模块](#2-基础模块) 3. [功能管理器](#3-功能管理器) 4. [状态管理](#4-状态管理) --- ## 1. 核心引擎类 ### EngineKernelV2 引擎核心组件,负责整合和管理所有模块。 **文件路径**: `src/core/v2/EngineKernel.ts` #### 构造函数 ```typescript constructor(options: any) ``` **参数**: - `options.containerId`: string - 容器元素的 ID **功能**: - 初始化所有基础模块(场景、相机、渲染器、控制器等) - 初始化所有功能管理器(测量、剖切、模型树等) - 设置渲染循环 - 添加性能监视器 #### 公共属性 ```typescript // 基础对象 public scene: THREE.Scene | null // 三维场景 public camera: THREE.Camera | null // 当前使用的相机 public renderer: THREE.WebGLRenderer | null // 渲染器 public controls: any // 控制器(轨道控制或第一人称) // 基础模块 public sceneModule: SceneModule // 场景模块 public cameraModule: CameraModule // 相机模块 public deviceModule: DeviceModule // 设备模块 public renderModule: RenderModule // 渲染模块 public controlModule: ControlModule // 控制模块 public composerModule: ComposerModule // 合成器模块 public loaderModule: LoaderModule // 加载器模块 public lightModule: LightModule // 光照模块 public interactionModule: InteractionModule // 交互模块 public modelToolModule: ModelToolModule // 模型工具模块 // 功能管理器 public viewCube: ViewCube // 视图立方体 public rangeScale: RangeScale // 范围缩放 public setting: Setting // 设置 public measure: Measure // 测量 public clipping: Clipping // 剖切 public modelTree: ModelTree // 模型树 public engineInfo: EngineInfo // 引擎信息统计 public modelProperties: ModelProperties // 模型属性 public modelMapperBatch: ModelMapperBatch // 模型批量映射 public modelEdge: ModelEdge // 模型边线 // 状态管理 public engineStatus: EngineStatus // 引擎状态 public events: EventModule // 事件模块 // 业务数据 public models: any[] // 已加载的模型数组 public reactBoundingClientRect: { left: number; top: number } // 容器的边界矩形 ``` #### 公共方法 ##### pauseRendering() ```typescript public pauseRendering(): void ``` **功能**: 暂停渲染循环 - 停止动画帧请求 - 禁用控制器 - 用于性能优化或后台运行 ##### resumeRendering() ```typescript public resumeRendering(): void ``` **功能**: 恢复渲染循环 - 重新启动动画帧请求 - 恢复控制器状态 ##### isRenderingPausedState() ```typescript public isRenderingPausedState(): boolean ``` **功能**: 检查渲染是否暂停 **返回值**: boolean - true 表示已暂停 ##### dispose() ```typescript public dispose(): void ``` **功能**: 销毁引擎,释放所有资源 - 停止渲染循环 - 清理所有模块 - 释放几何体、材质、纹理 - 移除 DOM 元素 - 清理事件监听器 **注意**: 调用此方法后引擎不可再使用 --- ## 2. 基础模块 ### 2.1 SceneModule - 场景模块 **文件路径**: `src/core/v2/modules/sceneModule.ts` #### 公共属性 ```typescript public scene: THREE.Scene | null // 三维场景对象 ``` **功能**: - 创建并管理 THREE.Scene - 初始化边线组(groupEdge)用于存储模型边线 --- ### 2.2 CameraModule - 相机模块 **文件路径**: `src/core/v2/modules/cameraModule.ts` #### 公共属性 ```typescript public perspectiveCamera: THREE.PerspectiveCamera // 透视相机 public orthographicCamera: THREE.OrthographicCamera // 正交相机 ``` #### 公共方法 ##### switchCurrentCamera() ```typescript public switchCurrentCamera(): void ``` **功能**: 切换当前相机类型(透视 ↔ 正交) ##### switchToPerspectiveCamera() ```typescript public switchToPerspectiveCamera(): void ``` **功能**: 切换到透视相机 - 保持当前位置和目标点 - 更新控制器 - 重新初始化合成器 ##### switchToOrthographicCamera() ```typescript public switchToOrthographicCamera(): void ``` **功能**: 切换到正交相机 - 保持当前位置和目标点 - 更新控制器 - 重新初始化合成器 ##### getCameraType() ```typescript public getCameraType(): CameraType ``` **功能**: 获取当前相机类型 **返回值**: - `CameraType.PERSPECTIVE` - 透视相机 - `CameraType.ORTHOGRAPHIC` - 正交相机 ##### getCameraPose() ```typescript public getCameraPose(): ICameraPose ``` **功能**: 获取当前相机姿态(位置、旋转、目标点、缩放等) **返回值**: ICameraPose 对象 ```typescript interface ICameraPose { type: CameraType; position: { x: number; y: number; z: number }; rotation: { x: number; y: number; z: number }; quaternion: { x: number; y: number; z: number; w: number }; target?: { x: number; y: number; z: number }; zoom?: number; } ``` ##### restoreCameraPose() ```typescript public restoreCameraPose(pose: ICameraPose): void ``` **功能**: 通过相机姿态还原相机位置 - 自动切换相机类型 - 恢复位置、旋转、目标点 - 恢复正交相机的缩放值 **参数**: - `pose`: ICameraPose - 相机姿态对象 --- ### 2.3 DeviceModule - 设备模块 **文件路径**: `src/core/v2/modules/deviceModule.ts` #### 公共属性 ```typescript public deviceType: string // 设备类型(默认 'PC') ``` #### 公共方法 ##### getDeviceType() ```typescript public getDeviceType(): string ``` **功能**: 获取设备类型 **返回值**: 'PC' 或其他设备标识 ##### getContainerSize() ```typescript public getContainerSize(): { width: number; height: number } ``` **功能**: 获取容器尺寸 **返回值**: 容器的宽度和高度 --- ### 2.4 RenderModule - 渲染模块 **文件路径**: `src/core/v2/modules/renderModule.ts` #### 公共属性 ```typescript public renderer: THREE.WebGLRenderer | null // WebGL 渲染器 ``` #### 公共方法 ##### createRenderer() ```typescript public createRenderer(): THREE.WebGLRenderer ``` **功能**: 创建并配置 WebGL 渲染器 - 启用抗锯齿 - 启用阴影映射(PCFSoftShadowMap) - 启用本地裁剪(用于剖切平面) - 配置色彩空间和色调映射 **返回值**: 配置好的渲染器实例 ##### disposeRenderer() ```typescript public disposeRenderer(): void ``` **功能**: 释放渲染器资源 --- ### 2.5 ControlModule - 控制模块 **文件路径**: `src/core/v2/modules/controlModule.ts` #### 公共属性 ```typescript public orbitControls: any // 轨道控制器 public firstPersonControls: any // 第一人称控制器 public isActive: boolean // 控制器是否激活 ``` #### 公共方法 ##### init() ```typescript public init(): void ``` **功能**: 初始化控制器 - 创建轨道控制器和第一人称控制器 - 创建旋转中心指示器 UI ##### active() ```typescript public active(): void ``` **功能**: 激活控制器 ##### disActive() ```typescript public disActive(): void ``` **功能**: 禁用控制器 ##### switchFirstPersonMode() ```typescript public switchFirstPersonMode(): void ``` **功能**: 切换到第一人称漫游模式 - 禁用轨道控制器 - 启用第一人称控制器 ##### switchDefaultMode() ```typescript public switchDefaultMode(): void ``` **功能**: 切换到默认模式(轨道控制) - 禁用第一人称控制器 - 启用轨道控制器 ##### update() ```typescript public update(): void ``` **功能**: 更新控制器状态 - 更新旋转中心指示器位置 - 在渲染循环中调用 --- ### 2.6 ComposerModule - 合成器模块 **文件路径**: `src/core/v2/modules/composerModule.ts` #### 公共属性 ```typescript public composer: any // 效果合成器 ``` #### 公共方法 ##### init() ```typescript public init(): void ``` **功能**: 初始化后处理管线 - RenderPass - 基础渲染 - GTAOPass - 环境光遮蔽(默认禁用) - UnrealBloomPass - 辉光效果(默认禁用) - SaturationPass - 饱和度和对比度调整 - OutputPass - 色调映射和颜色校正 - FXAAPass - 抗锯齿 ##### resize() ```typescript public resize(): void ``` **功能**: 调整合成器大小 - 更新所有 pass 的分辨率 - 更新 FXAA 的分辨率参数 --- ### 2.7 LoaderModule - 加载器模块 **文件路径**: `src/core/v2/modules/loaderModule.ts` #### 公共方法 ##### loadModels() ```typescript async loadModels(urls: string[], options?: LoadModelOptions): Promise ``` **功能**: 加载多个模型 - 支持轻量化模型格式 - 支持 GLTF/GLB 格式 - 异步加载 **参数**: - `urls`: string[] - 模型 URL 数组 - `options`: LoadModelOptions - 加载选项(可选) --- ### 2.8 EventModule - 事件模块 **文件路径**: `src/core/v2/modules/eventModule.ts` #### 公共方法 ##### on() ```typescript on(event: EventType, callback: (data: T) => void): void ``` **功能**: 注册事件监听器 **参数**: - `event`: EventType - 事件类型 - `callback`: 回调函数 ##### off() ```typescript off(event: EventType, callback: (data: T) => void): void ``` **功能**: 移除事件监听器 **参数**: - `event`: EventType - 事件类型 - `callback`: 要移除的回调函数 ##### trigger() ```typescript trigger(event: EventType, data?: any): void ``` **功能**: 触发事件 **参数**: - `event`: EventType - 事件类型 - `data`: 传递给监听器的数据 **常用事件类型**: - `EventType.Click` - 点击事件 - `EventType.ViewportResize` - 视口大小改变 - `EventType.EngineFree` - 引擎空闲 - `EventType.EngineBusy` - 引擎繁忙 --- ### 2.9 LightModule - 光照模块 **文件路径**: `src/core/v2/modules/lightModule.ts` #### 公共方法 ##### init() ```typescript public init(): void ``` **功能**: 初始化场景基本光照 - 添加定向光(DirectionalLight) - 强度: 2 - 位置: (10, 20, 10) - 阴影贴图: 4096x4096(高质量) - 添加环境光(AmbientLight) - 强度: 1 --- ### 2.10 InteractionModule - 交互模块 **文件路径**: `src/core/v2/modules/interactionModule.ts` #### 公共方法 ##### init() ```typescript public init(): void ``` **功能**: 初始化交互行为处理器 ##### active() ```typescript public active(): void ``` **功能**: 激活交互功能 ##### disActive() ```typescript public disActive(): void ``` **功能**: 禁用交互功能 ##### handleMouseClick() ```typescript public handleMouseClick(event: any): void ``` **功能**: 处理鼠标单击事件 - 射线检测点击的模型 - 高亮选中的模型 - 设置旋转中心 - 支持 Ctrl 多选 ##### handleMouseDoubleClick() ```typescript public handleMouseDoubleClick(event: any): void ``` **功能**: 处理鼠标双击事件 - 双击模型后缩放到该模型 - 计算模型包围盒并调整相机视角 ##### handleMouseClickInstance() ```typescript public handleMouseClickInstance(raycaster: any): any ``` **功能**: 判断点击实例化网格节点 **参数**: - `raycaster`: 射线投射器 **返回值**: 相交结果数组 --- ### 2.11 ModelToolModule - 模型工具模块 **文件路径**: `src/core/v2/modules/modelToolModule.ts` #### 公共方法 ##### highlightModel() ```typescript public highlightModel(models: any): void ``` **功能**: 设置模型高亮显示 **参数**: - `models`: 模型数组,格式: `[{url: string, ids: string[]}]` ##### unhighlightModel() ```typescript public unhighlightModel(models: any): void ``` **功能**: 取消模型高亮 **参数**: - `models`: 模型数组 ##### unhighlightAllModels() ```typescript public unhighlightAllModels(): void ``` **功能**: 取消所有模型高亮 ##### hideModel() ```typescript public hideModel(models: any): void ``` **功能**: 隐藏模型 **参数**: - `models`: 模型数组,格式: `[{url: string, ids: string[]}]` ##### showModel() ```typescript public showModel(models: any): void ``` **功能**: 显示模型 **参数**: - `models`: 模型数组 ##### isolateModel() ```typescript public isolateModel(models: any): void ``` **功能**: 隔离模型(只显示指定模型,隐藏其他) **参数**: - `models`: 要显示的模型数组 ##### showAllModels() ```typescript public showAllModels(): void ``` **功能**: 显示所有模型 ##### getModelsBox() ```typescript public getModelsBox(models: any): THREE.Box3 ``` **功能**: 获取模型的包围盒 **参数**: - `models`: 模型数组 **返回值**: THREE.Box3 包围盒对象 --- ## 3. 功能管理器 ### 3.1 ViewCube - 视图立方体 **文件路径**: `src/core/v2/managers/viewCube/index.ts` #### 公共属性 ```typescript public cubeTool: any // 视图立方体工具 ``` #### 公共方法 ##### init() ```typescript public init(): void ``` **功能**: 初始化视图立方体 - 创建 3D 小立方体辅助视图 - 支持六个面和边角视图切换 ##### CameraGoHome() ```typescript public CameraGoHome(): void ``` **功能**: 相机回归正位(默认视角) ##### zoomToModel() ```typescript public zoomToModel(box: THREE.Box3): void ``` **功能**: 缩放到指定模型包围盒 **参数**: - `box`: THREE.Box3 - 目标包围盒 --- ### 3.2 RangeScale - 范围缩放工具 **文件路径**: `src/core/v2/managers/rangeScale/index.ts` #### 公共方法 ##### init() ```typescript public init(): void ``` **功能**: 初始化范围缩放工具 - 创建绘制框 UI 元素 - 初始化坐标转换工具 ##### active() ```typescript public active(): void ``` **功能**: 激活范围缩放工具 - 禁用控制器 - 启用框选功能 - 鼠标变为十字光标 **使用方式**: 1. 激活工具 2. 鼠标拖拽绘制矩形区域 3. 松开鼠标自动缩放到该区域 4. 按 ESC 键退出 ##### disActive() ```typescript public disActive(): void ``` **功能**: 停用范围缩放工具 - 恢复控制器 - 移除事件监听 --- ### 3.3 Setting - 设置管理器 **文件路径**: `src/core/v2/managers/setting/index.ts` #### 公共方法 ##### setStatsVisible() ```typescript public setStatsVisible(visible: boolean): void ``` **功能**: 显示/隐藏性能监视器 **参数**: - `visible`: true 显示,false 隐藏 ##### setAmbientLightIntensity() ```typescript public setAmbientLightIntensity(intensity: number): void ``` **功能**: 设置环境光照强度 **参数**: - `intensity`: 光照强度,范围 0-5 ##### setAmbientLightColor() ```typescript public setAmbientLightColor(color: number | string): void ``` **功能**: 设置环境光照颜色 **参数**: - `color`: 颜色(0xffffff 或 '#ffffff') ##### setDirectionalLightIntensity() ```typescript public setDirectionalLightIntensity(intensity: number): void ``` **功能**: 设置定向光源强度 **参数**: - `intensity`: 光照强度,范围 0-5 ##### setDirectionalLightColor() ```typescript public setDirectionalLightColor(color: number | string): void ``` **功能**: 设置定向光源颜色 **参数**: - `color`: 颜色 ##### setShadowQuality() ```typescript public setShadowQuality(quality: 'low' | 'medium' | 'high' | 'ultra'): void ``` **功能**: 设置阴影精细度 **参数**: - `quality`: 质量等级 - 'low': 1024 - 'medium': 2048 - 'high': 4096 - 'ultra': 8192 ##### setDirectionalLightShadow() ```typescript public setDirectionalLightShadow(enabled: boolean): void ``` **功能**: 开启/关闭定向光阴影 **参数**: - `enabled`: true 开启,false 关闭 ##### setGTAOEnabled() ```typescript public setGTAOEnabled(enabled: boolean): void ``` **功能**: 开启/关闭 GTAO 环境光遮蔽 **参数**: - `enabled`: true 开启,false 关闭 ##### setSceneSaturation() ```typescript public setSceneSaturation(saturation: number): void ``` **功能**: 设置场景饱和度 **参数**: - `saturation`: 饱和度值,1.0 为正常,推荐范围 0.5-2.0 ##### setSceneContrast() ```typescript public setSceneContrast(contrast: number): void ``` **功能**: 设置场景对比度 **参数**: - `contrast`: 对比度值,1.0 为正常,推荐范围 0.5-2.0 ##### setGroundEnabled() ```typescript public setGroundEnabled(enabled: boolean, options?: { size?: number; color?: number | string; opacity?: number; }): void ``` **功能**: 开启/关闭地面 **参数**: - `enabled`: true 开启,false 关闭 - `options`: 地面配置选项 - `size`: 地面大小(默认 100) - `color`: 地面颜色(默认 0x808080) - `opacity`: 透明度(默认 0.3) ##### setHDRBackground() ```typescript public setHDRBackground(hdrTexture: THREE.Texture | null): void ``` **功能**: 设置 HDR 背景 **参数**: - `hdrTexture`: HDR 环境贴图,null 则移除 --- ### 3.4 Measure - 测量工具 **文件路径**: `src/core/v2/managers/measure/index.ts` #### 公共方法 ##### active() ```typescript public active(): void ``` **功能**: 激活测量工具 ##### disActive() ```typescript public disActive(): void ``` **功能**: 停用测量工具 - 清除所有测量 - 恢复点选功能 ##### clearAllPoints() ```typescript public clearAllPoints(): void ``` **功能**: 清空所有测量点 ##### clearAll() ```typescript public clearAll(): void ``` **功能**: 清除所有测量标注 ##### update() ```typescript update(): void ``` **功能**: 更新测量标注 - 在渲染循环中调用 - 更新屏幕坐标 **测量类型**: - 距离测量(DistanceMeasure) - 净高测量(ClearHeightMeasure) - 净距测量(ClearDistanceMeasure) - 标高测量(ElevationMeasure) - 点测量(PointMeasure) - 角度测量(AngleMeasure) - 面积测量(AreaMeasure) - 坡度测量(SlopeMeasure) --- ### 3.5 Clipping - 剖切管理器 **文件路径**: `src/core/v2/managers/clipping/index.ts` #### 公共属性 ```typescript public sectionPlaneX: any // X 轴剖切平面 public sectionPlaneY: any // Y 轴剖切平面 public sectionPlaneZ: any // Z 轴剖切平面 public sectionBox: any // 剖切盒 ``` #### 公共方法 ##### init() ```typescript public init(): void ``` **功能**: 初始化剖切管理器 - 创建 6 个剖切平面(前、后、左、右、顶、底) - 初始化 X/Y/Z 轴剖切工具 - 初始化剖切盒工具 ##### disActive() ```typescript public disActive(): void ``` **功能**: 停用所有剖切工具 --- ### 3.6 ModelTree - 模型树 **文件路径**: `src/core/v2/managers/modelTree/index.ts` #### 公共方法 ##### getTreeData() ```typescript public getTreeData(): any[] ``` **功能**: 获取模型树数据 **返回值**: 模型树数组 ```typescript [{ name: string, // 模型名称 children: any[] // 模型层级树 }] ``` --- ### 3.7 EngineInfo - 引擎信息统计 **文件路径**: `src/core/v2/managers/engineInfo/index.ts` #### 公共方法 ##### getEngineInfo() ```typescript public getEngineInfo(): { totalVertices: number; totalTriangles: number; meshCount: number; } ``` **功能**: 获取引擎统计信息 - 统计所有网格的顶点数 - 统计所有网格的三角面数 - 统计网格数量 **返回值**: - `totalVertices`: 总顶点数 - `totalTriangles`: 总三角面数 - `meshCount`: 网格数量 --- ### 3.8 ModelProperties - 模型属性 **文件路径**: `src/core/v2/managers/modelProperties/index.ts` #### 公共方法 ##### getModelProperties() ```typescript public getModelProperties(url: string, id: string, callback: (properties: any) => void): void ``` **功能**: 查询构件属性 - 异步加载属性数据(如果未加载) - 从压缩的 JSON 中解析属性 **参数**: - `url`: 模型 URL - `id`: 构件 ID - `callback`: 回调函数,接收属性对象 **返回值格式**: ```typescript { properties: [{ name: string, // 分类名称 children: [{ name: string, // 属性名 value: any // 属性值 }] }], materials: [] } ``` --- ### 3.9 ModelMapperBatch - 模型批量映射 **文件路径**: `src/core/v2/managers/modelMapperBatch/index.ts` #### 公共方法 ##### getModelTypes() ```typescript public getModelTypes(): any[] ``` **功能**: 获取模型中所有的构件类型 ##### getModelMajors() ```typescript public getModelMajors(): any[] ``` **功能**: 获取模型中所有的专业 ##### getModelLevels() ```typescript public getModelLevels(): any[] ``` **功能**: 获取模型中所有的楼层 ##### getModelMapper() ```typescript public getModelMapper(url: string, id: number): any ``` **功能**: 获取指定构件的映射信息 **参数**: - `url`: 模型 URL - `id`: 构件 ID **返回值**: Mapper 对象(包含类型、专业、楼层等信息) ##### getModelSWithType() ```typescript public getModelSWithType(type: string, callback: any): any[] ``` **功能**: 获取同类型的所有构件 **参数**: - `type`: 构件类型名称 - `callback`: 回调函数 **返回值**: `[{url: string, ids: number[]}]` ##### getModelSWithLevel() ```typescript public getModelSWithLevel(level: string, callback: any): any[] ``` **功能**: 获取同楼层的所有构件 **参数**: - `level`: 楼层名称 - `callback`: 回调函数 **返回值**: `[{url: string, ids: number[]}]` ##### getModelsWithMajor() ```typescript public getModelsWithMajor(major: string, callback: any): any[] ``` **功能**: 获取同专业的所有构件 **参数**: - `major`: 专业名称 - `callback`: 回调函数 **返回值**: `[{url: string, ids: number[]}]` --- ### 3.10 ModelEdge - 模型边线管理器 **文件路径**: `src/core/v2/managers/modelEdge/index.ts` #### 公共方法 ##### active() ```typescript public active(): void ``` **功能**: 启动边线显示 - 显示所有模型的边线 - 用于技术制图风格渲染 ##### disActive() ```typescript public disActive(): void ``` **功能**: 关闭边线显示 ##### getModelEdge() ```typescript public getModelEdge(url: string, id: Number): any ``` **功能**: 获取指定模型的边线数据 **参数**: - `url`: 模型 URL - `id`: 构件 ID **返回值**: 边线数据 `[startIndex, endIndex, points]` ##### hideModelEdge() ```typescript public hideModelEdge(url: string, id: Number): void ``` **功能**: 隐藏指定构件的边线 **参数**: - `url`: 模型 URL - `id`: 构件 ID ##### showModelEdge() ```typescript public showModelEdge(url: string, id: Number): void ``` **功能**: 显示指定构件的边线 **参数**: - `url`: 模型 URL - `id`: 构件 ID --- ## 4. 状态管理 ### 4.1 EngineStatus - 引擎状态 **文件路径**: `src/core/v2/status/engineStatus.ts` #### 公共属性 ```typescript public isFree: boolean // 引擎是否空闲 public highlightModels: any[] // 高亮的模型数组 public hideModels: any[] // 隐藏的模型数组 public models: any[] // 已加载的模型数组 ``` #### 公共方法 ##### init() ```typescript public init(): void ``` **功能**: 初始化引擎状态监听 - 监听 `EventType.EngineFree` 事件 - 监听 `EventType.EngineBusy` 事件 ##### updateFree() ```typescript public updateFree(status: boolean): void ``` **功能**: 更新引擎空闲状态 **参数**: - `status`: true 表示空闲,false 表示繁忙 ##### closeAllFunction() ```typescript public closeAllFunction(): void ``` **功能**: 关闭所有功能 --- ### 4.2 HandelBehaved - 行为处理器 **文件路径**: `src/core/v2/status/handelBehaved.ts` 这是一个工厂函数,返回行为处理器对象。 #### 公共方法 ##### init() ```typescript init(self: any, options: any): void ``` **功能**: 初始化行为处理器 **参数**: - `self`: 当前激活的行为对象 - `options`: 行为配置选项 - `showCatch`: boolean - 是否显示捕捉点 ##### active() ```typescript active(): void ``` **功能**: 开启事务(激活事件监听) - 监听鼠标事件(mousedown, mouseup, mousemove) - 监听键盘事件(keydown, keyup) ##### disActive() ```typescript disActive(): void ``` **功能**: 关闭事务(禁用事件监听) **支持的键盘事件**: - Delete / Backspace - 删除 - Escape - 取消 - Enter - 确认 - Space - 空格 - Ctrl / Control - 控制键 - Shift - 切换键 - Alt - 辅助键 - Meta / Command - 命令键 **支持的鼠标事件**: - handleMouseDown - 鼠标按下 - handleMouseMove - 鼠标移动 - handleMouseUp - 鼠标弹起 - handleMouseClick - 鼠标单击 - handleMouseDoubleClick - 鼠标双击 **捕捉功能**: - 点捕捉(距离 < 5 像素) - 线捕捉(距离 < 5 像素) - 面捕捉(默认) --- ## 使用示例 ### 初始化引擎 ```typescript import { EngineKernelV2 } from './src/core/v2/EngineKernel'; const engine = new EngineKernelV2({ containerId: 'canvas-container', antialias: true }); ``` ### 加载模型 ```typescript await engine.loaderModule.loadModels([ 'https://example.com/model1.light', 'https://example.com/model2.light' ]); ``` ### 高亮模型 ```typescript engine.modelToolModule.highlightModel([ { url: 'model1.light', ids: ['wall-001', 'wall-002'] } ]); ``` ### 切换相机 ```typescript // 切换到正交相机 engine.cameraModule.switchToOrthographicCamera(); // 或切换当前相机类型 engine.cameraModule.switchCurrentCamera(); ``` ### 保存和恢复相机姿态 ```typescript // 保存当前相机姿态 const pose = engine.cameraModule.getCameraPose(); // 恢复相机姿态 engine.cameraModule.restoreCameraPose(pose); ``` ### 设置光照和渲染质量 ```typescript // 设置环境光强度 engine.setting.setAmbientLightIntensity(1.5); // 设置阴影质量 engine.setting.setShadowQuality('ultra'); // 开启 GTAO engine.setting.setGTAOEnabled(true); // 调整饱和度和对比度 engine.setting.setSceneSaturation(1.3); engine.setting.setSceneContrast(1.1); ``` ### 获取模型属性 ```typescript engine.modelProperties.getModelProperties('model.light', 'wall-001', (data) => { console.log('属性:', data.properties); }); ``` ### 按类型筛选构件 ```typescript engine.modelMapperBatch.getModelSWithType('墙', (models) => { // 高亮所有墙体 engine.modelToolModule.highlightModel(models); }); ``` ### 监听事件 ```typescript // 监听点击事件 engine.events.on(EventType.Click, (hit) => { console.log('点击了:', hit.object.name); }); // 监听视口大小改变 engine.events.on(EventType.ViewportResize, ({ width, height }) => { console.log('视口大小:', width, height); }); ``` ### 暂停和恢复渲染 ```typescript // 暂停渲染(节省性能) engine.pauseRendering(); // 恢复渲染 engine.resumeRendering(); // 检查渲染状态 if (engine.isRenderingPausedState()) { console.log('渲染已暂停'); } ``` ### 销毁引擎 ```typescript // 释放所有资源 engine.dispose(); ``` --- ## 总结 BIM Engine SDK 提供了完整的 3D BIM 模型渲染和交互能力,主要特性包括: - **完整的相机系统**: 支持透视和正交相机,可保存和恢复相机姿态 - **强大的模型操作**: 高亮、隐藏、隔离、批量筛选 - **丰富的测量工具**: 距离、净高、净距、标高、角度、面积、坡度 - **灵活的剖切功能**: 支持 X/Y/Z 轴剖切和剖切盒 - **可配置的渲染质量**: 阴影、环境光遮蔽、饱和度、对比度 - **事件驱动架构**: 支持自定义事件监听和触发 - **性能优化**: 支持暂停/恢复渲染,八叉树加速 - **完善的资源管理**: 自动释放几何体、材质、纹理等资源 适用场景: - BIM 模型在线浏览 - 建筑设计审查 - 施工模拟 - 运维管理 - AI 辅助设计