Appearance
显示控制
显示控制分布在三个 manager 上:viewer.model 管节点可见性,viewer.edges 管全局边线,viewer.renderMode 管渲染模式(全局与按节点)。三者正交组合,覆盖「隐藏零件」「关边线」「切线框」等常见需求。
下面的 demo 演示渲染模式:点击零件后用底部面板给它单独设置模式,按 M 键循环全局模式:
核心 API
ts
import { RenderMode } from "@modelcubes/viewer-core";
// 节点可见性:隐藏一组节点 / 隔离显示一组节点 / 全部恢复显示
viewer.model.setNodesVisibility(hiddenIds, false);
viewer.model.isolateNodes(keepIds);
viewer.model.resetNodesVisibility();
// 边线:全局开关 / 颜色 / 不透明度
viewer.edges.setVisible(false);
viewer.edges.setColor({ r: 0.1, g: 0.1, b: 0.1 });
// 渲染模式:全局切线框,再给个别节点设回实色
viewer.renderMode.set(RenderMode.Wireframe);
viewer.renderMode.setNodes(focusIds, RenderMode.Shaded);
viewer.renderMode.resetNodes(); // 清除全部按节点覆盖行为要点
- 节点可见性走
ModelManager:setNodesVisibility(ids, visible)批量显隐,resetNodesVisibility()全部恢复,getNodeVisibility(id)查询。可见性实际发生变化时(hide / show / isolate / reset)触发visibility-changed事件(payload 带当前隐藏叶子总数hiddenCount)。 - 隔离显示用
isolateNodes(ids):恰好显示ids——装配节点自动展开为整个子树,其余叶子隐藏;保留集内先前隐藏的叶子复显;空数组静默 no-op。引擎只管可见性,相机编排(isolate 时保存位姿并 fit 到保留集、Show all 时复显并还原)由 viewer-ui 的isolateZoomhelper 负责。 - 边线开关在
viewer.edges:setVisible全局开关,setColor/setOpacity调样式。未显式设置时引擎按视觉默认渲染:深灰0x3a3a3a、不透明度 0.85。注意getColor()/getOpacity()在首次 set 之前返回的是占位初值(黑色 / 1),不代表上述视觉默认。 RenderMode四模式:ShadedWithEdges实色线框(默认)、Wireframe线框(仅 BREP 边线)、Shaded实色(仅面)、HiddenLine消隐(面作深度遮挡体 + 可见边)。模式语义是「面可见性 × 边可见性」的具名组合,因此renderMode.set与edges.setVisible作用于同一份状态。- 按节点覆盖:
setNodes(ids, mode)给指定节点(非叶节点递归到叶子)设置覆盖模式,clearNodes回落全局,getNodeMode(id)取生效模式;HiddenLine在 v1 仅支持全局,按节点设置会抛ViewerError。 - 背景:画布背景(纯色 / 渐变 / 图片 / 透明)由
BackgroundManager(viewer.background)管理。
下面的 demo 按 E 键切换全局边线显示:
相关 API
- 概览:viewer.model / viewer.edges / viewer.renderMode — 三个域各自的设计意图与边界。
ModelManager— 节点可见性与结构树查询。EdgesManager— 边线开关 / 颜色 / 不透明度。RenderModeManager— 全局与按节点渲染模式、HiddenLine 设置。RenderMode— 四模式枚举。