5e2812a6f3
v6.2.1 — Blender Integration Addon: - 5 files, 1,732 lines: __init__, operators (9 ops), panels (4 panels) - preferences, vde_bridge (subprocess CLI bridge) - Import/Export STEP, primitives, boolean, SDF→Mesh v6.2.2 — .NET/C# Bindings (VdeSharp): - 8 files: NativeMethods (50+ P/Invoke), BrepModel, MeshData, SdfEngine, Assembly - C API extended with 20 new functions (STEP I/O, Boolean, SDF, Assembly) - vde_capi rebuilt as SHARED library - Example: import STEP → boolean → export v6.2.3 — Developer Docs + Plugin System: - 7 docs: architecture, contributing, API overview, building, testing, plugin-system - plugin_system.h/.cpp: PluginInterface, PluginManager, dlopen/LoadLibrary - README.md updated with v6 features - Syntax-check passed (GCC 10.2.1, -Wall -Wextra -Wpedantic)
15 KiB
15 KiB
架构概览
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 | 插件系统 + 开发者生态 | 计划中 |