Files
ViewDesignEngine/docs/dev-guide/architecture.md
T
茂之钳 5e2812a6f3
CI / Build & Test (push) Failing after 33s
CI / Release Build (push) Failing after 35s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled
feat(v6.2): Blender addon + .NET/C# bindings + developer docs + plugin system
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)
2026-07-26 22:24:40 +08:00

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 插件系统 + 开发者生态 计划中