CN110929435B - 3d打印中的圈闭支撑区域的空间感知检测 - Google Patents
3d打印中的圈闭支撑区域的空间感知检测 Download PDFInfo
- Publication number
- CN110929435B CN110929435B CN201910557106.4A CN201910557106A CN110929435B CN 110929435 B CN110929435 B CN 110929435B CN 201910557106 A CN201910557106 A CN 201910557106A CN 110929435 B CN110929435 B CN 110929435B
- Authority
- CN
- China
- Prior art keywords
- cube
- grid
- given
- trap support
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B33—ADDITIVE MANUFACTURING TECHNOLOGY
- B33Y—ADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
- B33Y50/00—Data acquisition or data processing for additive manufacturing
-
- 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B29—WORKING OF PLASTICS; WORKING OF SUBSTANCES IN A PLASTIC STATE IN GENERAL
- B29C—SHAPING OR JOINING OF PLASTICS; SHAPING OF MATERIAL IN A PLASTIC STATE, NOT OTHERWISE PROVIDED FOR; AFTER-TREATMENT OF THE SHAPED PRODUCTS, e.g. REPAIRING
- B29C64/00—Additive manufacturing, i.e. manufacturing of three-dimensional [3D] objects by additive deposition, additive agglomeration or additive layering, e.g. by 3D printing, stereolithography or selective laser sintering
- B29C64/30—Auxiliary operations or equipment
- B29C64/386—Data acquisition or data processing for additive manufacturing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/18—Manufacturability analysis or optimisation for manufacturability
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- General Physics & Mathematics (AREA)
- Chemical & Material Sciences (AREA)
- Materials Engineering (AREA)
- Manufacturing & Machinery (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computer Graphics (AREA)
- Computational Mathematics (AREA)
- Mechanical Engineering (AREA)
- Optics & Photonics (AREA)
- Image Generation (AREA)
- Analysing Materials By The Use Of Radiation (AREA)
- Architecture (AREA)
Abstract
一种计算机辅助设计(CAD)系统,其可以支持3D打印中的圈闭支撑区域的空间感知检测。该CAD系统可以检测表面网格中的圈闭支撑区域,其中所检测的圈闭支撑区域不具有通往表面网格中的开口的线性通路,包括:利用封闭表面网格的虚拟边界框来包围该表面网格,将虚拟边界框和表面网格映射到3D立方体空间中,并且跟踪3D立方体空间的网格立方体和边界立方体。对于表面网格的给定网格面,所述CAD系统可以通过从所述给定网格面投射射线并且基于所述射线穿过网格立方体或边界立方体来评估所述给定网格面作为圈闭支撑区域的一部分,来确定给定网格面是否是圈闭支撑区域的一部分。
Description
背景技术
计算机系统可用于创建、使用和管理用于产品和其它项目的数据。计算机系统的示例包括计算机辅助设计(computer-aided design,CAD)系统(其可以包括计算机辅助工程(computer-aided engineering,CAE)系统)、可视化和制造系统、产品数据管理(productdata management,PDM)系统、产品生命周期管理(product lifecycle management,PLM)系统等。这些系统可以包括有助于产品结构的设计和模拟测试的部件。
发明内容
所公开的实施方式包括支持3D打印中的圈闭支撑区域(trapped support area)的空间感知检测的系统、方法、设备和逻辑。
在一个示例中,一种方法可以由CAD系统执行、处理或者以其它方式实现。该方法可以包括访问将由3D(三维)打印机构建的物体的表面网格并且检测所述表面网格中的圈闭支撑区域,其中所检测的圈闭支撑区域不具有通往所述表面网格中的开口的线性通路。检测所述圈闭支撑区域可以包括:利用封闭(enclose)所述表面网格的虚拟边界框来包围该表面网格;将所述虚拟边界框和表面网格映射到3D立方体空间中;跟踪包括有所述表面网格的网格面(mesh face)的至少一部分的所述3D立方体空间的网格立方体;跟踪包括有所述虚拟边界框的至少一部分的所述3D立方体空间的边界立方体;和对于所述表面网格的给定网格面,通过以下步骤确定所述给定网格面是否是圈闭支撑区域的一部分:从所述给定网格面投射射线(projecting a ray)并基于所述射线穿过网格立方体或边界立方体,评估所述给定网格面作为圈闭支撑区域的一部分。该方法还可以包括:提供能指示在表面网格中检测到所述圈闭支撑区域的圈闭支撑警报;以及获取考虑了所述圈闭支撑区域的重新设计的表面网格。
在另一个示例中,一种系统,可以包括:网格访问引擎(engine)和圈闭支撑检测引擎。所述网格访问引擎可以被配置以访问将由3D打印机构建的物体的表面网格。所述圈闭支撑检测引擎可以被配置以将所述表面网格映射到3D立方体空间中;跟踪包括有所述表面网格的网格面的至少一部分的所述3D立方体空间的网格立方体;通过基于从给定网格面投射的射线穿过所述3D立方体空间的网格立方体,选择性地执行对所述表面网格的其它网格面的相交检查,来确定所述表面网格的给定网格面是否是圈闭支撑区域的一部分;提供能指示在表面网格中检测到圈闭支撑区域的圈闭支撑警报;以及获取考虑了所述圈闭支撑区域的重新设计的表面网格。
在又一示例中,一种非瞬时性机器可读介质,其可以存储可由处理器执行的指令。一旦执行,该指令可以使处理器或CAD系统访问将由3D打印机构建的物体的表面网格,并且检测所述表面网格中的圈闭支撑区域,其中所检测的圈闭支撑区域不具有通往所述表面网格中的开口的线性通路。所述检测可以包括:利用封闭所述表面网格的虚拟边界框来包围该表面网格;将所述虚拟边界框和表面网格映射到3D立方体空间中;跟踪包括有所述表面网格的网格面的至少一部分的所述3D立方体空间的网格立方体;跟踪包括有所述虚拟边界框的至少一部分的所述3D立方体空间的边界立方体;和对于所述表面网格的给定网格面,通过以下步骤确定所述给定网格面是否是圈闭支撑区域的一部分:从所述给定网格面投射射线并且基于所述射线穿过网格立方体或边界立方体,评估所述给定网格面作为圈闭支撑区域的一部分。所述指令的执行还可以使所述处理器或者CAD系统:提供能指示在表面网格中检测到所述圈闭支撑区域的圈闭支撑警报;以及获取考虑了所述圈闭支撑区域的重新设计的表面网格。
附图说明
在下面的详细描述中并参照附图来描述某些实施例。
图1示出了支持3D打印中的圈闭支撑区域的空间感知检测的CAD系统的示例。
图2示出了表面网格访问和处理以支持在物体设计中的圈闭支撑区域的空间感知检测的示例。
图3示出了由圈闭支撑检测引擎进行空间区分来支持圈闭支撑区域的检测的示例。
图4示出了通过圈闭支撑检测引擎来支持圈闭支撑区域的空间感知检测的示例性立方体表征。
图5进一步示出了由圈闭支撑检测引擎来支持圈闭支撑区域的空间感知检测的示例性立方体表征。
图6示出了系统可以实施以支持3D打印中的圈闭支撑区域的空间感知检测的逻辑的示例。
图7示出了系统可以实施以对表面网格的网格面执行圈闭支撑检测的逻辑的示例。
图8示出了支持3D打印中的圈闭支撑区域的空间感知检测的系统的示例。
具体实施方式
可以通过使用3D打印机来执行增材制造(有时被称为3D打印),3D打印机可以通过材料沉积来构建物体。由于3D打印通常涉及逐层材料沉积,所以某些物体结构(例如,悬垂物)可能需要在3D打印期间使用物理支撑件来正确地构建物体。当在3D打印期间圈闭或封闭支撑区域时问题出现了,使得用来构建物体的插入支撑件变得不可拿取(inaccessible)或者无法移除。在这方面,圈闭的支撑件可以包括在3D打印期间插入的支撑件,该支撑件被完全或部分地封闭,使得插入的支撑件不能通过3D打印或增材制造后续工艺进行移除。
因此,圈闭支撑区域可以指这样的存在于物体或物体设计中的区域或表面,在该区域或表面中,需要用于3D打印的支撑件,但这种支撑件将被圈闭在3D打印的物体上。在一些示例中,圈闭支撑区域可以指不具有通往物体中的开口(opening)的线性通路(access)的任意物体区域。因此,在物体的3D构建时,插入到圈闭支撑区域中的任何支撑件都是不可拿取的,即是“被圈闭的”。
可以在CAD设计阶段期间执行物体中的圈闭支撑区域的检测,以在3D打印机物理构建物体之前解决潜在的圈闭问题。然而,圈闭支撑检测过程可能是低效率的且是计算密集型的。许多圈闭支撑技术涉及分析物体的表面网格,该物体可能包括大量的网格面(例如,共同对物体的表面进行建模的多个三角形或其它形状)。由于CAD模型发展得具有越来越高的复杂度和粒度,导致这种表面网格分析可能是复杂的且资源密集型的。
一些圈闭支撑检测技术可能涉及蛮力计算,例如通过从物体设计的多个网格面投射射线并对物体设计的每一个其它网格执行相交检查(intersection check)。如果给定网格面的投射射线被确定为不与物体中的每一个其它网格面相交,那么这种蛮力技术可以确定该给定网格面不是圈闭支撑区域的一部分。然而,这种确定付出了许多相交检查计算的代价,而这种计算可能用于物体设计的每一个其它网格面,其中许多网格面是无关的或者是不可能通过投射射线到达的。随着物体设计的复杂度增加,物体的表面具有数量可达百万或更多的网格面,用于圈闭支撑检测的蛮力技术将只会加剧低效率和资源消耗。
本发明可以提供用于3D打印中的圈闭支撑区域的空间感知检测的系统、方法、设备和逻辑。特别地,本文所述的圈闭支撑检测特征可以选择性地对在空间上接近(proximate to)从物体的给定网格面投射的射线的网格面执行相交检查。换句话说,本文描述的特征可以在圈闭支撑检测期间提供智能的或空间感知的相交检查计算。如下文更详细地描述的,本文所公开的圈闭支撑检测特征可以包括使用映射的3D空间来表征3D空间的特定部分并且将该3D空间的特定部分与物体设计中的特定网格面相关联,其可以允许对圈闭支撑检测的相关性进行有效和快速的确定。
例如,在投射射线期间,可以以选择性的方式对接近于(因此可能阻挡或圈闭)从正在被分析的给定网格面投射的射线的相关网格面执行相交检查。因此,本文描述的特征可以向物体的网格面的小得多的、相关的子集提供空间感知计算,而不是对物体的所有(或甚至大多数)网格面无差别地执行相交检查。因此,可以以提高的计算效率和有效性来执行圈闭支撑区域的检测。在一些示例中,与蛮力技术相比,本文描述的圈闭支撑检测特征可能导致CAD计算系统以提高10倍、100倍或1000倍的效率来操作,随着3D物体设计的复杂度增加,这种效率提高可能更多。
图1示出了支持3D打印中的圈闭支撑区域的空间感知检测的CAD系统100的示例。CAD系统100可以采用计算系统的形式,该计算系统包括单个或多个计算设备,例如应用服务器、计算节点、台式计算机或笔记本计算机、智能电话或其它移动设备、平板设备、嵌入式控制器等。在一些实施方式中,CAD系统100采用CAD工具或CAD程序,通过该CAD工具或CAD程序,用户可以设计和模拟产品结构的测试。
如本文中更详细描述的,CAD系统100可以以空间感知的方式对3D表面网格执行圈闭支撑检测。这样做可以使CAD系统100选择性地执行物体的给定网格面与具有自支撑件移除时阻挡该给定表面网格的潜在性或可能性的其它相关网格面之间的相交检查。CAD系统100可利用各种技术来提供智能的、空间感知的相交检查,包括通过将表面网格映射到3D空间,由此3D空间的各个空间可被表征为包括物体的一个或多个网格面或者被表征为物体的外部(并因此当物体的网格面具有对这些部分的线性通路时这些部分是可访问的)。CAD系统100可以利用空间索引以提高的速度来标识这样的特征空间,然后可支持智能的和高效的相交检查以及圈闭支撑检测。
作为示例性的实施方式,图1中示出的CAD系统100包括网格访问引擎108和圈闭支撑检测引擎110。CAD系统100可以以各种方式(例如以硬件和编程方式)来实现引擎108和110(及其部件)。用于引擎108和110的编程可以采用存储在非瞬时性机器可读存储介质上的处理器可执行指令的形式,并且用于引擎108和110的硬件可以包括用于执行这些指令的处理器。处理器可以采用单处理器或多处理器系统的形式,并且在一些示例中,CAD系统100使用共同的计算系统特征或硬件部件(例如,公共处理器或公共存储介质)来实现多个引擎。
在工作时,网格访问引擎108可以访问将由3D打印机构建的物体的表面网格。圈闭支撑检测引擎110可以将该表面网格映射到3D立方体空间中,并且跟踪包括有所述表面网格的至少一部分网格面的该3D立方体空间的网格立方体。圈闭支撑检测引擎110可以通过基于从给定网格面投射的射线穿过3D立方体空间的网格立方体,对表面网格的其它网格面选择性地执行相交检查,来进一步确定表面网格的给定网格面是否是圈闭支撑区域的一部分。在一些实施方式中,圈闭支撑检测引擎110还可以在给定网格面不是圈闭支撑区域的一部分时进行评估,这是通过用虚拟边界框封闭表面网格、跟踪包含至少一部分虚拟边界框的3D立方体空间的边界立方体,以及响应于确定从给定网格面投射的射线穿过边界立方体来确定表面网格的给定网格面不是圈闭支撑区域的一部分来进行的。
下面更详细地描述根据本发明的圈闭支撑区域检测的这些和其它示例性特征。
图2示出了表面网格访问和处理以支持在物体设计中的圈闭支撑区域的空间感知检测的示例。在图2中,网格访问引擎108访问表面网格210。表面网格210可以对将要通过3D打印构建的物理物体的表面进行建模,这以共同形成物体表面的多个多边形(例如,在物体设计中由顶点和边缘形成的多个网格面)的形式来进行。
圈闭支撑检测引擎110可以处理表面网格210,以支持圈闭支撑区域的空间感知检测。作为示例性的处理,圈闭支撑检测引擎110可以以边界形状封闭表面网格210。边界形状实际上可以勾画出由表面网格210表示的物体表面之外的区域。因此,具有通往该边界形状的线性通路的任何网格面可以被确定为没有被圈闭在物体内(并且不是被圈闭的支撑区域,因为3D构建后可以移除这些区域的插入支撑件)。通过经由边界形状来表示物体外部的区域,圈闭支撑检测引擎110可以支持相对于物体的空间的表征,其可以允许空间感知确定表面网格210的网格面不在圈闭支撑区域中。
在图2中,圈闭支撑检测引擎110利用虚拟边界框220封闭表面网格210。圈闭支撑检测引擎110可以通过将多个矩形形状元素(其一起封闭表面网格210)添加到CAD设计中来这样做。具体地,圈闭支撑检测引擎110可以形成与表面网格210分开的虚拟边界框220,以使虚拟边界框220的任何部分都不接触表面网格210。这样做可以确保对所表示的物体的外部区域的正确表示。尽管在图2所示的示例中示出为矩形形状,但圈闭支撑检测引擎110可以以与表面网格210分离并封闭表面网格210的任何适当形状来包围表面网格210。
作为处理的另一个示例,圈闭支撑检测引擎110可以将表面网格210(和虚拟边界框220)映射到3D空间中。圈闭支撑检测引擎110可以通过将CAD设计细分为共同形成该3D空间的多个虚拟3D形状来这样做。这种映射的一个示例是映射到3D立方体空间。为了通过图2进行说明,圈闭支撑检测引擎110可以将虚拟边界框220和表面网格210细分为由多个3D立方体组成的3D立方体空间230。每一个3D立方体包括3D立方体空间中的特定空间部分,并且可以包括虚拟边界框220的部分、表面网格210的一个或多个网格面,或者两者都不包括。
在本文中持续使用三维立方体空间用为示例。然而,圈闭支撑检测引擎110可以将表面网格210和虚拟边界框220映射到由任何类型的3D形状或多边形(例如,3D矩形、3D菱形、3D三角形等)组成的3D空间中,只要虚拟边界框220和表面网格210的每一个部分被映射到所映射的3D空间中的特定3D形状。本文所描述的各种3D立方体特征中的任何一个可以由圈闭支撑检测引擎110一致性地应用于所映射的3D空间中的任何形式的3D形状。
在一些实施方式中,圈闭支撑检测引擎110设置映射的3D空间的粒度。该粒度可以指定形成3D空间的3D形状的大小。在图2中,通过圈闭支撑检测引擎110将虚拟边界框220和表面网格210映射到3D立方体空间230可以包括将3D立方体空间230的立方体参数设置为与表面网格210的粒度成比例的阈值尺寸。作为示例,圈闭支撑检测引擎110可以将3D立方体空间的立方体尺寸设置为与表面网格粒度(例如,最小网格面尺寸、平均网格面尺寸、最大网格面尺寸等)相同、成比例或偏离。因此,圈闭支撑检测引擎110可以关联映射的3D立方体空间230,以与表面网格210的网格质量一致。
作为一个特定示例,圈闭支撑检测引擎110可以将映射的3D立方体空间230的粒度(例如立方体尺寸)设置为大于表面网格210的粒度的指定百分比(例如,125%)。通过这样做,圈闭支撑检测引擎110可以确保3D立方体空间230中的给定的立方体可以包括整个单个网格面并且(可选地,依据阈值百分比)确保给定的立方体不能包括多个网格面整体。换句话说,圈闭支撑检测引擎110可以为映射的3D立方体空间设置立方体粒度,使得整个单个网格面可以位于单个3D立方体内。
通过确保3D立方体空间230中的单个立方体可以整体地封闭特定网格面,圈闭支撑检测引擎110可以提高计算效率。当被封闭在单个立方体中,而不是多个立方体封闭时,可以单次执行特定网格面的相交检查。当3D立方体空间230的立方体粒度小于表面网格210的粒度时,可能不是这种情况,对于将特定网格面包括在其中的多个立方体中的每一个,可能要多次计算对特定网格面的相交检查。然而依据特定的立方体边界,在3D立方体空间230中的给定的立方体仍可以包括多个网格面的多个部分。
在一些实施方式中,圈闭支撑检测引擎110可以确保不存在同时包含一部分网格面和一部分虚拟边界框220的3D立方体。在这方面,圈闭支撑检测引擎110可以确保立方体不能既被表征为包括网格面,又被表征为包括一部分虚拟边界框220。对网格立方体和边界立方体的分开表征可以为圈闭支撑检测引擎110提供对3D空间的各部分进行适当地表征的机制,从而支持空间感知的圈闭支撑检测。为了确保不存在同时包括虚拟边界框220的一部分以及网格面的任何部分的3D立方体,圈闭支撑检测引擎110可以控制虚拟边界框220的周边到表面网格210的距离,例如为阈值距离,其至少是3D立方体空间230的立方体粒度。在其它示例中,如果映射的立方体中有任何一个包括虚拟边界框220的一部分以及网格面的任何一部分,则圈闭支撑检测引擎110可以重新映射3D立方体空间230。
通过将表面网格210和虚拟边界框220映射到3D立方体空间230,圈闭支撑检测引擎110可以在CAD设计中区分某些空间,以支持圈闭支撑区域的空间感知检测。下面在图3中描述一些示例性的区分。
图3示出了由圈闭支撑检测引擎110进行空间区分以支持圈闭支撑区域的检测的示例。特别地,圈闭支撑检测引擎110可以在网格面所位于的3D空间(例如立方体)、虚拟边界框220所位于的3D空间(例如立方体)、或者二者都不位于的3D空间之间进行区分。这样做时,圈闭支撑检测引擎110可以跟踪包括表面网格210的至少一个网格面的网格立方体以及跟踪包括至少一部分虚拟边界框220的边界立方体。
如本文所使用的,网格立方体可以指包括网格面(无论部分还是整体)的映射的3D立方体空间中的任何立方体。因此,网格立方体可以包括一部分网格面、整个网格面、多个网格面的部分、多个面的以及整个网格面的部分,或者其它网格面的组合,取决于映射的3D立方体空间的粒度。
所述边界立方体可以指包括边界形状(例如虚拟边界框220)的至少一部分的映射的3D立方体空间中的任何立方体。
为了提供具体的区分图示,图3描绘了3D立方体空间230的立方体301至303。立方体301包括网格面310(整体),并且因此圈闭支撑检测引擎110可以将立方体301标识为网格立方体。立方体302不包括网格面的任何部分,也不包括虚拟边界框220的任何部分。因此,圈闭支撑检测引擎110将立方体302标识为既不是网格立方体也不是边界立方体(或者换言之,是空立方体)。立方体303包括虚拟边界框220的一部分(以黑色表示)。因此,圈闭支撑检测引擎110将立方体303标识为边界立方体。
圈闭支撑检测引擎110不需要分析3D立方体空间230中的每一个立方体来标识网格立方体和边界立方体。例如,圈闭支撑检测引擎110可以解析表面网格210,以确定在其内设置有表面网格210的网格面的特定立方体集合来具体地标识网格立方体。圈闭支撑检测引擎110也可以具体地标识边界立方体,并且并不需要分析3D立方体空间230的其余的立方体,即不包含网格面的任何部分并且不包含虚拟边界框220的任何部分的空立方体。这种空立方体可以是建模物体的表面内的立方体或者是在该物体的外部的虚拟边界框220之间的立方体。
在一些实施方式中,圈闭支撑检测引擎110可以经由网格面(例如由三角形网格面或其它多边形网格面组成的表面网格)的顶点来标识网格立方体。为此,圈闭支撑检测引擎110可以设置3D立方体空间的立方体粒度,使得立方体可以包括整个网格面。在这些示例中,包括给定网格面的顶点的3D立方体空间230的一个或多个立方体可以由圈闭支撑检测引擎110标识为一个网格立方体(或多个网格立方体)。这种标识可包括确定每一个网格面的顶点(例如,以3D坐标形式),并且标识网格面顶点位于3D立方体空间230的哪些立方体中。因此,圈闭支撑检测引擎110可以将3D立方体空间230的网格立方体标识为包括表面网格210中的网格面的至少一个顶点的立方体。
为了标识边界立方体,圈闭支撑检测引擎110可以确定哪些立方体包括虚拟边界框220的部分。在一些实施方式中,圈闭支撑检测引擎110映射3D立方体空间230,使得虚拟边界框220形成3D立方体空间230的外边界(outer boundary)。因此,3D立方体空间230的多个外立方体(outer cubes)可以一起形成包括虚拟边界框220的空间,并因此形成由圈闭支撑检测引擎110标识的3D立方体空间230的边界立方体的集合。
圈闭支撑检测引擎110可以以各种方式跟踪标识的网格立方体和边界立方体。在一些实施方式中,圈闭支撑检测引擎110可以经由3D立方体空间中的每一个立方体独有的密钥(key)(在本文也可以称为立方体密钥)来跟踪网格立方体和边界立方体。圈闭支撑检测引擎110可以计算或以其它方式将独特的立方体密钥分配给3D立方体空间230中的每一个立方体。立方体密钥可以被计算为立方体中特定点(例如,具有最小或最大x、y和z坐标值的立方体角(cubic corner)、立方体中心等)的成串的3D坐标。作为另一个示例,圈闭支撑检测引擎110可以应用立方体密钥函数将立方体坐标转换为每一个立方体独有的整数或其它值,其可以为3D立方体空间230的给定立方体提供逻辑坐标。立方体密钥可以是可逆的,以使圈闭支撑检测引擎110可以标识由特定立方体密钥表示的3D立方体空间230中的特定立方体。
使用立方体密钥,圈闭支撑检测引擎110可以跟踪网格立方体和边界立方体。例如,圈闭支撑检测引擎110可以保持一个或多个查找结构,通过该查找结构跟踪标识的网格立方体或边界立方体。在图3所示的示例中,圈闭支撑检测引擎110保持网格立方体查找结构320和边界立方体查找结构330。查找结构320和330可以采用能够存储和检索数据的任何合适的数据结构的形式,诸如哈希表、查找表、关系数据库等。尽管在图3中分别示出,查找结构320和330也可以被实施为单个数据结构,具有对于网格立方体和边界立方体的差异化条目(entry)或条目值(例如,经由被包括作为条目的组成部分的标志值)。作为另一个示例,查找结构320和330可以是逻辑上分开的,但被实施为共享底层数据结构或结构部件。
网格立方体查找结构320可以存储用于3D立方体空间230中被标识的网格立方体的条目。网格立方体查找结构320中的条目可以包括用于特定网格立方体的立方体密钥,通过该立方体密钥,后续条目查找可由圈闭支撑检测引擎110执行。在一些实施方式中,网格立方体查找结构320中的条目可以进一步标识被包括(例如,定位)在给定网格立方体中的一个或多个特定网格面。在网格立方体查找结构320的条目中的这种网格面标识随后可以在圈闭支撑检测期间使用,以标识空间上接近的网格面,以对其执行相交检查。在图3中,圈闭支撑检测引擎110将条目插入到网格立方体查找结构320中,用于立方体301(其被标识为网格立方体)。该插入条目可以包括立方体301的立方体密钥以及被包括在立方体301中的网格面310的标识(以及部分地被包括在立方体301中的任何其它网格面,尽管在图3中未示出)。
边界立方体查找结构330同样可以存储由圈闭支撑检测引擎110插入的条目,特别是用于在3D立方体空间230中标识的边界立方体。边界立方体查找结构330中的条目可以包括用于特定边界立方体的立方体密钥,通过插入到边界立方体查找结构330中的条目,不需要标识被包含在相应的边界立方体中的虚拟边界框220的特定部分。在图3中,圈闭支撑检测引擎110将条目插入到边界立方体查找结构330中,用于包含立方体303的立方体密钥的立方体303(其被标识为边界立方体)。
一旦填充了网格立方体查找结构320和边界立方体查找结构330,圈闭支撑检测引擎110就可以为表面网格210执行圈闭支撑检测。在一些实施方式中,圈闭支撑检测引擎110可以逐个网格面地检测圈闭支撑区域。对于给定网格面,圈闭支撑检测引擎110可以从各点投射射线,以检测给定网格面是否具有通往由表面网格210所表示的物体的外部区域的线性通路。
在执行这种圈闭支撑检测时,圈闭支撑检测引擎110可以在空间上表征CAD设计的各种空间。实际上,可以利用在网格立方体查找结构320中进行查找来将3D立方体空间230中的立方体表征为网格立方体。以一致的方式,可利用在边界立方体查找结构330中进行查找来将立方体表征为边界立方体。这种表征可以对来自给定表面网格的射线投射提供空间感知,允许圈闭支撑检测引擎110对投射的射线所穿过的3D空间的空间特性进行标识。这种空间表征可以允许圈闭支撑检测引擎110有效地且智能地执行给定表面网格与投射的射线所穿过的任何网格立方体之间的相交检查。投射的射线所穿过的边界立方体的表征还可以指示出给定表面网格具有通往物体外部的线性通路,是在圈闭支撑检测过程中的确定性指示。
在圈闭支撑的空间感知检测期间使用的立方体表征的示例在下面的图4和图5中进行描述。
图4示出了通过圈闭支撑检测引擎来支持圈闭支撑区域的空间感知检测的示例性立方体表征。在图4所示的示例中,圈闭支撑检测引擎110为网格面410执行圈闭支撑检测处理。这种圈闭支撑检测处理可以包括从立方体401中的网格面410投射大量的射线,例如图4中所示的作为点箭头的投射的射线。
圈闭支撑检测引擎110可以表征投射的射线穿过的每一个连续的立方体。立方体表征可以允许圈闭支撑检测引擎110基于立方体(例如,边界立方体或网格立方体)的空间性质来确定特定的响应或计算。在这方面,立方体表征可以向被圈闭支撑检测引擎110提供空间信息,通过该空间信息执行所述圈闭支撑检测。
为了说明图4,圈闭支撑检测引擎110可以将立方体402标识为图4中所示的投射的射线穿过的下一个立方体。这种立方体标识可以由圈闭支撑检测引擎110通过跟踪投射的射线的坐标或矢量路径来执行,由此圈闭支撑检测引擎110可以将立方体402特别地标识为投射的射线的路径中的下一个立方体。
圈闭支撑检测引擎110可以将立方体402表征为网格立方体、边界立方体或空立方体(其既不是网格立方体也不是边界立方体)。为此,圈闭支撑检测引擎110可以查询边界立方体查找结构330、网格立方体查找结构320或者这两者。这种查询可以用立方体402的立方体密钥来执行,该立方体密钥可以独特地标识立方体402。因此,圈闭支撑检测引擎110可以计算立方体402的立方体密钥,并且使用所计算的立方体密钥来执行对边界立方体查找结构330、网格立方体查找结构320或者这两者的查找。换句话说,立方体密钥可以用作查找结构320和330中的空间索引,通过该空间索引,圈闭支撑检测引擎110可以在空间上表征给定的立方体。
在一些示例中,圈闭支撑检测引擎110可以在查询网格立方体查找结构320之前查询边界立方体查找结构330。这种顺序可以提高计算效率。如果投射的射线穿过的给定立方体被表征为边界立方体,则可以确定从其投射射线的给定网格面具有通往外部物体区域的线性通路。因此,圈闭支撑检测引擎110可以通过确定给定网格面不是圈闭支撑区域的一部分来结束圈闭支撑检测过程。这种确定性结果可能无法通过对网格立方体查找结构320进行查询而获得,如果圈闭支撑检测引擎110在查询边界立方体查找结构330之前先查询网格立方体查找结构320,可能会导致无关的查询。
在图4所示的示例中,圈闭支撑检测引擎110使用立方体402的立方体密钥在边界立方体查找结构330中进行的查询/查找返回空结果。也就是说,边界立方体查找结构330不包括用于立方体402的立方体密钥的条目,这是有意义的,因为立方体402不包括虚拟边界框220的任何部分。因此,圈闭支撑检测引擎110可以确定立方体402不是边界立方体。以类似方式,圈闭支撑检测引擎110可以使用立方体402的立方体密钥在网格立方体查找结构320中执行查找,这同样可能返回空结果,因为立方体402不包括任何网格面的任何部分。因此,圈闭支撑检测引擎110可以将立方体402表征为空立方体。
在一些实施方式中,圈闭支撑检测引擎110可以在单个数据结构中保持网格立方体查找结构320和边界立方体查找结构330,例如通过条目标志值(例如,对于网格立方体条目,标志值被设置为“1”,以及对于边界立方体条目,标志值被设置为“0”)来区分网格立方体和边界立方体条目的单个哈希表。在这种情况下,圈闭支撑检测引擎110不需要执行多个查找,因为在单个数据结构中的单个查找可能足以将立方体表征为网格立方体、边界立方体或空立方体。
在圈闭支撑检测过程中,圈闭支撑检测引擎110可以根据不同的立方体表征进行不同的处理。图5中进一步描述了圈闭支撑检测过程中的其它立方体表征和相应步骤。
图5进一步地示出了由圈闭支撑检测引擎110来支持圈闭支撑区域的空间感知检测的示例性立方体表征。在图5所示的示例中,出于说明的目的描绘了立方体501至511,其中一些立方体包括表面网格210和虚拟边界框220的各个部分。在该示例中,圈闭支撑检测引擎110对位于立方体501中的网格面520执行圈闭支撑检测处理。还示出了两条示例性射线投射。
对于其中一条投射的射线,圈闭支撑检测引擎110可以将立方体502标识为投射的射线穿过的第一立方体。类似于图4中描述的针对立方体402的示例,圈闭支撑检测引擎110可以将立方体502表征为空立方体,因为对网格立方体查找结构320和边界立方体查找结构330的一个或多个查找可以返回空结果。接下来到投射的射线的路径中的下一个立方体,圈闭支撑检测引擎110可以接着将立方体503表征为空立方体,并且接下来将立方体504也表征为空立方体。
转向立方体505(投射的射线的路径中的下一立方体),圈闭支撑检测引擎110可以将立方体505表征为网格立方体。在这种情况下,圈闭支撑检测引擎110可以计算用于立方体505的立方体密钥,并且将计算的立方密钥用作在网格立方体查找结构320中的查找密钥或索引。这种查询可以返回网格立方体查找结构320中的条目,因为立方体505包括来自多个网格面的部分,特别是图5所示的网格面530和网格面540。也就是说,通过使用立方体505的立方体密钥在网格立方体查找结构320中进行索引,圈闭支撑检测引擎110可以确定位于立方体505中的与圈闭支撑区域的检测相关的特定的空间特性。在本例中,圈闭支撑检测引擎110可以标识立方体505中的可以潜在地阻挡投射的射线(并从而阻断从网格面520到外部物体区域的通路)的网格面。
将3D立方体表征为网格立方体并不一定意味着投射的射线被位于网格立方体中的一个或多个网格面圈闭或阻挡。网格立方体表征可以提供用于相交检查的空间相关信息,即位于立方体中的可能阻断网格面通往外部物体区域的线性通路的特定网格面。为了确定位于立方体505(标识的网格立方体)中的任何一个或多个网格面是否实际上阻断网格面520通往外部物体区域的线性通路,圈闭支撑检测引擎110执行相交检查。在这样做时,圈闭支撑检测引擎110不需要对表面网格210中的每一个其它网格面执行相交检查来检测与投射的射线的碰撞。相反,圈闭支撑检测引擎110可以对选定的网格面,即对位于被表征的网格立方体中的特定网格面执行相交检查。
为了说明图5中的示例,网格立方体查找结构320中的用于立方体505的条目可以标识网格面530以及被包括(至少部分地)在立方体505中的网格面540。因此,圈闭支撑检测引擎110可以在网格面520与网格面530之间沿着投射的射线执行相交检查、以及也针对网格面540沿着投射的射线执行相交检查。任何可用的相交算法或相交应用程序接口(application program interface,API)都适用于这种相交计算。在图5中,圈闭支撑检测引擎110执行相交检查,并且确定从网格面520投射的射线不与网格面530相交以及不与网格面540相交。由于实际上不存在相交,所以圈闭支撑检测引擎110可以沿着投射的射线的路径继续分析立方体。
接下来,圈闭支撑检测引擎110可以将立方体506表征为空立方体,并且将立方体507表征为网格立方体。对于立方体507,圈闭支撑检测引擎110可以确定网格面550被包括(例如,被定位)在立方体507中并且执行相交检查。这次,圈闭支撑检测引擎110可以确定发生了相交,并且确定网格面550沿着投射的射线阻挡/圈闭网格面520。这种圈闭确定(trapping determination)是由圈闭支撑检测引擎110以空间感知的方式进行的。也就是说,对于该特定示例中的投射的射线,圈闭支撑检测引擎110分别对网格面530、540和550执行总共三次相交检查。与可能需要明显更多的相交计算的蛮力技术或其它圈闭支撑检测技术相比,本文所述的空间感知圈闭支撑检测可以以更小的资源消耗、更高的效率和减少的时间量来执行。
对于给定的表面网格,圈闭支撑检测引擎110可以投射多个射线来检测通往外部物体区域的通路(或缺乏通路)。在图5所示的示例中,圈闭支撑检测引擎110还从网格面520投射另一条射线,该另一条射线穿过立方体508、509和510,每一个立方体以如本文所述的一致的方式被表征为空立方体。对于投射的射线的路径中的下一个立方体,圈闭支撑检测引擎110将立方体511表征为边界立方体。这可以是响应于对边界立方体查找结构330的查找而返回用于立方体511的条目(因为一部分虚拟边界框220位于立方体511中)。响应于这种表征,圈闭支撑检测引擎110可以确定网格面520(或至少射线从其投射的网格面520上的点)不是圈闭支撑区域的一部分。因此,通过向圈闭支撑检测引擎110提供通往外部物体区域的通路的确定性的指示,边界框表征可以为圈闭支撑检测提供空间环境。
因此,圈闭支撑检测引擎110可以以空间感知的方式执行圈闭支撑检测。在圈闭支撑检测过程期间的各种3D空间的表征可以允许圈闭支撑检测引擎110在相关网格面上差别性地执行相交检查,从而提供用于空间感知相交计算的能力。此外,使用立方体密钥的立方体的空间索引可以提供高效、快速的机制来表征3D空间的各个部分,这也可以提高计算效率。
图6示出了系统可以实施以支持3D打印中的圈闭支撑区域的空间感知检测的逻辑600的示例。例如,CAD系统100可以将逻辑600实现为硬件、存储在机器可读介质上的可执行指令、或者实施为所述硬件和可执行指令的组合。CAD系统100可以通过网格访问引擎108和圈闭支撑检测引擎110来实现逻辑600,由此CAD系统100可以将逻辑600执行或实施为检测表面网格中的圈闭支撑区域的方法。下面利用网格访问引擎108和圈闭支撑检测引擎110作为示例来提供对于逻辑600的描述。然而,CAD系统100的各种其它实施方式的选择也是可行的。
在实施逻辑600时,网格访问引擎108可以访问将由3D打印机构建的物体的表面网格(602)。在实施逻辑600时,圈闭支撑检测引擎110可以利用封闭表面网格的虚拟边界框来包围表面网格(604),并且将所述虚拟边界框和所述表面网格映射到3D立方体空间中(606),或者映射到以任何其它合适的形状细分的其它3D空间中。
为了支持圈闭支撑区域的空间感知检测,圈闭支撑检测引擎110可以跟踪包括有所述表面网格的网格面的至少一部分的3D立方体空间的网格立方体(608)。这种跟踪可以包括:圈闭支撑检测引擎110将独特密钥分配给所述3D立方体空间的每一个网格立方体(610),并且在网格立方体查找结构(例如,如本文所述的查找结构)中跟踪分配给所述网格立方体的独特密钥(612)。所述独特密钥可以是通过成串的立方体坐标或者通过应用密钥生成算法来计算的立方体密钥,其中所述密钥生成算法独特地识别所述3D立方体空间中的每一个立方体。
圈闭支撑检测引擎110还可以跟踪包括有所述虚拟边界框的至少一部分的所述3D立方体空间的边界立方体(614)。这种跟踪可包括:圈闭支撑检测引擎110将独特密钥分配给所述3D立方体空间的每一个边界立方体(616),并且在边界立方体查找结构中跟踪分配给所述边界立方体的独特密钥(618)。
圈闭支撑检测引擎110可以对于所述表面网格的网格面,执行空间感知圈闭支撑检测(620)。这种圈闭支撑检测可以是空间感知的,因为3D空间中的立方体被表征为网格立方体、边界立方体或空立方体。这种立方体表征可以使圈闭支撑检测引擎110对可能潜在地阻挡或者圈闭其它网格面的相关网格面差别性地或选择性地执行相交检查。实际上,独特的立方体密钥可以提供空间索引能力,从而有效地表征投射的射线穿过的3D空间。在下面的图7中,将更详细地描述贯穿于本发明的这些空间感知检测特征。
通过圈闭支撑检测,圈闭支撑检测引擎110可以检测物体中的各种圈闭支撑区域。在一些实施方式中,圈闭支撑检测引擎110可以提供能指示在表面网格中检测到圈闭支撑区域的圈闭支撑警报(622)。这种警报可以通过图形用户界面或者以圈闭支撑区域报告的形式被可视化地呈现。所述警报可以标识表面网格中的圈闭支撑区域的特定位置,并且请求用户处理所述圈闭支撑区域以进行适当的3D打印。圈闭支撑检测引擎110随后可以获取考虑了(例如,消除了)圈闭支撑区域的重新设计的表面网格(624)。也就是说,圈闭支撑检测引擎110可以获取不再包括任何圈闭支撑区域的重新设计的表面网格。
图7示出了CAD系统100可以实施以对表面网格的网格面执行圈闭支撑检测的逻辑700的示例。下面使用圈闭支撑检测引擎110作为示例性的实施方式来提供对于逻辑700的描述。然而,CAD系统100的各种其它实施方式的选择也是可能的,包括作为硬件、存储在机器可读介质上的可执行指令或作为这两者的组合。图7中示出的逻辑700提供了CAD系统100如何可以对物体的特定网格面执行圈闭支撑检测的示例。可以针对表面网格中的任何数量的网格面(例如,所有网格面)来重复逻辑700,以针对圈闭支撑区域,充分分析被建模的物体。
在实施逻辑700时,圈闭支撑检测引擎110可以从表面网格的给定网格面投射射线(702)。投射的射线可以从给定网格面所位于的特定立方体开始。接下来,圈闭支撑检测引擎110可以标识从所述给定网格面投射的射线所穿过的下一个立方体(704),并且针对标识的立方体计算立方体密钥(706)。然后,圈闭支撑检测引擎110可以使用已计算的立方体密钥来表征已标识的立方体,并且根据立方体表征来进行响应。
例如,圈闭支撑检测引擎110可以使用已计算的立方体密钥在边界立方体查找结构中执行查找(708)。所述立方体密钥可以以有效的方式在边界立方体查找结构中进行索引,以实现快速的边界立方体表征。如本文所述的,圈闭支撑检测引擎110可以将已标识的立方体表征为边界立方体(710),这样做基于使用已标识的立方体的已计算的立方体密钥的查找结果。如果查找返回结果(例如,产生了查找结构中的命中),则圈闭支撑检测引擎110可以将已标识的立方体表征为边界立方体,并且作为响应,确定所述给定网格面不是圈闭支撑区域的一部分(712)。这种确定可以结束针对给定网格面的圈闭支撑检测处理。
响应于已标识的立方体不是边界框立方体的表征,圈闭支撑检测引擎110可以使用已计算的立方体密钥在网格立方体查找结构中执行查找(714)。圈闭支撑检测引擎110可以基于使用已标识的立方体的已计算的立方体密钥的查找的结果,将已标识的立方体表征为网格立方体(716)。当在网格立方体查找结构中的查找产生错过时,圈闭支撑检测引擎110可能将已标识的立方体表征为空立方体,并且标识投射的射线穿过的下一立方体(返回704)。如果查找返回结果(例如,获得了网格立方体查找结构中的命中),则圈闭支撑检测引擎110可以将已标识的立方体表征为网格立方体。响应于这种网格立方体表征,圈闭支撑检测引擎110可以标识被包括(至少部分地被包括)在已标识的立方体中的任何网格(718),例如,如用于已标识的立方体的被存储在网格立方体查找结构中的条目中所指定的那样。
接下来,圈闭支撑检测引擎110可以执行给定网格面与沿着投射的射线的被包括(例如,至少部分地被定位)在已标识的立方体中的每一个网格之间的相交检查(720)。圈闭支撑检测引擎110可以从一个或多个相交检查中获取结果(722)。响应于指示了从给定网格面投射的射线不与被包含在已标识的立方体中的任何网格相交的相交检查,圈闭支撑检测引擎110继续到射线穿过的下一个立方体(返回704)。
响应于指示了从给定网格面投射的射线与被包含在已标识的立方体中的网格相交的相交检查,圈闭支撑检测引擎110可以确定给定网格面沿着投射的射线被圈闭,并且确定是否沿着不同的方向从给定网格面投射其它射线(724)。射线的数目(和相应的射线方向)可以是由用户或者其它系统管理员设置的可配置的参数。圈闭支撑检测引擎110可以继续从给定网格面投射射线,直到满足这些参数或者投射的射线穿过边界立方体(返回到702)。当没有投射的射线穿过边界立方体并且从给定网格面投射了阈值数量的射线时,圈闭支撑检测引擎110可以确定给定网格面是圈闭支撑区域的一部分(726)。
图8示出了支持3D打印中的圈闭支撑区域的空间感知检测的系统800的示例。系统800可以包括处理器810,该处理器810可以采用单个或多个处理器的形式。处理器810可以包括中央处理单元(central processing unit,CPU)、微处理器或者适合于执行存储在机器可读介质上的指令的任何硬件设备。系统800可以包括机器可读介质820。机器可读介质820可以采用存储可执行指令的任何非瞬时性电子、磁性、光学或其它物理存储设备的形式,所述可执行指令诸如图8所示的网格访问指令822和圈闭支撑检测指令824。因此,机器可读介质820例如可以是随机存取存储器(random access memory,RAM)、闪存、自旋转移转矩存储器(spin-transfer torque memory)、电可擦除可编程只读存储器(electrically-erasable programmable read-only memory,EEPROM)、存储驱动器、光盘等,其中所述随机存取存储器诸如动态随机存取存储器(dynamic RAM,DRAM)
系统800可以通过处理器810执行存储在机器可读介质820上的指令。执行指令可以使系统800(或任何其它CAD系统)执行本文所述的任何圈闭支撑检测特征,包括根据关于网格访问引擎108、圈闭支撑检测引擎110或者这两者的组合的任何特征。例如,处理器810执行网格访问指令822可以使系统800访问将由3D打印机构建的物体的表面网格。
由处理器810执行圈闭支撑检测指令824可以使系统800通过以下步骤检测表面网格中的圈闭支撑区域:利用封闭表面网格的虚拟边界框来包围表面网格;将所述虚拟边界框和所述表面网格映射到3D立方体空间中;跟踪包括所述表面网格的网格面的至少一部分的3D立方体空间的网格立方体;跟踪包括所述虚拟边界框的至少一部分的3D立方体空间的边界立方体;以及对于所述表面网格的给定网格面,通过从所述给定网格面投射射线并且基于所述射线穿过网格立方体或边界立方体,评估所述给定网格作为圈闭支撑区域的一部分,来确定所述给定网格面是否是圈闭支撑区域的一部分。
由处理器810执行的圈闭支撑检测指令824还可以使系统800提供能指示在所述表面网格中检测到圈闭支撑区域的圈闭支撑警报,并且获取考虑了圈闭支撑区域的重新设计的表面网格。本文描述的附加的或可替选的特征可以经由网格访问指令822、圈闭支撑检测指令824或者这两者的组合来实现。
以上描述的包括有网格访问引擎108和圈闭支撑检测引擎110的系统、方法、设备和逻辑可以以多种不同的方式以多种不同的硬件、逻辑、电路以及存储在机器可读介质上的可执行指令的组合来实现。例如,网格访问引擎108、圈闭支撑检测引擎110或者其组合可以包括控制器、微处理器或专用集成电路(application specific integrated circuit,ASIC)中的电路,或者可以用分立逻辑或部件来实现,或者用组合在单个集成电路上的或者分布在多个集成电路中的其它类型的模拟或数字电路的组合来实现。产品,例如计算机程序产品,可以包括存储介质以及存储在介质上的机器可读指令,当在端点、计算机系统或其它设备中执行时,所述存储介质和机器可读指令使所述设备根据包括网格访问引擎108、圈闭支撑检测引擎110或其组合的以上描述中的任何一个来执行操作。
本文描述的系统、设备以及引擎(包括网格访问引擎108和圈闭支撑检测引擎110)的处理能力,可以分布在多个系统部件之间,例如在多个处理器和存储器之间,可选地包括多个分布式处理系统或云端/网络元件。参数、数据库和其它数据结构可以被分开存储和管理,可以被合并到单个存储器或数据库中,可以以许多不同的方式被逻辑地和物理地组织,并且可以以包括有数据结构(例如链表)、哈希表或者隐式存储机制的多种方式来实现。程序可以是单个程序的一部分(例如子例程)、分开的程序、分布在多个存储器和处理器上的程序、或以多种不同的方式(例如库(例如共享库))来实现。
尽管上面已经描述了各个示例,但是更多的实施方式也是可行的。
Claims (14)
1.一种用于3D打印中的圈闭支撑区域的空间感知检测的方法(600,700),包括:
由计算机辅助设计系统(100):
访问(602)将由3D打印机构建的物体的表面网格(210);
检测所述表面网格(210)中的圈闭支撑区域,其中所检测的圈闭支撑区域不具有通往所述表面网格(210)中的开口的线性通路,其中,所述检测包括:
利用封闭所述表面网格(210)的虚拟边界框(220)来包围(604)所述表面网格(210);
将所述虚拟边界框(220)和所述表面网格(210)映射(606)到3D立方体空间(230)中;
跟踪(608)包括有所述表面网格(210)的网格面(310,410,520,530,540,550)的至少一部分的所述3D立方体空间(230)的网格立方体(301,401,501,505,507);
跟踪(614)包括有所述虚拟边界框(220)的至少一部分的所述3D立方体空间(230)的边界立方体(303,511);
对于所述表面网格(210)的给定网格面(310,410,520,530,540,550),通过以下步骤确定所述给定网格面(310,410,520,530,540,550)是否是圈闭支撑区域的一部分:
从所述给定网格面(310,410,520,530,540,550)投射(702)射线;和基于所述射线穿过网格立方体(301,401,501,505,507)或边界立方体(303,
511),评估所述给定网格面(310,410,520,530,540,550)作为圈闭支撑区域的一部分包括,对于所述射线穿过的给定立方体(301,302,303,401,402,501,
502,503,504,505,506,507,508,509,510,511),通过:
确定(716)所述给定立方体(301,302,303,401,402,501,502,
503,504,505,506,507,508,509,510,511)是网格立方体(301,401,
501,505,507);
在所述给定网格面(310,410,520,530,540,550)与至少部分地被包括在所述给定立方体(301,302,303,401,402,501,502,503,504,505,
506,507,508,509,510,511)中的任何网格面之间执行(720)相交检查;
响应于指示了从所述给定网格面(310,410,520,530,540,550)投射的射线不与被包括在所述给定立方体(301,302,303,401,402,501,502,
503,504,505,506,507,508,509,510,511)中的任何网格面(310,410,
520,530,540,550)相交的所述相交检查,继续(704)到所述射线穿过的下一个立方体;和
响应于指示了从所述给定网格面(310,410,520,530,540,550)投射的射线与被包括在所述给定立方体(301,302,303,401,402,501,502,
503,504,505,506,507,508,509,510,511)中的网格面(310,410,
520,530,540,550)相交的所述相交检查,从所述给定网格面(310,410,
520,530,540,550)投射(702)另一射线;和
提供(622)指示在表面网格(210)中检测到所述圈闭支撑区域的圈闭支撑警报;和
获取(624)考虑了所述圈闭支撑区域的重新设计的表面网格。
2.根据权利要求1所述的方法,其中,基于所述射线穿过网格立方体(301,401,501,505,507)或边界立方体(303,511),评估所述给定网格面(310,410,520,530,540,550)作为圈闭支撑区域的一部分包括,对于所述射线穿过的给定立方体(301,302,303,401,402,501,502,503,504,505,506,507,508,509,510,511):
确定(710)所述给定立方体(301,302,303,401,402,501,502,503,504,505,506,507,508,509,510,511)是边界立方体(303,511),并且作为响应,确定(712)所述给定网格面(310,410,520,530,540,550)不是圈闭支撑区域的一部分。
3.根据权利要求1所述的方法,其中,基于所述射线穿过网格立方体(301,401,501,505,507)或边界立方体(303,511),评估所述给定网格面(310,410,520,530,540,550)作为圈闭支撑区域的一部分还包括:
当不存在从所述给定网格面(310,410,520,530,540,550)投射的射线穿过边界立方体(303,511)时,标识出所述给定网格面(310,410,520,530,540,550)是圈闭支撑区域的一部分。
4.根据权利要求1所述的方法,其中,将所述虚拟边界框(220)和表面网格(210)映射到3D立方体空间(230)包括:将所述3D立方体空间(230)的立方体参数设置为与所述表面网格(210)的粒度成比例的阈值尺寸。
5.根据权利要求1所述的方法,其中:
跟踪所述3D立方体空间(230)的网格立方体(301,401,501,505,507)包括:
向所述3D立方体空间(230)的每一个网格立方体(301,401,501,505,507)分配(610)独特密钥;和
在网格立方体查找结构(320)中跟踪(612)分配给所述网格立方体(301,401,501,505,507)的所述独特密钥;和
跟踪所述3D立方体空间(230)的边界立方体(303,511)包括:
向所述3D立方体空间(230)的每一个边界立方体(303,511)分配(616)独特密钥;和
在不同于所述网格立方体查找结构(320)的边界立方体查找结构(330)中跟踪(618)分配给所述边界立方体(303,511)的所述独特密钥。
6.根据权利要求5所述的方法,其中,基于所述射线穿过网格立方体(301,401,501,505,507)或边界立方体(303,511),评估所述给定网格面(310,410,520,530,540,550)作为圈闭支撑区域的一部分包括,对于所述射线穿过的给定立方体(301,302,303,401,402,501,502,503,504,505,506,507,508,509,510,511):
通过在所述网格立方体查找结构(320)、所述边界立方体查找结构(330)或者这两者中执行(708,714)查找来表征所述给定立方体(301,302,303,401,402,501,502,503,504,505,506,507,508,509,510,511)。
7.根据权利要求5或6所述的方法,其中,基于所述射线穿过网格立方体(301,401,501,505,507)或边界立方体(303,511),评估所述给定网格面作为圈闭支撑区域的一部分还包括:
基于所述射线穿过被表征为网格立方体(301,401,501,505,507)的立方体,对所述表面网格(210)的已选择的网格面执行(720)相交检查。
8.根据权利要求1所述的方法,其中,基于所述射线穿过网格立方体(301,401,501,505,507)或边界立方体(303,511),评估所述给定网格面作为圈闭支撑区域的一部分包括:
基于从给定网格面(310,410,520,530,540,550)投射的射线穿过网格立方体(301,401,501,505,507),对所述表面网格(210)的网格面中的一些但不是所有的网格面选择性地执行相交检查。
9.一种用于3D打印中的圈闭支撑区域的空间感知检测的系统(100),包括:
网格访问引擎(108),其被配置以访问将由3D打印机构建的物体的表面网格(210);和
圈闭支撑检测引擎(110),其被配置以:
将所述表面网格(210)映射到3D立方体空间(230)中;
跟踪包括有所述表面网格(210)的网格面(310,410,520,530,540,550)的至少一部分的所述3D立方体空间(230)的网格立方体(301,401,501,505,507);
通过基于从给定网格面(310,410,520,530,540,550)投射的射线穿过所述3D立方体空间(230)的网格立方体(301,401,501,505,507),选择性地对所述表面网格(210)的其它网格面执行相交检查,来确定所述表面网格(210)的给定网格面(310,
410,520,530,540,550)是否是圈闭支撑区域的一部分,包括通过基于从所述给定网格面投射的给定射线穿过所述3D立方体空间中的网格立方体(301,401,501,505,
507)或边界立方体(303,511),评估所述给定网格面(310,410,520,530,540,550)作为圈闭支撑区域的一部分,其中所述评估包括,对于所述给定射线穿过的给定立方体(301,302,303,401,402,501,502,503,504,505,506,507,508,509,510,511),通过:
确定(716)所述给定立方体(301,302,303,401,402,501,502,
503,504,505,506,507,508,509,510,511)是网格立方体(301,401,
501,505,507);
在所述给定网格面(310,410,520,530,540,550)与至少部分地被包括在所述给定立方体(301,302,303,401,402,501,502,503,504,505,
506,507,508,509,510,511)中的任何网格面之间执行(720)相交检查;
响应于指示了从所述给定网格面(310,410,520,530,540,550)投射的射线不与被包括在所述给定立方体(301,302,303,401,402,501,502,
503,504,505,506,507,508,509,510,511)中的任何网格面(310,410,
520,530,540,550)相交的所述相交检查,继续(704)到所述射线穿过的下一个立方体;和
响应于指示了从所述给定网格面(310,410,520,530,540,550)投射的射线与被包括在所述给定立方体(301,302,303,401,402,501,502,503,504,505,506,507,508,509,510,511)中的网格面(310,410,520,530,540,550)相交的所述相交检查,从所述给定网格面(310,410,
520,530,540,550)投射(702)另一射线;
提供能指示在表面网格(210)中检测到圈闭支撑区域的圈闭支撑警报;和
获取处理了所述圈闭支撑区域的重新设计的表面网格。
10.根据权利要求9所述的系统(100),其中,所述圈闭支撑检测引擎(110)还被配置以:
利用封闭所述表面网格(210)的虚拟边界框(220)来包围所述表面网格(210);
跟踪包括有所述虚拟边界框(220)的至少一部分的所述3D立方体空间(230)的边界立方体(303,511);
所述圈闭支撑检测引擎(110)被配置以:响应于确定从所述给定网格面(310,410,520,530,540,550)投射的射线穿过边界立方体(303,511),来确定所述表面网格(210)的所述给定网格面(310,410,520,530,540,550)不是圈闭支撑区域的一部分。
11.根据权利要求10所述的系统(100),其中,所述圈闭支撑检测引擎(110)被配置以通过以下步骤跟踪所述3D立方体空间(230)的网格立方体(301,401,501,505,507):
向所述3D立方体空间(230)的每一个网格立方体(301,401,501,505,507)分配独特密钥;和
在网格立方体查找结构(320)中跟踪分配给所述网格立方体(301,401,501,505,
507)的所述独特密钥;和
其中所述圈闭支撑检测引擎(110)被配置以通过以下步骤跟踪所述3D立方体(230)空间的边界立方体(303,511):
向所述3D立方体空间(230)的每一个边界立方体(303,511)分配独特密钥;和
在不同于所述网格立方体查找结构(320)的边界立方体查找结构(330)中跟踪分配给所述边界立方体(303,511)的所述独特密钥。
12.根据权利要求11所述的系统,其中,所述圈闭支撑检测引擎(110)被配置以通过在所述网格立方体查找结构(320)、所述边界立方体查找结构(330)或者这两者中执行查找,从而表征从所述给定网格面(310,410,520,530,540,550)投射的射线所穿过的给定立方体(301,302,303,401,402,501,502,503,504,505,506,507,508,509,510,511),来确定所述给定网格面(310,410,520,530,540,550)是否是圈闭支撑区域的一部分。
13.根据权利要求11所述的系统,其中,所述圈闭支撑检测引擎(110)被配置以通过基于所述射线穿过被表征为网格立方体(301,401,501,505,507)的立方体,对所述表面网格(210)的已选择的网格面执行相交检查,来确定所述给定网格面(310,410,520,530,540,550)是否是圈闭支撑区域的一部分。
14.一种非瞬时性机器可读介质(820),包括指令(822,824),当所述指令(822,824)由处理器(810)执行时,使得系统(800)执行根据权利要求1至8中任意一项所述的方法(600,700)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/121,410 | 2018-09-04 | ||
US16/121,410 US11663372B2 (en) | 2018-09-04 | 2018-09-04 | Spatially-aware detection of trapped support areas in 3D printing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110929435A CN110929435A (zh) | 2020-03-27 |
CN110929435B true CN110929435B (zh) | 2023-10-17 |
Family
ID=67220621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910557106.4A Active CN110929435B (zh) | 2018-09-04 | 2019-06-25 | 3d打印中的圈闭支撑区域的空间感知检测 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11663372B2 (zh) |
EP (1) | EP3623156A3 (zh) |
CN (1) | CN110929435B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11734477B2 (en) * | 2018-03-08 | 2023-08-22 | Concurrent Technologies Corporation | Location-based VR topological extrusion apparatus |
JP7480972B1 (ja) | 2024-01-19 | 2024-05-10 | 株式会社アプリクラフト | 情報処理装置、情報処理方法、情報処理プログラム及び非一過性のコンピュータ読み取り可能な記録媒体 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1082739A (zh) * | 1992-04-17 | 1994-02-23 | 计算机设计公司 | 生成二维及三维曲面网格的系统和二维曲面平整系统 |
US8059122B1 (en) * | 2008-03-25 | 2011-11-15 | The United States Of America As Represented By The Secretary Of The Air Force | Cartesian mesh generation technique |
DE102011015893A1 (de) * | 2011-04-01 | 2012-10-04 | NUMENUS GmbH | Verfahren zur Visualisierung von Freiformflächen mittels Ray Tracing |
US9171400B2 (en) * | 2011-11-29 | 2015-10-27 | Dassault Systemes | Creating a surface from a plurality of 3D curves |
CN105900145A (zh) * | 2014-01-09 | 2016-08-24 | 西门子产品生命周期管理软件公司 | 用于在计算机辅助设计模型中创建三维网格结构以进行增材制造的方法 |
GB201807855D0 (en) * | 2018-05-15 | 2018-06-27 | Edwards Ltd | Method for fabricating a component of an abatement apparatus |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7495664B2 (en) | 2000-06-19 | 2009-02-24 | Mental Images Gmbh | Instant ray tracing |
US7324103B2 (en) | 2001-10-30 | 2008-01-29 | Ford Motor Company | System and method of direct mesh manipulation |
EP1638459A2 (en) * | 2003-06-11 | 2006-03-29 | Case Western Reserve University | Computer-aided-design of skeletal implants |
US8217938B2 (en) | 2007-05-31 | 2012-07-10 | Ford Global Technologies, Llc | Method and apparatus for determining item orientation |
GB0719747D0 (en) * | 2007-10-10 | 2007-11-21 | Materialise Nv | Method and apparatus for automatic support generation for an object made by means of a rapid prototype production method |
US8108187B2 (en) | 2008-01-08 | 2012-01-31 | Brown David C | Method and system for surface analysis and envelope generation |
US20140324204A1 (en) * | 2013-04-18 | 2014-10-30 | Massachusetts Institute Of Technology | Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications |
US20150170013A1 (en) * | 2013-12-14 | 2015-06-18 | Microsoft Corporation | Fabricating Information Inside Physical Objects for Imaging in the Terahertz Region |
US10471698B2 (en) * | 2014-04-30 | 2019-11-12 | Hewlett-Packard Development Company, L.P. | Computational model and three-dimensional (3D) printing methods |
CN108367498A (zh) * | 2015-11-06 | 2018-08-03 | 维洛3D公司 | Adept三维打印 |
CN107053651B (zh) * | 2016-02-05 | 2019-07-12 | 三纬国际立体列印科技股份有限公司 | 三维模型打印切层方法 |
US10395372B2 (en) * | 2016-06-28 | 2019-08-27 | University Of Cincinnati | Systems, media, and methods for pre-processing and post-processing in additive manufacturing |
EP3296899A1 (en) * | 2016-09-19 | 2018-03-21 | Biomodex S.A.S. | Method and apparatus for generating a 3d model of an object |
EP3544818B1 (en) * | 2017-04-10 | 2023-03-22 | Siemens Industry Software Inc. | Build direction-based partitioning for construction of a physical object through additive manufacturing |
-
2018
- 2018-09-04 US US16/121,410 patent/US11663372B2/en active Active
-
2019
- 2019-06-18 EP EP19181033.2A patent/EP3623156A3/en active Pending
- 2019-06-25 CN CN201910557106.4A patent/CN110929435B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1082739A (zh) * | 1992-04-17 | 1994-02-23 | 计算机设计公司 | 生成二维及三维曲面网格的系统和二维曲面平整系统 |
US8059122B1 (en) * | 2008-03-25 | 2011-11-15 | The United States Of America As Represented By The Secretary Of The Air Force | Cartesian mesh generation technique |
DE102011015893A1 (de) * | 2011-04-01 | 2012-10-04 | NUMENUS GmbH | Verfahren zur Visualisierung von Freiformflächen mittels Ray Tracing |
US9171400B2 (en) * | 2011-11-29 | 2015-10-27 | Dassault Systemes | Creating a surface from a plurality of 3D curves |
CN105900145A (zh) * | 2014-01-09 | 2016-08-24 | 西门子产品生命周期管理软件公司 | 用于在计算机辅助设计模型中创建三维网格结构以进行增材制造的方法 |
GB201807855D0 (en) * | 2018-05-15 | 2018-06-27 | Edwards Ltd | Method for fabricating a component of an abatement apparatus |
Non-Patent Citations (3)
Title |
---|
Samant, Rutuja,等.Octree Data Structure for Support Accessibility and Removal Analysis in Additive Manufacturing.Additive Manufacturing.2018,全文. * |
Tedia S,等.Manufacturability analysis tool for additive manufacturing using voxel-based geometric modeling.2016 International Solid Freeform Fabrication Symposium. University of Texas at Austin.2016,全文 . * |
Vaidya Rohan,等.Optimum Support Structure Generation for Additive Manufacturing Using Unit Cell Structures and Support Removal Constraint.Procedia Manufacturing.2016,全文. * |
Also Published As
Publication number | Publication date |
---|---|
EP3623156A3 (en) | 2020-03-25 |
US20200074016A1 (en) | 2020-03-05 |
EP3623156A2 (en) | 2020-03-18 |
CN110929435A (zh) | 2020-03-27 |
US11663372B2 (en) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6721332B2 (ja) | 3dモデル化されたアセンブリ上で境界ボックスを生成すること | |
JP5434651B2 (ja) | 干渉判定装置、干渉判定方法および干渉判定プログラム | |
US9024948B2 (en) | System and method for generating an outer layer representation of an object | |
CN110929435B (zh) | 3d打印中的圈闭支撑区域的空间感知检测 | |
JP2016126795A (ja) | オブジェクトのセットの視点の選択 | |
CN111524218A (zh) | 设计以凸起或凹陷为特征的部件 | |
US20130176311A1 (en) | System and method for generating an outer layer representation of an object | |
CA3037575A1 (en) | Geometric modelling for facilitating simulation for manufacturing operations | |
CA2919871C (en) | A geostatistical procedure for simulation of the 3d geometry of a natural fracture network conditioned by well bore observations | |
EP1685509B1 (en) | System, method, and computer program product for determining wall thickness in a graphic model | |
US10331803B2 (en) | Computer aided modeling | |
Velez et al. | Real-time part detection in a virtually machined sheet metal defined as a set of disjoint regions | |
Wong et al. | Continuous self‐collision detection for deformable surfaces interacting with solid models | |
Zanni et al. | HCSG: Hashing for real-time CSG modeling | |
Khamayseh et al. | Deterministic point inclusion methods for computational applications with complex geometry | |
Ghisi et al. | Impact of tetrahedralization on parallel conforming octree mesh generation | |
Conti et al. | Generation of oriented three‐dimensional Delaunay grids suitable for the control volume integration method | |
Cui et al. | Point-in-polyhedra test with direct handling of degeneracies | |
JP2008533614A (ja) | 整合輪郭プロファイルを生成するシステム及び方法 | |
EP3316154A1 (en) | A computer-implemented method of detecting a group of geometric features in a geometric model | |
Fayolle et al. | Optimized surface discretization of functionally defined multi-material objects | |
JP2010262644A (ja) | コンピュータ支援工学解析における近傍判定方法およびシステム | |
Civit-Flores et al. | Fast contact determination for intersecting deformable solids | |
Hwang et al. | A Fast 3-D Visualization Methodology Using Characteristic Views of Objects | |
Mas et al. | Fast inverse reflector design (FIRD) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Texas, USA Applicant after: SIEMENS INDUSTRY SOFTWARE Ltd. Address before: Texas, USA Applicant before: SIEMENS PRODUCT LIFECYCLE MANAGEMENT SOFTWARE Inc. |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |