Files
ViewDesignEngine/docs/01-需求分析/01-市场调研与竞品分析.md
T

283 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 市场调研与竞品分析
## 目录
1. [主流几何引擎概览](#1-主流几何引擎概览)
- 1.1 CGAL
- 1.2 Open CASCADE (OCCT)
- 1.3 libigl
- 1.4 Clipper2
- 1.5 Manifold
- 1.6 GEOS
- 1.7 其他重要竞品
2. [功能矩阵对比](#2-功能矩阵对比)
3. [市场空白与定位](#3-市场空白与定位)
4. [对标策略](#4-对标策略)
5. [结论](#5-结论)
---
## 1. 主流几何引擎概览
### 1.1 CGAL — 计算几何算法库
| 维度 | 详情 |
|------|------|
| **定位** | 学术界黄金标准,最全面的计算几何算法库 |
| **语言** | C++(核心)+ Python 绑定 |
| **许可证** | GPLv3+ / 商业双许可 |
| **历史** | 1996 年至今,28 年 |
| **规模** | 160+ 个 Package,数百万行代码 |
| **依赖** | Boost, GMP/MPFR |
| **维护方** | GeometryFactory(法国)+ 学术社区 |
**核心模块**
- 2D/3D 几何内核(笛卡尔坐标、齐次坐标、球面坐标)
- 2D 排列(Arrangement)、多边形布尔运算
- 3D 多面体、Nef 多面体(精确布尔)
- 网格生成(2D/3D Delaunay、曲面网格)
- 网格处理(简化、重网格化、孔洞填充)
- AABB Tree / KD-Tree 空间索引
- NURBS 曲线曲面
- 凸包、Voronoi 图、Alpha Shapes
- 点集处理(配准、重建、分类)
**优势**:算法最全、精确计算(GMP)、学术严谨
**劣势**:GPL 许可证限制商业闭源;API 模板重、编译极慢;学习曲线陡峭
---
### 1.2 Open CASCADE Technology (OCCT)
| 维度 | 详情 |
|------|------|
| **定位** | 工业级 CAD 建模内核,全球唯一开源工业 CAD 内核 |
| **语言** | C++ |
| **许可证** | LGPL 2.1 |
| **历史** | 1990 年代至今,30+ 年 |
| **规模** | 数千万行代码 |
| **维护方** | Open Cascade SAS(法国) |
**核心模块**
- **基础类**:数学工具、内存管理、异常处理
- **建模数据**:几何体(点/线/面/体)、拓扑(B-Rep)
- **建模算法**:布尔运算、倒角、抽壳、扫掠、放样
- **可视化**OpenGL 渲染
- **数据交换**STEP, IGES, STL, VRML, glTF, OBJ, XDE
- **应用框架**:文档管理、撤销/重做
**优势**:完整 B-Rep 支持、工业级健壮性、STEP/IGES 数据交换、LGPL 友好
**劣势**:极其庞大(数百万行)、API 老旧(非现代 C++)、编译困难
---
### 1.3 libigl — 轻量几何处理库
| 维度 | 详情 |
|------|------|
| **定位** | 学术研究用轻量网格处理库 |
| **语言** | C++(以 Header-only 为主)+ Python 绑定 |
| **许可证** | MPL 2.0(商业友好) |
| **历史** | 2013 年至今 |
| **维护方** | Alec Jacobson(多伦多大学)+ 社区 |
**核心功能**
- 网格读写(OBJ, STL, PLY, OFF 等)
- 网格布尔运算(依赖 CGAL 或 Cork)
- 网格简化、平滑、参数化
- 离散微分几何(曲率、测地线、Laplacian)
- 变形(ARAP、双调和、LBS
- 体素化、Marching Cubes
- 四面体化(依赖 TetGen
- 可视化(基于 ImGui
**优势**:代码简洁、Header-only、教程丰富、MPL 许可证
**劣势**:功能深度不足、强依赖外部库、不适用工业级精度
---
### 1.4 Clipper2 — 2D 多边形裁剪
| 维度 | 详情 |
|------|------|
| **定位** | 2D 多边形布尔运算的事实标准 |
| **语言** | C++, C#, Delphi, Python 绑定 |
| **许可证** | Boost Software License |
| **算法** | Vatti 扫描线算法 |
**核心功能**
- 多边形布尔运算(并集、交集、差集、异或)
- 多边形偏移(膨胀/腐蚀)
- 支持任意多边形(含孔洞、自交)
- 整数坐标(64-bit),无浮点精度问题
**优势**:极快、极其健壮、许可证最自由
**劣势**:仅 2D、无 3D 能力
---
### 1.5 Manifold — 3D 网格布尔
| 维度 | 详情 |
|------|------|
| **定位** | 最快的 3D 网格布尔运算库 |
| **语言** | C++C 绑定),WASM/JS/Python 绑定 |
| **许可证** | Apache 2.0 |
| **算法** | 基于精确算术 + 鲁棒拓扑 |
**核心功能**
- 网格布尔运算(并集、交集、差集)
- 网格修复(水密化)
- 体素化
- 极高性能(比 CGAL/Cork 快 10-100 倍)
**优势**:极快、鲁棒、Apache 2.0 许可证
**劣势**:功能单一(仅网格布尔)、无曲线曲面
---
### 1.6 GEOS — 开源几何引擎
| 维度 | 详情 |
|------|------|
| **定位** | GIS 领域的 2D 几何引擎 |
| **语言** | C++(核心)+ C API |
| **许可证** | LGPL |
| **应用** | PostGIS、QGIS、Shapely 的底层引擎 |
**核心功能**
- OGC 简单要素标准实现
- 2D 空间谓词(包含、相交、相切等)
- 空间操作(缓冲区、并集、交集、凸包)
- WKT/WKB 格式
- 空间索引(STRtree
**优势**GIS 标准、生态成熟、久经考验
**劣势**:仅 2D、无 CAD 建模能力
---
### 1.7 其他重要竞品
| 库 | 定位 | 许可证 | 关键功能 |
|----|------|--------|---------|
| **Eigen** | C++ 线性代数 | MPL 2.0 | 矩阵/向量运算、几何变换、数值求解 |
| **Cork** | 网格布尔 | LGPL | 3D 网格布尔运算 |
| **Carve** | CSG 引擎 | GPLv2 | 快速 CSG 布尔运算 |
| **TetGen** | 四面体网格生成 | AGPLv3 | 约束 Delaunay 四面体化 |
| **Triangle** | 2D 三角剖分 | 自由(非商业) | 约束 Delaunay 三角剖分 |
| **PCL** | 点云处理 | BSD | 点云滤波、配准、分割、重建 |
| **VTK** | 可视化 | BSD | 科学可视化、网格处理 |
---
## 2. 功能矩阵对比
| 功能领域 | CGAL | OCCT | libigl | Clipper2 | Manifold | GEOS | **VDE 目标** |
|---------|------|------|--------|----------|----------|------|------------|
| 基本几何类型 | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
| 2D 布尔运算 | ✅ | ✅ | ❌ | ✅🏆 | ❌ | ✅ | ✅ |
| 3D 网格布尔 | ✅ | ✅ | 🔗CGAL | ❌ | ✅🏆 | ❌ | ✅ |
| B-Rep 布尔 | ❌ | ✅🏆 | ❌ | ❌ | ❌ | ❌ | 🔜 |
| NURBS 曲线 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| NURBS 曲面 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| 网格简化 | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| 网格平滑 | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ |
| Delaunay 2D | ✅🏆 | ✅ | 🔗 | ❌ | ❌ | ✅ | ✅ |
| 凸包 2D/3D | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
| BVH 空间索引 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| GJK 碰撞检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| 射线相交 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| STEP 导入 | ❌ | ✅🏆 | ❌ | ❌ | ❌ | ❌ | 🔜 |
| 精确谓词 | ✅🏆 | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
| 现代 C++ (17+) | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅🏆 |
| 许可证 | GPL/商 | LGPL | MPL | Boost | Apache | LGPL | **Apache 2.0** |
> 图例:✅ 支持 🔗 依赖外部 🔜 规划中 ❌ 不支持 🏆 最强
---
## 3. 市场空白与定位
### 3.1 现有引擎的痛点
| 痛点 | 说明 |
|------|------|
| **CGAL 许可证** | GPLv3 限制商业闭源使用,商业许可昂贵(€10k+) |
| **CGAL 编译** | Boost 依赖 + 模板膨胀 → 编译时间以分钟计 |
| **OCCT 体积** | 数百万行代码,学习周期以月计 |
| **OCCT API** | 非现代 C++API 设计陈旧 |
| **libigl 深度** | 功能浅,依赖链复杂,缺乏自身核心算法 |
| **各库割裂** | 需要曲线 + 需要网格布尔 + 需要碰撞检测 → 分别引入三个库 |
### 3.2 差异化定位
```
┌─ 工业深度 ─┐
│ OCCT │
│ │
算法广度 ←── CGAL ──→ │ ★ VDE ★ │ ←── 现代 C++
│ │ Apache 2.0
│ Manifold │
└────────────┘
Clipper2 | libigl
```
VDE 的核心特征:
1. **Apache 2.0 许可证** — 商业友好,无 GPL 传染
2. **现代 C++17** — 清晰 API,零 Boost 依赖(仅 Eigen
3. **一站式覆盖** — CAD 建模 + 网格处理 + 碰撞检测在同一库中
4. **编译友好** — 数分钟级全量编译,非小时级
5. **中等规模** — 目标 10-20 万行,不像 CGAL/OCCT 百万行级别
### 3.3 目标用户
- 自研 CAD/CAM 软件,需要底层几何内核但不想被 GPL 限制
- 机器人/自动驾驶仿真,需要碰撞检测 + 网格处理
- 3D 打印切片软件,需要网格布尔 + 修复
- 游戏引擎编辑器,需要几何操作
---
## 4. 对标策略
### 4.1 V1.0 目标(当前)
对标 **CGAL 核心 Package + Clipper2 + Manifold 三者交集**
| 功能 | 对标库 | 当前状态 |
|------|--------|---------|
| 基本几何 + 变换 | CGAL Kernel | ✅ 已实现 |
| 精确谓词 | CGAL Exact Predicates | ✅ 基础版 |
| 2D Delaunay | CGAL 2D Triangulation | ✅ 已实现 |
| 2D 布尔 | Clipper2 | ✅ S-H 裁剪 |
| BVH 空间索引 | CGAL AABB Tree | ✅ SAH 构建 |
| GJK 碰撞检测 | — | ✅ 已实现 |
| NURBS 曲线 | CGAL NURBS | ✅ 已实现 |
| 半边网格 | CGAL Polyhedron | ✅ 已实现 |
### 4.2 V1.5 规划
| 功能 | 对标库 | 实现方法 |
|------|--------|---------|
| 网格布尔 | Manifold | 自研精确拓扑算法 |
| QEM 网格简化 | CGAL Surface Mesh Simplification | 自研 |
| 3D Delaunay | CGAL 3D Triangulation | 自研 |
| Laplacian 平滑 | libigl | 自研 |
### 4.3 V2.0 愿景
| 功能 | 对标库 |
|------|--------|
| B-Rep 布尔 | OCCT Modeling Algorithms |
| 倒角/抽壳 | OCCT |
| STEP 导入 | OCCT Data Exchange |
| 参数化 | libigl |
| 四面体化 | TetGen |
---
## 5. 结论
当前 CAD 几何引擎市场呈现"两极分化":一端是 CGAL(学术全面但 GPL)和 OCCT(工业强大但笨重),另一端是各垂直工具(Clipper2、Manifold 等)。**缺少一个 Apache 2.0 许可证、现代 C++、一站式覆盖 CAD+Mesh+Collision 的中等规模几何引擎**——这正是 ViewDesignEngine 的市场定位。