CN111383341A - 从原始网格生成结构化的3d模型 - Google Patents
从原始网格生成结构化的3d模型 Download PDFInfo
- Publication number
- CN111383341A CN111383341A CN201911392352.5A CN201911392352A CN111383341A CN 111383341 A CN111383341 A CN 111383341A CN 201911392352 A CN201911392352 A CN 201911392352A CN 111383341 A CN111383341 A CN 111383341A
- Authority
- CN
- China
- Prior art keywords
- faces
- distribution
- face
- score
- mesh
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 117
- 238000009826 distribution Methods 0.000 claims abstract description 85
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012360 testing method Methods 0.000 claims description 5
- 238000005457 optimization Methods 0.000 claims description 4
- 238000004519 manufacturing process Methods 0.000 description 26
- 230000008569 process Effects 0.000 description 21
- 238000004364 calculation method Methods 0.000 description 19
- 238000013461 design Methods 0.000 description 13
- 230000000875 corresponding effect Effects 0.000 description 10
- 238000010276 construction Methods 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 241000208125 Nicotiana Species 0.000 description 1
- 235000002637 Nicotiana tabacum Nutrition 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 235000013361 beverage Nutrition 0.000 description 1
- 108010015046 cell aggregation factors Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000001125 extrusion Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 235000013305 food Nutrition 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000000053 physical method Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
- 238000004800 variational method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
- G06T17/205—Re-meshing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/24—Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明尤其涉及一种用于从网格生成结构化的三维(3D)模型的计算机实现的方法。该方法包括提供包括面的网格,该网格的每个面包括法线和主曲率值;通过对离散曲率值的出现次数进行计数来计算主曲率值在整个网格上的分布;在计算出的分布中识别主曲率值的一个或多个主导范围;对于每个识别出的主导范围,计算网格的包括属于识别出的主导范围的面的一个或多个区域;对于每个计算出的区域,通过使用该区域的所有面的曲率值来检测图元类型,并通过使用该区域的网格表面来识别检测到的图元的参数。
Description
技术领域
本发明涉及计算机程序和系统领域,并且更具体地,涉及一种用于从网格生成结构化的三维(3D)模型的方法、系统和程序。
背景技术
市场上提供了许多用于对象的设计、工程和制造的系统和程序。CAD是计算机辅助设计的缩写,例如,它涉及用于设计对象的软件解决方案。CAE是计算机辅助工程的缩写,例如,它涉及用于模拟未来产品物理行为的软件解决方案。CAM是计算机辅助制造的缩写,例如,它涉及用于定义制造过程和操作的软件解决方案。在这种计算机辅助设计系统中,图形用户界面在技术效率方面起着重要作用。这些技术可以嵌入产品生命周期管理(PLM)系统中。PLM是指一种业务战略,可帮助企业在扩展企业的整个概念中共享产品数据、应用通用流程以及利用企业知识来从概念到使用寿命结束的对产品的开发。DassaultSystèmes(商标为CATIA、ENOVIA和DELMIA)提供的PLM解决方案提供了工程中心(用于组织产品工程知识)、制造中心(用于管理制造工程知识)以及企业中心(实现到工程和制造中心二者的企业集成和连接)。该系统共同提供了一个开放的对象模型,该模型将产品、过程、资源链接在一起,以实现基于动态的知识产品创建和决策支持,从而推动优化的产品定义、制造准备、生产和服务。
从网格构建(或重建)结构化的3D模型允许构建(或重建)可在专用软件(例如CAD/CAE/CAM/PDM/…系统)中使用的3D模型。换句话说,可以对现有网格进行分析,以用于提取网格中包含的隐式知识。例如,可以通过度量精确扫描来生成表示真实世界的对象(诸如机械零件)的网格,但是建模软件无法利用隐式包含在网格中的语义。作为另一示例,CAD系统可以模拟用于制造对象的工具机的工具运动,并且可以从包含机器命令和规格的文件中输出网格。同样,对这些文件进行反向工程以获取结构化的3D表示是不可能的,或者非常困难。在另一个示例中,原始网格表示可以从结构化的3D模型获得,通常用于可视化目的。但是,结构信息在此过程期间会丢失。
在Bénière等人的“Topology Reconstruction for B-Rep Modeling from 3DMesh in Reverse Engineering Applications,2012”中致力于从网格中提取足够的信息,以使用曲率建立精确的B-Rep模型。通过分析相对于整体网格曲率分布的网格三角形上的曲率,它们建立了子网格,这些子网格可能是B-Rep表示的面的潜在候选。当子网格不接触其相邻网格时,它们将对其进行扩展,直到它们可以恢复相邻面之间的某些限制。它们通过基于到已构建的子网格的距离的概念聚合三角形来扩展子网格。对于复杂且曲折的几何形状,此过程无法保证恢复有效限制。此外,该方法仅专注于重构精确的B-Rep。
因此,能够反转网格具有巨大的价值,因为它允许高级版本并支持CAD/CAE/CAM/PDM/…系统传统上提供的所有设计工具。
在这种情况下,仍然需要从网格改进生成结构化的三维(3D)模型。
发明内容
因此,提供了一种用于从网格生成结构化的三维(3D)模型的计算机实现的方法。该方法包括提供包括面的网格,该网格的每个面包括法线和主曲率值,通过对离散曲率值的出现次数进行计数来计算所述主曲率值在整个网格上的分布,并在计算出的分布中识别主曲率值的一个或多个主导范围,对于每个识别出的主导范围,计算网格中的包括属于识别出的主导范围的面的一个或多个区域,对于每个计算出的区域,通过使用区域的所有面的曲率值检测图元类型,并通过使用区域的网格表面来识别检测到的图元的参数。
该方法可以包括以下中的一项或多项:
-建立所提供的网格的结构化的3D表示的几何和相邻图,其中该图的每个节点表示所计算出的区域中的一个,并且包括该区域的所识别的图元类型和参数;两个节点之间的每个连接是节点所表示的区域的各个表面之间的交集。
-对于每个连接,几何和相邻图的构建还包括:两个节点之间的每个连接是由节点表示的区域的各个表面之间的交集,两个节点之间的每个连接具有相关联的凸度、凹度和位置信息;
-在计算出的分布中识别主曲率值的一个或多个主导范围包括:在计算出的分布中确定两个连续局部最小值之间的局部最大值,并将两个连续局部最小值之间包括的面识别为属于所述一个或多个主导范围;
-当局部最大值的出现次数等于和/或大于预定值时,重复在计算出的分布中确定局部最大值以及将面识别为属于所述一个或多个主导范围,并且其中每次重复之前,丢弃先前被识别为属于所述一个或多个主导范围的面,并重新计算根据其主曲率值的面的分布;
-每个面的主曲率值包括最小曲率值和最大曲率值;计算面的分布包括:通过对离散曲率值的出现次数进行计数来计算最小曲率值在整个网格上的第一分布,以及通过对离散曲率值的出现次数进行计数来计算最大曲率值在整个网格上的第二分布;并且其中该方法的后续步骤是针对第一和第二分布执行的;
-将高斯核应用于所得分布;
-对于每个计算出的区域,应用区域增长,增长由面之间的距离引导,该距离由曲率值加权以聚合尚未分配给计算出的区域的所有面;
-区域增长包括向第一组面中的面分配相同的第一分数,第一组面包括不属于计算出的区域的面中的面,并且针对属于计算出的区域中的一个的每个面分配相同的第二分数零,第一分数大于第二分数;通过以下步骤测试第一组的每个面:对于面的每个相邻区域,基于面和相邻区域之间的距离以及面和相邻区域之间的主曲率值的差来计算第三分数;如果第三分数小于第一分数,则将第一分数设置为第三分数,并记录第三分数对应的区域;如果测试的面的邻域不属于第一组面,则将邻域添加到第一组面;如果第三分数大于第一分数,则从第一组中移除测试的面;将初始在第一组中的测试的面与它们拥有的最佳第三分数相关联的区域重新分组;
-当第二组的所有面都经过测试后,测试停止;
-在计算网格的区域之后,计算计算出的区域之间的相交环;
-在计算相交环之后,对于每个相交环:收集组成该相交环的区域的有序列表,以及针对所述相交环的每个边的凹度、凸度和位置信息;
-通过使用针对该区域的表面来识别图元的参数,包括利用这些参数的最小优化来估计检测到的图元的参数。
还提供了一种计算机程序,其包括用于执行该方法的指令。
还提供了一种其上记录有计算机程序的计算机可读存储介质。
还提供了一种系统,该系统包括耦合到存储器和图形用户界面的处理器,该存储器上记录有该计算机程序。
附图说明
现在将通过非限制性示例并参考附图的方式来描述本发明的实施例,其中:
图1示出了该方法的示例的流程图;
图2示出了系统的示例;
图3示出了该方法与现有技术之间的比较的示例;
图4示出了原始网格的示例的屏幕截图;
图5示出了图4的原始网格的重新网格化的示例的屏幕截图;
图6是示出曲率的表示的示例。
图7和图8示出了图5的网格的主曲率的屏幕截图;
图9和图10示出了图5的网格的主曲率值分布的示例;
图11示出了图5的网格的感兴趣的曲率值范围的屏幕截图;
图12示出了图5的网格的均匀曲率的区域的屏幕截图;
图13示出了图5的网格的均匀曲率的区域的屏幕截图;
图14a和图14b是示出了区域增长过程之前和之后的屏幕截图;
图15a和图15b是示出了区域增长过程之前和之后的屏幕截图;
图16是平面实体的主曲率值分布的示例;
图17是圆柱体的主曲率值分布的示例;
图18是来自网格的结构化的三维(3D)模型的表示的屏幕截图。
具体实施方式
参照图1的流程图,提出了一种用于从网格生成结构化的三维(3D)模型的计算机实现的方法。该方法包括提供(S10)包括面的网格。网格包括使用包括三角形和四边形的多边形表示以定义3D形状的顶点、边和面。提供的网格的每个面都包括法线和主曲率值。该方法还包括计算(20)网格的主曲率值的分布。分布在整个网格上进行。通过对离散曲率值的出现次数进行计数来计算分布。该方法还包括在所计算出的分布中识别(S30)主曲率值的一个或多个主导范围。该方法还包括针对每个识别出的主导范围计算(S40)网格的包括属于识别出的主导范围的面的一个或多个区域。然后该方法还包括,通过使用区域的所有面的曲率值,对于每个计算出的区域,检测(S50)图元类型,并通过使用该区域的网格表面来计算检测到的图元的参数。
这种方法改进了从网格对结构化的三维(3D)模型的生成。
值得注意的是,与B-Rep构造的已知解决方案相比,该方法更加鲁棒。这些B-Rep构造解决方案通常很脆弱,即取决于提供的网格的质量,它们要么完全完整、要么无法生成实体的有效的结构化的表示。在本方法中,区域的构造基于主曲率值的主导范围。结果是,本方法不依靠网格中识别的边来查找图元,而是丢弃形成图元边的面并保留可能属于图元的表面的三角形。这使得图元的识别对网格的质量不太敏感,因为与构成边的网格的面相比,通常网格的更多的面包含在图元的表面中。
另外,本方法不允许不能完全成功地识别出所有面和邻域以生成结构化的3D模型表示。即使结构化的3D模型可能不包含可以预期的所有面和相邻信息,即使它不覆盖整个网格,它也可以包含其他信息(例如凸度、位置),这些信息允许执行特征树的重构。该结构3D模型是具有所有这些信息的几何和相邻图。与用于从网格重建有效和完整的B-Rep的方法相比,使用本方法生成此几何和相邻图更鲁棒。图3示出了已知方法与本方法之间的差异。
此外,仅使用曲率值的主导范围以及计算网格的一个或多个区域允许获得类似于从过程的第一迭代中就使算子失效的效果。相反,现有技术的解决方案取决于要分析的网格的几何复杂度执行多次迭代。因此,本方法减少了计算和生成结构化的3D模型的系统的资源(例如CPU、存储器)的消耗。
在下面的描述中,进一步的改进将是显而易见的。
该方法是计算机实现的。这意味着该方法的步骤(或基本上所有步骤)由至少一台计算机或任何类似系统执行。因此,该方法的步骤可以由计算机执行,可能是全自动执行,或者是半自动执行。在示例中,可以通过用户-计算机交互来执行该方法的至少一些步骤的触发。所需的用户-计算机交互级别可能取决于预见的自动级别,并与实现用户意愿的需求保持平衡。在示例中,该级别可以是用户定义的和/或预定义的。
例如,提供网格的步骤可以是对例如存储在数据库上的网格的用户选择的结果。
方法的计算机实现的典型示例是利用适用于此目的的系统来执行该方法。该系统可以包括耦合到存储器和图形用户界面(GUI)的处理器,该存储器上记录有包括用于执行该方法的指令的计算机程序。存储器还可以存储数据库。存储器是适用于这种存储的任何硬件,可能包括若干物理不同部分(例如,一个用于程序,并且可能一个用于数据库)。
通过CAD系统,另外意味着至少适于基于建模对象的图形表示来设计建模对象的任何系统,例如CATIA。在这种情况下,定义建模对象的数据包括允许建模对象的表示的数据。CAD系统可以例如使用边或线(在某些情况下使用面或表面)来提供CAD建模对象的表示。线、边或表面可以以各种方式表示,例如,非均匀有理B样条(NURBS)或从由LIDAR计算的一组点获得的表面。具体地,CAD文件包含可以从其生成几何形状的规范,该规范继而允许生成表示。建模对象的规范可以存储在单个CAD文件中或多个CAD文件中。表示CAD系统中建模对象的文件的典型尺寸在每个部件一兆字节的范围内。并且建模对象通常可以是数千个部件的组件。
在CAD的上下文中,建模对象通常可以是3D建模对象,例如,代表产品,例如,部件的一部分或组件,或者可能是产品的组件。“3D建模对象”是指由允许其3D表示的数据建模的任何对象。3D表示允许从所有角度观察部件。例如,3D建模的对象,当进行3D表示时,可以被围绕其任何轴、或围绕在其上显示表示的屏幕中的任何轴进行处理或转动。这尤其不包括未经3D建模的2D图标。3D表示的显示有助于设计(即,增加设计者统计地完成其任务的速度)。这加速了工业中的制造过程,因为产品的设计是制造过程的一部分。
网格(并通过扩展生成的结构化的3D模型)可以表示在完成其虚拟设计后,使用例如CAD软件解决方案或CAD系统(诸如(例如,机械)零件或零件的组件(或等效地是零件的组件,因为从方法的角度来看,零件的组件可以看作是零件本身,或者该方法可以独立地应用于组件的每个零件),或更通用而言,任何刚体组件(例如,移动机制)在现实世界中制造的产品的集合图形。网格还可以表示在扫描产品之后在现实世界中要制造的产品的几何形状,例如,网格来自计量精确扫描,后续网格设计操作,例如使用允许网格编辑的软件执行。网格还可以表示在从机床数据文件、3D打印机文件、度量衡设备数据文件中取回网格之后,现实世界中要制造的产品的几何形状……网格还可以表示在由专用网格化软件处理过或在数字内容创建工具(可以针对3D可视化产生资产)中创作的点云之后在现实世界中要制造的产品的几何形状。
网格(并通过扩展生成的结构化的3D模型)可以表示在各种以及无限的工业领域中的产品,所述工业领域包括:航空航天、建筑、构造、消费品、高科技设备、工业装备、运输、船舶和/或海上油气生产或运输。因此,通过该方法设计的3D建模对象可以表示工业产品,该工业产品可以是任何机械零件,诸如陆地车辆(包括例如汽车和轻型卡车装备、赛车、摩托车、卡车和电机装备、卡车和公共汽车、火车)的一部分、空中飞行器(包括例如机身装备、航空航天装备、推进装备、国防产品、航空装备、太空装备)的一部分、海军车辆(包括例如海军装备、商业船舶、海上装备、游艇和作业船、船舶装备)的一部分、通用机械零件(包括例如工业制造机械、重型移动机械或装备、安装的装备、工业装备产品、金属制品、轮胎制造产品)、机电或电子零件(包括例如消费类电子产品、安全和/或控制和/或仪表产品、计算和通信装备、半导体、医疗设备和装备)、消费品(包括例如家具、家庭和花园产品、休闲用品、时尚产品、硬商品零售商的产品、软商品零售商的产品)、包装(包括例如食品和饮料和烟草、美容和个人护理、家用产品包装)。
CAD系统可以是基于历史的。在这种情况下,通过包括几何特征的历史的数据进一步定义建模对象。建模对象实际上可以由物理人(即设计者/用户)使用标准建模特征(例如,挤出、旋转、切割和/或旋转)和/或标准表面特征(例如,扫掠、混合、投掷、填充、变形和/或平滑)来设计。支持这种建模功能的许多CAD系统是基于历史的系统。这意味着设计特征的创建历史通常通过非循环数据流来保存,该非循环数据流通过输入和输出链接将所述几何特征链接在一起。自80年代初以来,基于历史的建模范例是众所周知的。通过两个持久数据表示来描述建模对象:历史和B-rep(即边界表示)。B-rep是历史中定义的计算结果。当表示建模对象时,在计算机屏幕上显示的部分的形状是(例如,镶嵌)B-rep。该部分的历史是设计意图。基本上,历史记录收集有关建模对象所经历的操作的信息。B-rep可以与历史一起保存,以便更容易地显示复杂的部分。历史可以与B-rep一起保存,以允许根据设计意图对部件进行设计改变。
通过PLM系统,它还意味着适于管理表示物理制造产品(或待制造产品)的建模对象的任何系统。因此,在PLM系统中,建模对象由适合于制造物理对象的数据定义。这些通常可以是尺寸值和/或公差值。为了正确制造物体,拥有这样的值确实更好。
通过CAM解决方案,它还意味着适用于管理产品的制造数据的任何解决方案、硬件软件。制造数据通常包括与要制造的产品、制造过程和所需资源有关的数据。CAM解决方案用于规划和优化产品的整个制造过程。例如,它可以向CAM用户提供关于可行性、制造过程的持续时间或可以在制造过程的特定步骤中使用的资源(诸如,特定机器人)的数量的信息;并且因此,允许决定管理或所需的投资。CAM是CAD过程和潜在CAE过程之后的后续过程。这种CAM解决方案由Dassault Systèmes以商标提供。
通过CAE解决方案,它还意味着适用于分析建模对象的物理行为的任何解决方案、硬件的软件。一种众所周知且广泛使用的CAE技术是有限元方法(FEM),其通常涉及将建模的对象划分为可以通过方程计算和模拟物理行为的元素。此类CAE解决方案由DassaultSystèmes以商标提供。另一种不断增长的CAE技术涉及复杂系统的建模和分析,复杂系统由来自不同物理领域的多个组件组成而没有CAD几何数据。CAE解决方案允许模拟,从而优化、改进和验证要制造的产品。此类CAE解决方案由Dassault Systèmes以商标提供。
PDM代表产品数据管理。PDM解决方案是指适用于管理与特定产品相关的所有类型数据的任何解决方案、硬件的软件。PDM解决方案可供参与产品的生命周期的所有参与者使用:主要是工程师,但也包括项目经理、财务人员、销售人员和买家。PDM解决方案通常基于面向产品的数据库。它允许参与者共享其产品的一致数据,并且因此防止参与者使用不同的数据。此类PDM解决方案由Dassault Systèmes以商标提供。
图2示出了用于执行该方法的系统的示例。该示例的系统包括通信地耦合到存储器(例如,随机存取存储器(RAM)1070)的中央处理单元(CPU)1010。在该示例中,CPU和存储器通过内部通信总线1000通信。客户端计算机还进一步包括图形处理单元(GPU)1110,其与连接到总线的视频随机存取存储器1100相关联。视频RAM 1100在本领域中也称为帧缓冲器。大容量存储设备控制器1020管理对大容量存储设备(诸如硬盘驱动器1030)的访问。适于有形地体现计算机程序指令和数据的大容量存储设备包括所有形式的非易失性存储器,包括例如半导体存储器设备(诸如EPROM、EEPROM和闪存设备);磁盘(诸如内部硬盘和可移动磁盘);磁光盘;和CD-ROM盘1040。上述内容中的任何内容都可以通过专门设计的ASIC(专用集成电路)进行补充或合并。网络适配器1050管理对网络1060的访问。客户端计算机还可以包括触觉设备1090,诸如光标控制设备、键盘等。在客户端计算机中使用光标控制设备以允许用户将光标选择性地定位在显示器1080上的任何期望位置。此外,光标控制设备允许用户选择各种命令并输入控制信号。光标控制设备包括多个信号生成设备,用于将控制信号输入到系统。通常,光标控制设备可以是鼠标,该鼠标的按钮用于生成信号。替代地或附加地,客户端计算机系统可以包括敏感垫和/或敏感屏幕。
该计算机程序可以包括可由计算机执行的指令,该指令包括用于使上述系统执行该方法的单元。该程序能够记录在任何数据存储介质上,包括系统的存储器。该程序可以例如以数字电子电路或计算机硬件、固件、软件或它们的组合来实现。该程序可以被实现为有形地体现在机器可读存储设备中以由可编程处理器执行的装置(例如产品)。方法步骤可以通过执行指令程序的可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行该方法的功能。因此,处理器可以是可编程的并且被耦合以从数据存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向数据存储系统、至少一个输入设备和至少一个输出设备传输数据和指令。如果需要,可以以高级过程或面向对象的编程语言或汇编或机器语言来实现应用程序。在任何情况下,该语言都可以是编译语言或解释语言。该程序可以是完整的安装程序或更新程序。在任何情况下,程序在系统结构上的应用都会生成执行该方法的指令。
“从网格生成结构化的3D模型”是详细阐述3D建模对象的过程的至少一部分。因此,该方法可以包括从头开始创建网格。该方法可以包括在制造过程中,该制造过程可以包括在执行该方法之后,从所生成的结构化的3D模型中产生新的3D建模对象。新的3D建模对象表示一种物理产品。在任何情况下,方法的输入中的网格和生成的结构化的3D模型都可以表示作为产品的制造对象,例如零件或零件的组件。因为该方法允许从原始网格设计建模对象,所以该方法还改善了产品的制造,从而提高了制造过程的生产率。
参照回图1,提供(S10)了包括面的网格。网格包括使用包括三角形和四边形的多边形表示以定义3D形状或3D形状的至少一部分的顶点、边和面。3D形状表示实体对象。3D形状表示各种工业领域的产品,包括但不限于航空航天、建筑、构造、消费品、高科技设备、工业装备、运输、船舶和/或海上油气生产或运输。
提供的网格的每个面都包括法线。如本领域中已知的,面的法线是垂直于面的方向。在示例中,法线可以是顶点法线。
提供的网格的每个面都包括主曲率值。主曲率值测量表面在该点如何在不同方向上以不同的量弯曲。面的最大和最小曲率值称为面的主曲率值。
图6(摘自“Discrete differential geometry:an applied introduction”,K.Crane)是位于参考点(N,X1,X2)起点的表面给定点处的曲率的概括表示。轴N表示表面在所述给定点的法线,在此示例中,X1和X2是计算最小和最大曲率值的方向。
在示例中,当多边形表示不具有相似的尺寸并且很好地平衡时,所提供的网格可以是原始网格。例如,原始网格可以包括瘦三角形。更一般地,本方法在3D实体的有效表示的网格上正确地表现并产生有用的结果(即使有时是部分的),例如,3D网格可以形成没有自动相交的封闭且可定向的流形表面。该方法还可以利用未闭合的网格产生有趣的结果。
图4示出了具有三角形作为多边形表示的原始网格的示例。这种三角形的原始网格不是特别干净,因为它具有T型结,也就是说,网格包括两个多边形沿着另一个多边形的边相遇的点。此外,没有有关法线和主曲率值的信息可用。
在示例中,该方法可以进一步包括对提供的网格重新网格化。这允许改善网格的质量,即,面具有相似的尺寸并且平衡良好,例如,没有瘦三角形。有很多可用的方法,例如对于本方法,变分方法可能倾向于产生表现良好的网格。图5示出了在图4的原始网格上执行Ramesh操作之后所得网格的示例。
另外,对原始网格进行重新网格化可以改善对主曲率值的评估。确实,可以使用诸如切线一的过程在诸如三角形网格的离散3D表示上评估曲率,并且这些过程中的大多数倾向于在面(通常为三角形)相似且平衡良好的网格上提供更好的结果。
在示例中,可以使用任何已知方法对离散几何体(重新网格化的面)上的主曲率值进行评估。可以在评估主曲率值的同时或之前或之后评估法线。
图7和图8示出了针对图5的网格识别(计算)的最大曲率值70或最小曲率值80。
参照回图1,计算(S20)主曲率值在整个网格上的分布。通过离散化主曲率值来计算分布,并通过对特定值的出现次数进行计数来进行分布。保持分布的每个曲率值与其对应的面之间的链接-相对应的面是在其上已获取(或计算)所述每个曲率值的面。
分布中的每个条目都包含在主曲率值的值间隔内主曲率值的出现次数。主曲率值的间隔也称为主曲率值的范围。应当理解,值的所有间隔(即,所有范围)包括网格的面的所有主曲率值。在示例中,高斯可被应用于分布以降低噪声。在实践中并且为了仅使分布的直方图可视化(例如在图9和图10上),主曲率值的间隔可以相同;否则,对于两个主曲率分布,值的离散化和分布在其上扩展的值的范围必须相同。
在示例中,范围的量对于离散化是固定的,并且可以由用户选择。主曲率值在整个网格上累积。
在另一个示例中,可以根据针对每个范围的最大出现次数来调整范围的量:实际上,出现次数的数量可以从一个网格到另一个网格变化很大。最后,这些精确计数相对于其他计数很重要,因为它们可用来识别主曲率值的感兴趣的范围,但是一个孤立的计数并不那么重要。范围内的出现次数可以除以网格的面数,因此针对每个范围内的出现次数可以解释为百分比。
如本领域中已知的那样进行分布的计算。
在示例中,分布的计算可以进一步包括将高斯核应用于所得的分布以消除值的一些波动。
图9是网格的面的主曲率值的分布的示例的图示。在此示例中,分布用直方图表示。在此,主曲率值在-2.0到2.0之间,并且分布包括40个值的范围。取主曲率值的符号值用于计算分布。主曲率值可以在图9的直方图中以更大范围(例如,100个范围)离散化。在此示例中,曲率值已被强制离散为40个范围。
参照回图1,S20,每个面的主曲率值可以包括最小曲率值和最大曲率值。因此,代替如参考图9所讨论的计算具有绝对值的分布,该计算可以包括两个分布的计算,分别是通过对离散曲率值的出现次数进行计数来计算最小曲率值在整个网格上的第一分布,以及通过对离散曲率值的出现次数进行计数由在整个网格上的出现次数来对最大曲率值进行分类来计算最大曲率值的第二分布。
应当理解,参考通过对离散曲率值的出现次数进行计数来计算分布的一般情况所讨论的示例适用于计算第一和第二分布的示例。
图10是针对相同网格的两个计算分布的示例的图示。针对网格的面的最小曲率值计算左侧的分布,以及针对网格面的最大曲率值计算右侧的分布。
参照回图1,在S30处,该方法进一步包括在计算出的分布中识别主曲率值的一个或多个主导范围。主导范围是表示出现次数大于其他范围的次数的范围。主导范围可能在整个分布中处于主导地位。替代地,主导范围可以是局部主导。它称为局部主导范围。局部主导范围是指出现次数大于分布上给定数量的连续范围中范围的出现次数的范围。
在计算两个分布的示例中,在两个分布中的每个分布上识别主导范围。
在示例中,主曲率值的主导范围的识别可以在确定分布的局部最大值之后执行,所述分布的局部最大值在分布的两个连续的局部最小值之间。根据数学定义,“局部最大值”和“局部最小值”是局部极值。“连续的的局部最小值”表示在两个局部最小值之间没有其他局部最小值。包含在两个局部最小值之间的范围(包括局部最大值)形成了主导范围。因此,具有包含在两个连续的局部最小值之间的曲率值离散的面属于主导范围,并且属于两个连续的局部最小值的面不属于主导范围。属于两个连续局部最小值的面最有可能属于或接近图元的边,而属于已识别的主导范围的面最有可能形成图元。
现在参照图10,示出了从局部最大值和两个连续的局部最小值识别主曲率值的主导范围的示例。深灰色表示的范围是局部最大值。现在讨论该图的右侧部分,该右侧部分对应于网格的面的最大曲率值的分布。已识别出局部最大值1200。该局部最大值被两个局部最小值1210、1212包围,这两个局部最小值是连续的局部最小值,因为在1210和1212之间的范围内不包括其他局部最小值。矩形1220覆盖形成所识别的主导范围的范围。应当理解,在图10的右侧部分可以识别出另外三个主导范围。现在讨论该图的左侧部分,该部分对应于网格的面的最小曲率值的分布。已经识别出两个连续的局部最大值1230、1332。它们作为被两个连续的局部最小值的局部最小值1240、1242包围。有趣地,范围1240是空的,因为没有面具有被该范围覆盖的最小曲率值。空范围1240是局部最小值,此外它是分布的最后范围;由于这些原因,将其表示为属于主导范围1250。应当理解,如果范围1240将位于两个局部最大值之间,则不会将其表示为属于已识别的主导范围。
在示例中,在不迭代的情况下执行对分布上的一个或多个主导范围的识别,即,在分布中的行中识别所有主导范围。因此,用于识别主导范围的计算成本较低。在存在两个分布的示例中,对行中的两个分布类似地执行识别。
在示例中,重复在确定位于分布的两个连续局部最小值之间的分布的局部最大值之后执行的对分布上的一个或多个主导范围的识别,同时针对局部最大值的出现次数等于和//或高于预定值,例如预定值可以是等于1的出现次数。图元类型(例如,平面、圆柱体、直纹表面等)的类型受到限制,迭代次数不必超过图元的类型的数量。在每次重复之前,将先前识别为属于主导范围的面丢弃,并重新计算分布。因此,前者识别的分布的两个连续局部最小值属于新分布。可替代地,可以在一行中识别所有主导范围。感兴趣的是,以前的局部最小值可能会导致新近识别的主导范围。这意味着先前被认为具有可能属于图元或接近图元的边的面,在下一个新的主导范围的识别中可能成为图元的一部分。新分布可以包括相同数量的范围。每个主导范围的识别允许导出感兴趣的值范围,其中各个面是可能与感兴趣的图元相关联的表面的一部分。实际上,所识别的主导值的范围允许确定每个面是否是主导图元类型的面。显然,可以对在第一遍期间已丢弃的其余构面(即那些不属于先前识别的主导范围的构面)重复该过程,从而导致值的其他分布,识别与另一个图元类型相关联的面,等等。在存在两种分布(一种用于最小曲率值,而一种用于最大曲率值)的示例中,该迭代识别类似地在两种分布上执行,例如,伴随地。
因此,确定主导范围允许识别网格的可能属于或接近图元的表面的边的第一组面,以及第二组面(针对每个主导范围一组面),其中每一组将形成主导图元类型的区域。
值得注意的是,根据本发明的方法与已知的现有技术(例如,之前讨论过的Bénière等人的方法)不同。在已知的现有技术中,子网格被迭代地处理,直到到达可以识别或知道如何处理每个部分的点。相反,当通过不考虑与图元类型相关联的主导范围之外的区域来实现类似于破坏的操作时,可以提前停止该方法。如本领域所公知的,破坏表示从CAD模型中移除非必要的细节。
图11是示出来自图5连同直方图的网格的最大曲率的屏幕截图-在调试窗口110中-示出最小和最大曲率值的分布以及已建立的值的范围。
回到图1,针对每个识别出的主导范围计算(S40)网格的一个或多个区域。因此,每个计算区域包括属于对应的识别出的主导范围的面。因此,网格的区域是所提供的网格的一组面。
因此,一旦识别出曲率值的一个或多个感兴趣的范围,就在方法的一次迭代中基于这些面是这些主导范围中的一部分对它们进行分类。图12是作为图5的网格上个的结果S40获得的均匀曲率的区域的屏幕截图。区域122、123、124可能与特定的原始表面类型120匹配。区域125、127、128和129与另一图元表面类型(此处为圆柱体)匹配。这些区域都是杆126的图元表面的所有部分,但是在该方法的该步骤,它们被视为分离的区域。还要注意的是,图12所示的大多数区域都与它们的邻域之间没有清晰的交集,例如在122-123和123-124之间。
在示例中,在每个计算区域上应用区域增长以聚合尚未分配给计算区域中的一个的面。尚未分配给计算区域的面是先前未归因于已识别主导范围中的一个的面。区域增长可以连续应用于每个区域,或者同时应用于两个或多个或所有计算区域。区域增长可改善网格区域之间的交集的质量:实际上,区域增长旨在聚合所有尚未分配给计算区域的面。这些面通常是未被识别为属于主导区域的面。区域增长有助于创建相互接触的区域。
在示例中,区域增长(应用于每个计算区域)由面之间的距离引导。要考虑的距离是该区域的一个面与未分配的面之间的距离。该距离可以使用任何已知的方法(例如,欧几里得距离)来计算。从该区域的三角形到未分配的三角形的多个跳变可以用作距离的估计,例如,表面上的距离。要注意的是,当网格的面很好地详细描述时(例如,由于重新网格化),跳变的次数是测地距离的近似值(甚至非常粗糙)。因此,可以使用测地距离或类似的距离,并且比例如面中心之间的欧几里得距离更好。
在示例中,区域增长的距离通过曲率值之间的差异加权(也可以说是调制的)。使用曲率值之间的差异来引导增长允许最大化正在增长的区域与其他区域的相关交集的数量。此外,用曲率值引导增长允许在更可能是同一图元表面的一部分的区域中增长更快。
在示例中,距离值由常数和曲率值之间的差线性加权。这提高了区域增长的效率。
在区域增长的这些示例中,针对未分配的面计算分数。因此,根据这些示例,可以基于面之间的距离或基于由曲率值之间的差加权的距离,或者基于由常数线性加权的距离和两个曲率值之间的差来计算分数。当到达可能已经与另一个图元相关联的未分配面时,将当前扩展的新分数与记录的分数和获胜的最佳分数进行比较。如果是前一个分数获胜,则通过此构面的扩展停止。如果相反,新分数获胜,则意味着接触该构面的所有构面(除了那个构面,我们来自于新分数)都可能比以前有更好的分数,因此我们将相同的过程扩展到这些邻域...等等。如果已经相关联的面与新区域相关联,则将再次评估此已相关联的面的所有邻域(相关联的面除外)。该机制与Dijkstra或A*有一些相似之处,只是该机制不会尝试达到特定的目标,并且不受启发式方法的指导向该目标。
现在讨论增长区域算法的详细示例。区域增长受到距离的引导,该距离由常数和曲率值之间的差线性加权。
尽管原理是上述原理,但在实现级别上,算法以如下方式工作,所述方式与简化实现的方式类似。面检查邻域的值是多少。
该过程如下启动。将相同的第一分数(相同的任意大分数)分配给第一组面的面,第一组面包括不属于任何计算区域的面。另外,针对属于计算区域中的一个的每个面分配相同的第二分数零。第一分数大于第二分数。否则,为了启动该过程,以零成本初始化区域中的所有三角形,并将它们作为其一部分的区域记录为给予它们该零分数的区域。不作为区域的的一部分的所有面(例如三角形)的分数都将无限高,并且在这些面上将“无区域”区域记录为给出该分数的区域。
然后测试第一组的每个面(尚未成为区域的一部分且必须进行处理的面)。即,将未分配给区域的所有面放入要处理的面的队列中。
对于要处理的每个面(或要测试的面),都会检查面的邻域以查看可以通过的分数。面的邻域是共享边的面。因此,对于面的每个相邻区域,基于面与相邻区域之间的距离以及面与相邻区域之间的主曲率值的差来计算第三分数。
如果没有更好的分数(也就是说,如果第三分数大于第一分数),则针对测试的面停止该过程,并将测试的面放入已处理的面的列表中。也记录分数对应的区域。可替代地,当已经确定在针对测试的面的计算分数中的最佳分数时,将记录分数对应的区域。
如果分数等于已分配的分数,则过程停止。将经过测试的面放在已经处理过的面列表中。也记录分数对应的区域。可替代地,当已经确定在针对测试的面的计算分数中的最佳分数时,将记录分数对应的区域。
如果存在更好的分数(即,如果第三分数小于当前分数),则将测试的面从第一组(尚未作为区域的一部分且必须进行处理的面)中移除,过程会记录更好的分数(即过程会记录更好的分数,该更好的分数成为新的当前面分数),以及关于测试的面的该分数的区域,然后将测试的面的所有邻域面(除了赋予新分数的面)放回到要处理的面的队列中。如果最终邻域面是已处理面的列表,则将其从已处理面的列表中移除。
并且,当要处理的面的列表为空时,最初在第一组中的测试的面利用与其具有的最佳第三分数相关联的区域进行重新分组。
该过程将像Dijkstra一样收敛,并确保未分配给区域的每个面都将记录其最佳的“邻近度”分数以及相关联的区域。
区域增长可以总结如下。
针对每个“边”三角形(未分配给区域的)初始化任意大的分数,并在此时指定它不与任何区域相关联。
用分数零初始化已经与图元相关联的所有非“边”三角形,并将它们与它们已经作为其一部分的的图元相关联。
将所有“边”三角形放入要处理的三角形集合中
虽然要处理的三角形集合不为空:
从该集合中获取三角形
如果三角形已在已处理列表中:
继续要处理的三角形集合中的下一个三角形
对于该三角形的每个邻域:
使用以下公式计算该三角形可能的新分数,就好像我们来自该邻域一样,新分数是将与面的当前最佳分数进行检查的值):
新分数=邻域分数+1+常数聚合因子*(A+B)
其中
constant_curvature_factor是恒定曲率因子;
A是所选择的面的最大曲率值与相邻区域的面的最大曲率值之间的差的绝对值;
B是所选择的面的最小曲率值与相邻区域的面的最小曲率值之间的差的绝对值。
如果该新分数低于该三角形当前分数:
设定新分数
将三角形与邻域相关联的形状相关联
记录我们使用过的邻域
如果该三角形分数值得到了改善(通过特定的邻域):
将所有该三角形邻域(但具有改进的分数的特定三角形邻域除外)放回到要处理的三角形列表中,并将其从已处理的列表中移除,
将该三角形添加到已处理的列表中。
值得提醒的是,该算法是在识别出主曲率值的一个或多个主导范围之后应用的(S30)。因此,该算法在输入中具有一个或多个第二组(针对每个主导范围的一组面),其中每一组将形成主导图元类型的区域,而第一组面包括可能属于的面或靠近区域的边的面。
当第二组面为空时,即当所有面都与网格的计算区域中的一个相关联时,上述测试停止。图13表示在应用区域增长后获得的图12的网格。可以注意到,每个区域现在都有由面的互连边定义的边;因此,区域的边是界定区域表面的多段线。
图14a(分别是图15a)是具有在增长区域之前的区域的网格的屏幕截图。图14b(分别是图15b)是在应用区域增长之后的图14a(分别是图15b)的网格的屏幕截图。
参考回到图1,针对每个计算区域检测图元类型(S50)。图元是可以从其构建其他形状的构造块。在3D建模中通常使用图元来构建3D建模对象。例如,2D多边形(例如正方形、矩形)是可以积压以形成3D体积(例如正方形垫或矩形垫)的图元。图元可以是但不限于平面、圆柱、球体、金字塔、圆锥、二次表面、直纹表面、圆环……一组图元允许描述一种工业产品,例如:以网格表示的那个。
图元类型的检测(也可以说是计算)依赖于该区域的面的曲率值。如本领域中已知的那样,通过使用区域的面的曲率值来检测图元的类型。图16示出了作为类型平面的图元的区域的面的主曲率值的分布。图17示出了作为类型圆柱体的图元的区域的面的主曲率值的分布。图16和图17的分可以是相应类型的图元的模板,并且模板与区域的分布的比较允许识别该区域的图元。
对于每个检测到的图元,使用区域的表面(也就是与该区域相关联的网格的三角形)基于图元类型来计算检测到的图元的参数,并且可以对参数应用最小二乘优化算法。图元的参数确定了可以从其实例化图元的图元的特征。例如,如本领域中已知的:
–图元平面的参数是该平面的法线和该平面上的点;
-图元球体的参数是中心和半径;
-图元圆柱体的参数是轴的方向、圆柱体的高度、底圆的中心和半径;
-图元圆锥的参数是轴向、圆锥的高度、圆锥底的中心和半径;
-图元圆环的参数是方向矢量、中心、大圆的半径和小圆的半径。
如本领域中已知的,执行图元的参数的检测。使用区域的表面(即直接形成网格)来计算参数。在示例中,通过利用最小二乘优化估计参数来执行参数的识别。优化参数的值,以便可以从它们实例化的确切表面最多粘附到该表面所表示的网格部分。每个参数包括用于实例化图元的一个或多个参数值。为了简单起见,术语“参数”和“参数值”是同义词。
在示例中,并且在计算网格的区域之后,使用网格的三角形的邻接来计算区域之间的相交环。两个区域之间的交集也称为表面对表面相交(SSI),其中表面是两个区域的交集。当两个表面相交时,结果可能是一组孤立点、一组曲线或这些情况的任意组合。
区域之间的相交环形成区域表面的边界。术语“环”是指交集在其内部形成闭合曲线,或者两个或多个交集在其内部形成闭合曲线。因此,针对区域的相交环可能是该区域与其他区域相交的结果,例如,平面与圆柱体相交;针对区域的相交环可能是该区域与两个或多个区域相交的结果,例如,立方体的一个面与四个面相交。所述区域是网格的一组面,两个区域之间的交集包括面的互连边(边的连接序列),所述互连的边都属于形成交集的区域。因此,交集是两个区域的面的共同边的多段线,因此,相交环也是包括界定了该区域的表面的两个或更多区域的面的共同边的多段线。
在示例中,在识别出区域与其他区域的所有交集之后,针对每个区域执行相交环的计算。因此,从该区域与其他区域的所有交集创建相交环。如本领域所公知的,当完成相交环的计算时,构建该区域的面的边的多段线。
在示例中,在计算相交环之后,并且对于每个相交环,收集属于相交环的区域的有序列表。换句话说,根据在所述给定区域的环上的行进方向,识别和排序与给定区域接触的区域。交集的有序列表表示邻接图和几何图的节点的相交环。在该区域包含两个或多个相交环,因此该节点需要包含多个交集的事件中,则在列表中向它们提供包含其他交集的第一交集(圆柱的选择是任意的)。
在示例中,收集相交环的每个边的凹度、凸度和位置信息。如本领域中已知的那样执行对凹度、凸度的计算。在示例中,一旦各个区域彼此接触,就针对每个区域收集外部相交环和内部相交环。使用谓词关于针对每个三角形所评估的相同旋转顺序来收集这些交集,以处理可能由浮点算术引起的潜在数字问题。Jonathan Richard Shewchuk在“RobustAdaptive Floating-Point Geometric Predicates”,in Symposium on ComputationalGeometry 1996,pages 141-150中讨论了这样的集合。在收集交集的同时,计算并记录针对该区域的面的每个边的凹度、凸度信息,并且还记录与环部分相关联的顶点。可替代地,可以记录形成相交环的边而不是顶点。相交环的每个边的凹度、凸度和位置信息可以存储在与边相关的两个节点之间的连接上。
在示例中,收集形成两个区域之间的交集的边的凹度、凸度和位置。该凹度、凸度和位置不再是每个边的凹度、凸度和位置,而是收集由形成两个区域之间的交集的边创建的多段线的整体凹度、凸度和位置。然后将它们合并以与交集相关联,使得可以获得针对两个区域之间的每个邻接/交集的凹度、凸度。
如本领域中已知的,相交环可以是外部相交环或内部相交环。因此,外部相交环和内部相交环表示每个节点的外部和内部边界,即所提供网格的区域边界。在示例中,对于可以展平并投影到某个位置的区域,外部环将是包含其他环的区域。
内部相交环和外部相交环的示例在对象180的网格的图2的图片(屏幕截图)上表示。已经计算了几个区域(例如1800、1820、1810、1830、1840…)。区域1800将被识别为类型平面的图元。区域1800与将被识别为类型圆柱体的图元的区域18010以及四个区域接触(在该图中只能看到四个区域中的两个1830、1840)。已经在区域1800和区域1810之间计算了相交环1802。已经在区域1800和四个区域之间计算了另一个相交环1804。更精确地,相交环1804包括区域1800和四个区域(例如1830、1840)之间的四个交集。相交环1802界定区域1800并且是外部相交环。由相交环1804限定的表面是空的(也就是说,相交环1804不限定网格的任何面,或者区域1800的任何面都不在由相交环1804限定的界定表面中),因此相交环1804是内部相交环交集。环1802也是区域1810的外部相交环。区域1810和区域1820之间的相交环1822(将被识别为圆柱体图元)是区域1810的内部相交环,而它是区域1810的外部相交环。类似地,区域1820和区域1840之间的相交环1824(将被识别为类型平面的图元)是区域1820的外部相交环,而它是区域1840的内部相交环。应当理解,该选择对于圆柱体是任意的,因为在圆柱体的另一侧上存在等效环。因此,在构建CSG树时,可能会尝试几种组合。
收集定向的相交环,将其标记为内部或外部环,保持每个交集的凸度信息和相交边的位置,允许直接利用此信息,例如以生成精确的实体特征树而无需构建完整的精确B-Rep表示。同样,在网格分析提供的信息无法重构完整的B-Rep的情况下,这尤其是感兴趣的。因此,本发明更加鲁棒。即使所获得的结果可能不能反映图元网格的全部细节,它也可以用作建模操作的基础,并且可以扩展到利用传统精确CAD模型的任何用法。例如,用户可以使用从网格生成的结构化三维(3D)模型的一部分用作中间步骤,并通过其参数编辑任何元素。
回到图1,构建所提供的网格的几何和邻接图(S60)。该图提供了步骤S10至S50的输出的结构化表示,并因此提供了利用这些步骤生成的网格的结构化3D模型的表示。该图包括节点和节点之间的连接。图的每个节点表示计算区域中的一个(S40),并与针对此区域识别的图元类型和针对此区域识别的参数相关联。两个节点之间的每个连接表示由节点表示的区域的各个表面之间的交集。
图18的屏幕截图提供了显示使用步骤S10至S50的输出生成的对象180的网格的结构化3D模型的表示的示例。节点“face_16”表示区域1800,并且与区域1800(平面)的图元类型和图元的参数相关联。如已经讨论的,区域1800与五个区域接触。区域1810由节点“face_15”表示,四个区域(例如1830、1840…)由节点“face_16”、“face_17”、“face_18”、“face_19”表示。显示五个连接,用于表示交集1802的节点“face_16”和节点“face_15”之间的一个连接,以及表示形成相交环1804的交集的节点“face_16”和节点“face_15”之间的一个连接(分别为“face_17”、“face_18”、“face_19”)。
在示例中,将先前收集的进一步收集的信息(例如交集、形成相交环的区域的有序列表)、针对与环部分相关联的面和/或顶点的每个边的凹度以及凸度信息与几何形状和邻接图一起记录。“一起记录”是指可以访问此信息或将其与节点或连接相关联。例如,现在参考图18,可以将形成相交环1804的四个区域的有序列表与节点“face_16”,或节点“face_16”和节点“face_15”、“face_17”、“face_18”、“face_19”之间的连接可以按照列表进行排名。
在这些示例中,已经针对处理了网格的完整表面的情况,示出生成。值得一提的是,表示并不一定是完整的,也就是说,生成只能覆盖网格的一部分。尽管生成的结构化3D模型并未完全反映出图元网格的所有细节,但生成的结构化3D模型仍然有用。
从网格生成的结构化的3D模型可由用户编辑。用户可以来自CAD领域的已知的任何方式来执行结构化的3D模型的编辑,例如包括选择至少一个节点或连接。与诸如网格的离散几何表示的版本相比,这种版本具有人体工程学特征。特别地,可编辑的结构化的3D模型可以包括的节点/连接的数目比输入网格的离散几何实体的数目低大于5倍的因子。因此,可编辑的结构化的3D模型以比网格相比更紧凑和更有组织的方式表示3D形状。而且,作用在结构3D模型的单个节点或连接上可能会显示全局影响,而在网格作用在单个几何实体上的情况下,只会显示局部影响。例如,与单独选择大量的网格三角形相反,本文中的结构化的3D模型的任何节点或连接可以被配置用于识别区域的一组面。此外,结构化的3D模型对用户而言在语义上比网格更有意义。
该版本可以包括例如通过图形交互来选择图形项(节点、连接)。这里的图形交互是指操作触觉设备以激活与显示器上的图形项的位置相对应的位置处的像素。例如,可以将鼠标光标放置在所显示的图形项上方,或者可以直接经由触摸屏或经由触摸板间接触摸所显示的图形项。该选择可以触发对话框等的打开,以及由用户例如经由键盘输入一个或多个参数值。
在示例中,该方法可以包括显示所提供的网格的图形表示,并且同时,由用户启动用于从网格生成结构化的3D模型的方法,并且因此,显示结构化的3D模型的图形表示与显示离散几何表示的图形表示同时进行。然后,用户可以隐藏网格的图形表示以进行结构化的3D模型的编辑。可替代地,该方法可以继续同时显示网格和结构化的3D模型的图形表示,并且在用户对结构化的3D模型执行编辑时,该方法可以相应地更新(例如,改变)网格的图形表示。这向执行版本的用户提供了视觉反馈。相反,用户可以修改所提供的网格,例如,通过置换形成网格的一个或多个元素(顶点、边、面等),并通过执行该方法来更新结构化的3D模型。
在示例中,该方法被配置为将从对真实对象的物理测量确定的3D网格或3D点云作为输入,并且该方法允许确定表示真实对象的3D形状的对应的可编辑特征树。然后,用户可以执行结构化的3D模型的版本,例如以创建类似于真实对象但与真实对象不同的设计。在替代和附加示例中,该方法被配置为将没有对应的结构化的3D模型的3D建模对象的3D网格作为输入,该3D建模对象是从远程计算机系统接收或从非易失性存储器取回的,并且该方法允许确定表示3D形状的对应的结构化的3D模型。然后,用户可以执行结构化的3D模型的版本,例如以创建类似于3D网格但与之不同其的设计,或完成由3D网格形成的设计。
除了以更符合人体工程学的方式执行3D形状编辑的可能性或者作为其替代之外,获得结构化的3D模型还可以用于其他目的,例如从提供的网格中提取特征树。特征树是分层组织,其包含在三维(3D)实体模型上执行的实体操作的历史。每个实体操作都定义为实体上的特征。从草图(以及方向/长度/角度参数)创建实体的拉伸/旋转操作也是特征树的功能。一个操作是布尔操作,例如添加操作或移除操作。用于应用布尔操作的实体通常是从草图中获得的,在该草图上应用了挤压运算。在示例中,特征树是CSG(构造实体几何)特征树。CSG建模是在实体建模中使用的众所周知的技术,其包括使用布尔操作来组合简单对象以生成复杂对象。用于表示的最简单的实体对象称为具有简单形状的图元,所述简单形状例如长方体、圆柱体、棱柱、金字塔、球体、圆锥体。特征树提高了以更符合人体工程学的方式执行3D形状版本的可能性。另外,获得特征树还可以用于其他目的,例如3D形状合并或机械仿真。
3D形状合并方法可以包括:在计算机系统上提供表示第一3D形状的第一特征树,提供第二3D形状的网格,对该网格执行该方法以获得表示第二3D形状的第二特征树,然后合并第一特征树和第二特征树。可以根据任何合并技术来执行合并和/或表示第一3D形状和第二3D形状之间的机械组装或机械配合。合并可以例如包括将第二树连接到第一树。3D形状合并方法可以进一步包括将几何模型应用于合并的树以便获得由此表示的3D形状的图形表示,和/或向用户显示所述图形表示。
可以基于特征树来执行机械仿真。实际上,由于特征树以紧凑的形式(相对于离散的几何表示)和参数化的方式表示3D形状,因此可以对使用本方法获得的特征执行更精确的机械计算。特别是,从CSG计算有限元网格更容易、更直接(如论文“Finite-element meshgeneration from constructive-solid-geometry models”,Edwin Boender,WillemF.Bronsvoort,Frits H.Post,in Computer-Aided Design,Volume 26,Issue 5,May1994,Pages 379-392,或论文“Finite element mesh generation methods:a review andclassification”,K Ho-Le,in 38Computer-Aided Design,volume 20 number 1January/February 1988所教导的)。此外,CSG还提供了对表面的防水性的保证。机械模拟因此可以包括从特征树(例如,CSG)和/或其一个或多个修改来计算一个或多个有限元网格,然后基于每个有限元网格执行有限元分析。另外,由于CSG是参数化的,因此可以根据仿真结果容易地优化CSG。因此,一个或多个修改可以用于基于每个先前的有限元分析结果来优化可编辑特征树(例如,CSG)。
Claims (15)
1.一种用于从网格生成结构化的三维(3D)模型的计算机实现的方法,包括:
-提供(S10)包括面的网格,所述网格的每个面包括法线和主曲率值;
-通过对离散曲率值的出现次数进行计数来计算(20)所述主曲率值在整个网格上的分布;
-在计算出的分布中识别(S30)主曲率值的一个或多个主导范围;
-对于每个识别出的主导范围,计算(S40)所述网格的包括属于所述识别出的主导范围的面的一个或多个区域;
-对于每个计算出的区域,通过使用所述区域的所有面的曲率值来检测(S50)图元类型,并且通过使用所述区域的网格表面来识别检测到的图元的参数。
2.根据权利要求1所述的计算机实现的方法,还包括:
-建立(S60)所提供的网格的结构化的3D表示的几何和相邻图,其中:
-所述图的每个节点表示所述计算出的区域中的一个区域,并且包括所述区域的已识别的图元类型和参数;以及
-两个节点之间的每个连接都是所述节点所表示的区域的各个表面之间的交集。
3.根据权利要求2所述的计算机实现的方法,其中,几何和相邻图的所述构建还包括,对于每个连接:
-两个节点之间的每个连接是所述节点表示的区域的各个表面之间的交集,所述两个节点之间的每个连接具有相关联的凸度、凹度和位置信息。
4.根据权利要求1至3中的一项所述的计算机实现的方法,其中,在所述计算出的分布中识别所述主曲率值的一个或多个主导范围包括:
-在所述计算出的分布中确定两个连续局部最小值之间的局部最大值;以及
-将包括在所述两个连续局部最小值之间的面识别为属于所述一个或多个主导范围。
5.根据权利要求4所述的计算机实现的方法,其中,当局部最大值的出现次数等于和/或大于预定值时,重复在所述计算出的分布中确定局部最大值和将所述面识别为属于所述一个或多个主导范围,并且其中,在每次重复之前,丢弃先前被识别为属于所述一个或多个主导范围的面,并且重新计算所述面根据其主曲率值的分布。
6.根据权利要求1至5中的一项所述的计算机实现的方法,其中:
-每个面的主曲率值包括最小曲率值和最大曲率值;
-计算所述面的分布包括:
-通过对所述离散曲率值的出现次数进行计数来计算所述最小曲率值在所述整个网格上的第一分布;以及
-通过对所述离散曲率值的出现次数进行计数来计算所述最大曲率值在所述整个网格上的第二分布;以及
其中,针对所述第一分布和所述第二分布执行所述方法的后续步骤。
7.根据权利要求1至6中的一项所述的计算机实现的方法,还包括:
-将高斯核应用于所得的分布。
8.根据权利要求1至7中的一项所述的计算机实现的方法,还包括:
-对于每个计算出的区域,应用区域增长,所述增长由面之间的距离引导,所述距离由所述曲率值加权,以聚合尚未分配给计算出的区域的所有面。
9.根据权利要求8所述的计算机实现的方法,其中,所述区域增长包括:
-将相同的第一分数分配给第一组面中的面,所述第一组面包括不属于任何计算出的区域的面,并且针对属于所述计算出的区域中的一个计算出的区域的每个面分配相同的第二分数零,所述第一分数大于所述第二分数;
-通过以下方式测试所述第一组的每个面:
--对于所述面的每个相邻区域,基于所述面和所述相邻区域之间的距离以及所述面和所述相邻区域之间的主曲率值的差来计算第三分数;
--如果所述第三分数小于所述第一分数:
---将所述第一分数设置为所述第三分数,并且记录所述第三分数相对应的区域;
---如果测试的面的邻域不属于所述第一组面,则将所述邻域添加到所述第一组面中;
--如果所述第三分数大于所述第一分数,则从所述第一组中移除所述测试的面;
-将最初在所述第一组中的测试的面与同它们拥有的最佳第三分数相关联的区域重新分组。
10.根据权利要求8所述的计算机实现的方法,其中,当已经测试了第二组的所有面时,所述测试停止。
11.根据权利要求1至10中的一项所述的计算机实现的方法,还包括:在计算所述网格的区域之后,计算所述计算出的区域之间的相交环。
12.根据权利要求11所述的计算实现的方法,还包括:在计算所述相交环之后,对于每个相交环:
-收集组成所述相交环的区域的有序列表,以及针对所述相交环的每个边的凹度、凸度和位置信息。
13.根据权利要求1至12中的一项所述的计算实现的方法,其中,通过使用针对所述区域的表面来识别所述图元的参数包括:利用那些参数的最小优化来估计所检测的图元的参数。
14.一种计算机程序,包括用于执行根据权利要求1-13中的任一项所述的方法的指令。
15.一种系统,包括耦合到存储器和图形用户界面的处理器,所述存储器在其上记录了根据权利要求14所述的计算机程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18306888.1 | 2018-12-29 | ||
EP18306888.1A EP3675064B1 (en) | 2018-12-29 | 2018-12-29 | Generation of a structured 3d model from a raw mesh |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111383341A true CN111383341A (zh) | 2020-07-07 |
Family
ID=65228314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911392352.5A Pending CN111383341A (zh) | 2018-12-29 | 2019-12-30 | 从原始网格生成结构化的3d模型 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11195330B2 (zh) |
EP (1) | EP3675064B1 (zh) |
JP (1) | JP7505880B2 (zh) |
CN (1) | CN111383341A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112800552A (zh) * | 2020-12-25 | 2021-05-14 | 浙江大学 | 一种基于近似曲率的型腔曲面动态快速构造方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3961471A1 (en) * | 2020-08-28 | 2022-03-02 | Siemens Industry Software NV | Modifying a finite element mesh |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086789A (zh) * | 2006-06-09 | 2007-12-12 | 乐必峰软件公司 | 使用网格数据作为特征的逆向建模方法 |
CN103136790A (zh) * | 2011-11-29 | 2013-06-05 | 达索系统公司 | 从多个3d曲线创建表面 |
-
2018
- 2018-12-29 EP EP18306888.1A patent/EP3675064B1/en active Active
-
2019
- 2019-12-24 JP JP2019233108A patent/JP7505880B2/ja active Active
- 2019-12-30 US US16/730,795 patent/US11195330B2/en active Active
- 2019-12-30 CN CN201911392352.5A patent/CN111383341A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101086789A (zh) * | 2006-06-09 | 2007-12-12 | 乐必峰软件公司 | 使用网格数据作为特征的逆向建模方法 |
CN103136790A (zh) * | 2011-11-29 | 2013-06-05 | 达索系统公司 | 从多个3d曲线创建表面 |
Non-Patent Citations (2)
Title |
---|
ROSELINE BÉNIÈRE 等: "A comprehensive process of reverse engineering from 3D meshes to CAD models", COMPUTER-AIDED DESIGN, vol. 45, no. 11, 1 November 2013 (2013-11-01), pages 1382, XP028693198, DOI: 10.1016/j.cad.2013.06.004 * |
SILVÈRE GAUTHIER 等: "Analysis of digitized 3D mesh curvature histograms for reverse engineering", COMPUTERS IN INDUSTRY, vol. 92, 26 June 2017 (2017-06-26), pages 67 - 83, XP085294090, DOI: 10.1016/j.compind.2017.06.008 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112800552A (zh) * | 2020-12-25 | 2021-05-14 | 浙江大学 | 一种基于近似曲率的型腔曲面动态快速构造方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2020115338A (ja) | 2020-07-30 |
EP3675064A1 (en) | 2020-07-01 |
JP7505880B2 (ja) | 2024-06-25 |
EP3675064B1 (en) | 2022-09-07 |
US11195330B2 (en) | 2021-12-07 |
US20200211279A1 (en) | 2020-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111382777B (zh) | 从网格中提取特征树 | |
CN109767495B (zh) | 3d部件的增材制造 | |
JP6787661B2 (ja) | 工作物の機械加工のシミュレート | |
JP7428516B2 (ja) | 編集可能なフィーチャツリーの推測のためにニューラルネットワークを学習すること | |
JP7509537B2 (ja) | 編集可能なフィーチャツリーの推測のためのデータ集合を形成すること | |
CN107818196B (zh) | 机械部件的骨架的表示 | |
CN105761303A (zh) | 在3d建模组件上创建包围盒 | |
EP3321817A1 (en) | Querying a database based on a parametric view function | |
CN115374546A (zh) | Cad模型参数化 | |
JP7505880B2 (ja) | 生メッシュからの構造化3dモデルの生成 | |
JP2022023010A (ja) | 2点接触曲線による乗り物衝撃解析 | |
EP3825956B1 (en) | Processing a 3d signal of a shape attribute over a real object | |
CN110060346B (zh) | 确定代表真实对象皮肤的小面的集合 | |
JP2022023009A (ja) | 2点接触曲線による乗り物衝撃解析 | |
JP2021131852A (ja) | 機械部品の構造シミュレーション | |
JP2022179418A (ja) | 材料の押し出し検出方法 | |
JP2023160791A (ja) | 画像からの3d再構成 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |