跳转到内容

面向 AI 原生 3D 建模应用的 SDF、网格与 CAD 内核调研:运行时、交换、评估与资料

主文档与完整目录。本分篇保留原调查日期的依据与实测记录;其中的当前状态、建议和授权仅属于历史快照,不是执行队列。

Human UI / AI Agent / CLI / Plugin
│
▼
Domain Transaction API
│
▼
AMIR Store + Type/Unit Checker
│
Incremental Dependency DAG
┌─────┼─────────┐
▼ ▼ ▼
Exact Worker Mesh Worker Field Worker/GPU
OCCT WASM Manifold WASM Field IR -> TSL/WASM
└─────┬─────────┘
▼
Artifact + Source Map Store
│
▼
Three.js View / Query / Validate / Export

关键工程规则:

  • 每个 worker 都有超时、取消、内存上限与 crash recovery。
  • kernel object 只活在所属 worker,跨边界只传 artifact handle 或 typed arrays。
  • 三角化结果按 node hash + kernel version + tolerance 缓存。
  • 重算只覆盖 dirty subgraph;用户拖动参数时允许 coarse preview,停止后再 authoritative refine。
  • WebGPU 是增强项,不能成为基本建模正确性的唯一依赖。
  • Three.js 固定版本并通过 renderer adapter 使用,避免其快速迁移影响核心。

建议的 Aira 项目包:

project.aira/
manifest.json
model.aira
model.amir.json
assets/
imports/
previews/
cache/ # 可删除,不进版本控制
history/

格式角色:

格式 角色
.aira / AMIR JSON 唯一 authoring source
STEP AP242 精确 CAD 交换;不能替代 feature history
3MF 可打印 manifold mesh;优先于 STL
glTF/GLB Web/实时交付;可带材质与 EXT_mesh_manifold,但不是 authoring source
STL 仅兼容出口;无单位、拓扑与材质语义,避免内部保存
OpenUSD 未来大型装配、场景组合、variant/layer 协作候选;不直接替代 CAD feature graph

OpenUSD 的强项是 layer、reference、payload、variant 等场景组合;官方也说明它主要面向大规模 3D scene description。可在装配/协作阶段引入,而非让首版承担精确 CAD 历史。OpenUSD Introduction

不能只看“截图像不像”。建议建立从第一天持续运行的双层 benchmark。

  • schema-valid patch rate;
  • parse/type/unit check 成功率;
  • 首次执行成功率与最终自修复成功率;
  • 平均修复轮数与 token 数;
  • edit locality:修改一个参数时不相关节点是否保持不变;
  • reference survival:参数跨临界点后引用是否仍指向设计意图;
  • deterministic replay:跨机器/重启是否得到同 hash;
  • invalid request rejection:是否拒绝单位错误、歧义 selector、越界 pattern;
  • human review cost:diff 是否可读、能否说明每个变化。
  • B-Rep validity、闭合 solid、Manifold status;
  • 自相交、退化元素、最小壁厚、间隙;
  • 体积/面积/重心与 golden model 差异;
  • STEP 往返的类型/容差/属性保留;
  • Field bake 的 Hausdorff/采样距离误差;
  • tessellation 误差、三角形数、交互延迟与峰值内存;
  • fillet/shell/boolean 的参数 sweep 成功域;
  • 约束 DOF、过约束诊断准确率。

至少覆盖:

  1. 从文本创建基础机械件;
  2. 从多视图/图片创建可参数化模型;
  3. 对现有模型做局部编辑;
  4. 改变关键尺寸导致面/边拆分或消失;
  5. 混合 B-Rep 与 SDF feature;
  6. 导入 STEP 后测量、添加新 feature、导出;
  7. 恶意或错误输入:无界 SDF、零厚度、非 manifold mesh、歧义 selector;
  8. 性能压力:大 pattern、深 CSG、复杂晶格。

相关研究给出的信号:

  • Text2CAD 使用约 17 万模型与约 66 万条不同粒度文本描述,说明“从抽象意图到详细尺寸”的层级语料很重要。Text2CAD
  • CAD-Llama 把命令序列转成带层级语义描述的 Structured Parametric CAD Code,支持“结构化代码比裸命令序列更适合模型学习”的方向。CAD-Llama
  • FutureCAD 把高阶 CAD 生成与 B-Rep primitive grounding 结合,直接说明 fillet/chamfer 等操作的瓶颈是把语言意图可靠地落到具体面/边。FutureCAD
  • BenchCAD 的结果指出模型常能恢复粗略外形,却会把 sweep、loft、twist-extrude 等关键设计过程简化掉;因此评测必须检查 feature program 和可编辑性,不能只比较最终 mesh。BenchCAD
  • Three.js 视口;
  • Replicad/opencascade.js worker;
  • manifold-3d worker;
  • 20 个 AMIR node;
  • ExactSolid、MeshSolid、Field3D 三种类型与四种显式转换;
  • 参数、单位、hash、preview/commit;
  • STEP、3MF、GLB 输出;
  • 一组固定几何和性能 benchmark。

退出条件:

  • 同一模型可完全从 AMIR 重放;
  • 修改参数只重算依赖子图;
  • UI 和 AI 都通过同一 patch API;
  • 能明确展示一次有损转换;
  • 错误返回稳定 code,而不是只有异常文本。
  • 约束草图;
  • extrude/revolve/sweep/loft;
  • boolean/fillet/chamfer/shell;
  • SemanticRef、history mapping、expect cardinality;
  • 几何查询与 feature-ID segmentation;
  • STEP round-trip 测试。
  • Field IR;
  • TSL/WebGPU 实时预览;
  • 自适应 bounds 和 quality budget;
  • Manifold bake;
  • lattice、smooth blend、warp 与材料/来源传播;
  • Field/Mesh 制造检查。
  • feature package registry;
  • 自描述 capability catalog;
  • TypeScript builder SDK、CLI、LSP;
  • AI 自修复与 benchmark;
  • 装配、variant、协作;
  • 评估 OpenUSD 与服务端 OpenVDB。
风险 后果 缓解
OCCT WASM 过大/启动慢 首屏和移动端差 custom build、worker 预热、缓存、按功能包拆分、桌面原生后端
LGPL 合规 商业发布受阻 早期法务方案、可替换构建材料、About/源码义务、必要时商业许可
拓扑命名失败 参数修改后 fillet 到错误边 SemanticRef + history + 邻接/几何 predicate + 基数契约;歧义即失败
B-Rep/mesh/SDF 隐式转换 精度和设计意图悄悄丢失 类型系统、显式 bake、误差报告、禁止自动逆转换
SDF 无界或分辨率爆炸 卡死/内存耗尽 强制 bounds、cost estimate、cell/triangle budget、取消
AI 生成任意代码 安全、不可重放、难 diff canonical AST、受限语言、沙箱、事务工具
UI 与代码打架 模型源码失真 GUI 只生成 AST patch;双向 source map 与 canonical formatter
只看渲染截图 错误模型被误判正确 结构查询、测量、有效性、分割图与多视图联合验证
Three.js/WebGPU API 迁移 UI 持续破坏 固定版本、renderer adapter、无 GPU 的 DisplayMesh 基线
跨平台结果不逐位相同 缓存、回归和协作误报 版本化 tolerance/seed/kernel;规范化拓扑摘要;按不变量和误差界比较,不比较二进制或遍历顺序
  • 不让 AI 直接调用 raw OCCT、Embind 或 C++ 对象。
  • 不把任意 TypeScript/Python 执行结果当唯一项目文件。
  • 不把 Three.js scene、GLB 或 STL 当 authoring source。
  • 不用数组下标长期引用 face/edge。
  • 不在 exact、mesh、field 之间静默转换。
  • 不把 Manifold 的 manifold guarantee 解释成几何绝对正确。
  • 不在第一版重写完整 B-Rep kernel 或完整约束求解器。
  • 不把完整 OCCT WASM 直接塞进首屏生产包。
  • 不只做 text-to-3D;必须把 inspect、edit、validate、repair 放在同等位置。

如果现在立项,我会这样定:

  1. UI / Viewer: TypeScript + Three.js,WebGL2 基线,WebGPU/TSL 渐进增强。
  2. Canonical model: 自研 AMIR JSON schema;.aira 纯函数式表层语言;Rust parser/compiler/transaction core。
  3. Exact CAD: OCCT,先用 Replicad 验证,随后维护最小 opencascade.js custom build 和自家 adapter。
  4. Mesh solid: manifold-3d WASM。
  5. Implicit: 自研 Field IR;首版由 Manifold LevelSet bake;Fidget 作为区间求值和自适应 meshing 的研究/候选后端。
  6. Constraint: 自有抽象 + planegcs WASM spike。
  7. Storage: .aira/AMIR 为源;STEP、3MF、GLB 为显式出口;缓存可删除。
  8. AI API: catalog/read/query/proposePatch/preview/validate/commit/export 八类事务工具。
  9. 产品护城河: SemanticRef、双向 Source Map、Geometry Observatory、结构化诊断、可重复 benchmark。

一句话版本:

用 OCCT 获得精确 CAD,用 Manifold 获得可靠网格,用自研 Field IR 获得 SDF 创造力;再用一个比“代码生成”更严格的语义模型和事务协议,把三者变成 AI 真正能理解、修改、验证和解释的系统。