跳转至

Pointer-CAD: Unifying B-Rep and Command Sequences via Pointer-based Edges & Faces Selection

会议: CVPR2026 arXiv: 2603.04337 代码: Snitro/Pointer-CAD 领域: 3D CAD 生成 关键词: CAD 生成, B-Rep, Pointer Network, 命令序列, LLM, 图神经网络, Chamfer/Fillet

一句话总结

提出基于指针 (Pointer) 机制的命令序列表示,将 B-Rep 几何实体(边/面)显式引入自回归 CAD 生成,首次在命令序列方法中支持 chamfer/fillet 操作,同时大幅降低量化误差导致的拓扑错误。

研究背景与动机

  1. CAD 建模耗时:传统 CAD 设计流程(2D 草图 → 3D 建模 → B-Rep 存储)高度依赖人工操作,尤其是复杂设计极为耗时。
  2. 命令序列方法的局限:现有命令序列方法(DeepCAD、Text2CAD 等)将 CAD 操作编码为 token 序列,生成速度快但不支持需要实体选择的操作(如 chamfer、fillet),因为这些操作需要明确引用已有几何实体(边或面)。
  3. 量化误差问题:LLM 基于的序列生成中,连续参数的离散化会引入量化误差,导致新绘制的曲线无法与已有边对齐、草图平面与目标面不匹配,破坏拓扑连通性。
  4. 代码表示的效率瓶颈:代码生成方法(CadQuery/FreeCAD)虽灵活,但 token 序列长度约为命令序列的 4 倍(424 vs 110 tokens),推理时间显著更长。
  5. 通用 LLM 不足:Claude Opus 4、Gemini 2.5 Pro、GPT-5.2 等通用 LLM 直接生成 CadQuery 代码的成功率低,几何一致性差(IR 高达 24-50%)。
  6. 实体选择的歧义:已有尝试通过面标签和面交线来实现实体选择,但由面交线推导的边可能不唯一,存在选择歧义。

方法详解

整体框架

Pointer-CAD 采用多步生成策略,将 CAD 模型构建分解为多个步骤,每步依赖文本描述和前序步骤生成的 B-Rep 进行条件生成:

  • 多模态融合模块:将 tokenized 文本与 B-Rep 几何信息融合;文本仅 tokenize 一次并在所有步骤复用,B-Rep 在每步操作后增量更新。
  • LLM 骨干:采用 Qwen2.5(0.5B/1.5B)+ LoRA 微调,最终隐藏状态接两个独立全连接层,分别预测 Label/Value Token 和 Pointer。
  • 向量翻译模块:将预测的命令序列转换为可执行的 B-Rep 几何。

指针式命令序列表示

每个 token 归属三类之一:

类型 说明
Label Token 语义标签,指示操作类型或结构边界(如 <ss> 草图开始、<sc> chamfer 开始)
Value Token 数值参数(坐标、角度等),连续参数量化为 \(2^q\) 级别的 \(q\)-bit 整数
Pointer 引用 B-Rep 中的面或边,由 LLM 输出 128 维向量并与候选实体计算余弦相似度选取

三种基本操作:

  • Sketch-Extrude 步骤:草图平面选择用 Pointer 从候选面中选取(替代传统 6 参数回归),然后在平面上绘制 Line/Arc/Circle,最后拉伸 \(E:(e_p, e_n, b)\)
  • Chamfer 步骤\(C:(\mathbf{p}, c)\),用 Pointer 集合 \(\mathbf{p}\) 选取目标边,\(c\) 为统一 chamfer 距离。
  • Fillet 步骤\(F:(\mathbf{p}, f)\),同理用 Pointer 选边,\(f\) 为统一圆角半径。

B-Rep 编码器与 GNN

  • 将 B-Rep 建模为面邻接图 \(\mathcal{G}(V, E)\),节点为面、边为共享边界。
  • 面特征:\(32 \times 32\) UV 采样网格上的 3D 坐标 + 法线 + 高斯曲率 + 可见性标记 → 平均池化 → 128 维。
  • 边特征:32 点等距采样的 3D 坐标 + 切线 + 导数 → 平均池化 → 128 维。
  • \(K\) 层 GNN 传播:节点更新聚合邻居消息(类 GIN 机制),边更新使用多头注意力(MHA)从全局面特征中提取信息。

训练损失

\[\mathcal{L} = \lambda_v \cdot \mathcal{L}_v + \lambda_p \cdot \mathcal{L}_p\]
  • Label/Value 预测:带标签平滑的交叉熵分类损失 \(\mathcal{L}_v\)
  • Pointer 预测:对比式回归损失 \(\mathcal{L}_p\),允许多个有效候选(共面/共线的等价实体),正例最大化余弦相似度,负例最小化,带可学习温度 \(\tau\)

实验

主实验:Text-to-CAD 生成

Recap-DeepCAD 数据集(176K 模型,不含 chamfer/fillet):

模型 Line F1↑ Arc F1↑ Circle F1↑ CD mean↓ CD median↓ SegE↓ FluxEE↓
DeepCAD 80.14 31.41 79.04 37.47 12.56 0.53 25.85
Text2CAD 88.12 45.19 87.03 17.48 3.38 0.44 17.75
CADmium-7B 85.13 25.68 74.94 10.53 0.44 1.21 32.22
Pointer-CAD-0.5B 97.70 85.70 98.27 3.81 0.54 0.13 2.14
Pointer-CAD-1.5B 98.73 95.14 98.66 2.58 0.30 0.11 2.97

Recap-OmniCAD+ 数据集(575K 模型,含 chamfer/fillet):

模型 Chamfer F1↑ Fillet F1↑ CD mean↓ SegE↓ FluxEE↓
其他方法 不支持 不支持 11.60-27.48 0.51-1.39 26.36-42.59
Pointer-CAD-0.5B 89.74 82.54 5.49 0.15 3.51
Pointer-CAD-1.5B 94.32 89.85 2.86 0.17 3.44

消融实验:GNN 的有效性

设置 IR↓ Arc F1↑ CD mean↓
Pointer-CAD w/o GNN (MLP) 22.73 67.14 5.13
Pointer-CAD w/ GNN 15.02 85.70 3.81
Text2CAD w/o GNN 30.16 45.19 17.48
Text2CAD w/ GNN 27.17 51.85 14.33

GNN 对弧线 (Arc) 结构的建模增益尤为显著(F1 从 67.14 → 85.70)。

关键发现

  • 0.5B 模型超越 7B:Pointer-CAD-0.5B 在几乎所有指标上优于 CADmium-7B,说明表示设计比模型规模更重要。
  • SegE 降低一个数量级:Pointer 机制通过 snap-to-entity 有效消除量化误差导致的拓扑断裂(SegE: 0.44-1.21 → 0.11-0.13)。
  • FluxEE 大幅改善:实体密封性从 17-38 降至 2-3,生成模型更接近水密实体。
  • 通用 LLM 对比:GPT-5.2 的 IR 达 23.9%(即近 1/4 模型生成失败),Pointer-CAD-0.5B 仅 14.79%。

亮点

  • Pointer 机制创新性地将 Pointer Network 思想引入 CAD 命令序列,实现了命令序列方法中首次支持 chamfer/fillet 操作。
  • 多步条件生成架构优雅:每步基于累积 B-Rep + 文本条件生成,模拟真实工程师操作流程。
  • 数据工程扎实:构建 575K 规模数据集,用 Qwen2.5-VL 自动标注多视角描述,保留真实参数而非归一化。
  • Token 效率极高:平均仅 110 tokens/模型,推理 2.13 秒,远优于代码表示方案。

局限性

  • 当前仅评估了文本条件设定,未扩展到图像/点云等多模态输入。
  • 仅支持单零件建模,不涉及装配体级别的约束关系(配合约束、层级依赖)。
  • 复杂模型(≥4 步非草图操作)偶尔出现局部定位偏差。
  • Pointer 依赖 B-Rep 几何特征的余弦匹配,对高度对称模型中相似面/边的区分能力有待验证。

相关工作

  • B-Rep 生成:ComplexGen、CMT 等直接生成 B-Rep 层级结构,但拓扑关系复杂难以建模。
  • CSG 表示:通过布尔运算组合基本体,但难以表示曲面(如圆角),且 CSG 表示不唯一。
  • 命令序列:DeepCAD → SkexGen → Text2CAD → CAD-MLLM → CADFusion,逐步引入更多模态和操作,但均不支持实体选择。Fan et al. 曾尝试基于面标签的实体选择,但面交线推导的边存在歧义。
  • 代码表示:CADmium (JSON)、CadQuery/FreeCAD API 方案灵活但 token 长、推理慢。

评分

  • 新颖性: ⭐⭐⭐⭐⭐ — Pointer 机制引入 CAD 序列生成是关键创新,首次实现命令序列中的实体引用
  • 实验充分度: ⭐⭐⭐⭐ — 多数据集 + 通用 LLM 对比 + GNN 消融 + 定性分析,但缺少多模态输入实验
  • 写作质量: ⭐⭐⭐⭐ — 结构清晰,图表丰富,动机阐述充分
  • 价值: ⭐⭐⭐⭐⭐ — 解决了命令序列方法核心痛点,0.5B 模型超越 7B 模型具有很强实用意义