面向 AI 原生 3D 建模应用的 SDF、网格与 CAD 内核调研:运行时、交换、评估与资料
主文档与完整目录。本分篇保留原调查日期的依据与实测记录;其中的当前状态、建议和授权仅属于历史快照,不是执行队列。
12. 运行时架构
Section titled “12. 运行时架构”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 使用,避免其快速迁移影响核心。
13. 文件与交换格式
Section titled “13. 文件与交换格式”建议的 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
14. AI 原生评测
Section titled “14. AI 原生评测”不能只看“截图像不像”。建议建立从第一天持续运行的双层 benchmark。
14.1 语言与代理指标
Section titled “14.1 语言与代理指标”- 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 是否可读、能否说明每个变化。
14.2 几何与 CAD 指标
Section titled “14.2 几何与 CAD 指标”- B-Rep validity、闭合 solid、Manifold status;
- 自相交、退化元素、最小壁厚、间隙;
- 体积/面积/重心与 golden model 差异;
- STEP 往返的类型/容差/属性保留;
- Field bake 的 Hausdorff/采样距离误差;
- tessellation 误差、三角形数、交互延迟与峰值内存;
- fillet/shell/boolean 的参数 sweep 成功域;
- 约束 DOF、过约束诊断准确率。
14.3 任务集
Section titled “14.3 任务集”至少覆盖:
- 从文本创建基础机械件;
- 从多视图/图片创建可参数化模型;
- 对现有模型做局部编辑;
- 改变关键尺寸导致面/边拆分或消失;
- 混合 B-Rep 与 SDF feature;
- 导入 STEP 后测量、添加新 feature、导出;
- 恶意或错误输入:无界 SDF、零厚度、非 manifold mesh、歧义 selector;
- 性能压力:大 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
15. 分阶段落地
Section titled “15. 分阶段落地”Phase 0:可证伪的技术样机
Section titled “Phase 0:可证伪的技术样机”- 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,而不是只有异常文本。
Phase 1:真正可编辑的机械 CAD
Section titled “Phase 1:真正可编辑的机械 CAD”- 约束草图;
- extrude/revolve/sweep/loft;
- boolean/fillet/chamfer/shell;
- SemanticRef、history mapping、expect cardinality;
- 几何查询与 feature-ID segmentation;
- STEP round-trip 测试。
Phase 2:隐式与生成式差异化
Section titled “Phase 2:隐式与生成式差异化”- Field IR;
- TSL/WebGPU 实时预览;
- 自适应 bounds 和 quality budget;
- Manifold bake;
- lattice、smooth blend、warp 与材料/来源传播;
- Field/Mesh 制造检查。
Phase 3:生态与智能
Section titled “Phase 3:生态与智能”- feature package registry;
- 自描述 capability catalog;
- TypeScript builder SDK、CLI、LSP;
- AI 自修复与 benchmark;
- 装配、variant、协作;
- 评估 OpenUSD 与服务端 OpenVDB。
16. 主要风险与缓解
Section titled “16. 主要风险与缓解”| 风险 | 后果 | 缓解 |
|---|---|---|
| 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;规范化拓扑摘要;按不变量和误差界比较,不比较二进制或遍历顺序 |
17. 明确不要做什么
Section titled “17. 明确不要做什么”- 不让 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 放在同等位置。
18. 最终技术选型
Section titled “18. 最终技术选型”如果现在立项,我会这样定:
- UI / Viewer: TypeScript + Three.js,WebGL2 基线,WebGPU/TSL 渐进增强。
- Canonical model: 自研 AMIR JSON schema;.aira 纯函数式表层语言;Rust parser/compiler/transaction core。
- Exact CAD: OCCT,先用 Replicad 验证,随后维护最小 opencascade.js custom build 和自家 adapter。
- Mesh solid: manifold-3d WASM。
- Implicit: 自研 Field IR;首版由 Manifold LevelSet bake;Fidget 作为区间求值和自适应 meshing 的研究/候选后端。
- Constraint: 自有抽象 + planegcs WASM spike。
- Storage: .aira/AMIR 为源;STEP、3MF、GLB 为显式出口;缓存可删除。
- AI API: catalog/read/query/proposePatch/preview/validate/commit/export 八类事务工具。
- 产品护城河: SemanticRef、双向 Source Map、Geometry Observatory、结构化诊断、可重复 benchmark。
一句话版本:
用 OCCT 获得精确 CAD,用 Manifold 获得可靠网格,用自研 Field IR 获得 SDF 创造力;再用一个比“代码生成”更严格的语义模型和事务协议,把三者变成 AI 真正能理解、修改、验证和解释的系统。
19. 主要一手资料
Section titled “19. 主要一手资料”Manifold
Section titled “Manifold”- 官方仓库与 README
- JS/TS/WASM README
- C++ API / LevelSet
- 算法与 manifoldness 说明
- JS API 与 LevelSet 符号约定
- Apache-2.0 License
OCCT 与浏览器封装
Section titled “OCCT 与浏览器封装”- OCCT 8.0.1 官方概览
- OCCT Modeling Algorithms
- OCCT OCAF / Topological Naming
- OCCT Precision reference
- OCCT BRepGraph announcement
- OCCT coding rules
- Open-Cascade-SAS/OCCT
- opencascade.js
- opencascade.js Custom Builds
- Replicad
- Cascade Studio
SDF、场与替代内核
Section titled “SDF、场与替代内核”语言、视图与交换
Section titled “语言、视图与交换”- KCL 文档
- KCL 设计说明
- FeatureScript Introduction
- FeatureScript Modeling / Queries
- FeatureScript Standard Library / Regeneration Errors
- CadQuery
- build123d
- JSCAD
- Three.js BufferGeometry
- Three.js WebGPURenderer / TSL
- glTF 2.0 Specification
- OpenUSD Introduction