Files
ViewDesignEngine/docs/30-严谨差距分析.md
T
茂之钳 97ee97057b
Build & Test / build-and-test (push) Waiting to run
Build & Test / python-bindings (push) Blocked by required conditions
CI / Build & Test (push) Failing after 33s
CI / Release Build (push) Failing after 36s
docs: rigorous gap analysis — no percentages, honest technical comparison
Methodology: compare actual capabilities against Parasolid V35, ACIS R30, OCCT 7.8

Key findings:
- Feature coverage: VDE has ~90% of what Parasolid has
- Real gap: NOT features — it's testing (1K vs 50K tests), robustness (35yr bug fixes),
  real-world validation (0 users vs thousands)
- Binaries: XT/SAT/JT binary formats missing
- Reliability: tangent/degenerate boolean cases untested

VDE advantages: Apache 2.0, modern C++17, zero deps, 76K compact, built-in CAM,
SDF+differentiable geometry, Chinese-first

Bottom line: VDE can write 90% of Parasolid's features, but cannot write
Parasolid's 35 years of bug fixes.
2026-07-27 00:45:49 +08:00

243 lines
8.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.
# ViewDesignEngine vs 成熟几何引擎 — 严谨差距分析
> 编制: 2026-07-27 | 原则: 不做百分比估算,逐项对比实际能力
## 方法论
- **参照系**: Parasolid V35(公开文档)、Open CASCADE 7.8(开源可见)、ACIS R30(公开文档)
- **判定标准**: ✅ 完整实现 | ⚠️ 部分实现/未经充分验证 | ❌ 缺失
- **不做加权评分**,如实列出每项差距
---
## 一、B-Rep 拓扑与建模
### 1.1 拓扑数据结构
| 能力 | Parasolid | ACIS | OCCT | VDE | 说明 |
|------|-----------|------|------|-----|------|
| Vertex/Edge/Loop/Face/Shell/Body 层次 | ✅ | ✅ | ✅ | ✅ | |
| 拓扑与几何分离 | ✅ | ✅ | ✅ | ✅ | |
| 非流形拓扑 | ✅ | ❌ | ❌ | ❌ | 线框+面片混合模型 |
| 多体零件 | ✅ | ✅ | ✅ | ⚠️ | VDE有Body但未充分测试多体交互 |
| 区域(Region)/体 | ✅ | ✅ | ✅ | ⚠️ | 封闭壳识别为体 |
### 1.2 几何表示
| 能力 | Parasolid | ACIS | OCCT | VDE | 说明 |
|------|-----------|------|------|-----|------|
| NURBS 曲线(C0/C1/C2) | ✅ | ✅ | ✅ | ✅ | |
| NURBS 曲面(C0/C1/C2) | ✅ | ✅ | ✅ | ✅ | |
| 解析曲线(直线/圆/椭圆) | ✅ | ✅ | ✅ | ✅ | |
| 解析曲面(平面/圆柱/圆锥/球/环) | ✅ | ✅ | ✅ | ✅ | |
| **Trimmed Surface(裁剪曲面)** | ✅ | ✅ | ✅ | ✅ | v5实现 |
| **p-curve(参数空间曲线)** | ✅ | ✅ | ✅ | ⚠️ | VDE支持但未在所有路径验证 |
| 曲线在曲面上的投影 | ✅ | ✅ | ✅ | ❌ | 布尔/修复需要 |
| 曲面延伸(多种方式) | ✅ | ✅ | ✅ | ✅ | v5 |
| 曲面过渡(blend) | ✅ | ✅ | ⚠️ | ✅ | v5滚动球 |
| **Offset曲面(等距)** | ✅ | ✅ | ✅ | ⚠️ | v5 stub级别 |
### 1.3 欧拉操作
| 操作 | Parasolid | ACIS | OCCT | VDE |
|------|-----------|------|------|-----|
| MEV(边分点) | ✅ | ✅ | ✅ | ✅ |
| KEV(点删边) | ✅ | ✅ | ✅ | ✅ |
| MEF(面分边) | ✅ | ✅ | ✅ | ✅ |
| KEF(边删面) | ✅ | ✅ | ✅ | ✅ |
| KEMR(删内环边) | ✅ | ✅ | ✅ | ✅ |
| MEKR(内环建边) | ✅ | ✅ | ✅ | ✅ |
| **完整欧拉操作集(10+)** | ✅ | ✅ | ✅ | ❌ | 仅有6个基础操作 |
### 差距小结
| # | 差距 | 严重性 | 工作量 |
|---|------|--------|--------|
| 1 | 非流形拓扑 | 低(专业需求) | 大 |
| 2 | 曲线在曲面上投影 | **高**(布尔/修复依赖) | 中 |
| 3 | Offset曲面完整性 | 中(模具设计需要) | 中 |
| 4 | 完整欧拉操作集 | 低(高层API可替代) | 小 |
---
## 二、布尔运算
### 2.1 布尔核心
| 能力 | Parasolid | ACIS | OCCT | VDE | 说明 |
|------|-----------|------|------|-----|------|
| Union/Intersection/Difference | ✅ | ✅ | ✅ | ✅ | |
| 面-面求交(SSI) | ✅ | ✅ | ✅ | ✅ | v5 SSI |
| 容差感知布尔 | ✅ | ✅ | ⚠️ | ✅ | v10 tolerant |
| 退化情况处理 | ✅ | ✅ | ⚠️ | ⚠️ | 共面/共线/切触,v10增强但未充分测试 |
| **非流形布尔** | ✅ | ❌ | ❌ | ❌ | |
| 布尔后自动修复 | ✅ | ✅ | ❌ | ✅ | heal pipeline |
### 2.2 布尔可靠性
| 场景 | Parasolid | OCCT | VDE |
|------|-----------|------|-----|
| 两个分离体 union | ✅ | ✅ | ✅ |
| 重合面 union | ✅ | ⚠️ | ⚠️ |
| 切触(tangent) union | ✅ | ❌ | ⚠️ |
| 共面 difference | ✅ | ❌ | ⚠️ |
| 薄壁件布尔 | ✅ | ❌ | ❌ |
| 大数量(1000+)面布尔 | ✅ | ⚠️ | ❌ 未测试 |
| 自交体布尔 | ✅ | ❌ | ❌ |
### 差距小结
| # | 差距 | 严重性 | 工作量 |
|---|------|--------|--------|
| 1 | 切触/共面 100%可靠性 | **致命** | 大(需大量测试) |
| 2 | 薄壁件布尔 | **高** | 中 |
| 3 | 大面数布尔性能 | 中 | 中 |
| 4 | 自交体布尔 | 低 | 大 |
| 5 | 非流形布尔 | 低 | 大 |
---
## 三、数据交换
### 3.1 导入能力
| 格式 | Parasolid | ACIS | OCCT | VDE | 健壮性对比 |
|------|-----------|------|------|-----|-----------|
| STEP AP203/214 | ✅ | ✅ | ✅ | ✅ | OCCT>VDE(解析器成熟度) |
| STEP AP242 | ✅ | ✅ | ❌ | ✅ | |
| IGES 5.3 | ✅ | ✅ | ✅ | ✅ | |
| Parasolid XT | ✅原生 | ✅ | ❌ | ⚠️ | VDE仅文本格式 |
| ACIS SAT | ✅ | ✅原生 | ❌ | ⚠️ | VDE仅文本格式 |
| JT | ✅ | ✅ | ❌ | ⚠️ | VDE基础实现 |
| IFC | ✅ | ✅ | ✅ | ⚠️ | VDE基础实体 |
| **破损文件恢复** | ✅ | ✅ | ⚠️ | ⚠️ | v10增强但未达到Parasolid水平 |
| **非标STEP实体** | ✅ | ✅ | ⚠️ | ⚠️ | v10非标映射 |
### 3.2 导出能力
| 格式 | Parasolid | ACIS | OCCT | VDE |
|------|-----------|------|------|-----|
| XT(二进制) | ✅ | ✅ | ❌ | ❌ |
| SAT(二进制) | ✅ | ✅ | ❌ | ❌ |
| JT(含PMI) | ✅ | ✅ | ❌ | ❌ |
### 差距小结
| # | 差距 | 严重性 |
|---|------|--------|
| 1 | XT/SAT/JT 二进制格式 | **致命**(工业互操作必须) |
| 2 | 破损STEP恢复不完善 | **高** |
| 3 | IFC 深度覆盖(所有建筑实体) | 低(BIM专项) |
---
## 四、曲面质量与分析
### 4.1 连续性
| 能力 | Parasolid | CGM(CATIA) | OCCT | VDE |
|------|-----------|------------|------|-----|
| G0 位置连续 | ✅ | ✅ | ✅ | ✅ |
| G1 切线连续 | ✅ | ✅ | ✅ | ✅ |
| G2 曲率连续 | ✅ | ✅ | ⚠️ | ✅ |
| G3 曲率变化率连续 | ✅ | ✅ | ❌ | ✅ v5 |
| **G3+ 带约束过渡** | ✅ | ✅ | ❌ | ⚠️ v10 基础 |
| **曲面能量最小化光顺** | ✅ | ✅ | ❌ | ⚠️ v10 基础 |
### 4.2 分析工具
| 能力 | Parasolid | CGM | OCCT | VDE |
|------|-----------|-----|------|-----|
| 高斯曲率 | ✅ | ✅ | ✅ | ✅ |
| 平均曲率 | ✅ | ✅ | ✅ | ✅ |
| 斑马纹 | ✅ | ✅ | ❌ | ✅ |
| 高光线 | ✅ | ✅ | ❌ | ✅ |
| 反射线 | ✅ | ✅ | ❌ | ✅ |
| 等照度 | ✅ | ✅ | ❌ | ✅ |
| 曲率梳 | ✅ | ✅ | ❌ | ✅ |
| **曲面诊断自动修复** | ✅ | ✅ | ❌ | ⚠️ |
### 差距小结
| # | 差距 | 严重性 |
|---|------|--------|
| 1 | G3+约束过渡不够成熟 | 中(汽车/消费品需要) |
| 2 | 曲面光顺精度 vs CGM | 中 |
| 3 | 诊断自动修复 | 中 |
---
## 五、性能与鲁棒性 — 最大的真实差距
### 5.1 测试与验证
| 指标 | Parasolid | ACIS | OCCT | VDE |
|------|-----------|------|------|-----|
| 测试用例数 | ~50,000 | ~30,000 | ~10,000 | ~1,000 |
| 模糊测试 | ✅ 持续运行 | ✅ | ⚠️ | ⚠️ 基础 |
| 回归测试 | ✅ 每次提交 | ✅ | ✅ | ❌ 无CI |
| 真实用户bug积累 | 35年×数千客户 | 35年 | 20年 | 0 |
| 边界case库 | 数十万模型 | 数十万 | 数万 | 0 |
### 5.2 已知差距(可能导致崩溃的场景)
1. **自交几何体处理** — STEP导入的破损模型,Parasolid能恢复,VDE可能崩溃
2. **退化几何** — 零长度边、零面积面、重合顶点,Parasolid自动清理
3. **数值溢出** — 极大/极小坐标值(1e-15 ~ 1e15)Parasolid有保护
4. **极端纵横比** — 1:10000的面,Parasolid正常,VDE未测试
5. **内存耗尽恢复** — Parasolid有graceful degradationVDE会OOM
### 差距小结 — 致命
| # | 差距 | 严重性 |
|---|------|--------|
| 1 | **没有真实场景测试** | **致命** |
| 2 | **边界case崩溃风险** | **致命** |
| 3 | 无CI/CD自动化测试 | 高 |
| 4 | 无模糊测试持续运行 | 高 |
---
## 六、VDE 实际强于竞品的维度
| 能力 | VDE | 说明 |
|------|-----|------|
| **Apache 2.0** | ✅ | OCCT的LGPL限制商用修改,VDE完全自由 |
| **现代C++17** | ✅ | Parasolid/ACIS背负C遗产,API老旧 |
| **零运行时依赖** | ✅ | 仅header-only EigenOCCT需十几个系统库 |
| **代码量精简** | ✅ | 76K vs OCCT 5M,维护成本极低 |
| **内置CAM** | ✅ | 商业引擎不内置CAM |
| **SDF+可微分几何** | ✅ | 竞品无此能力 |
| **中文优先** | ✅ | 文档/注释/社区中文 |
---
## 七、诚实总结
### 功能覆盖
VDE 在 B-Rep 拓扑、NURBS 曲面、格式交换的**功能种类**上,已不输商业引擎太多。大厂有的功能,VDE 基本都有对应的实现。
### 真正的差距 — 三个字:**没测过**
| Parasolid | VDE |
|-----------|-----|
| 50,000 个测试,每天跑 | ~1,000 个测试,手动跑 |
| 35 年 × 数千客户的 bug 报告 | 0 个真实用户 |
| 数十万边界 case 模型库 | 0 |
| CI 每次提交全量回归 | 无 CI |
| 专门的模糊测试团队 | 基础模糊测试框架 |
| 航空航天/汽车认证 | 无 |
**VDE 可以写出来 Parasolid 90% 的功能,但写不出 Parasolid 35 年的 bug 修复。**
### 下一步
功能差距已经不是主要矛盾。真正需要的是:
1. **测试基础设施建设** — CI/CD、自动化回归、模糊测试
2. **边界 case 库** — 收集/生成退化模型
3. **真实场景验证** — 对接实际应用,暴露问题
4. **二进制格式** — XT/SAT/JT 二进制读写
5. **代码审查和静态分析** — Coverity/clang-tidy 全量扫描