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)
241 lines
15 KiB
Markdown
241 lines
15 KiB
Markdown
# 架构概览
|
|
|
|
## 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 | 插件系统 + 开发者生态 | 计划中 |
|