SuperAPI AI 工具集

thatopen-core-fragments

数据与分析

查看项目

更新于 10-16 06:18

技能介绍

用途:ThatOpen Fragment 系统是面向 BIM 模型的优化几何管线,把 IFC 文件转换为基于 FlatBuffers 和 THREE.InstancedMesh 的 GPU 友好二进制格式,实现百万级构件大模型的快速渲染。@thatopen/fragments 提供二进制格式、worker 架构与核心操作,@thatopen/components 中的 FragmentsManager 负责模型生命周期、射线检测、数据查询与坐标对齐。

主要能力:Fragment 二进制格式使用 FlatBuffers 零拷贝序列化,几何数组可直接映射为 GPU 缓冲区;每个 Fragment 封装一个 THREE.InstancedMesh,相同几何共享缓冲区,将绘制调用从数千降至数十。FragmentsManager 提供 init、raycast、highlight/resetHighlight、getData、getPositions、getBBoxes、guidsToModelIdMap、modelIdMapToGuids、applyBaseCoordinateSystem、disposeModel 等方法,以及 onFragmentsLoaded、onBeforeDispose、onDisposed 事件。ModelIdMap 为跨模型定位元素的通用结构。

使用方式:先调用 FragmentsManager.init(workerURL) 初始化 worker,且 worker.mjs 的 URL 必须与已安装的 @thatopen/fragments 版本匹配。推荐流程是首次用 IfcLoader 将 IFC 转为 .frag 二进制并存储,后续直接加载二进制,跳过 WASM 解析。多模型场景需设置 baseCoordinationModel 与 baseCoordinationMatrix,并用 applyBaseCoordinateSystem() 对齐坐标。完成后用 disposeModel(modelId) 或 components.dispose() 释放。

适用场景:BIM 模型存储与加载、构件属性查询、射线拾取、高亮、GUID 映射、多模型联邦与坐标对齐。

限制:必须初始化 worker,否则静默失败或崩溃;必须释放模型,否则 GPU 缓冲与 worker 状态泄漏导致标签页崩溃;多模型不可跳过坐标对齐;主线程库与 worker 脚本版本不匹配会导致反序列化失败。依赖 flatbuffers、pako、earcut、three(>=0.175)与 web-ifc(>=0.0.74)。