283 lines
9.8 KiB
Markdown
283 lines
9.8 KiB
Markdown
# 市场调研与竞品分析
|
||
|
||
## 目录
|
||
|
||
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 的市场定位。
|