Appearance
爆炸视图
viewer.explode 提供零件爆炸:按结构树把零件沿「自身中心 − 模型中心」方向散开,便于观察装配内部。爆炸程度是 0–1 的连续量(set(scale)),可调散开倍率与深度衰减,默认带平滑动画;个别零件可锁定在原位,reset() 一步复原。
下面的 demo 用滑块连续驱动爆炸程度,也可用键盘快捷键:
核心 API
ts
// 爆炸到完全散开(0 = 复原,1 = 完全散开;默认带约 400ms 缓动动画)
viewer.explode.set(1);
// 调散开倍率与深度衰减,不要动画
viewer.explode.set(0.6, { magnitude: 6, depthDampening: 1, animate: false });
// 锁定个别零件留在原位(已爆炸时立即生效)
viewer.explode.lockNodes(baseNodeId);
viewer.explode.clearLocks();
// 查询与复原
viewer.explode.getScale(); // 当前爆炸程度
viewer.explode.reset(); // 等价于 set(0, { animate: false })行为要点
set(scale, options?):scale 取 0–1(超界自动钳制),0 为复原。散开方向是每个零件「自身包围盒中心 − 模型包围盒中心」,沿该方向按 scale 平移。未加载模型时静默返回。ExplodeOptions:magnitude散开倍率(默认 4);depthDampening深度衰减指数 ≥0(默认 0,越大装配树深层零件位移越小,适合多层装配避免内层飞太远);animate是否平滑过渡(默认 true,约 400ms 缓动)。magnitude/depthDampening一经设置即保留,后续set不传也沿用。getScale()/getOptions():getScale()在动画进行中返回逐帧推进的即时值;getOptions()返回当前生效的magnitude/depthDampening。- 锁定:
lockNodes(ids)/unlockNodes(ids)接受单个或数组,非叶节点自动展开到其叶子;已处于爆炸状态时立即重算偏移。isLocked(id)查询(按叶子),clearLocks()全部解除。 - 偏移查询:
getNodeOffset(id)返回某节点当前的爆炸累加偏移(世界单位Vec3),无偏移返回零向量——适合驱动自定义标注或动画。 - 相机不裁剪:爆炸把零件推出原始包围盒时,引擎同步外扩场景包围球(触发
model-bounds-changed事件),相机 near / far 自动适配,散开的零件不会被裁掉。 - 爆炸是纯视图态:不修改模型数据;切换模型后爆炸状态自动复位。
相关 API
- 概览:viewer.explode — 爆炸域的设计意图与典型用法。
ExplodeManager—set/reset/ lock 系列完整签名。ExplodeOptions— 散开倍率 / 深度衰减 / 动画选项。- 事件系统 —
model-bounds-changed等事件参考。 ModelManager— 结构树遍历(配合选择要锁定的节点)。