从多个3D曲线创建表面转让专利

申请号 : CN201210595719.5

文献号 : CN103136790B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : D·邦纳R·迪库

申请人 : 达索系统公司

摘要 :

提供了一种计算机实现方法,用于从多个3D曲线创建表面。该方法包括:提供(S10)多个3D曲线,确定(S20)曲线对之间的交叉,定义(S30)基本图形,所述基本图形包括表示交叉的节点和连接节点对表示相邻交叉的弧,从所述图形确定(S40)网格,所述网格包括由3D位置所定义的顶点以及连接所述顶点对的边,并且使用表面拟合(S50)该网格。这种方法使得从多个3D曲线创建表面更加容易。

权利要求 :

1.一种用于从多个3D曲线创建表面的计算机实现方法,其中所述方法包括:提供(S10)多个3D曲线,

通过以下步骤:

将所述多个3D曲线投影(S22)到支持物上,从而获得多个对应的投影曲线,确定(S23)所述投影曲线的对之间的交叉,并且检索(S24)与所述投影曲线的对之间的交叉相对应的曲线的点对,来确定(S20)所述曲线的对之间的交叉,包括:将所述曲线的相应对之间的至少一个交叉确定为点对,每个点属于所述曲线的所述相应对中的不同的一个,其中,所述曲线的对之间的交叉指的是在交叉处的所述曲线的对之间的距离小于所述曲线的对在其他区域处之间的距离的区域,定义(S30)基本图形,所述基本图形包括表示所述曲线的对之间的交叉的节点和连接节点对的表示相邻交叉的弧,从所述图形确定(S40)网格,所述网格包括由3D位置定义的顶点以及连接所述顶点的对的边,并且使用表面拟合(S50)所述网格。

2.如权利要求1所述的方法,其中:

将所述多个3D曲线投影(S22)到支持物上包括:离散(S221)所述多个3D曲线为包括一组线段的折线,并且,将所述线段投影(S222)到所述支持物上,从而获得多个对应的投影线段,并且确定(S23)所述投影曲线的对之间的交叉包括:确定(S231)与属于相同体素的不同曲线相对应的所述投影线段的对,确定(S232)在所确定的投影线段的对之间的双垂线,并且,确定(S233)所述双垂线的末端。

3.如权利要求1-2中的任意一项所述的方法,其中

确定(S40)所述网格包括:向所述图形增加(S401)弧和/或节点,直到所述图形的所有贴片都被划分为具有三条或四条弧的面。

4.如权利要求1-2中的任意一项所述的方法,其中确定(S40)所述网格包括:向所述图形增加(S402)弧和/或节点,直到没有T型结点留下。

5.如权利要求1-2中的任意一项所述的方法,其中确定(S40)所述网格包括:根据网格细分方案,向所述图形增加(S403)弧和/或节点。

6.如权利要求1-2中的任意一项所述的方法,其中所述曲线的对之间的交叉包括在所述曲线的相应对之间的被确定为点对的至少一个交叉,每个点都属于所述曲线的所述相应对中的不同的一个,并且其中确定(S40)所述网格包括:将所述点对中心的3D位置与表示所述至少一个交叉的节点关联(S406)起来。

7.如权利要求6所述的方法,其中确定(S40)所述网格包括:向所述图形增加节点(S401,S402,S403),并且将3D位置与给定增加节点关联(S407)起来,其中所述3D位置取决于相对于增加节点前的所述图形的给定节点的拓扑位置。

8.如权利要求7所述的方法,其中与给定增加节点相关联的3D位置是:如果所述给定增加节点的拓扑位置处于增加节点前的所述图形的一条弧上,则根据与所述弧的末端处的节点相关联的3D位置,通过偏移由所述弧表示的曲线计算位置,或者如果所述给定增加节点的拓扑位置在将节点增加到具有四条边的图形前的所述图形的贴片的内部,则通过Coons方法计算位置,或者在任何其它情形中,通过对相邻点的3D位置取平均计算位置。

9.如权利要求1-2中的任意一项所述的方法,其中所述多个3D曲线包括被不受约束地描绘的曲线。

10.一种CAD系统,包括:

具有记录于其上的指令的至少一个存储器,其中所述指令用于执行如权利要求1-9中的任意一项所述的方法,与所述存储器耦合的至少一个处理器,以及

与所述处理器耦合并适合执行所述指令的至少一个图形用户界面。

11.一种用于从多个3D曲线创建表面的装置,其中所述装置包括:

用于提供(S10)多个3D曲线的模块,

用于通过以下步骤:

将所述多个3D曲线投影(S22)到支持物上,从而获得多个对应的投影曲线,确定(S23)所述投影曲线的对之间的交叉,并且检索(S24)与所述投影曲线的对之间的交叉相对应的曲线的点对,来确定(S20)所述曲线的对之间的交叉的模块,包括:将所述曲线的相应对之间的至少一个交叉确定为点对,每个点属于所述曲线的所述相应对中的不同的一个,其中,所述曲线的对之间的交叉指的是在交叉处的所述曲线的对之间的距离小于所述曲线的对在其他区域处之间的距离的区域,用于定义(S30)基本图形的模块,所述基本图形包括表示所述曲线的对之间的交叉的节点和连接节点对的表示相邻交叉的弧,用于从所述图形确定(S40)网格的模块,所述网格包括由3D位置定义的顶点以及连接所述顶点的对的边,并且用于使用表面拟合(S50)所述网格的模块。

12.如权利要求11所述的装置,其中:

将所述多个3D曲线投影(S22)到支持物上包括:离散(S221)所述多个3D曲线为包括一组线段的折线,并且,将所述线段投影(S222)到所述支持物上,从而获得多个对应的投影线段,并且确定(S23)所述投影曲线的对之间的交叉包括:确定(S231)与属于相同体素的不同曲线相对应的所述投影线段的对,确定(S232)在所确定的投影线段的对之间的双垂线,并且,确定(S233)所述双垂线的末端。

13.如权利要求11-12中的任意一项所述的装置,其中

确定(S40)所述网格包括:向所述图形增加(S401)弧和/或节点,直到所述图形的所有贴片都被划分为具有三条或四条弧的面。

14.如权利要求11-12中的任意一项所述的装置,其中确定(S40)所述网格包括:向所述图形增加(S402)弧和/或节点,直到没有T型结点留下。

15.如权利要求11-12中的任意一项所述的装置,其中确定(S40)所述网格包括:根据网格细分方案,向所述图形增加(S403)弧和/或节点。

16.如权利要求11-12中的任意一项所述的装置,其中所述曲线的对之间的交叉包括在所述曲线的相应对之间的被确定为点对的至少一个交叉,每个点都属于所述曲线的所述相应对中的不同的一个,并且其中确定(S40)所述网格包括:将所述点对中心的3D位置与表示所述至少一个交叉的节点关联(S406)起来。

17.如权利要求16所述的装置,其中确定(S40)所述网格包括:向所述图形增加节点(S401,S402,S403),并且将3D位置与给定增加节点关联(S407)起来,其中所述3D位置取决于相对于增加节点前的所述图形的给定节点的拓扑位置。

18.如权利要求17所述的装置,其中与给定增加节点相关联的3D位置是:如果所述给定增加节点的拓扑位置处于增加节点前的所述图形的一条弧上,则根据与所述弧的末端处的节点相关联的3D位置,通过偏移由所述弧表示的曲线计算位置,或者如果所述给定增加节点的拓扑位置在将节点增加到具有四条边的图形前的所述图形的贴片的内部,则通过Coons方法计算位置,或者在任何其它情形中,通过对相邻点的3D位置取平均计算位置。

19.如权利要求11-12中的任意一项所述的装置,其中所述多个3D曲线包括被不受约束地描绘的曲线。

说明书 :

从多个3D曲线创建表面

技术领域

[0001] 本发明涉及计算机程序和系统领域,更具体地,涉及一种从多个3D曲线创建表面的方法、系统和程序。

背景技术

[0002] 在市场上提供了许多用于对象设计、工程和制造的系统和程序。CAD是计算机辅助设计的缩写,例如,其涉及用于设计对象的软件解决方案。CAE是计算机辅助工程的缩写,例如,其涉及用于模拟未来产品的物理行为的软件解决方案。CAM是计算机辅助制造的缩写,例如,其涉及用于定义制造的处理和操作的软件解决方案。在这些系统中,图形用户界面(GUI)在关于技术的效率方面发挥了重要的作用。可以将这些技术嵌入到产品生命周期管理(PLM)系统中。PLM是指如下商业策略,其帮助公司共享产品数据、应用公共处理、利用企业知识,以通过扩展企业的概念从产品概念到产品寿命结束开发产品。
[0003] 由达索系统(商标为CATIA、ENOVIA、和DELMIA)所提供的PLM解决方案提供了:工程中心,其组织产品工程知识;制造中心,其管理制造工程知识;和企业中心,其使企业实现集成和连接到工程和制造中心两者中去。利用以上这些,这种系统提供了开放对象模型,该模型将产品、处理、资源联系起来以实现动态的、基于知识的产品创造和决策支持,以驱动最优化的产品定义、制造准备、生产和服务。
[0004] 这些系统中的某些允许从多个3D曲线创建表面,其落入几何建模的一般范畴内,更确切地是落入表面设计内。一本介绍性的刊物是“Geometric Modeling”,第三版,Michael E.Mortenson著,工业出版社,2006年5月。该刊物特别关注的是任何类型的复合表面(一个或许多表面的填充),特别是弯曲表面、三角网格(由平面组成)、或者细分表面的填充。
[0005] B-Rep(边界表示法)是本文将提到的数学模型,因为其将以上所提到的所有表面组合成单一的概念。B-Rep将R2域和R3范围的一个或多个函数fi(s,t)->(x,y,z)和逻辑信息进行聚合,该逻辑信息是关于这些单独的片如何“缝合”到一起。缝合可以“修整”表面,意味着每个函数的R2域都不能完整地作为一个整体使用。如何最好地从曲线集合生成这种表面的拼缝物是几何建模的传统问题。在三角网格的特别情形中,每个单独的表面元素都是平面,即平的面。B-Rep的一个众所周知的定义是STEPAP203。这是将CATPart输出为.stp文件时,CATIA V5和CATIA V6应用的标准。B-Rep是开放的,在此情形下它们不封闭体积,或者B-Rep是封闭的,在此情形下它们描述体积的边界,并且同样地可以表示实体对象。在STEP AP203中,分别用关键字OPEN_SHELL和CLOSED_SHELL表示它们。然而,可在比AP203标准更广泛的意义上使用术语B-Rep,在AP203中,仅仅将开放B-Rep的情形称作开放shell,而术语B-Rep(在关键字“ADVANCED_BREP_SHAPE_REPRESENTATION”中)为封闭shell情形所保留。不封闭体积的B-Rep经常被称为表面(以单一形式的),甚至当由许多子函数所组成时。这尤其是当子片的连接是平滑的时,对用户掩饰该对象的复杂特性的情形。工程师或设计者经常将所生成的复杂形状谈及为单一表面。
[0006] 为了促进3D模型的构建,在特定的自由形态的形状中,某些CAD系统提供了用于自一组较低维的输入生成B-Rep(或其部分)的不同的方法。这些输入可以是一组每隔一定间隔的点,一组点和切平面,一剖面和一挤压方向,扫描剖面和扫描轨迹的组合,一组用于插值的曲线。在曲线组的情形下,一般需要对曲线组进行完美地相交或者排序。例如,CATIA V5/6的NET表面从相交曲线的网格中创建了表面。
[0007] 可以使用从R2映射到R3的多个函数来构成B-Rep。这些可以包括从简单平面(如处于三角网格中)到非常高阶的多项式,并且也可以包括规范的表面,例如,圆柱面。利用整合到例如CATIA中的Catmull-Clark细分表面也是可能的,就像US专利7595799和7400323所描述的。在这些系统中,首先为了实时的可视化,将细分表面转换为三角网格,并接着为了确定的高质量结果,将其转换为B-Spline表面。
[0008] 另外值得提及的是计算机辅助曲线描绘。来自曲线的表面构建最好被用于可以迅速且容易地构建曲线的环境中。曲线描绘是计算机绘图的有很多研究的领域。题名为“ILoveSketch:As-natural-as-possible sketching system for creating3D curve models”的出版物,ACM Symposium on User Interface Software and Technology2008,Monterey,CA,USA,2008年10月19-22日,以及题名为“EverybodyLoves Sketch:3D Sketching for a Broader Audience”,Seok Hyung Bae,Ravin Balakrishnan,和Karan Singh,Proceedings of ACM Symposium  on User Interface Software and Technology2009,Victoria,BC,Canada,2009年10月4-7日,第59-68页的出版物介绍了曲线描绘。这两个出版物论述了定义形状的曲线网络,但是由于这种操作很困难,因此未建议用表面处理形状。
[0009] 从多个3D曲线创建表面的现有解决方案的一个问题在于在形状定义方面给予艺术家或工程师的灵活性太少。现有的解决方案不允许无约束的设计动作。通常,将新想法输入到画板时,这种方案不能满足高创造性的艺术家用户,这种用户对计算机系统的任何不灵活性(的确)不耐烦。这种方案不允许试验和错误,以及对形状的高度交互式修改。它们对与产品设计有关的任何人来说都是不便于使用的,特别是产品设计艺术家。对于任何与产品设计有关的人来说都能使用的系统将会是有帮助的,由于所有人都可以交换想法,并且因此受到与艺术家相同的对即时创作的限制。
[0010] 现有技术中的从曲线构建表面的方法落入两个类别:扫描/放样类型的方法,和网格表面(如同网络中的网格)。
[0011] 扫描/放样方法需要把曲线分成不同类别,典型地,一个曲线将是引导,并且其他曲线将是截面形状,或者可能该截面形状将是指定的并且没有引导。在所有这些情形中,必须仔细地组织输入,并且最终的表面并不是真正的自由形态,而是面对特定方向(从一个截面到下一个,或者沿着引导曲线)的流畅形状。扫描和放样是非常有用的,并且在CAD系统中被密集地使用,但是其不适用于3D形状的真正自由形态的描绘,由于它需要将要获得的形状的详细视图,并且因此不支持开放性、试验和错误类型方法。
[0012] 网络表面(简称为网络)是一类技术,其中最广为所知的是Coons表面。可以从文章“Discrete Coons Patches”,Farin&Hansford,Computer Aided Geometric Design16(1999)691-700中找到对于Coons表面的很好的讨论。存在许多其他类型的网格表面,包括上述CATIA网格表面,或者指引如何使细分表面适合曲线的出版物(“Interpolating Nets of Curves by Smooth Subdivision Surfaces”,Levin,Siggraph99)中的方法,其基于定义一种特殊的收敛到曲线的细分方案。所有网络表面都具有共同点就是它们对曲线网格插值。因为该表面贯穿该曲线,该曲线必须彼此相交,以形成具有闭合环路的网格。这是对于大多数艺术工作来说是会受打断工作的情况,这是由于随意地以3D描绘一组曲线使得它们互相接触是几乎不可能的。
[0013] 同样值得提及的是关于拟合的参考文献,该参考文献是题名为“fitting subdivision surfaces”,Litke,Levin和Schroder,Siggraph2001所著的出版物。在该文件中所描述的方法影响总体目标(所有点都具有它们应当达到的目标位置)。
[0014] 在这种背景中,更需要一种用于从多个3D曲线创建表面的改进的解决方案。

发明内容

[0015] 根据一个方面,提供了一种计算机实现方法,用于从多个3D曲线创建表面。该方法包括:提供多个3D曲线,确定曲线对之间的交叉,定义基本图形,所述图形包括表示交叉的节点和连接节点对的表示相邻交叉的弧,从所述图形确定网格,该网格包括由3D位置定义的顶点以及连接顶点对的边,并且用表面拟合网格。
[0016] 该方法可以包括以下步骤的一个或多个:
[0017] -确定该交叉包括:将曲线的相应对之间的至少一个交叉确定为点对,每个点都属于曲线的相应对的不同的一个;
[0018] -该方法包括将所述多个3D曲线投影到支持物上,从而获得了多个对应的投影曲线,确定投影曲线对之间的交叉,并且检索对应于所述投影曲线对之间的交叉的曲线的点对;
[0019] -将所述多个3D曲线投影到支持物上包括:离散多个3D曲线为包括一组线段的折线,并且,将所述线段投影到支持物上,从而获得多个对应的投影线段;并且确定投影曲线对之间的交叉包括确定与属于相同体素的不同曲线相对应的投影线段对,确定在所确定的投影线段对之间的双垂线,并且确定所述双垂线的末端;
[0020] -确定所述网格包括:向图形增加弧和/或节点,直到图形的所有贴片都被划分为具有三条或四条弧的面;
[0021] -确定所述网格包括:向图形增加弧和/或节点,直到没有T型结点留下;
[0022] -确定所述网格包括:根据网格细分方案,向图形增加弧和/或节点;
[0023] -所述交叉包括在曲线的相应对之间的被确定为点对的至少一个交叉,每个点都属于曲线的相应对中的不同的一个,并且其中确定所述网格包括:将所述点对中心的3D位置与表示所述至少一个交叉的节点关联起来;
[0024] -确定所述网格包括:向所述图形增加节点,并且将3D位置与给定增加节点关联起来,所述3D位置取决于相对于增加节点前的图形的给定节点的拓扑位置;如果给定增加节点的拓扑位置处于增加节点前的图形的一条弧上,则根据与弧的末端处的节点相关联的3D位置,通过偏移由弧表示的曲线计算位置,或者,如果所述节点的拓扑位置在将节点增加到具有四条边的图形前的图形的贴片的内部,则通过Coons方法计算位置,或者,在任何其它情形中,通过对相邻点的3D位置取平均计算位置;
[0025] -所述多个3D曲线包括:被不受约束地描绘的曲线。
[0026] 还主张一种CAD系统,包括:至少一个具有记录于其上的指令的存储器,所述指令用于执行上述方法,至少一个与所述存储器耦合的处理器,以及至少一个与所述处理器耦合,并适合执行所述指令的图形用户界面。
[0027] 还主张一种计算机程序,包括执行上述方法的指令。
[0028] 还主张一种计算机可读记录介质,具有记录于其上的上述计算机程序。

附图说明

[0029] 现在通过非限制示例并参考附图描述本发明的实施例,其中:
[0030] 图1表示方法示例的流程图;
[0031] 图2表示图形用户界面的示例;以及
[0032] 图3表示客户计算机系统的示例;
[0033] 图4表示方法示例的流程图;
[0034] 图5-14表示方法的示意性示例。

具体实施方式

[0035] 图1表示了用于从多个3D曲线创建表面的计算机执行方法的示例的流程图。该方法包括:提供(S10)多个3D曲线,确定(S20)曲线对之间的交叉,并且定义(S30)基本图形。所述基本图形包括表示交叉的节点和连接节点对的表示相邻交叉的弧。该方法也包括:从所述图形确定(S40)网格,该网格包括由3D位置定义的顶点以及连接顶点对的边。然后该方法包括使用表面拟合(S50)网格。这种方法改进了从多个3D曲线创建表面。
[0036] 该方法可以由设计CAD建模对象的处理组成。“设计CAD建模对象”指定任何动作或一系列动作,它们是精心制作CAD建模对象的处理的至少一部分。因此,该方法可以包括从痕迹创建CAD建模对象。可替代地,该方法可以包括提供之前所创建的CAD建模对象,并且接着修改该CAD建模对象。无论如何,由该方法创建的表面可以表示CAD建模对象或它的至少一部分,例如,CAD建模对象的边界。因为该方法使得从多个3D曲线创建表面变得更加容易,该方法也使得对CAD建模对象的设计变得更加容易。
[0037] 建模对象是由存储在CAD系统的存储器中的数据定义的任何对象。通过扩展其含义,表达“建模对象”是指数据本身。根据该系统的类型,可以由不同类型的数据定义建模对象。CAD系统是至少适合于在建模对象的图形表达,例如CATIA的基础上设计建模对象的任何系统。因此,定义CAD建模对象的数据包括允许该建模对象的表示的数据(例如,包括空间中的相对位置的几何数据)。例如,CAD系统可以使用边或者线条,在某些情形中还使用面或表面,来提供对CAD建模对象的表示。可以用各种方式来表示线条、边、或表面,例如,非均匀有理B样条曲线(NURBS)。具体地,CAD文件可以包括可以从其生成几何图形的规范,其继而允许生成表示。可以将建模对象的规范存储在单个CAD文件或者多个CAD文件中。表示CAD系统中的建模对象的文件的典型尺寸处于每个零件1兆字节的范围内。并且建模对象通常是数千个零件的组件。
[0038] 可以将该方法包含在制造处理中,制造处理可以包括:在执行该方法之后,生成相应于CAD建模对象的物理产品。无论如何,由该方法从多个3D曲线所创建的表面可以表现为制造对象,例如这种对象的边界。该制造对象可以是产品,例如一个零件,或者多个零件的组件。因为该方法使得设计更加容易,该方法也使得对产品的制造更加快速,并因此提高了制造流程的生产率。
[0039] 该方法是计算机执行的。这意味着该方法由至少一个计算机,或者任何类似的系统所执行。除非另外地提及,该方法的所有步骤都由计算机所执行,而不需要用户的干预。例如,可以由单独的计算机确定(S20)、定义(S30)、确定(S40)和拟合(S50)的步骤,提供(S10)多个3D曲线的步骤也可以通过用户交互来执行。因此,用户可以干预提供(S10)多个
3D曲线,并且该方法可以接着自动地执行。从而,该方法允许通过确定(S20)、定义(S30)、确定(S40)和拟合(S50)的步骤,从多个3D曲线自动地创建表面,随后将对这些步骤进行讨论。
同样值得提及的是该方法的这些步骤中的一些可以允许用户的干预。例如,尽管如随后将讨论的,可以由单独的计算机自动地执行确定(S20)、定义(S30)、确定(S40)和拟合(S50),但是用户可以干预(例如,修改由计算机运行的算法的结果,例如,修改已经在(S30)定义的基本图形)。
[0040] 该方法的计算机执行的典型示例是用CAD系统来执行该方法,该CAD系统包括适于此目的的图形用户界面(GUI)。该CAD系统包括硬件,并且该GUI适合于执行该方法,而不需要装载任何软件。换言之,软件已经在GUI上准备好了(或者已经耦合到GUI)以备立即使用。换言之,该系统包括在耦合于该处理器的存储器上编码的指令,该指令提供执行该方法的装置。这种系统是一种工具,使用该工具使得从多个3D曲线创建表面变得容易。因此,这种系统可以被广泛的用户群体所使用,包括专门设计者,他们通常是具有创造性的艺术家用户,并且他们不熟悉复杂的CAD系统。
[0041] 该系统也可以是CAE和/或CAM系统,并且该CAD建模对象也可以是CAE建模对象和/或CAM建模对象。的确,CAD、CAE和CAM系统不是排他的,就象可以由相应于这些系统的任意组合的数据来定义建模对象。
[0042] 因为该曲线是3D的(例如,三维的),由该方法创建的表面也可以是3D的。这意味着由允许其3D表示的数据定义该表面。3D表示允许从所有角度对所表示的表面进行查看。例如,当表示为3D时,可以绕着3D表面的轴,或者绕着屏幕中的任何轴操作和旋转3D表面,该表示被显示在该屏幕上。这特别排除了2D图标,未对该2D图标进行3D建模。3D表示的显示促进了设计(例如,增加了设计者在统计意义上完成了其任务的速度)。这加速了工业中的制造处理,因为产品的设计是制造处理的一部分。
[0043] 3D曲线和所创建的表面可以是参数的。这确保了该表面已经准备好用作一大批CAD操作的输入。参数的形状(曲线或表面)是由至少一个参数的至少一个函数(例如,将这种函数存储在该系统的存储器中)建模的形状。该函数可以提供形状的点的位置。例如,可以由函数C(u)=(x(u),y(u),z(u))建模3D参数曲线,以及可以由函数S(u,v)=(x(u,v),y(u,v),z(u,v))建模3D参数表面,例如NURBS。在CAD领域中,CAD建模对象的建模元素,例如具有参数函数的曲线或表面,允许执行对形状执行CAD操作。的确,大多数CAD系统不能对表示对象的简单像素图进行CAD操作。换言之,CAD系统的大部分CAD操作需要参数函数作为要执行的输入。
[0044] 图2表示了典型CAD系统的GUI的示例。
[0045] GUI2100可以是典型的类CAD接口,具有标准的菜单栏2110,2120,以及按钮和侧面工具栏2140,2150。这种菜单和工具栏包括一组用户可选择的图标,每个图标都与一个或多个操作和功能相关联,正如本领域所公知的。这些图标中的一些与软件工具相关联,适用于编辑和/或操作显示在GUI2100中的3D建模对象2000。可以将该软件工具分组为工作台。每个工作台都包括软件工具的子集。具体地,工作台之一是编辑工作台,适合于编辑建模产品2000的几何特征。在操作中,例如,设计者可以预先选择对象2000的一部分,并接着通过选择适当的图标来启动操作(例如,改变维数、颜色等),或者编辑几何约束。例如,典型的CAD操作是对显示在屏幕上的3D建模对象的穿孔或折叠的建模。
[0046] 例如,GUI可以显示与显示的产品2000有关的数据2500。在图2的示例中,显示为“特征树”的数据2500和它们的3D表示2000属于包括制动钳和盘的制动装置。GUI还可以显示各种类型的图形工具2130,2070,2080,例如便于对象的3D取向,触发对编辑产品的操作的模拟或者提供显示的产品2000的各种属性。可以由触摸装置控制游标2060,以允许用户与图形工具进行交互。
[0047] 图3表示了作为客户计算机例如用户工作站的系统结构的示例。
[0048] 客户计算机包括中央处理单元(CPU)1010,其连接到内部通信总线1000,随机存取存储器(RAM)1070也连接到总线。客户计算机还装备有图形处理单元(GPU)1110,其与连接到总线的视频随机存取存储器1100相关联。视频RAM1100也是本领域公知的帧缓冲器。大容量存储装置控制器1020管理对大容量存储器装置的访问,例如硬件驱动1030。适合于确实地包含计算机程序指令和数据的大容量存储器装置包括所有形式的非易失性存储器,包括作为示例的半导体存储器装置,例如,EPROM,EEPROM,和闪存装置;磁盘,例如内部硬磁盘和可移除的磁盘;磁性光盘;和CD-ROM磁盘1040。前述的任何存储装置都可以由特别设计的ASIC(特定用途集成电路)所提供或者结合其中。网络适配器1050管理对网络1060的访问。该客户计算机也可以包括触摸装置1090,例如游标控制装置,键盘等等。在客户计算机中使用游标控制装置以允许该用户选择性地将游标定位在屏幕1080上的任何所希望的位置,如同参考图2所提及的。通过屏幕,其意味着可以执行任何在其上进行显示的支持物。另外,该游标控制装置包括多个信号生成装置,用于将控制信号输入到系统。典型地,游标控制装置可以是鼠标,使用该鼠标的按钮生成该信号。
[0049] 为了使得系统执行该方法,提供了包括由计算机执行指令的计算机程序,该指令包括用于此目的的方法。例如,可以以数字电子电路,或者计算机硬件、固件、软件或者它们的组合来实现该程序。本发明的设备可以被实现为计算机程序产品,该计算机程序产品被确实地嵌入在计算机可读存储装置中,该计算机可读存储装置由可编程处理器所执行;并且可以通过可编程处理器执行指令的程序来执行本发明的方法步骤,以通过运行输入数据以及生成输出来执行本发明的功能。可以方便地在一个或多个计算机程序中执行该指令,该计算机程序在可编程系统上是可执行的,该可编程系统包括至少一个被耦合以从至少一个输入装置接收数据和指令,或者将数据和指令发送到数据存储系统的可编程处理器,至少一个输入装置,以及至少一个输出装置。可以用高级处理或者面向对象的编程语言,或者如果需要的话用集合或机器语言来实现该应用程序;并且无论如何,该语言都可能是经编译或经翻译的语言。该程序可以是完全安装的程序,或者更新程序。在后一种情形下,该程序将现有的CAD系统更新到一个状态,在该状态中该系统适合于执行该方法。
[0050] 该方法包括提供(S10)多个3D曲线。例如,可以由用户提供该多个3D曲线。例如,该多个3D曲线包括被不受约束地描绘的曲线。不受约束地描绘曲线意味着用户绘制能够被转化为曲线的笔画,该曲线可以是参数的。可以直接在屏幕上绘制该笔画,如果该屏幕例如是触敏屏幕,或者在触敏标签上。这使得创建表面变得容易,并且对设计者来说是直观的,这些设计者(例如专门的设计者)习惯于在纸上描绘设计。
[0051] 该方法也包括确定(S20)曲线对之间的交叉。在给定曲线对之间的交叉是指示特定曲线对彼此特别接近的区域。“彼此接近”意味着给定对中的两条曲线之间的距离是在预定阈值之下。彼此“特别”接近意味着在交叉处的两条曲线之间的距离小于该曲线在其他区域处之间的距离。两条曲线之间的交叉(crossing)可以是两条曲线之间的相交(intersection)。然而,由于曲线是用户提供的,所述曲线不会完全彼此相交,尽管用户希望使它们相交。从而,交叉是经典相交的延伸,并且获得用户的意愿使曲线相交。在示例中,确定(S20)交叉包括:在曲线的相应对之间的被确定为点对的至少一个交叉,每个点都属于曲线的相应对中的不同的一个。换言之,至少一个交叉不是严格相交。因此,该方法获得了期望的曲线之间的相交,尽管曲线没有完美地相交。这在提供(S10)曲线之前,在定义曲线时提供了高灵活性。
[0052] 接着,该方法包括定义(S30)基本图形(即,初始图形)。该基本图形包括:表示交叉的节点、连接表示相邻交叉的节点对的弧。如果两个交叉都与相同的曲线相关联,并且在它们之间不存在其他交叉,那么认为两个交叉是相邻的。
[0053] 接着,该方法包括从所述图形确定(S40)网格,该网格包括由3D位置所定义的顶点以及连接所述顶点对的边。网格是广泛应用于CAD的一种特殊种类的图形。网格是具有与每个节点(在网格中被称作“顶点”,而弧被称作“边”)相关联的3D位置的图形。最后,该方法包括使用表面拟合(S50)网格。
[0054] 的确,在CAD中,广泛地使用网格,通过使用表面拟合网格来创建表面。该方法可以应用任何用于使用表面拟合网格的现有CAD系统的模型。该拟合表面可以是细分表面,或者NURBS。这种表面是参数的,并且允许对表面的进一步利用(不仅是对其的简单表示)。具体地,当将被创建的表面表现为产品时,例如零件或者零件的组件,细分表面提供为这种建模对象所需的高水平几何精确度。
[0055] 从而,该方法允许表面到一组在3D中不相交的曲线的拟合,这是由于交叉概念的使用。相比于现有技术中要求曲线互相接触的方法,本发明允许艺术家在3D中绘制曲线,而不需要考虑它们严格相交,这是存在巨大优势的。
[0056] 此外,一旦提供了曲线,该方法可以完全自动化。因此,用户不需要显示任何引导曲线等。该方法评估交叉,从交叉定义图形,接着通过从图形创建网格而使用表面拟合图形。由于从图形创建了网格,确保了尊重用户意图(即,所创建的表面表示所提供的曲线)。
[0057] 现在将参考图4-14描述该方法的示例。图4表示了该方法示例的流程图。图5-14图示说明了图4方法的步骤的示例。
[0058] 在这个示例中,该方法包括将所述多个3D曲线投影(S22)到支持物上,该支持物是3D形状(表面或者体),该3D形状(例如,概略地)表示用户想要创建的表面的形态。从而,获得多个相应的投影曲线。接着,示例的方法包括确定(S23)投影曲线对之间的交叉。最后该方法包括检索(S24)与投影曲线对之间的交叉相对应的曲线点对。换言之,确定(S20)与所述3D曲线的投影之间的交叉相对应的3D曲线之间的交叉。因此,在这个示例中,通过支持物执行对交叉的确定(S20),该支持物允许实现对在哪里应当检测到交叉的更好控制。
[0059] 的确,支持物充当指示器形状。参考图5-7,用户可以从目录创建或者选择这种初始的指示器形状50(即,该支持物)。的确,作为一个可选的处理步骤,可以使用指示器形状。在绘制3D曲线之前,用户首先使用任何构建3D形状的快速方法,创建粗略的初始形状,也有可能从目录中检索该形状。测定体积的油泥模型软件可以被用于制作指示器形状的目的。
接着,用户在该指示器形状周围,或者甚至在该指示器形状自身上以3D绘制曲线,有效地使用作为黑板的形状。因此,该用户可以创建曲线62,其投影到指示器形状50上。最终可以自动地由该方法生成和更新表面70,具体地,在通过它们的投影62(在图6上被标注为指示器形状50上的虚线)确定曲线之间的交叉之后。随后的表面70的构建可以仅仅取决于曲线62。
如果被使用,指示器形状50可以用于协助检测曲线交叉。已经发现的是该指示器形状允许更多对交叉的稳定检测,并因此是有利的。以这种方式,用户在曲线如何彼此相交上具有更多的控制。
[0060] 将所述多个3D曲线投影(S22)到支持物上包括:使多个3D曲线离散(S221)(即采样)为折线,众所周知,折线由一组线段组成。接着,投影(S22)可以包括将所述线段投影(S222)到支持物上。从而获得多个对应的投影线段(即,线段的投影)。在这点上,所述3D曲线被表示为源于所述3D曲线离散的折线的投影。该支持物可以包括面(平面),并且因此,该折线的投影可以是折线本身。换言之,该折线的线段的投影,例如“投影线段”也可以是线段。还有,确定(S23)投影曲线对之间的交叉包括确定(S231)与属于相同体素的不同曲线相对应的投影线段对,接着确定(S232)在所确定的投影线段对之间的双垂线,并且最后确定(S233)所述双垂线的末端。这种处理方式允许对交叉的快速确定(S20)。
[0061] 当用户描绘3D曲线时,3D曲线通常不会严格彼此相交,并且该算法必须估计这些相交(通过交叉的概念),尝试领会设计者期望表示什么。示例的方法将每条曲线都转换为折线形式(很多小线段),以减少邻近度计算的成本,并且将所述线段投影到支持物上,以查找它们之间的交叉。接着,该方法通过计算两个线段相交并且垂直于它们二者(双垂线)的唯一的线,来查找线段之间的交叉,正如图8所图示说明的两条投影线段Da和Db。如果这两个相交(图8上的x和y)处于线段Da和Db上,并且它们之间的距离小于阈值,那么该方法可以将其解释为这两个线段好像彼此相交(换言之,确定了交叉)。该方法可以保存由该两条曲线上的点x和y所描述的交叉。为了减少这个测试所花费的时间,正如图9所图示说明的,该方法可以使用体素。如果是这种情形,该方法可以将空间划分为立方体网格90,并且将仅仅测试处于相同立方体92内部的线段94(是否在它们之间存在交叉)。
[0062] 在该示例中,确定(S40)所述网格包括:向所述图形增加(S401)弧和/或节点,直到所述图形的所有贴片都被划分为具有三条或四条弧的面。将被确定(S40)的网格可以是三角网格或者四边形网格(每面相应具有三条或四条边)。四边形网格提供了高质量的最终表面。在所述图形是“不规则的”且没有准备好直接变为网格的情况下,增加(S401)允许每个面的边数量的减少。一旦该图形具有仅有三条或四条弧的贴片(即,环路),那么该图形离变为三角或四边形网格就更近了。
[0063] 一旦确定(S20)了交叉,该方法创建为每个交叉指示相邻点的图形。如果两个交叉处于同一曲线上,且在它们之间没有其他相交,那么所述两个交叉是相邻的。从这个图形生成了第一中间网格。使用递归算法,该方法检测图形中的被理解为图形中的贴片的循环。贴片是图形中具有3-6个边的面。因此,在这一点上,该网格由贴片组成,但是将网格划分,使得该方法可以将这个非正式网格转化为基础模型,例如细分网格。接下来,非划分的贴片将被称作“基本贴片”。对于每个经划分的贴片,该方法保存关于哪个基本贴片被分解来构成划分贴片的信息。
[0064] 潜在地,贴片可以具有不同于3到6个边,但是在下面将清楚,可以将分解方案设计为任意数量的边。的确,已经发现的是,覆盖3到6条边的范围是最佳可能策略之一,因为其他情况是罕见的并且对于设计者来说不是特别有用的。因此,示例的方法首先将六边形和五角形切割为三角形或者四边形。如图10所示,可以通过增加一个边104将六边形100拆分为一个四边形102和一个三角形103,或者通过增加一个顶点107和五条边108将六边形100拆分为五个四边形106。如图11所示,通过增加一个边113将五角形110拆分为两个四边形112。
[0065] 在该示例的方法中,确定(S40)该网格还包括:为所述图形增加(S402)弧和/或节点,直到没有T型结点留下。当曲线与另一条曲线交叉(即,与另一条曲线交叉)时,T型结点出现,于是终止。如果该曲线结束的地方不是该表面的外部边,在该网格中创建T型结点。在基础表面模型中T型结点并不总是被接受的。该示例的方法的目标之一是完美保持一般性,并且支持所有类型的表面模型。为此,该方法提供了一种模式,即该方法在网络中传播所有切割,有效地消除了T型结点。这允许最后的更高质量的表面。
[0066] 当该网格仅包括四边形和三角形时,这可以作为拓扑产生的最后步骤。对其的算法将可能在其他边的边上传播T型结点,直到该算法在其上循环为止,或者当该算法达到该表面的界限时,当T型结点不在是问题时。为了避免该算法中的无限循环,如果该算法再次到达初始基本贴片,该方法就可以停止传播。
[0067] 然而,在另一个示例中,该方法可以执行T型结点表面模型,例如T型样条曲线。在这种情形中,步骤(S402)是不必需的,该方法的其余部分是可以完整地应用的。可以简单地关闭该传播,并且保留该T型结点。
[0068] 图12和13图示说明了增加(S402)的示例。在两幅图中,网格120具有T型结点122。在图12的情形中,通过增加边124来消除T型结点122,而在图13的情形中,通过增加边126和顶点128来消除T型结点122。
[0069] 在该示例的方法中,确定(S40)所述网格的方法也包括:根据网格细分方案,为所述图形增加(S403)弧和/或节点。该网格细分方案可以是任何公知的网格细分方案,例如,Catmull-Clark细分方案。这允许对网格的细化,并且获得每个面的规则边数量。这在与该表面拟合(S50)的预期中平滑了该网格,从而产生了更加平滑的表面。
[0070] 交叉包括在曲线的相应对之间的被确定为点对的至少一个交义,每个点都属于曲线的相应对中的不同的一个,现在将讨论这种情形。换言之,这是一种曲线并未完全地彼此相交,但是打算彼此相交。在这种情形中,正如图4中示例的情形,确定(S40)该网格包括:将所述点对中心的3D位置与表示所述至少一个交叉的节点关联(S406)起来。的确,为了使用表面拟合(S50)网格,该方法可以预先将3D位置关联(S406,S407)到该网格的顶点。对于表示交叉的顶点,该方法可以利用形成交叉的两个点的中心。当然,对于作为完美相交的交叉(这在示例中,或许从未出现),可以使用该相交的位置。
[0071] 对于该网格的其他顶点(在确定(S40)该网格包括向图形增加节点(S401,S402,S403)的情形中),该方法可以包括将3D位置与给定增加节点关联(S407)起来,所述3D位置取决于相对于增加节点前的图形的给定节点的拓扑位置。例如,如果给定增加节点的拓扑位置处于增加节点前的图形的一条弧上,则根据与弧的末端处的节点相关联的3D位置,通过偏移由弧表示的曲线计算位置。
[0072] 图14图示说明了这种情形。参考图14,表示了三条曲线140,142,144。已经确定了曲线140和曲线142之间的交叉(x1,y1)和曲线140和曲线144之间的交叉(x2,y2)。这些交叉对应于网络中相应的最终顶点,标注为A和B,并且A和B分别与x1和y1、以及x2和y2的相应的中间位置相关联。在这个示例中,该方法已经将顶点X增加到该网格了。顶点X拓扑地属于曲线140。在这种情形中,通过偏移曲线140来计算与顶点X相关联的3D位置,使得其经过A和B的3D位置,从而评估在对应于该曲线上X的拓扑位置的偏移曲线上的位置(这种位置通过将X增加到该网格进行提供)。
[0073] 如果给定增加节点的拓扑位置处于在将节点增加到图形之前图形的具有四条边的贴片的内部,与给定增加节点相关联的3D位置可以是由公知的Coons方法计算的位置。在其他任何情形中,可以通过相邻节点的3D位置取平均来计算与给定增加节点相关联的3D位置。在后者的情形中,可以重复该取平均,计算的3D位置被逐次地改善,以获得更加平滑的结果,从而获得收敛到预期的结果。
[0074] 正如本领域技术人员将理解的,该方法因此可以保持跟踪每个顶点属于哪个基本贴片。此外,在四个边的贴片的情形中,(u,v)坐标(当拆分贴片时总是被更新)也可以被保持在存储器中。