本文将对几何内核涉及的专业术语,设计理念,应用领域,以及现状做进一步的介绍。
-------------------------------------------
计算机中表示三维形体的模型,按照几何特点进行分类,大体上可以分为三种:线框模型、表面模型和实体模型。如果按照表示物体的方法进行分类,实体模型基本上可以分为分解表示、构造表示CSG(Constructive Solid Geometry)和边界表示BREP(Boundary Representation)三大类。主流几何内核的做法是底层使用BREP结构,把CSG作为操作BREP结构的管理方法。
-------------------------------------------
在内核里,按照使用目的我们一般把数据分为两类:
几何和拓扑
“几何”描述的是具体位置和形状,“拓扑”描述的是位置关系。
“几何”比较容易理解,就是我们通常所说的点,线,面,体。线又可以分为直线,线段,圆,圆弧,Nurbs曲线,贝赛尔曲线等各种线,面也类似可以分为平面,非参数曲面,参数方程定义的曲面等。而体则定义了各种实体,长方体,圆柱,球,圆环,组合体等
为什么要有“拓扑”的概念?
其实很好理解,举个例子:
一条线段有两个顶点,当我们只知道其中一点的坐标数据时,希望得到该点在哪条线段上。如果没有拓扑信息,简单的办法就是全局计算遍历一遍,缺点显而易见;如果有拓扑信息,记录了该点的拓扑信息,即该点的上层拓扑直线,我们直接拿点的拓扑信息就可以了。
“拓扑”这种记录位置关系或者对象关系的数据结构在三维几何计算中非常有用,是一种基础数据结构。
ACIS/PS中的拓扑
OCC中的拓扑
三维里没有“三维”
Boundary Representation(BRep),边界表示方法是目前主流的几何内核ACIS/OCC/PS使用的方法,主要原因是这种几何表示方法比较直观,简单,通用,适合大部分几何造型以及建模需求。
在该方法中,虽然拓扑上定义有“体”, 但实际上体也是由面来表示,比如一个长方体,由六个面构成,而体的内部是空的。如下图
有朋友可能会问:如果我想得到体里面的数据怎么办?
三种方法:
- 切开实体,生成两个新的实体,如上图重新构建新的基于BRep的长方体;当然这个过程在软件中是“原子操作”,一步完成,也就是说用户感觉不到体内的空洞存在。
- 在有限元方法中,我们有形函数,利用形函数可以得到体积内任意一点的信息,当然这只适用于比较规则的几何体。
- 类似于体渲染的切片技术。在CT扫描中,CT会生成多幅图像,然后根据图像进行三维重建,重建后就可以得到任意位置的信息,这是目前比较成熟的技术。医疗,地质,探伤等领域会普遍用到三维重建的切片技术。
对于几何来说,BREP是万能的吗?
当然不是。
在很多领域,基于BRep的几何内核派不上用场。比如医疗行业,人的各种器官都是非常不规则的几何体,只能通过表面的三维细化面片重建。而基于BRep的拓扑几何结构过于重量化,海量的三角面片如果使用BRep,性能会非常差。
在CFD仿真中,大部分的模型都是基于面片数据,比如STL数据格式,而很少使用SAT,X_T,STEP等格式,即使使用了这些格式,最后也只是拿三角化后的数据。
在很多专业设计领域,比如需要很多流线型的曲面曲线非等值面设计,基本都会使用专业的设计方法和工具,而不会使用BREP结构。
对于一些复杂的数学方程和公式定义的异形几何,BREP也无能为力。
为什么几何内核是工业仿真软件的基础之一
在 一些常用软件的几何内核(点击链接查看) 一文中,我们看到几乎所有的CAD/CAE/EDA/CFD建模仿真软件都会使用PS或ACIS两种内核。
其实原因也很简单,工业仿真软件最大的几个特点:稳定性,可靠性,性能,以及兼容性! ACIS/PS的底层应用非常成熟,基于ACIS/PS的不同程序之间可以直接无损交换数据。
虽然我们可以看到ACIS/PS每年都在更新,但实际上底层的结构还是几十年前的,不曾动过,现在的更新更多的是上层应用以及来自客户新需求。
有人会问:为什么不能超越ACIS/PS?
其实这种问题就类似于:为什么不能发明一种新的键盘?
不是不能超越ACIS/PS,而是超越的成本太高,而且这种成本并不是单指通过砸钱,很多有用的实际功能都来自于工程实践和用户迭代,这些都被封装了起来。
之前就说过:对于长期从事工业仿真软件研发的企业来说,几何内核的研发是必要的,但是不需要做类似ACIS/PS通用的几何内核,而是要做针对自己行业的,针对业务流程的轻量级的几何内核。使用商业内核的绝大部分企业都只使用了其中非常小的一部分功能(可能10%都不到),却要支付高昂的license费用。
几何内核现状
发展到今天,几何内核和其它工业软件基础技术一样,技术上并没有太大的突破。主要是来自客户的需求以及应用层面的改进。
其实除了大家耳熟能详的ACIS/PS/OCC等几何内核,市场上还有许多做内核的小公司和企业,只不过名声不大。笔者接触过的至少就有7,8家。有些确实做的不错,有的有不少亮点。
相比于单纯的三维CAD设计建模,工业仿真软件对几何内核有更高的要求。以后几何内核的发展更多的源自于上层应用需求,比如CAD/Mesh无缝结合,性能持续改进,直接介入用户业务等等。