OpenCASCADE-HLR Edge
1 Introduction
用计算机生成三维物体的真实图形,是计算机图形学研究的重要内容。真实图形在仿真模拟、几何造型、广告影视和科学计算可视化等许多领域都有着广泛应用。在用显示设备描述物体的图形时,必须把三维信息经过某种投影变换在二维的显示平面上绘制出来。从三维投影到二维的降维操作,会导致图形的二义性。要消除这类二义性,就必须在绘制时消除被遮挡的不可见的线或面,习惯上称之为消除隐藏线Hidden Line Removal和隐藏面Hidden Face Removal。
这是渲染显示上对消隐的需求,在根据三维模型自动生成工程图的工程设计软件中,对消隐的需求有所不同。
工程设计软件与机械设计软件不同,工程设计软件一次出图消隐的模型量大,对出图的算法要求主要有:
- 主要使用消隐线算法;
- 消隐得到的线能找到与三维模型的关系,方便标注模型信息,如模型名称、规格等;
- 自动标注布局算法,能对标注的名称、规格等自动布局,减少手工调整;
- 自动尺寸标注;
- 符号化处理,如管道模型能用一条线符号化处理;
其实最后总结成一句话就是一键根据模型生成能交付的图纸。虽然现在技术上具备三维模型下车间的能力,但是目前二维图纸依然是设计交付、加工制造主要依据。工程类设计软件主要的功能就是快速建模,碰撞检测和自动图纸生成。当模型量大时,消隐速度快及自动生成的标注文字排列整齐(或满足工程习惯)成了二维图纸自动生成的核心技术,也是程序处理中的难点。
2 HLR
几何内核一般都提供HLR算法,用来根据模型投影生成二维工程图。OpenCASCADE的HLR提供了隐藏线消隐算法。
https://www.spatial.com/zh/products/cgm-hlr-hidden-line-removal
OpenCASCADE 提供了两种消隐算法:HLRBRep_Algo和HLRBRep_PolyAlgo。这些算法都是基于相同的原理:比较形状每条边相对每个面的可见性,并 计算每条边的可见部分与消隐部分。算法通过计算在指定投影方向上的物体显示特性,去除或标记被面遮挡的边。这两个算法也与一些提取功能配合使用,如重构一 个简化的模型等,简化后新的模型由边组成,就是在投影方向上的轮廓线。
3 边的分类
OpenCASCADE的HLR中将边分为以下类型:
- Sharp Edges
- Smooth Edges
- Sewn Edges
- Outline Edges
- Isoparameter Edges
从类HLRBRep_HLRToShape和类HLRBRep_PolyHLRToShape中给出了这些边的一些定义。其中Sharp Edge表示C0连续(非G1连续)的边,就是一般Edge;
Smooth Edge表示G1连续(非G2 连续)的边;
Sewn Edge表示G2连续的边;
Outline Edge表示模型的轮廓边,这种类型的边不在BREP数据中,需要根据投影方向生成;
Isoparameter Edge表示面的等参线生成的边,这种类型的边不也不在BREP数据中;
其中Sharp Edge、Smooth Edge和Sewn Edge一般都是BREP中的EDGE数据,而Outline Edge和Isoparameter Edge是根据设置额外生成的边。理解边的这些定义,方便对HLR算法进行理解。HLR算法是相对简单的算法,主要是就将上述五种类型的边与面进行求交,判断遮挡关系。
目前OpenCASCADE中的HLR算法代码写得有点乱,上次在深圳ogg的俄罗斯开发人员提到要重构HLR部分的代码。深入理解 HLR算法,为自动生成图纸功能打下基础。
标签:消隐,HLR,算法,Edge,OpenCASCADE,模型 From: https://www.cnblogs.com/opencascade/p/occt_hlr_edges.html