用途:在 Web 应用中嵌入 Speckle 查看器、加载 3D 模型并实现查看器交互。安装:npm install --save @speckle/viewer,包用 TypeScript 编写并提供完整类型定义。
主要能力:Viewer 核心类管理 WebGL 上下文、场景图、扩展与渲染循环;SpeckleLoader 拉取并反序列化 Speckle 对象;UrlHelper 将项目/模型 URL 解析为加载器可用资源 URL;Extension 为插件基类;WorldTree 为场景图层级;SpeckleRenderer 为基于 Three.js 的底层渲染引擎。内置扩展包括 CameraController(轨道、平移、缩放、飞行)、SelectionExtension(拾取与高亮)、FilteringExtension(隐藏、隔离、颜色过滤)、DiffExtension(版本对比)、MeasurementsTool(距离与面积测量)、SectionTool(剖切平面/盒)。
使用方式:先创建有明确宽高的容器元素,再 new Viewer(container, params),await viewer.init() 完成后才能 createExtension 与 loadObject;用 UrlHelper.getResourceUrls 解析 URL,再逐个用 SpeckleLoader 加载;通过 viewer.on 订阅事件,清理时调用 viewer.dispose()。容器尺寸变化需手动调用 viewer.resize()。自定义扩展通过 inject 声明依赖,由查看器自动注入。
限制与注意:init 完成前调用任何方法会静默失败或报错;移除查看器时必须 dispose,否则 SPA 中会累积 GPU 内存泄漏;私有模型必须提供有效个人访问令牌,空字符串会静默加载零对象;容器零尺寸会导致 WebGL 上下文静默失败;SpeckleRenderer 属高级 API,标准交互应优先使用扩展。更多 API 签名与示例见资料所列 references 与官方文档链接。