10.OCCT是什么

OCCT 是什么,串联整套知识

OCCT 全称 OpenCASCADE Technology,开源三维几何建模内核(几何引擎),C++库。 一句话定位:专门管「CAD几何数学、B‑Rep实体」的库,它不负责把东西画到屏幕上,只管计算几何。

前面我们整条链路:STEP文件、B‑rep拓扑、布尔运算、STEP导入修复、网格化,全部都是OCCT的职责。 OpenGL/VTK 只管渲染显示,完全不懂B‑rep几何逻辑。

OCCT核心能干什么

1. 文件读写

读取/输出 STEP、IGES。 解析STEP,在内存构建出完整B‑Rep实体(体Solid、面Face、边Edge、顶点Vertex整套拓扑+几何曲面)。

STEP只是磁盘上的文本文件,OCCT把它翻译成内存里可以运算的B‑Rep数据结构。

2. 几何建模(B‑Rep操作)

  • 基础体生成:立方体、圆柱、球体
  • 布尔运算:并、交、差(挖槽、合并零件)
  • 倒角、圆角、拉伸、旋转、放样
  • 拓扑修改:删除面、分割实体

3. 几何修复 & 容差处理

就是我们聊STEP精度时说的: STEP导入经常出现缝隙、重叠边、非流形拓扑。 OCCT提供一整套API:检查拓扑、修复缝隙、调整容差,把坏掉的B‑Rep尽量修复成合法实体。

修复是OCCT做的,VTK、OpenGL完全没有这个能力。

4. 网格化(Tessellation,离散)

B‑Rep是精确曲面,GPU不能直接渲染。 OCCT可以把一张张曲面Face,离散成一堆三角形面片。 输出三角顶点、索引。

这个网格化输出的三角数据,才是喂给VTK的输入。

5. 几何计算

计算两点距离、曲面求交、投影点到面上、测量面积体积、获取边的曲率等等。

OCCT 不能干什么(非常关键,很多人踩坑)

  1. ❌没有窗口,不能渲染、不能显示模型。OCCT算完B‑Rep,自己没有办法把模型画到屏幕。
  2. ❌没有鼠标交互、没有拾取、没有相机旋转缩放。
  3. ❌不做仿真,不做云图。

OCCT只产出数据:B‑Rep实体、或者网格化后的三角面片。显示交给别的组件。

OCCT、VTK、OpenGL 完整层级关系

你的工业软件应用
      ↓
┌──────────┐          ┌──────────┐
│  OCCT    │          │   VTK    │
│几何内核  │◄───────►│可视化库  │
│STEP/BRep │ 三角面片 │渲染交互 │
│布尔/修复 │ 输出数据 │拾取相机 │
└──────────┘          └──────────┘
                              ↓
                          OpenGL
                              ↓
                            GPU显卡

数据流完整走一遍,把全部知识点串起来:

  1. 磁盘读取.stp文件 → OCCT解析STEP,内存生成B‑Rep实体

  2. OCCT做拓扑检查、容差修复,解决STEP带来缝隙、非流形问题

  3. 业务做建模操作:布尔、倒角(全部OCCT计算B‑Rep)

  4. 需要显示:调用OCCT网格化接口,把B‑Rep各个Face离散成三角面片

    同时我们自己维护一张映射表:三角ID ↔ 原始B‑Rep Face/Edge

  5. 将三角面片数据交给VTK,构建vtkPolyData、Actor

  6. VTK内部调用OpenGL,把三角形下发GPU,屏幕渲染出画面

  7. 用户鼠标点击:VTK拾取,得到cellId三角单元ID

  8. 拿着cellId查映射表,反向拿回OCCT原始B‑Rep面/边,然后继续调用OCCT接口做建模操作。

重点:屏幕看到的三角只是“显示副本”;真正权威、可以用来建模计算的数据,永远是OCCT内存里那份B‑Rep。

两个极易混淆的误区

误区1:“OCCT可以渲染,那我就不用VTK了”

OCCT自带一套简单的渲染模块(TKOpenGl)。 它底层也是封装OpenGL。 但它的渲染模块能力弱:剖切、透明、大装配性能、拾取扩展都不如VTK。 工业软件两种技术路线:

  1. OCCT(几何) + VTK(可视化):最主流,几何和渲染彻底解耦,灵活。
  2. OCCT自带TKOpenGl渲染器:少引入第三方库,但是可视化能力受限。

误区2:VTK读取STEP文件

VTK完全读不了STEP。 必须OCCT先解析STEP,输出三角网格,再传给VTK。VTK从头到尾看不到B‑Rep。

一张对比总表

库 角色 处理的数据 运行位置 核心产出
OCCT 几何建模内核 B‑Rep实体、曲面拓扑 CPU 实体、面、边、顶点;三角面片
VTK 可视化渲染库 三角网格PolyData、体数据 CPU+GPU 三维场景、交互拾取
OpenGL 显卡底层API 顶点、索引、着色器 GPU 像素画面输出到屏幕

举一个现实业务例子帮助理解

比如你软件里做一个“给零件做倒角”操作:

  1. 鼠标在视图上点击零件的一条边。
  2. VTK拾取得到三角cellId,查表映射回OCCT的Edge(原始拓扑边)。
  3. 交给OCCT执行倒角算法,修改内存中的B‑Rep实体。
  4. B‑Rep被修改后,旧的三角网格作废。
  5. OCCT重新网格化,生成新一批三角面片。
  6. 更新VTK的数据,屏幕刷新看到倒角之后的模型。

倒角这个计算,VTK完全没有参与。VTK只负责把OCCT算完的新结果画出来。


posted @ 2026-08-20 09:23  Drunker•L  阅读(36)  评论(0)    收藏  举报