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