用途:在 ThatOpen BIM 查看器中实现元素选择、悬停反馈、轮廓可视化,以及将片段选择转换为 THREE.Mesh。依赖 @thatopen/components-front 3.3.x,前置技能为 thatopen-impl-viewer(世界与 PostproductionRenderer 搭建)。
主要能力:Highlighter 支持点击选择、按 ID 程序化选择、多选(shiftKey/ctrlKey)、缩放至选择、autoToggle 切换、selectable 按样式过滤、自定义样式(MaterialDefinition 含 color 与 opacity,可为 null)及 updateColors 更新颜色。Hoverer 提供悬停淡入淡出动画与 onHoverStarted/onHoverEnded 事件。Outliner 基于后处理渲染轮廓,可设 color、thickness、fillColor、fillOpacity,并支持 addItems/removeItems/clean。Mesher 的 get(modelIdMap, config?) 返回标准 THREE.Mesh 数组。FastModelPicker 位于 @thatopen/components,提供基于 GPU 的拾取,适用于超大模型。
使用方式:先创建 world 并启用 world.renderer.postproduction.enabled = true;再 components.get(OBCF.Highlighter) 并调用 highlighter.setup({ world }),之后才能设置 multiple、autoToggle、selectable 与样式。选择可调用 await highlighter.highlight("select") 或 highlightByID("select", items),读取 highlighter.selection["select"],清除用 await highlighter.clear("select")。Outliner 需使用 PostproductionRenderer,并将样式名加入 outliner.styles。
适用场景:BIM 查看器中的点击选择、悬停高亮、轮廓强调、多选、程序化选中与导出/自定义渲染前的网格转换。
限制:Highlighter 未调用 setup() 前操作会失败;Outliner 在 SimpleRenderer 下无效;Mesher 返回的网格不受片段系统管理,需手动加入场景并释放;Hoverer 与 Highlighter 状态独立,不可用 Hoverer 判断选择;FastModelPicker 仅在射线拾取成为瓶颈时使用。具体收费、价格与平台信息暂未提供。