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)
6.7 KiB
6.7 KiB
ViewDesignEngine — 高性能 CAD 计算几何引擎
C++17 全栈计算几何引擎。从底层数学工具到 B-Rep 拓扑建模、SDF 隐式建模、可微分几何、工业格式互操作,一条龙覆盖。
快速开始
C++ 构建
# Docker 构建环境(推荐)
docker exec vde-builder bash -c "cd /ws/ViewDesignEngine && cmake -B build && cmake --build build -j\$(nproc)"
# 本地构建
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
# 运行测试
cd build && ctest --output-on-failure
# 运行示例
./build/examples/07_pipeline/pipeline_demo # SDF → GLB 全流程
依赖: CMake ≥ 3.16, C++17, Eigen 3, GoogleTest(自动下载)
Python 安装
# 从源码安装(推荐)
pip install .
# 开发模式(可编辑安装)
pip install -e .
# 仅 CMake 构建(不安装到 site-packages)
cmake -B build_py -DVDE_BUILD_PYTHON=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build_py -j$(nproc)
# 测试导入
PYTHONPATH=build_py/python python3 -c "import vde; print(vde.__version__)"
Python 依赖: CMake ≥ 3.16, C++17, Eigen 3(自动下载), pybind11 ≥ 2.10
模块总览
| 模块 | 命名空间 | 关键能力 |
|---|---|---|
foundation |
vde::foundation |
数学类型、公差、精确谓词、STL/OBJ/PLY/GLTF(F/GLB) 读写 |
core |
vde::core |
多边形、Voronoi、凸包、ICP、距离计算 |
curves |
vde::curves |
Bézier / B-Spline / NURBS 曲线曲面、自适应细分 |
mesh |
vde::mesh |
半边网格、Delaunay 2D/3D、QEM 简化、平滑、Marching Cubes、测地线、网格布尔 |
spatial |
vde::spatial |
BVH (SAH)、Octree、KD-Tree、R-Tree (STR) |
boolean |
vde::boolean |
2D Sutherland-Hodgman、3D 网格布尔、多边形偏移 |
collision |
vde::collision |
GJK/EPA、SAT、射线-三角形、三角交线 |
brep |
vde::brep |
边界表示 (B-Rep) 拓扑建模、布尔运算、验证 |
sdf |
vde::sdf |
15+ 隐式图元、CSG 树、自动微分、梯度优化、SDF → Mesh |
sketch |
vde::sketch |
2D 草图约束求解器 |
capi |
vde::capi |
C API,跨语言互操作 |
plugin |
vde::plugin |
插件系统:动态加载、第三方扩展(v6.0+) |
格式支持
| 格式 | 导入 | 导出 | 说明 |
|---|---|---|---|
| STEP (AP203/214) | ✅ | ✅ | 工业 CAD 交换标准 |
| IGES (5.3) | ✅ | ✅ | 传统制造业格式 |
| glTF 2.0 / GLB | — | ✅ | 实时 3D / Web 查看 |
| STL | — | ✅ | 3D 打印 |
| OBJ | — | ✅ | 通用网格 |
| PLY | — | ✅ | 点云/网格 |
特色功能
🔮 SDF 隐式建模
#include <vde/sdf/sdf_primitives.h>
#include <vde/sdf/sdf_operations.h>
#include <vde/sdf/sdf_tree.h>
// 光滑并集
auto shape = SdfNode::smooth_union(
SdfNode::sphere(1.5),
SdfNode::box(Point3D(1, 1, 1)),
0.3
);
double d = evaluate(shape, Point3D(0, 0, 0)); // SDF 值
⚡ 可微分几何 + torch 集成
#include <vde/sdf/sdf_gradient.h>
#include <vde/sdf/sdf_optimize.h>
// 拟合 SDF 到点云
auto sphere = SdfNode::sphere(1.0);
auto result = fit_to_point_cloud(sphere, point_cloud, 0.01, 100);
// result.optimized_shape → 优化后的形状
🔧 B-Rep 工业建模
#include <vde/brep/modeling.h>
#include <vde/brep/brep_boolean.h>
auto box = make_box(2, 2, 2);
auto shelled = shell(box, -1, 0.15); // 抽壳
auto filleted = fillet(box, 0, 0.3); // 倒圆
auto result = brep_union(a, b); // 布尔并
代码示例
完整示例见 examples/:
01_hello_triangle— 基础几何02_bezier— 曲线求值03_mesh— 网格操作04_delaunay— 三角剖分05_boolean— 布尔运算06_collision— 碰撞检测07_pipeline— SDF → Mesh → GLB 完整管线
测试
| 类别 | 测试数 | 状态 |
|---|---|---|
| 核心 + 曲线 + 网格 + 空间 + 碰撞 | ~120 | ✅ |
| B-Rep 建模 + 验证 | ~70 | ✅ |
| STEP 导入/导出 | 31 | ✅ |
| IGES 导入/导出 | 39 | ✅ |
| SDF 隐式建模 | 189 | ✅ |
| 可微分几何 | 76 | ✅ |
| GLTF/GLB 导出 | 6 | ✅ |
| 草图约束 | — | ✅ |
| 合计 | ~476 | 100% |
工程指标
- 语言: C++17,零外部运行时依赖(仅 header-only Eigen + GTest)
- 测试: 500+ 用例,100% 通过
- 编译: GCC 11+ / Clang 16+,零错误零警告
- 格式支持: STEP、IGES、glTF/GLB、STL、OBJ、PLY
文档
v6.0 新功能(计划中) 🔌
插件系统 (vde::plugin)
#include <vde/plugin/plugin_system.h>
// 插件管理器:动态加载第三方扩展
vde::plugin::PluginManager mgr;
mgr.load_plugin_dir("/usr/lib/vde/plugins");
// 查找并使用插件
auto* exporter = mgr.get_plugin("io.export.gltf");
exporter->execute("export", {{"path", "output.glb"}}, &mesh, nullptr);
核心能力:
- 动态加载: 运行时 dlopen/LoadLibrary,无需重新编译 VDE
- 版本兼容: PluginManifest 声明约束,自动检查兼容性
- 插件隔离: 崩溃不影响主程序,独立 .so/.dylib/.dll
- 注册宏:
VDE_REGISTER_PLUGIN(MyPlugin)一行注册 - 清单文件:
plugin.json加速发现和验证
插件类型:
| 类型 | 说明 | 示例 |
|---|---|---|
| IO_IMPORT | 格式导入器 | USDZ, FBX, 3DS |
| IO_EXPORT | 格式导出器 | USDZ, X3D, AMF |
| GEOMETRY_FILTER | 几何过滤器 | 平滑、简化、重网格 |
| CUSTOM_TOOL | 自定义工具 | 应力分析、拓扑优化 |
开发者生态
- 📘 开发者指南 — 7 篇完整文档覆盖架构/API/构建/测试/贡献/插件
- 🏗️ 插件 SDK — 头文件 + CMake 模板 + 注册宏,5 分钟上手
- 🔒 安全分级 — L0 内置 → L1 签名 → L2 社区 → L3 沙箱
许可证
Apache License 2.0 — 详见 LICENSE