CAD 生成一步错步步错:把建模操作当动作,用点云预测下一状态
从文字生成可编辑的 CAD 模型,难的不是第一步,是第 8 步——前 7 步的误差已经叠在一起,而一个错误的操作会毁掉后面所有步骤。
CAD-WAM(arXiv 2610.39306,2026-10-29)的思路很干脆:既然问题出在"模型只学会预测命令、没学会预测命令会把几何变成什么样",那就显式监督几何状态。
一、方法:动作 + 下一状态
| 部件 | 做什么 |
|---|---|
| 动作空间 | 把完整的建模操作定义为 CAD 领域特定语言(DSL)里的 action |
| 几何状态编码 | 把中间实体的表面点云用一个预训练 VAE 编成紧凑 latent 状态 |
| 生成 | LLM 主干根据"目标描述 + 当前几何状态"生成下一个动作 |
| 监督 | 同一主干的辅助头预测下一状态,训练时提供几何监督 |
这套结构借的是 world-action model 的思路:动作与状态成对学,而不是只学动作。
推理时形成一个闭环:每生成一个动作,就交给 CAD kernel 执行,把得到的实体重新编码成状态,再决定下一步。
二、结果:步数越多,优势越大
- 在 DeepCAD 测试集上,相对任务专用基线,几何精度与输出有效性都更好;
- 需要更多操作步的模型上,提升更大(这正是误差累积最严重的地方);
- 比"用同一个 DSL、只靠提示词的通用 LLM"生成得更准。
最关键的消融实验:只加"下一状态"监督、其余完全相同的模型,平均 Chamfer 距离下降 13.2%。
也就是说,"让模型学会预判几何"这件事本身,价值是可以用数字衡量的。
三、为什么这条思路对程序化 3D 通用
程序化建模的本质是一串有前置条件的操作。三件事决定了系统能不能做长:
- 前置条件可见:模型要知道"现在实体长什么样",而不是靠自己记;
- 操作可执行:每一步都交给真 kernel 跑,而不是只在文本层面推演;
- 误差可度量:每一步都能算出与目标几何的距离,才能知道"现在偏了多少"。
CAD-WAM 的贡献是把这三点接成训练信号——不是让模型背更多命令,而是让它对"我这一步会把形状改成什么"有预判。
四、我们的整理
4.1 一个可迁移的检查清单(给做 agent 的人)
| 检查项 | 判据 |
|---|---|
| 状态可读 | agent 能否查询当前实体的点云/包围盒/特征数 |
| 每步可执行 | 每个操作是否都过真 kernel(而不是"估计能行") |
| 误差可测 | 能否算当前状态到目标的距离 |
| 回滚可行 | 一步错了能不能退回上一个状态重试 |
缺第 1 项,模型就在盲写;缺第 3 项,训练信号是噪声;缺第 4 项,一次错操作就得整局重来。
4.2 对我们工具链的含义
- CAD 查看器要"能查询":包围盒、体积、特征数、点云采样——这些是 agent 的眼睛;
- 生成过程要留步:每一步的 DSL 与状态存下来,才能 review 与回滚(跟我们处理代码 diff 的方式一样);
- 优选用例做对照:先挑"3–5 步能完成"的零件,成功率会好看,也更容易定位问题。
4.3 “下一状态监督”为什么值 13.2%
这个数字值得多说一句:它是在模型、数据、动作空间全部相同的对照下,仅仅多了“预测下一步几何”这个辅助目标。 这意味着两件事:
- 几何监督比更多标注便宜:它只需要 CAD kernel 能算出中间实体,不需要人再写注释;
- 对长序列的收益是复利的:每步的误差小一点,后面所有步的起点都更准,所以“步数越多,提升越大”完全合理。
4.4 失败模式与应对
| 现象 | 原因 | 应对 |
|---|---|---|
| 前几步对、后面突然崩 | 早期误差累积到无法回退 | 加中间状态校验,不行就回滚重试 |
| 指令合法但实体无变 | 操作落在空集上(选错了面/体) | 每步先查询可选集,再生成动作 |
| 同一步反复重试 | 模型对几何结果没预期 | 上“下一状态”类监督,或加重试上限 |
4.5 边界
- 训练数据来自 DeepCAD 的参数化 CAD 模型(特定分布),跨到别的 CAD 体系要重新造数据;
- 论文主要看几何精度与有效性,工艺、公差、装配约束不在范围内;
- 长序列仍然难:步数越多,前沿条件越复杂,这也是论文自己指出的方向。
五、拿到模型先检查
生成的 STEP / IGES 用 CAD Viewer 打开,量包围盒、数特征;要对照渲染结果就丢进 3D Viewer。想先感受"文字直接出实体"的链路,Text2STL 最快。
同主题阅读
- text-to-CAD 只有一条路真能出图:让模型写脚本,别让它想象形状
- text-to-CAD 加一道有限元:几何对了,物理未必站得住
- 3D 生成 LoRA 微调:9.3M 参数,鞋底 F-score 从 0.276 到 0.803
Sources
- Zhengyang Li 等《CAD-WAM: Anticipating Geometry for Text-to-CAD Generation》,arXiv 2610.39306,2026-10-29 https://arxiv.org/abs/2610.39306(代码已放出,见论文页)