# 架构概览 ## 1. 整体架构 ViewDesignEngine 采用分层架构,从底层数学基础设施到高层领域建模,层层递进。v6.0 引入了插件系统,支持第三方扩展。 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 应用层 (Application) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────────┐ │ │ │ C++ API │ │ Python绑定│ │ C API │ │ 插件系统 (v6) │ │ │ │ (头文件) │ │(pybind11) │ │ (vde_capi)│ │ PluginManager │ │ │ └─────┬─────┘ └─────┬────┘ └─────┬────┘ └───────┬────────┘ │ │ │ │ │ │ │ ├────────┴──────────────┴─────────────┴───────────────┴────────────┤ │ 领域建模层 (Domain) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ B-Rep │ │ SDF │ │ Sketch │ │ CAM │ │ │ │ 实体建模 │ │ 隐式建模 │ │ 草图约束 │ │ 加工策略 │ │ │ └─────┬─────┘ └─────┬────┘ └─────┬────┘ └────────┬─────────┘ │ │ │ │ │ │ │ ├────────┴──────────────┴─────────────┴───────────────┴────────────┤ │ 几何处理层 (Geometry) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ Curves │ │ Mesh │ │ Boolean │ │ Collision │ │ │ │ 曲线曲面 │ │ 网格处理 │ │ 布尔运算 │ │ 碰撞检测 │ │ │ └─────┬─────┘ └─────┬────┘ └─────┬────┘ └────────┬─────────┘ │ │ │ │ │ │ │ │ └──────────────┴──────┬──────┴───────────────┘ │ │ │ │ ├──────────────────────────────┴────────────────────────────────────┤ │ 空间索引层 (Spatial) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ BVH │ │ Octree │ │ KD-Tree │ │ R-Tree │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │ ├───────────────────────────────────────────────────────────────────┤ │ 基础设施层 (Foundation) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ Eigen封装│ │ 公差系统 │ │ I/O │ │ 精确谓词 │ │ │ │ 数学库 │ │Tolerance │ │格式读写 │ │ exact_predicates│ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │ └───────────────────────────────────────────────────────────────────┘ ``` ## 2. 模块依赖图 ``` ┌─────────────────────┐ │ vde (聚合) │ └──────────┬──────────┘ ┌───────────────────┼───────────────────┐ │ │ │ ┌──────┴──────┐ ┌──────┴──────┐ ┌──────┴──────┐ │ vde_capi │ │ vde_brep │ │ vde_plugin │ │ (C 接口) │ │ (B-Rep) │ │ (插件系统) │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ ┌──────┼──────────┬──────┼──────────┐ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ │ ┌──────┐┌──────┐┌──────┐┌──────┐┌─────────┐ │ │vde_ ││vde_ ││vde_ ││vde_ ││vde_ │ │ │sdf ││sketch││mesh ││curves││collision│ │ └──┬───┘└──┬───┘└──┬───┘└──┬───┘└────┬────┘ │ │ │ │ │ │ │ └───────┴───────┼───────┴─────────┘ │ │ │ ┌────┴────┐ ┌─────┴──────┐ │vde_core │ │vde_spatial │ └────┬────┘ └─────┬──────┘ │ │ ┌────┴──────────────────────────┘ │ ┌────┴──────────┐ │vde_foundation │ └───────┬───────┘ │ ┌─────┴─────┐ │Eigen3 (外部)│ └───────────┘ vde_boolean 依赖: vde_mesh + vde_spatial + vde_core vde_collision 依赖: vde_core + vde_spatial vde_gpu (可选): vde_mesh + CUDA::cudart vde_plugin 依赖: vde_foundation (独立于其他模块) ``` ## 3. 数据流 ### 3.1 典型几何处理管线 ``` 输入 (STEP/IGES/OBJ/STL) │ ▼ ┌──────────────┐ │ Format I/O │ foundation::import_step / import_iges / load_obj / load_stl │ 格式解析 │ └──────┬───────┘ │ ▼ ┌──────────────┐ │ 几何核心 │ core::Point3D, core::AABB3D, core::transform │ 类型系统 │ └──────┬───────┘ │ ├─────────────────────────────────────┐ ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ 曲线曲面建模 │ │ 网格处理 │ │ curves │ │ mesh │ │ Bezier/NURBS │ │ Delaunay/MC │ └──────┬───────┘ └──────┬───────┘ │ │ ├──────────────┬──────────────────────┘ ▼ ▼ ┌──────────────┐┌──────────────┐ │ 空间索引 ││ 布尔运算 │ │ spatial ││ boolean │ │ BVH/Octree ││ CSG │ └──────┬───────┘└──────┬───────┘ │ │ ▼ ▼ ┌──────────────┐┌──────────────┐ │ 碰撞检测 ││ B-Rep 建模 │ │ collision ││ brep │ │ GJK/SAT ││ 抽壳/倒圆 │ └──────┬───────┘└──────┬───────┘ │ │ └───────┬───────┘ ▼ ┌──────────────┐ │ Format I/O │ foundation::export_step / export_gltf / export_stl │ 格式导出 │ └──────┬───────┘ ▼ 输出 (STEP/glTF/STL/OBJ) ``` ### 3.2 插件系统数据流 (v6.0) ``` ┌─────────────────────────────────────────────────────┐ │ PluginManager │ │ │ │ load_plugin_dir("/usr/lib/vde/plugins") │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────┐ │ │ │ 扫描 .so/.dylib/.dll 文件 │ │ │ │ dlopen → dlsym(create_plugin) │ │ │ │ → PluginInterface* │ │ │ └──────────────┬──────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────┐ │ │ │ PluginRegistry (name → Plugin*) │ │ │ │ io_exporters / io_importers │ │ │ │ geometry_filters │ │ │ │ custom_tools │ │ │ └─────────────────────────────────────┘ │ │ │ │ 调用: manager.get_plugin("io.export.gltf") │ │ → PluginInterface::execute(...) │ └─────────────────────────────────────────────────────┘ ``` ### 3.3 可微分几何管线 (SDF) ``` 参数化形状 (SdfNode) │ ▼ ┌──────────────────┐ │ SDF 求值 │ sdf::evaluate(node, point) │ (CSG 树遍历) │ └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ 自动微分 │ sdf::gradient(node, point) │ (正向/反向模式) │ └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ 梯度优化 │ sdf::optimize::fit_to_point_cloud │ (Adam/SGD) │ └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ SDF → Mesh │ sdf::marching_cubes → HalfedgeMesh │ (Marching Cubes) │ └────────┬─────────┘ │ ▼ ┌──────────────────┐ │ 导出 GLB │ foundation::export_gltf_binary └──────────────────┘ ``` ## 4. 线程模型 - **单线程默认**: 所有 API 默认线程安全,内部无全局可变状态 - **OpenMP 并行**: 在 B-Rep 布尔、网格处理等热点路径启用 (`VDE_USE_OPENMP=ON`) - **CUDA 加速**: 独立 GPU 库 `vde_gpu`,不阻塞 CPU 路径 - **插件线程安全**: 插件需自行保证线程安全,PluginManager 提供读写锁 ## 5. 内存模型 ``` ┌─────────────────────────────────────────┐ │ 内存分配策略 │ │ │ │ ┌──────────────┐ ┌─────────────────┐ │ │ │ ObjectPool │ │ std::unique_ptr │ │ │ │ (mesh顶点/面) │ │ (B-Rep 实体) │ │ │ │ 连续内存块 │ │ RAII 所有权 │ │ │ └──────────────┘ └─────────────────┘ │ │ │ │ ┌──────────────┐ ┌─────────────────┐ │ │ │ SoA 布局 │ │ 小对象栈分配 │ │ │ │ (AoS→SoA) │ │ (Point3D/AABB) │ │ │ │ 缓存友好 │ │ 零堆开销 │ │ │ └──────────────┘ └─────────────────┘ │ └─────────────────────────────────────────┘ ``` ## 6. 版本演进 | 版本 | 关键里程碑 | 日期 | |------|-----------|------| | v0.1 - v0.9 | 核心模块建立 | 2026-07-23 | | v1.0 | 首个稳定版本 | 2026-07-24 | | v2.0 | B-Rep 完善 + STEP | 2026-07-24 | | v3.0 - v3.5 | SDF/IGES/装配/CAM | 2026-07-24 | | v4.x | 工业强化 (GDT/PMI/特征识别) | 计划中 | | v5.x | 性能优化 + 反向工程 | 计划中 | | v6.0 | 插件系统 + 开发者生态 | 计划中 |