feat: P0 全部实现 + 差异化功能分析
P0 实现(11/11 完成,0 stub 残留): - mesh: QEM 简化、Laplacian 平滑、质量评估、修复、3D 布尔 - spatial: Octree、KD-Tree、R-Tree 完整实现 - collision: GJK 距离+EPA 穿透深度、SAT、Tri-Tri 相交 - boolean: Vatti 2D 布尔扫描线算法 - core: 3D 凸包 QuickHull - spatial/BVH: 最近命中查询(AABB slab + Möller-Trumbore) 文档新增: - 05-核心竞争力与差异化功能(14 项独有功能) - SRS 扩展到 16 类 FR、100+ 条目 - 杀手功能:约束求解器/SDF隐式建模/可微分几何/惰性管线/Python绑定
This commit is contained in:
+26
-31
@@ -5,41 +5,36 @@
|
||||
| 编号 | 文档 | 说明 |
|
||||
|------|------|------|
|
||||
| **第一阶段:需求分析** | | |
|
||||
| 01 | [市场调研与竞品分析](01-需求分析/01-市场调研与竞品分析.md) | CGAL、OCCT、libigl 等 7 个引擎对标 |
|
||||
| 02 | [需求规格说明书](01-需求分析/02-需求规格说明书.md) | 14 类功能需求 + 5 类非功能需求(v1.0 完整版) |
|
||||
| 03 | [用例文档](01-需求分析/03-用例文档.md) | 6 个核心用例场景 |
|
||||
| 04 | [功能差距分析](01-需求分析/04-功能差距分析.md) | 41 项功能差距,5 级优先级,分版本路线 |
|
||||
| 01 | [市场调研与竞品分析](01-需求分析/01-市场调研与竞品分析.md) | 7 个引擎对标 |
|
||||
| 02 | [需求规格说明书](01-需求分析/02-需求规格说明书.md) | 16 类功能需求(含差异化功能) |
|
||||
| 03 | [用例文档](01-需求分析/03-用例文档.md) | 6 个核心用例 |
|
||||
| 04 | [功能差距分析](01-需求分析/04-功能差距分析.md) | 41 项差距,5 级优先级 |
|
||||
| 05 | [核心竞争力与差异化功能](01-需求分析/05-核心竞争力与差异化功能.md) | 14 项独有/首创功能 |
|
||||
| **第二阶段:概要设计** | | |
|
||||
| 05 | [系统架构设计](02-概要设计/01-系统架构设计.md) | 7 层模块架构 + 数据流 + 设计原则 |
|
||||
| 06 | [模块划分](02-概要设计/02-模块划分.md) | 7 个模块详细组件清单与依赖关系 |
|
||||
| 07 | [接口定义](02-概要设计/03-接口定义.md) | C++ 虚接口抽象 + C API + 错误处理约定 |
|
||||
| 06 | [系统架构设计](02-概要设计/01-系统架构设计.md) | 7 层模块架构 |
|
||||
| 07 | [模块划分](02-概要设计/02-模块划分.md) | 7 个模块详细清单 |
|
||||
| 08 | [接口定义](02-概要设计/03-接口定义.md) | 接口 + C API |
|
||||
| **第三阶段:详细设计** | | |
|
||||
| 08 | [数据结构设计](03-详细设计/01-数据结构设计.md) | 半边网格、NURBS、BVH、公差系统 |
|
||||
| 09 | [核心算法设计](03-详细设计/02-核心算法设计.md) | Delaunay、GJK、QEM、SAH 等算法伪代码 |
|
||||
| 10 | [类设计](03-详细设计/03-类设计.md) | 类关系图、工厂模式、策略模式、访问者模式 |
|
||||
| 09 | [数据结构设计](03-详细设计/01-数据结构设计.md) | 半边网格/NURBS/BVH |
|
||||
| 10 | [核心算法设计](03-详细设计/02-核心算法设计.md) | 算法伪代码 |
|
||||
| 11 | [类设计](03-详细设计/03-类设计.md) | 工厂/策略/访问者模式 |
|
||||
| **第四阶段:编码实现** | | |
|
||||
| 11 | [编码规范](04-编码实现/01-编码规范.md) | C++17 命名、格式、注释、内存、错误处理规范 |
|
||||
| 12 | [目录结构](04-编码实现/02-目录结构.md) | 完整工程目录树 + CMakeLists.txt 骨架 |
|
||||
| 12 | [编码规范](04-编码实现/01-编码规范.md) | C++17 规范 |
|
||||
| 13 | [目录结构](04-编码实现/02-目录结构.md) | 工程目录树 |
|
||||
| **第五阶段:测试验证** | | |
|
||||
| 13 | [测试计划](05-测试验证/01-测试计划.md) | 测试策略、CI 流程、性能基准、回归测试 |
|
||||
| 14 | [测试用例](05-测试验证/02-测试用例.md) | 8 组详细测试用例,含输入/预期输出 |
|
||||
| 14 | [测试计划](05-测试验证/01-测试计划.md) | CI + 性能基准 |
|
||||
| 15 | [测试用例](05-测试验证/02-测试用例.md) | 8 组测试用例 |
|
||||
| **第六阶段:部署维护** | | |
|
||||
| 15 | [构建指南](06-部署维护/01-构建指南.md) | Linux/Win/macOS 构建 + FetchContent 集成 |
|
||||
| 16 | [API 参考](06-部署维护/02-API参考.md) | 7 个模块全部公开 API 签名 |
|
||||
| 16 | [构建指南](06-部署维护/01-构建指南.md) | 三平台构建 |
|
||||
| 17 | [API 参考](06-部署维护/02-API参考.md) | 全部 API 签名 |
|
||||
|
||||
## 版本路线
|
||||
## 杀手功能(竞品无人支持)
|
||||
|
||||
```
|
||||
v0.1.0 v0.3.0 v0.5.0 v1.0.0 v2.0.0
|
||||
✅ 已完成 → P0 核心缺口 → P1 算法广度 → P2 B-Rep → P4 高级功能
|
||||
追上 Clipper2 追上 Manifold 追上 OCCT 追上 CGAL
|
||||
+ Manifold + libigl 建模层 高级
|
||||
```
|
||||
|
||||
## 技术栈
|
||||
|
||||
- **语言**: C++17
|
||||
- **构建**: CMake 3.16+
|
||||
- **依赖**: Eigen 3.3+
|
||||
- **测试**: Google Test
|
||||
- **许可证**: Apache 2.0
|
||||
| 功能 | 阶段 | 说明 |
|
||||
|------|------|------|
|
||||
| 2D 草图约束求解器 | v2.0 | 开源唯一,商业 CAD 核心资产 |
|
||||
| SDF 隐式建模 | v1.5 | 程序化建模/有机形态 |
|
||||
| 可微分几何 | v2.0 | AI+CAD 交叉领域 |
|
||||
| 惰性求值几何管线 | v1.0 | TensorFlow 式的几何计算图 |
|
||||
| Python 原生绑定 | v0.5 | pip install 即用 |
|
||||
| 二进制序列化 | v0.5 | 比 OBJ/STL 快 10x |
|
||||
|
||||
@@ -292,3 +292,34 @@
|
||||
现在 追上Clipper2 追上Manifold 追上OCCT 追上CGAL高级
|
||||
+Manifold +libigl 建模层 功能
|
||||
```
|
||||
|
||||
### FR-15:差异化功能(VDE 独有/首创)
|
||||
|
||||
> 竞品分析详见:[核心竞争力与差异化功能](05-核心竞争力与差异化功能.md)
|
||||
|
||||
| 编号 | 需求 | 竞品状态 | 状态 |
|
||||
|------|------|---------|------|
|
||||
| FR-15.1 | **2D 草图约束求解器**(几何约束图 + 牛顿迭代) | ❌ 仅商业 CAD 有(DCM/PTC),开源为零 | 🔜 P4 |
|
||||
| FR-15.2 | **SDF 隐式建模**(基本体/布尔/变形/光滑混合→网格) | ❌ 无 | 🔜 P3 |
|
||||
| FR-15.3 | **可微分几何**(距离/碰撞/布尔对参数的梯度) | ❌ 无 | 🔜 P4 |
|
||||
| FR-15.4 | **惰性求值几何管线**(计算图+缓存+并行) | ❌ 无此架构 | 🔜 P2 |
|
||||
| FR-15.5 | **Python 原生绑定**(pybind11,pip install 即用) | 🔸 CGAL 有笨重 SWIG 绑定 | 🔜 P1 |
|
||||
| FR-15.6 | **二进制序列化格式**(版本化、比 OBJ 快 10x) | ❌ 全部依赖文本格式 | 🔜 P1 |
|
||||
| FR-15.7 | **内置性能分析/基准框架** | ❌ 无 | 🔜 P1 |
|
||||
| FR-15.8 | **WebAssembly 编译目标** | 🔸 Manifold 支持 | 🔜 P2 |
|
||||
| FR-15.9 | **自动 LOD 链生成** | 🔸 libigl 有简化无自动链 | 🔜 P2 |
|
||||
| FR-15.10 | **增量计算框架**(脏标记/缓存/最小重算) | 🔸 OCCT OCAF 有但笨重 | 🔜 P2 |
|
||||
| FR-15.11 | **GPU 加速 BVH 遍历**(CUDA/Vulkan 后端) | ❌ 无开源引擎支持 | 🔜 P3 |
|
||||
| FR-15.12 | **实时碰撞检测模式**(持续监测+回调) | ❌ 全部为查询式 | 🔜 P3 |
|
||||
| FR-15.13 | **几何操作宏录制/回放** | ❌ 无 | 🔜 P3 |
|
||||
|
||||
### FR-16:Python API(等效 C++ 功能)
|
||||
|
||||
> Python 绑定不是简单的 wrapper——需要为 Python 用户设计 Pythonic API。
|
||||
|
||||
| 编号 | 需求 | 状态 |
|
||||
|------|------|------|
|
||||
| FR-16.1 | `vde.Point`, `vde.Vector`, `vde.Mesh` 等 Python 类 | 🔜 P1 |
|
||||
| FR-16.2 | numpy 数组互操作(零拷贝) | 🔜 P1 |
|
||||
| FR-16.3 | Jupyter Notebook 内联可视化 | 🔜 P1 |
|
||||
| FR-16.4 | 与 trimesh / open3d 互转 | 🔜 P2 |
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
# 核心竞争力与差异化功能
|
||||
|
||||
## 目录
|
||||
|
||||
1. [竞品盲区分析](#1-竞品盲区分析)
|
||||
2. [VDE 差异化功能矩阵](#2-vde-差异化功能矩阵)
|
||||
3. [杀手级功能详解](#3-杀手级功能详解)
|
||||
4. [实施优先级](#4-实施优先级)
|
||||
|
||||
---
|
||||
|
||||
## 1. 竞品盲区分析
|
||||
|
||||
对 7 个引擎逐一分析"他们没有什么":
|
||||
|
||||
| 竞品 | 最大盲区 | 我们的机会 |
|
||||
|------|---------|-----------|
|
||||
| **CGAL** | GPL 许可、编译极慢、API 不一致、无 Python 原生支持 | Apache 2.0 + 现代 C++17 + pybind11 绑定 |
|
||||
| **OCCT** | 老旧 API、无网格处理、无碰撞、无可微分能力 | 统一 API + 全栈覆盖 |
|
||||
| **libigl** | 无 CAD 建模、无自身核心算法、依赖链复杂 | 自包含引擎 |
|
||||
| **Clipper2** | 仅 2D、无 GUI 无关的纯算法 | 3D 全覆盖 |
|
||||
| **Manifold** | 仅网格布尔、无曲线曲面、无空间索引 | 一站式方案 |
|
||||
| **GEOS** | 仅 2D GIS、无 3D | 3D GIS 能力 |
|
||||
| **所有引擎** | **无一支持可微分几何 / SDF 隐式建模 / 约束求解** | 技术蓝海 |
|
||||
|
||||
## 2. VDE 差异化功能矩阵
|
||||
|
||||
| 编号 | 差异化功能 | 竞品支持情况 | 类型 |
|
||||
|------|-----------|------------|------|
|
||||
| **DF-01** | 统一现代 C++17 API | ❌ 所有竞品 API 风格迥异 | 架构优势 |
|
||||
| **DF-02** | Python 原生绑定(pybind11) | 🔸 CGAL 有 SWIG 绑定,libigl 有 Python | 体验优势 |
|
||||
| **DF-03** | 不可变几何 + 惰性求值管线 | ❌ 无引擎有此设计 | 架构创新 |
|
||||
| **DF-04** | 内置二进制序列化(版本化) | ❌ 全部依赖外部格式 | 体验优势 |
|
||||
| **DF-05** | 内置性能分析/基准测试框架 | ❌ 无 | 开发体验 |
|
||||
| **DF-06** | WebAssembly 编译目标 | 🔸 Manifold 支持 WASM | 部署优势 |
|
||||
| **DF-07** | SDF 隐式建模(平滑融合/变形) | ❌ 无主流引擎支持 | 技术蓝海 |
|
||||
| **DF-08** | 2D 草图约束求解器 | ❌ 仅商业 CAD 有(DCM, PTC) | 杀手功能 |
|
||||
| **DF-09** | 可微分几何(梯度传递) | ❌ 无 | 技术前瞻 |
|
||||
| **DF-10** | 自动 LOD 链生成 | 🔸 libigl 有简化,但无自动链 | 体验优势 |
|
||||
| **DF-11** | 增量计算框架(脏标记+缓存) | 🔸 OCCT OCAF 有,但笨重 | 架构优势 |
|
||||
| **DF-12** | GPU 加速 BVH 遍历 | ❌ 无开源引擎支持 | 性能优势 |
|
||||
| **DF-13** | 实时碰撞检测模式 | ❌ 全部为离线/查询式 | 场景优势 |
|
||||
| **DF-14** | 几何操作宏录制/回放 | ❌ 无 | 调试体验 |
|
||||
|
||||
> 图例:❌ 无人支持 🔸 部分/间接支持
|
||||
|
||||
---
|
||||
|
||||
## 3. 杀手级功能详解
|
||||
|
||||
### 3.1 DF-08:2D 草图约束求解器 ⭐⭐⭐
|
||||
|
||||
**竞品现状**:商业 CAD 的草图约束求解器(Siemens DCM、PTC 的求解器)是闭源核心资产,每个许可证数百万人民币。开源领域完全没有可用的约束求解器。
|
||||
|
||||
**VDE 方案**:
|
||||
- 实现几何约束图(点约束、线约束、圆约束)
|
||||
- 支持约束类型:水平/垂直/平行/垂直/相切/同心/等长/共线/对称/固定/标注
|
||||
- 基于牛顿-拉夫逊迭代的数值求解
|
||||
- 欠约束 → 自动推理自由度;过约束 → 冲突检测
|
||||
|
||||
**竞争力**:这将成为 VDE 的护城河——任何需要 2D 草图建模的应用都必须用它。
|
||||
|
||||
### 3.2 DF-07:SDF 隐式建模 ⭐⭐⭐
|
||||
|
||||
**竞品现状**:SDF(Signed Distance Field)建模在 Houdini、Blender 几何节点中流行,但没有一个 C++ 库提供原生支持。
|
||||
|
||||
**VDE 方案**:
|
||||
- 基本体 SDF(球/盒/柱/锥/环/平面)
|
||||
- SDF 布尔运算(光滑并/交/差)
|
||||
- SDF 变形(扭曲、弯曲、拉伸、沿路径变形)
|
||||
- SDF → 网格转换(Marching Cubes,自适应)
|
||||
- SDF 混合(光滑过渡、形态变化)
|
||||
|
||||
**竞争力**:这打开了程序化建模和有机形态生成的市场,CGAL 和 OCCT 完全不碰这个领域。
|
||||
|
||||
### 3.3 DF-09:可微分几何 ⭐⭐
|
||||
|
||||
**竞品现状**:MIT 的 `redner` 和 NVIDIA 的 `kaolin` 有可微渲染,但无可微分几何计算库。
|
||||
|
||||
**VDE 方案**:
|
||||
- 距离计算的反向传播梯度
|
||||
- 碰撞检测的灵敏度分析("如果我移动这个面 0.1mm,碰撞距离会变化多少?")
|
||||
- 布尔运算结果对输入参数的导数
|
||||
|
||||
**竞争力**:直接切入 AI+CAD 交叉领域,PTC 的 Creo 已经在做"生成式设计",但底层没有开源的可微分引擎。
|
||||
|
||||
### 3.4 DF-03:不可变几何 + 惰性求值管线 ⭐⭐
|
||||
|
||||
**竞品现状**:所有引擎都是"命令式"的——修改几何直接改变状态,导致很难做撤销/重做、并行化、缓存。
|
||||
|
||||
**VDE 方案**:
|
||||
```cpp
|
||||
// 惰性管线:操作不立即执行,而是构建计算图
|
||||
auto mesh = load_mesh("input.obj");
|
||||
auto simplified = mesh | simplify(0.5) | smooth(10);
|
||||
// 此时还未计算——直到调用 .evaluate()
|
||||
auto result = simplified.evaluate();
|
||||
// 计算图可缓存、可序列化、可并行执行
|
||||
```
|
||||
|
||||
**竞争力**:类似 TensorFlow 对数值计算的革命——几何计算也可以有计算图。
|
||||
|
||||
### 3.5 DF-02:Python 原生绑定 ⭐
|
||||
|
||||
**竞品现状**:CGAL 的 Python 绑定通过 SWIG 生成,OCCT 通过 pythonOCC,都很笨重。libigl 相对简洁但功能有限。
|
||||
|
||||
**VDE 方案**:pybind11 直接绑定,零额外依赖,pip install 即可用。
|
||||
|
||||
### 3.6 其他差异化功能
|
||||
|
||||
| 功能 | 价值 | 复杂度 |
|
||||
|------|------|--------|
|
||||
| DF-04 二进制序列化 | 比 OBJ/STL 快 10x 加载 | ⭐ |
|
||||
| DF-05 内置性能分析 | 开发者不用外部 profiler | ⭐ |
|
||||
| DF-06 WASM 编译 | 浏览器里跑几何引擎 | ⭐⭐ |
|
||||
| DF-10 自动 LOD 链 | 游戏/VR 必需 | ⭐⭐ |
|
||||
| DF-11 增量计算 | 大型模型修改后快速重新计算 | ⭐⭐ |
|
||||
| DF-12 GPU 加速 | BVH 遍历 10-100x 加速 | ⭐⭐⭐ |
|
||||
| DF-13 实时碰撞 | 游戏/仿真场景的持续碰撞检测 | ⭐⭐ |
|
||||
| DF-14 宏录制 | 调试/测试/复现几何 bug | ⭐ |
|
||||
|
||||
---
|
||||
|
||||
## 4. 实施优先级
|
||||
|
||||
| 阶段 | 功能 | 理由 |
|
||||
|------|------|------|
|
||||
| **v0.5.0** | DF-02 Python 绑定 + DF-04 二进制序列化 + DF-05 内置基准 | 立即可做,见效快 |
|
||||
| **v1.0.0** | DF-03 惰性管线 + DF-11 增量计算 | 架构级改进 |
|
||||
| **v1.5.0** | DF-07 SDF 隐式建模 + DF-10 自动 LOD | 打开新市场 |
|
||||
| **v2.0.0** | DF-08 约束求解器 + DF-09 可微分几何 | 护城河 |
|
||||
| **v2.5.0** | DF-06 WASM + DF-12 GPU 加速 + DF-13 实时碰撞 + DF-14 宏录制 | 全覆盖 |
|
||||
Reference in New Issue
Block a user