Composer无法自动显示零件重量,因其仅导入不含物理属性的几何体,缺乏数据绑定、变量插值和动态文本功能,所有重量标注均为手动关键帧控制的静态图像模拟。

Composer本身不支持在动画中动态展示零件重量信息——它没有数据绑定机制,不能读取或解析模型元数据(如质量属性)、BOM 表格字段,也不提供变量插值、文本标签绑定或实时数值驱动的 UI 元素。 你看到的“带重量标注的动画”,全是手动制作的视觉模拟,不是数据联动。
为什么 Composer 无法自动显示重量
– Composer 导入的是几何体(STEP、IGES、SLDPRT 等),这些格式通常不含物理属性;即使原始 CAD 中设置了质量,导出时绝大多数不会保留到 Composer 可读字段里
– 没有类似 Text Field 或 Data Binding 的功能,所有文字必须是静态图层或 SVG 贴图
– 时间轴上不能绑定变量,也无法用表达式(如 Weight + " kg")生成动态文本
手动模拟重量标注的实操方式
常见做法是把重量当作“说明性图文”处理,靠关键帧控制显隐与位置:
- 在 Photoshop 或 Illustrator 中制图:为每个零件单独做带重量值的标签(如“齿轮 A:1.24 kg”),导出为 PNG(透明背景)
- 在 Composer 中,将该 PNG 作为“图像”插入 → 放置在对应零件附近 → 在时间轴 0s 处添加关键帧,设
Opacity= 0、Position偏离视图外 - 拖到 1.5s,选中该图像 → 设
Opacity= 1,并微调Position对齐零件中心;再加一个缩放关键帧(Scale从 0.8 → 1.0),模拟弹出效果 - 若需多零件轮播标注,不要复制多个图像对象,而是复用同一图像 → 在不同时间点分别打关键帧,并修改其
Position和关联的Visibility(通过Opacity控制)
容易踩的坑:你以为在“联动”,其实只是错觉
– 误以为“在属性面板里改了零件的 Name 字段就能同步到动画文字”:不行。Name 是内部标识,不参与渲染
– 试图用剖面或高亮色块“代表重量大小”(比如越重颜色越深):这需要你手动为每个零件预设颜色+透明度关键帧,且无法随真实数值变化而响应
– 把 Excel 里的重量表复制进 Composer:粘贴后是纯文本快照,改 Excel 不会更新动画里的数字
– 导出为 .smg 后想让观众自己输入重量并刷新显示:Composer Player 不支持运行时脚本或表单交互
如果真要实现数据驱动的重量展示,得绕开 Composer
这条路不在 Composer 内部完成:
- 用 SolidWorks 或 NX 导出含质量属性的 XML/JSON(例如通过 API 读取
MassProperty.Mass) - 前端用 Three.js 加载 glTF 模型,再用 JSON 数据动态生成 HTML 标签或 Canvas 文字,并绑定点击事件
- 把 Composer 动画降级为“背景视频”,在其上叠加 Web 页面层(iframe 或 div),由 JS 控制文字浮层的位置与内容
真正难的不是显示数字,而是保持“零件 ID ↔ 重量值 ↔ 动画帧 ↔ 视觉定位”的四点对齐——一旦模型更新、零件重命名或顺序调整,所有手动打的关键帧和图片位置都得重来。











