深入剖析三维几何内核(7)--几何约束求解器
深入剖析三维几何内核(8)--属性关系计算
深入剖析三维几何内核(9)--算法杂项
本来打算在系列9中介绍属性关系等相关计算。
这一块其实也是三维几何内核的一个基础内容,它包括了线线, 线面,面面,线面实体的各种位置关系(重合,包含,干涉),相交(交点位置,个数),距离(最近点),这些内容是内核其它操作的基础(比如布尔加速运算中,要提前判断两物体是否相交,是否重合,重合的范围等等);
也是其它上层应用的基础:比如常用的鼠标捕捉拾取操作,基本原理是从鼠标点位置垂直视图创建一条射线,然后判断射线和视图内几何图元的相交情况。如果某图元在容差范围内和射线相交,则可认为被鼠标拾取,然后后续进行高亮等操作。
物体的长度,面积,体积,质心,截面各种惯性矩也是上层应用的基础数据内容:建筑工程中的算量,三维容器倒入液体后的容积刻度,有限元一维梁杆单元截面各种属性,0阶质点单元,CAM中数据加工,容差分析,物料系统都需要几何相关的属性数据。
在整理这块内容时,发现并没有太多技术瓶颈,或者比较难理解的概念性内容,都是数学计算公式以及积分,插值,迭代算法等一般的数值计算,本着一直去公式化科普的原则,就不展开介绍了,附录推荐相关的几本书。
简单分析一下几何内核未来的一些发展趋势,注意是几何内核
(CAD kernel),不是CAD软件:
几何内核发展到今天,其技术基础和市场环境都相对稳定。造成柯达,诺基亚等厂商没落的颠覆式技术出现的可能性非常小。翻阅ACIS/PS/OCC过去十年的release notes,从改进的数量,内容以及影响力看,就会发现,几乎都没有像样的功能大改进。其中PS提出的Convergent Modeling概念,从技术角度看只是BREP数据和面片数据的进一步融会贯通。而通常所说的Generative Design属于应用层面的内容,和几何内核没有直接关系。
1.提升性能。早期的内核数据结构设计并没有考虑到硬件的发展,默认按照当时的单CPU单核设计。而现在多CPU多核,分布式,GPU计算已经相当成熟。多线程已经在使用,但也只是基于一定接口使用,由于历史原因,这块商业和开源内核底层改进进度都比较缓慢。现在除了工业设计仿真软件外,很多业务场景对实时性都提出了很高要求,目前这一块几何内核还达不到要求。纵观近十年技术领域的发展,相比于人工智能,机器视觉,大数据,互联网的发展速度,几何内核的更新和发展速度可以算得上是龟速了。
2.进一步轻量化。PS提出的Convergent Modeling的初衷就在于高效的处理三维打印数据,因为三维打印数据为海量三角面片,用纯BREP结构表示性能低下。而CM正是通过简化BREP数据和操作,并融合面片数据,来处理这个矛盾。根据需求进一步简化或者轻量化数据结构,类似于“外科手术”式精准操作。
3.BREP增强。BREP是目前主流三维几何内核的基础数据结构,但这并不意味着BREP等于三维几何内核数据结构。就如同CAD不等于AutoCAD,CAE不等同于ANSYS。BREP的优缺点之前做过描述,参见深入剖析三维几何内核(3)--基础数据结构。BREP无法表达出三维几何内部的结构,如果要用BREP对内部数据进一步细化,需要将原有结构拆分,或者建立虚拟拓扑。而基于几何特征的一些算法(比如MAR中轴变换)或者类似体渲染的技术可以有效弥补这种不足。未来有可能将这些技术和方法融合到BREP结构中,在更小的维度实现对三维实体的控制。
4. 业务融合。利用商用内核开发通用CAD软件其实性价比已经非常低,风险也很大,除非能在应用层整出点花样出来。通用三维几何内核提供了丰富的功能,但一般的仿真软件实际上能用得上的只有一小部分,性价比很低。所以未来如果开发几何内核可以和业务融合,根据业务情况建立更符合实际的内核结构和功能。早期的CFD前处理软件就是一个很好的例子。因为CFD通常需要处理的是表面数据,所以不需要基于BREP的结构,一般的CFD前处理器会自己构建一套几何数据系统。
5.人工智能。几何内核在拓扑跟踪,特征模式识别,对象计算,参数建模,约束求解方面是有一定的固定模式的,AI是可以发挥作用的。
需要说明一个观点或认识:在欧美工业软件研发行业,有很多细分领域由某些小公司主导,这些小公司常年在某个领域耕耘,能提供更专业的组件和技术。被ANSYS以7.5亿美金收购的LSTC(核心产品LSDYNA)最多人数不过百人;而流固耦合做的好的ADINA公司人员在二三十人;被techsoft3d收购的VKI公司人员常年保持在个位数。而大厂一般因为性价比或者壁垒,不太愿意在这些细分领域投入研发,往往选择购买或者成熟后收购。但这并不意味着大厂没有能力做这些事,不必过分拔高这些细分领域的技术难度。
针对三维几何内核,在产品开发,技术选型以及公司战略规划上,如果对几何内核技术细节不了解,就很容易陷入诸如:
1.ACIS和PS必须二选一么
2.OCC是否能替换一下
3.自己开发是否风险太高
之类的困惑
“在选择使用三维几何内核上,国内工业软件公司采取什么样的策略”
如果业务本来不太需要内核,而购买了商业产品,浪费钱;而真正需要商业内核时候,选择了开源或自己开发,产品失败风险高;总的讲,还是要非常了解自己的业务,并对几何内核技术细节有一定的认识,在此基础上才能选择合适的策略。
任何技术方面的问题,欢迎发邮件到fasbridge@foxmail.com
Boundary Representation Modelling
Techniques by Ian Stroud
几何计算 何援军
计算几何算法设计与分析 周培德