用于确定将两个干扰对象分离的平移向量的系统、方法和计算机程序产品其它申请的交叉引用
本申请要求2009年1月21日提交的美国临时专利申请61/146,092的优先权,其被通过引用结合到本文中。
技术领域
本公开一般地针对计算机辅助设计、制图、制造和可视化系统(单独地且共同地为“CAD系统”)。
背景技术
当在CAD系统中使用该术语时,最小平移向量(minimum translation vector, MTV)是与另一对象相关地移动一个对象以便清除它们之间的碰撞所需的最小位移向量。MTV的长度称为最小平移距离(MTD),也称为穿透距离或碰撞深度。
发明内容
各种实施例包括用于确定在CAD系统中表示的第一对象与第二对象之间的最小平移向量(MTV)的方法、以及CAD系统和在计算机可读介质上编码以便执行类似方法的计算机程序产品。所述方法包括检索第一对象和第二对象并将第一对象和第二对象细化成各个小平面。所述方法包括创建与第一对象和第二对象中的每一个相对应的小平面的包围体树。所述方法包括在包围体树上执行贪婪过程以产生初始MTV,并且根据包围体树和初始MTV来执行连续修剪过程以产生最终MTV。所述方法包括将最终MTV存储在计算机可读介质中。
在某些实施例中,第一次执行贪婪过程以确定估计的MTV,并第二次执行贪婪过程以确定被作为初始MTV输出的改善MTV。在某些实施例中,贪婪过程包括加载初始数据、将树层级和修剪窗口初始化、使用树层级和修剪窗口来执行体元过程以确定修订MTV,以及存储修订MTV且输出修订MTV的步骤。在某些实施例中,用增加的树层级重复贪婪过程,直至其达到预定最大值。
在某些实施例中,所述初始数据包括树层级值、使用盒值、修剪值、包围体树和当前MTV中的一个或多个。在某些实施例中,体元过程包括加载体元初始数据、构建修剪窗口的体元模型、计算包围体树之间的Minkowski差、标记体元模型中的每个体元、从标记的体元来确定至少一个候选体元、确定具有从原点起的最小向量的候选体元以及将从原点起的最小向量作为修订MTV输出。
在某些实施例中,体元初始数据包括修剪窗口、包围体树和当前MTV中的一个或多个。在某些实施例中,连续修剪过程包括加载修剪过程初始数据、构造包含当前MTV且比前一修剪窗口更接近于原点的修剪窗口、使用树层级和修剪窗口来执行体元过程以确定修订MTV,以及存储修订MTV并将修订MTV作为最终MTV输出。
前文已相当广泛地概述了本公开的特征和技术优点,使得本领域的技术人员可以更好地理解随后的详细说明。下面将描述形成权利要求的主题的本公开的附加特征和优点。本领域的技术人员将认识到其可以容易地使用公开的概念和特定实施例作为用于修改或设计其它结构以便执行本公开的相同目的的基础。本领域的技术人员还将认识到此类等价构造在其最广泛形式方面不脱离本公开的精神和范围。
在开始以下具体实施方式之前,可以有利地阐述遍及本专利文献使用的某些词语或短语的定义:术语“包括”和“包含”以及其派生词意指没有限制的包括;术语“或”是包括性的,意指和/或;短语“与... ...相关联”和“与之相关联”以及其派生词可以意指包括、被包括... ...在内、与... ...互连、包含、被包含在... ...内、连接到或与... ...相连、耦合到或与... ...耦合、可与... ...通信、与... ...协作、交错、并置、接近于、局限于或与... ...密切相关、具有、具有... ...的性质等;以及术语“控制器”意指控制至少一个操作的任何设备、系统或其部分,无论此类设备是在硬件、固件、软件或其中的至少两个的某些组合中实现。应注意的是可与任何特定控制器相关联的功能可以是集中式或分布式的,无论是本地地还是远程地。遍及本专利文献提供了用于某些单词和短语的定义,并且本领域的技术人员应理解的是此类定义在许多(如果不是大部分)实例中应用于此类定义单词和短语的在先以及未来使用。虽然某些术语可以包括多种实施例,但所附权利要求可以明确地使这些术语局限于特定实施例。
附图说明
为了更透彻地理解本公开及其优点,现在对结合附图进行的以下描述进行参考,其中,相同的数字指示相同的对象,并且在附图中:
图1描绘实现公开实施例的数据处理系统的框图;
图2a和2b举例说明依照公开实施例的碰撞对象和相应的Minkowski差;
图3a描绘依照公开实施例的两个包围体树且图3b描绘依照公开实施例的相应树节点的包围盒;
图4a举例说明依照公开实施例的碰撞对象且图4b-4c举例说明依照公开实施例的最佳与安全MTV之间的差别;
图5a描绘依照公开实施例的实际和粗略MTV,并且图5b描绘依照公开实施例的经修剪窗口;
图6举例说明依照公开实施例的两个Minkowski差和相应的体元模型;
图7举例说明连续修剪过程期间的修剪窗口的示例性移动;以及
图8-11描绘依照公开实施例的过程。
具体实施方式
下文讨论的图1至11以及用来描述本专利文献中的本公开的原理的各种实施例仅仅是以图示的方式,并且不应以任何方式理解为限制本公开的范围。本领域的技术人员应理解的是可以在任何适当布置的设备中实现本公开的原理。参考示例性非限制性实施例来描述本申请的许多创新教导内容。
这里所述的各种实施例包括用于确定相互碰撞(或穿透)的CAD系统中的一对形状或几何模型的最小平移向量或最小的平移向量(单独地且共同地称为“MTV”)的系统和方法。如本领域的技术人员应理解的,MTV包括距离和方向两者,而最小平移距离(MTD)仅描述MTV的长度或距离。MTV是将一个几何对象移动至碰触(但不碰撞或穿透)另一几何对象所需的最小位移向量,而MTD是将一个几何对象移动至碰触(但不碰撞或穿透)另一几何对象所需的最小距离。当两个对象分开时,MTD是最小距离;否则其是穿透距离。
清除碰撞所需的距离取决于移动的方向。存在提供最小距离且对应于MTV的一个方向。除穷举搜索之外,没有简单的方法来确定此“最佳”方向。
在数学上讲,MTV的计算具有非常大的复杂性。例如,如果用小平面(网孔)模型来表示对象对,则计算复杂性与第一对象中的小平面的数目乘以第二对象中的小平面的数目的平方或者(N1*N2)2成比例。存在加速计算的已知算法。最快的能够将复杂性降低至(N1*logN1)*(N2*logN2)。然而,这对于商业应用而言仍然太慢,因为商业应用中的典型模型可以包含上亿个小平面。
公开的实施例包括实用且快速的用于计算MTV的过程,导致约logN1*logN2的降低的复杂性,适合于商业应用。在其它实施例中,作为找到“最佳”方向的替代,公开的方法能够替换地且可选地找到用于MTV的“安全”方向。在这方面,MTV可以是最小“安全”MTV,而不是绝对最小值MTV。
图1描绘其中能够实现实施例的数据处理系统的框图,例如作为特别地被配置为执行本文所述过程的CAD系统。所描绘的数据处理系统包括被连接到第二层级高速缓冲存储器/桥接器104的处理器102,该第二层级高速缓冲存储器/桥接器104又被连接到局部系统总线106。局部系统总线106可以是例如外围组件互连(PCI)架构总线。在描绘的示例中还连接到局部系统总线的是主存储器108和图形适配器110。图形适配器110可以连接到显示器111。
还可以将诸如局域网(LAN)/广域网/无线(例如WiFi)适配器112的其它外围设备连接到局部系统总线106。扩展总线接口114将局部系统总线106连接到输入/输出(I/O)总线116。I/O总线116被连接到键盘/鼠标适配器118、磁盘控制器120和I/O适配器122。可以将磁盘控制器120连接到存储装置126,其可以是任何适当的机器可用或机器可读存储介质,包括但不限于非易失性、硬编码型介质诸如只读存储器(ROM)或电可擦可编程只读存储器(EEPROM)、磁带存储装置和用户可记录型介质诸如软盘、硬盘驱动器和紧凑盘只读存储器(CD-ROM)或数字多功能盘(DVD)及其它已知的光、电或磁存储设备。
在所示的示例中还连接到I/O总线116的是音频适配器124,可以将扬声器(未示出)连接到音频适配器124以便播放声音。键盘/鼠标适配器118提供用于诸如鼠标、轨迹球、轨迹指示器等的定位设备(未示出)的连接。
本领域的技术人员应认识到图1所描绘的硬件在特定实施例中可以改变。例如,还可以另外或作为所描绘的硬件的替代而使用其它外围设备诸如光盘驱动器等。所描绘的示例仅仅是出于解释的目的提供的,并且并不意图暗示关于本公开的架构限制。
依照本公开的实施例的数据处理系统包括采用图形用户界面的操作系统。操作系统允许多个显示窗口同时存在于图形用户界面中,其中每个显示窗口提供到不同应用程序或同一应用程序的不同实例的界面。可以由用户通过定位设备来操纵图形用户界面中的光标。可以改变光标的位置,以及/或者可以生成诸如点击鼠标按钮的事件以对期望的响应进行致动。
如果经适当的修改,可以采用各种商用操作系统中的一个、诸如Microsoft Windows?的版本,即位于华盛顿州雷蒙德市的微软公司的产品。依照如所述的本公开来修改或创建操作系统。
LAN/WAN/无线适配器112能够连接到网络130(不是数据处理系统100的一部分),其可以是任何公共或私用数据处理系统网络或网络组合,如本领域的技术人员已知的,包括因特网。数据处理系统100能够通过网络130与服务器系统140通信,服务器系统140也不是数据处理系统100的一部分,但是能够例如被实现为单独的数据处理系统100。
MTV对于碰撞避免和对于与数字制造和CAD系统领域有关的大范围的应用而言是重要的。碰撞检测和避免对于各种组件(诸如机器人、机器工具及其它制造设备)的移动的编程和模拟而言是重要的。当编程的移动引起碰撞时,优选解决包括计算MTV以确定如何修改程序以避免碰撞。
碰撞检测本身是CAD系统的公共特征且对于本领域的技术人员而言是众所周知的。然而,此公共能力仅检测碰撞的存在,但不提供碰撞深度的附加分析。
缺乏商用MTV能力的一个原因是性能障碍。如较早所述,计算复杂性使得执行计算非常缓慢并妨碍实际实现。
两个凸对象之间的MTV的计算是被很好地研究的主题。诸如在下文引用的Gilbert和Cameron论文中描述的那些的已知方法是基于两个对象之间的MTV是从原点到两个对象的Minkowski差的最短向量的观察结果。因此,MTV的问题等价于计算Minkowski差。
两个严格凸对象之间的Minkowski差的计算是众所周知的。两个对象(主体)A和B之间的Minkowski差的定义是: 。也就是说,Minkowski差是两个对象的叠加。
图2a举例说明相互碰撞的对象A 205和B 210。图2b举例说明对象A和B的Minkowski差。相应的MTV 215被示为粗箭头。
在应用中,大多数形状是非凸的。遗憾的是两个非凸对象之间的Minkowski差的计算是非常复杂和困难的。为了将上述方法推广至非凸形状,例如,如在下文引用的Ehmann和Kim论文中,所述系统能够首先将每个非凸形状分解成较小凸块的并集。能够证明总Minkowski差是单独凸块的Minkowski差的并集:
如果在对象1中存在N1个凸块且在对象2中存在N2个凸块,则成对的Minkowski差的总数是N1*N2。为了计算它们的并集,所述系统能够针对每个其它的来分析每个Minkowski差,因此总复杂性是平方:(N1 *N2)2。
特定技术能够帮助加速计算,包括:
包围体分级结构:将对象的凸块组织成空间树,使得相互接近的所有块被放置在同一分支中。这样的示例是KD树。对于每个分支节点而言,计算并存储所有后代的包围盒。图3a示出两个包围体树305和310的结构的示例,每个对象一个,在本示例中对应于图2的对象205和210。在根层级(层级0),只有根对象被示为每个对象的单个节点。在下一个层级(层级1),为每个对象示出两个后代节点。
图3b举例说明分别对应于包围体树305和310和分别对应于图2的对象205和210的根层级315(层级0)和下一个层级320(层级1)的对应包围盒的示例。这里,再次地,在层级0,仅示出两个包围盒,每个对应于单个对象。在层级1,存在用于每个对象的两个包围盒,与图3a中的包围体树一致。
分级剔选:在图3a和3b中,任何人能够看到当系统从较高层级(层级0)移动至下一个层级(层级1)时,包围盒变得更小,并且因此穿透深度变得更小。也就是说,MTV(被示为粗箭头)随着系统沿着树层级向下移动而变得越来越小。请注意,层级1处的MTV 330小于层级0的MTV 325。公开实施例能够使用此剔选技术来显著地改善性能。
系统可以在顶层级开始并计算(估计的)MTV。系统然后可以从前一层级向下移动一个层级并跳过没有如估计的MTV那样深深地穿透(即,比估计的MTV大)的所有节点对。在横穿此层级之后,系统能够更新估计的MTV(其应比之前的小)并下降至下一个层级。重复相同的过程,直至达到叶片层级,并且叶片层级的MTV是最终答案。结果,树节点的一大部分从未被访问,因此,显著地减少了计算时间。
使用公开的剔选技术,将预期复杂性从(N1*N2)2降低至(N1*logN1)*(N2*logN2)。
存在用于改善性能、但将仅做出超过(N1*logN1)*(N2*logN2)的边际改善的其它技术。公开的实施例可以进一步将预期复杂性从(N1*logN1)*(N2*logN2)降低至(logN1)*(logN2)。焦点集中于设计更积极的剔选策略。此策略包含下文所述的多个步骤。这提供了显著的技术优点,即允许给定CAD系统处理器更快速且高效地找到MTV,或者允许以适当的速度和效率在CAD系统中使用不那么强大的处理器。
各种实施例使用包围体分级方案。其可以是任何种类的方案,只要其包含凸块(组件)的空间分级(例如树)且每个节点存储包含所有后代元件的包围盒即可。包围体分级方案的这两个特征在某些实施例中用来实现本文公开的积极的剔选策略。
公开的过程与用来计算Minkowski差及其并集的方法无关。其任何方法将与本发明一起使用。其将与任何种类的包围盒一起使用,诸如轴对准包围盒和定向包围盒的常见选择。其还与如何表示对象和如何计算对象的凸块(组件)无关,只要凸块是可用的即可。
在各种实施例中,系统找到安全的而不是最佳的MTV。通过放弃找到最佳(最短)MTV的目标且替代地尝试找到“安全的”一个,能够基本上增加效率。当然,在此意义上,安全的MTV不一定是“最小”平移向量,却是接近最小的平移向量,其基本上不太可能以其他方式导致碰撞或有问题的工具放置。
如下文更详细地描述的,找到安全MTV比找到最佳MTV更快。图4a-4c使用对象405和410举例说明最佳和安全MTV之间的差别。图5a示出两个碰撞对象405和410且箭头415和420表示将移动小对象以清除碰撞的两个候选MTV。向上箭头415是最佳MTV,因为其是最短的(比候选420短)。
然而,如图4b所示,最佳MTV 415将对象移动至紧缩点,在那里,对象410在三侧被对象405围绕,并且在两个方向上非常接近于对象505。
向右箭头420的另一选择将对象移动至开放空间。此“安全”MTV不如最佳的一个那样短,但是其是不仅清除碰撞、而且将对象移动至安全且开放空间的最小的一个,如图4c所示。
如上文所讨论的,计算机辅助制造中的MTV的普通用法是用于类似于机器人和机器工具的制造设备的碰撞避免。为了清除或避免碰撞,将机器人手臂或切割工具移动至开放区域是更安全且期望的。因此,目标是忽略所有紧缩点且仅计算将对象移动至安全且开放的区域的最小MTV。
在各种实施例中,系统使用包围盒来对安全MTV进行定位。为了找到安全MTV,CAD系统可以利用分级结构中的包围盒。优选地,系统仅横穿至浅的层级,诸如在八叉树分级结构中深入的三个层级,并使用三层级(或其它所选浅层级)节点的包围盒来计算MTV。
停在三层级节点处的一个原因是基于使用八叉树时的性能考虑。经验结果显示横穿超过层级3花费相当大的计算时间,而二层级包围盒趋向于过于粗糙。深度的选择取决于树的宽度。例如,用于二元树的相应选择是层级9,其对应于八叉树的层级3。
分支节点的包围盒是实际后代形状的凸外壳,因此其提供“填充”该形状的凹陷的自然方式。其自动地消除所有不安全紧缩空间,因此,结果得到的MTV始终通向安全的开放空间。
因为包围盒始终大于实际形状,从包围盒计算的MTV是始终大于实际、最佳MTV的估计MTV。其表示实际MTV的粗略(近似)位置。下文更详细地描述根据粗略MTV查明实际MTV的方法。
在某些实施例中,CAD系统使用修剪来改善并最终确定MTV。由包围盒过程确定的粗略MTV位置是在实际MTV的粗略位置上,因此系统不需要搜索得很远。为了使其快速,过程仅仅考虑空间的经修剪的“窗口”的立方体并使用非常积极的剔选。系统更深地横穿至分级结构中,并且在其包围盒的Minkowski差不与经修剪的窗口交叉时跳过每对节点。
图5a示出总Minkowski差<B-A>的简单示例,与图2B所示的类似。实线箭头505是实际MTV,而虚线箭头510是粗略MTV。图5b示出同一示例,其中附加的阴影正方形515示出经修剪的窗口。虚框表示520可能的成对Minkowski差(来自一对节点的包围盒)。系统能够快速地确定此Minkowski差远离阴影窗口,因此其将不会对实际MTV有所贡献。系统然后跳过这对节点及其后代。
系统然后仅横穿至能够产生能够占据经修剪窗口的一部分的Minkowski差的节点,因此仅使用少量的Minkowski差。
在某些实施例中,系统可以使用组成MTD计算中的三个阶段的“贪婪方法”来改善性能。这三个阶段在本文中称为估计、改善和最终确定,并且在流程图中举例说明示例性过程。
在估计阶段中,目标是找到MTD向量的大体位置。在此阶段中,系统前进深入两个包围体树中的每一个中的三个层级,并使用包围体来计算Minkowski差和相应的体元模型Z+,如上所述。结果得到的体元模型是近似值且始终大于实际模型。系统使用Z+来计算估计MTD+和相应的MTD向量。系统将此过程重复三次,从深度一至三。使用来自浅深度的结果MTD+来修整较深深度中的分支。体元模型的覆盖延伸至根节点的包围盒。
在改善阶段中,目标是逐渐地增加MTD向量的准确度并减小搜索的范围。类似于照相机的测距仪,系统以用于体元模型的(在前一步骤中获得的)估计MTD向量为中心地选择“裁剪范围”,以减少搜索。用裁剪范围,系统使用来自树深度4的包围盒来找到MTD向量的更准确的近似值。系统用体元模型的较小裁剪范围来重复此过程并横穿至树深度5以找到MTD的更精细且更准确的结果。结果仍是近似值,但是非常接近于实际答案。可以重复该过程,直至深度10或其它所选的深层级为止。
在估计和改善阶段中,系统仅使用包围盒的Minkowski差。这具有显著的性能优点,因为两个盒的Minkowski差也是盒。Minkowski差盒的最大值点是从第一盒的最小值点至第二盒的最大值点的位移向量,而Minkowski差盒的最小值点是从第一盒的最大值点至第二盒的最小值点的位移向量。修改TCDMinkowskiSum.cpp内部的源代码,使得当输入对是包围盒时,使用此简化计算。
在最终确定阶段中,目标是计算精确的解。系统构造包围来自ZOOM_IN阶段的估计MTD向量的非常精细的体元模型,并横穿包围体树一直到叶片层级以构建精确的模型Z并计算精确的MTD。为了使得算法高效,系统使用包围盒来削减搜索。在任何给定的TCD节点对之下更深地横穿之前,系统计算该对包围盒的Minkowski差。如果包围盒Minkowski差不与精细体元模型的任何覆盖部分交叉,则我们将不会再横穿得更深。
最终确定的最后阶段主要是使用叶片层级的小平面,并且较慢。然而,来自前两个阶段的结果能够集中于估计MTD向量的邻近区域周围的搜索,因此只有树的一小部分正在被横穿。大多数树分枝不在邻近区域中,并从横穿排除。在某些实施例中,系统在修剪中使用体元模型来获得快速结果。一旦选择了修剪窗口,系统可以使用体元模型来快速地对实际MTV进行定位。修剪窗口基本上是立方体。在体元模型中,系统可以将立方体划分成具有相等尺寸的小立方体,并且用整数的三元数组来标记每个体元(小立方体)。
如本文公开的体元模型是将3D空间划分成小的矩形盒(具有相同尺寸),其被称为体元,并且用一组整数(i,j,k)来标记每一个。每个体元被初始化为“空”以指示真空状态。为了记录给定Minkowski差的体积,系统将Minkowski差所包含的体元标记为“被占用”并将外面的体元置为空。另外,系统将在被占用(内部)和空(外部)体元之间的边界上的那些体元标记为“过渡”。
CAD解决方案与Minkowski差的“可见”侧面有关,因此,在本实施例中,系统仅标记可见过渡体元。可见侧面是对于从无限远处指向原点的概念上的光(与从原点处的光源出来的概念上的光相反)而言可见的那些侧面。系统还可以将到Minkowski差的所有指针存储在所有相应的可见过渡体元中。
回想计算MTD的一个步骤是计算所有Minkowski差的并集。在这些实施例中,系统针对体元模型调查每个Minkowski差,并将任何Minkowski差所包含的每个体元标记为被占用,并且将可见侧面处的那些标记为可见过渡。
当空的或可见过渡体元被另一Minkowski差占用时,将其标记为被占用。如果可见过渡体元也是另一Minkowski差的可见过渡,则到此Minkowski差的指针也被存储在体元内。最后,所有被占用体元的并集形成所有Minkowski差的并集的近似形状。
为了找到MTD,系统搜索最接近于原点的可见过渡体元,并且此体元位置是MTD向量的近似位置。由体元的尺寸来确定体元模型的准确度。
为了在不牺牲速度的情况下改善准确度,系统能够使用“递归体元模型”。也就是说,系统可以从粗略体元模型开始以找到MTD的大体位置,然后将粗略体元细分成具有较小尺寸的许多精细体元,并在这些更精细的体元上重复标记,并且要是没有实现期望的准确度则递归地重复整个过程。最后,在候选MTD体元处,系统能够查明所有附近的Minkowski差(其被存储在体元内)以计算MTD的精确值。
图6举例说明两个Minkowski差和相应体元模型。用圆圈来标记被占用体元。围绕被占用体元的体元是过渡体元。点Q附近的过渡体元是包含MTD向量的那一个,而点O是原点。原点O示出从其延伸的候选MTD 605。
在某些实施例中,系统使用连续的修剪来保证正确性。如上所述,选择小的修剪以便跳过未占用被修剪窗口的大部分树节点以获得更好的性能可能是期望的。然而,选择过小的被修剪窗口可能遗漏实际MTV。如果被修剪窗口未覆盖实际MTV,则所有体元保持为“空”的,并且什么也找不到。
要注意,如果被修剪窗口是空的,则始终存在更接近于原点的答案。因此,系统能够反复地将被修剪窗口移动得更接近于原点,直至找到MTV为止。图7举例说明修剪窗口的示例性移动。在图7中,在最右侧示出了第一被修剪窗口705(阴影正方形),其遗漏了实际MTV(粗箭头710)。选择更接近于原点的后续被修剪窗口715和720,直至第三个找到MTV为止。这种方法保证找到实际安全MTV。
图8描绘依照公开实施例的主过程。在某些实施例中,MTV的计算包括以下步骤:
CAD系统检索两个输入对象A和B(步骤805)。此过程可以包括将它们从计算机可读存储装置加载,通过网络或本领域的技术人员已知的其它手段接收它们。对象可以是二维或三维对象模型。
系统将输入对象A和B细化成小平面(三角形)或Ai和Bj的凸基元(步骤810)。系统能够但不一定记录小平面之间的连接性信息。系统创建用于输入对象A和B中的每一个的小平面或凸基元的包围体树(步骤815)。
接下来,系统设置初始值,其在某些实施例中包括将最小层级设置为1,将最大层级设置为诸如3的浅层级,修剪至假,并且系统调用贪婪处理器过程,如图9所示(步骤820)。此步骤对应于先前解释的估计阶段。
系统接收贪婪处理器过程的结果,设置辅助值,其在某些实施例中包括将最小层级设置为4,将最大层级设置为诸如10的深层级,修剪至真,并且系统再次调用贪婪处理器过程,如图9所示(步骤825)。此步骤对应于先前解释的改善阶段。
该系统接收第二贪婪处理器过程的结果,并调用最终处理器过程,如图11所示,以使用连续修剪来最终确定MTV(步骤830)。此步骤对应于先前解释的最终确定阶段。从这个过程返回最终确定的MTV,并将其存储在CAD系统或其它计算机可读介质中,并且可选地显示给用户。
图9举例说明依照公开实施例的贪婪处理器过程。在此过程中,系统首先加载初始数据(其可以包括从调用过程传递数据),初始数据包括最小层级、最大层级、修剪值、包围体树和当前MTV(步骤905)。
系统通过将树层级设置为最小层级来对其进行初始化(步骤910)。
系统将修剪窗口初始化成包含全部的盒(步骤915)。
系统检查是否修剪为真(步骤920)。如果是这样,则系统构造以MTV为中心的修剪窗口(步骤925),并且如果不是,则跳过步骤925。
系统将“使用盒”值设置为真,并调用体元处理器,如图10所示,以计算修订MTV(步骤930)。
系统接收体元处理器的结果并增加树层级(步骤935)。如果树层级未超过最大树层级(步骤940),则过程重复至步骤920。否则,系统将修订MTV输出至调用过程(步骤945)。
图10举例说明依照公开实施例的计算所有Minkowski差的并集的体元处理器。这里,系统横穿树并计算成对的Minkowski差且构建表示并集的体元模型Z,如下文更详细地描述的。
在此过程中,系统首先加载初始数据(其可以包括从调用过程传递数据),包括树层级、使用盒值、修剪窗口、包围体树和当前MTV(步骤1005)。
系统构建修剪窗口的体元模型并将体元初始化为空(步骤1010)。
系统横穿至两个BV树的根(步骤1015)。
该步骤确定使用盒值是否是真或是否不存在叶片节点(步骤1020)。如果情况是这些中的任一个,则系统计算包围体的Minkowski差(步骤1025)。如果情况不是它们中的任何一个,则系统计算小平面/基元的Minkowski差(步骤1030)。
系统确定在计算的Minkowski差与当前修剪窗口之间是否存在交集(步骤1035)。如果不存在,则跳过步骤1040。
如果是这样,则系统将所计算的Minkowski差输入到体元模型中并相应地标记体元(步骤1040)。在体元模型中,每个体元被标记为OUTSIDE(空)、INSIDE(被占用)或VISIBLE(过渡)。在给定VISIBLE体元附近的所有Cji的MTD指针被存储在体元内。对于体元模型Z中的每个Minkowski差而言,系统如下执行标记体元:
系统将完全被Minkowski差占用的每个体元标记为“被占用”,无论体元的状态如何。“被占用”体元永远保持“被占用”。如果体元状态不是“被占用”,则系统将在“被占用”与“空”之间的边界上的任何体元标记为“过渡”。此Minkowski差的参考被添加到“过渡”体元的关联存储器。
接下来,系统横穿至兄弟或子节点(步骤1045)。
系统确定过程是否已超过树层级或用尽所有子节点(步骤1050)。如果不是,则过程重复至步骤1020。
如果是这样,则系统找到候选体元并确定具有从原点起的最小向量的那一个(步骤1055)。系统将从原点起的最小向量作为修订MTV输出(步骤1060)。体元模型Z的原点与此体元之间的向量对应对象A和B之间的MTD,为。
图11描绘依照公开实施例的最终处理器过程,也称为连续修剪过程。在此过程中,系统首先加载初始数据(其可以包括从调用过程传递数据),其包括包围体树和当前MTV(步骤1105)。
系统构造包含MTV且更接近于原点的修剪窗口(步骤1110)。
系统设置初始值,在某些实施例中包括将使用盒值设置为假,并将树层级设置为无穷大,并调用如图10所述的体元处理器过程以计算最终MTV(步骤1115)。
系统确定最终MTV是否在修剪窗口中(步骤1120)。如果不是,则过程重复至步骤1110。否则,系统输出来自该过程的最终确定的MTV(步骤1125)。
在某些实施例中,使用表面壳,其基于表面的空心壳而不是被该壳包含的体积。在某些实施例中,本文公开的过程能够报告和/或存储表示移动第一部分以清除与第二部分的碰撞的最短向量的全局最小平移向量。在某些实施例中,最小平移向量的起始位置或穿透的位置在第一部分的壳上并且靠近最深穿透的大体附近。该位置可以不是精确的,因为其可以不是唯一的或很好地定义的。在某些实施例中,可以基于各部分的细化的密度来自动地确定精确度。
公开实施例能够利用的本领域技术人员所已知的技术包括E.G. Gilbert、D. W. Johnson和S.S. Keerthi在IEEE J. Robotics and Automation,卷 4 (1988),#2中的“A fast procedure for computing the distance between complex objects in three - dimensional space”;S. Cameron在IEEE Int. Conf. Robotics & Automation,Albuquerque,1997年4月22-24日中的“Enhancing GJK : Computing Minimum and Penetration Distances between Convex Polyhedra”;S.A. Ehmann和M.C. Lin在Eurographics,卷20(2001),#3中的“Accurate and Fast Proximity Queries between Polyhedra Using Convex Surface Decomposition”;以及Y.J. Kim、M.A. Otuduy、M.C. Lin和D. Manocha在ACM Symposium on Computer Animation,2002年7月21-22日中的“Fast Penetration Depth Computation for Physically-based Animation”,其全部通过引用被结合到本文中。
本领域的技术人员应认识到为了简单和明了起见,在本文中未描绘或描述适合于与本公开一起使用的所有数据处理系统的全部结构和操作。替代地,仅描绘和描述了作为本公开所独有或理解本公开所需的这么多的数据处理系统。数据处理系统100的构造和操作的其余部分可以符合本领域中已知的各种当前实现和实践中的任何一个。
重要的是要注意虽然本公开包括在全功能系统的背景下的描述,但本领域的技术人员应认识到本公开的机制的至少一部分能够以包含在多种形式中的任何一个的机器可用、计算机可用或计算机可读介质内的指令形式分布,并且无论用来实际上执行分布的承载指令或信号的介质或存储介质的特定类型如何,本公开都等同地适用。机器可用/可读或计算机可用/可读介质的示例包括:非易失性硬编码型介质诸如只读存储器(ROM)或电可擦可编程只读存储器(EEPROM),以及用户可记录型介质诸如软盘、硬盘驱动器和紧凑盘只读存储器(CD-ROM)或数字多功能盘(DVD)。
虽然已经详细地描述了本公开的示例性实施例,但本领域的技术人员应认识到在不脱离本公开的精神和范围的情况下(在其最广泛形式中)可以进行本文公开的各种修改、替换、变更和改善。
不应将本申请中的说明读作意味着任何特定元件、步骤或功能是必须包括在权利要求范围内的必不可少的元素:仅仅由经允许的权利要求来定义申请专利的主题的范围。此外,这些权利要求中没有一个意图援引35 USC§112的第六段,除非确切的词语“用于...的装置”后面是分词。