CN113505447B - 一种用于stl格式三维模型的表面干涉度的计算方法 - Google Patents
一种用于stl格式三维模型的表面干涉度的计算方法 Download PDFInfo
- Publication number
- CN113505447B CN113505447B CN202110553510.1A CN202110553510A CN113505447B CN 113505447 B CN113505447 B CN 113505447B CN 202110553510 A CN202110553510 A CN 202110553510A CN 113505447 B CN113505447 B CN 113505447B
- Authority
- CN
- China
- Prior art keywords
- triangular
- dimensional model
- patch
- continuous
- interference
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/17—Mechanical parametric or variational design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/23—Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/10—Additive manufacturing, e.g. 3D printing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于3D打印的技术领域,公开了一种用于STL格式三维模型的表面干涉度的计算方法,根据三维模型表面的三角面片之间的拓扑关系,采用深度递归搜索法将三维模型的表面分离成多个独立的连续区域,然后,利用体素映射法对每个所述连续区域中的各个三角面片分别进行重复映射关系和单次映射关系计算,从而获得整个三维模型的表面干涉度。本发明的方法快速获取的干涉度可用来快速计算表面铣削时的刀具干涉问题、表面打磨时间计算问题、表面打磨区域划分问题以及模型的拓扑结构优化问题,从而可以快速优化3D打印零件的后处理工序,提高3D打印零件的制作效率,有助于3D打印生产规模的进一步扩大。
Description
技术领域
本发明属于3D打印的技术领域,具体涉及一种用于STL格式三维模型的表面干涉度的计算方法。
背景技术
3D打印技术是按设计好的数字模型,用各种材料,以分层叠加成形方法制造出各种最终零件产品,适用于复杂结构制造、柔性制造、快速制造等需求。STL文件格式是一种由3Dsystem公司发明的三维模型文件格式,因其格式简单、数据处理方便,在3D打印领域被广泛使用,目前大多数的计算机辅助设计软件都提供了STL文件的输入输出接口。
近年来随着3D打印技术的广泛应用,对STL文件模型本身的切片计算、拓扑优化、网格重构、内部结构优化等领域已有较多的学者进行研究,但是目前针对STL模型的区域识别和干涉度计算相关文献报道较少,国内外主要集中研究了STL模型的BOOL运算、相交计算、拓扑重构等方面。区域识别分离是指将三维模型表面根据特征连贯属性分割为几个分离的区域,每个区域从连贯属性上来看是一个整体,而干涉度是指空间上并不干涉的两个区域各自沿其法线矢量方向延伸一定长度线段会出现碰撞,也即法向碰撞,这种干涉碰撞的面积和深度即定义为干涉度。区域分割和干涉度的概念可用于很多场景,例如对零件表面打磨时打磨刀具是否可以垂直接触到被打磨区域、或者对模型表面进行曲面法向加工时刀具是否和自身干涉等,将两者结合可用来表示一个STL模型本身的干涉趋势及模型的表面复杂度,模型表面干涉度目前是一个新型概念,其研究成果也较少。
综上所述,已有多位学者针对STL模型的特征识别、拓扑优化、网格重构、区域分离、BOOL运算等方面做了大量的研究,应用在FDM、SLA、SLS、LPBF等3D打印工艺上,但是针对STL模型本身的各子区域干涉问题还未见研究成果,干涉度的结果可用来快速计算表面铣削时的刀具干涉问题、表面打磨时间计算问题、表面打磨区域划分问题以及模型的拓扑结构优化问题,这些问题对于3D打印零件的后处理工序比较重要,因此急需一种针对STL模型快速计算三维结构的干涉度的方法。
发明内容
本发明提供了一种用于STL格式三维模型的表面干涉度的计算方法,填补了现有技术中对STL格式三维模型的干涉度计算的空白,以定量表达的方式给出三维模型干涉度,以便于三维模型的设计结构优化、模型构型优化等工作。
本发明可通过以下技术方案实现:
一种用于STL格式三维模型的表面干涉度的计算方法,根据三维模型表面的三角面片之间的拓扑关系,采用深度递归搜索法将三维模型的表面分离成多个独立的连续区域,然后,利用体素映射法对每个所述连续区域中的各个三角面片分别进行重复映射关系和单次映射关系计算,从而获得整个三维模型的表面干涉度。
进一步,所述体素映射法包括以下步骤:
步骤一、对整个三维模型所在的包围框进行体素化网格划分,每个体素定义为Xijk,每个体素内开辟内存空间O(Xijk)用于存入与其有映射关系的连续区域编号;
步骤二、对所有连续区域的各个体素分别进行单次映射关系计算,计算出各个连续区域内所有的三角面片沿各自的法矢量V△延伸碰撞高度Hcollision范围内的映射体素,统计映射体素的数目,记为p(N),其中,N表示连续区域内对应的三角面片;
步骤三、对每一连续区域的各个映射体素分别进行重复映射关系计算,计算出与整个三维模型其他连续区域相交的状况并存入对应的内存空间,统计这些映射体素的内存空间所包含的全部重复映射的连续区域数目,记为:Q(N)=∑Count(O(Xijk))|Xijk∈R,其中,R表示连续区域;
进一步,对每一连续区域内各个三角面片,将沿其法矢量延伸碰撞高度Hcollision得到对应的新三角面片,连同对应的六个顶点共同构成对应的三棱柱体,然后对各个三棱柱体所在的包围框进行体素化网格划分,计算它们各自对应的体素中与整个三维模型所在的包围框重合的体素,将这些体素转换为对应的空间坐标点,以这些空间坐标点为顶点,以其所在三角面片的法矢量的反方向做射线,判断所述射线与整个三维模型的其他三角面片是否相交,若相交,则对应的体素为映射体素,并将相交的三角面片所在的连续区域编号存入对应的体素内存空间O(Xijk)内,统计映射体素的数目,即为p(N);统计所有映射体素的内存空间O(Xijk)中的编号数目,即为Q(N)。
进一步,所述碰撞高度Hcollision设置为三维模型包围框对应的长宽高三者中最大值的0.1倍;进行体素化网格化分时,所述网格尺寸设置为三维模型包围框长宽高三个方向尺寸的0.005倍。
进一步,所述拓扑关系设置为(1)相邻的两个三角形之间只有一条公共边,即相邻的两个三角形必须共享两个顶点;(2)每一条组成三角形的边有且只有两个三角形面片与之相连;
所述深度递归搜索法包括以下步骤:
步骤Ⅰ、任取三维模型中的一个三角面片,作为当前三角面片,通过拓扑关系拾取与之相邻的三角面片,若相邻的三角面片与当前三角面片满足设定角度关系,则将所述相邻的三角面片作为当前三角面片继续重复搜索判别;若不满足角度关系,则拾取与当前三角面片相邻的另一个三角面片,若所述相邻的另一个三角面片与当前三角面片满足设定角度关系,则将所述相邻的另一个三角面片作为当前三角面片继续重复搜索判别;若不满足角度关系,则退回上一个当前三角面片,直至退回至最开始的当前三角面片;
步骤Ⅱ、将所有满足角度关系的三角面片合并成一个独立的区域,形成一个连续区域;
步骤Ⅲ、从剩余三角面片中再任取一个三角面片,重复步骤Ⅰ-Ⅱ,直至完成整个三维模型的连续区域划分。
进一步,所述设定角度关系设置为相邻的三角面片和当前三角面片的法矢量夹角不超过五度。
本发明有益的技术效果如下:
根据三维模型表面的三角面片之间的拓扑关系,采用深度递归搜索法将三维模型的表面分离成多个独立的连续区域,然后,利用体素映射法对每个连续区域中的各个三角面片分别进行重复映射关系和单次映射关系计算,从而获得整个三维模型的表面干涉度。这样,快速获取的干涉度结果可用来快速计算表面铣削时的刀具干涉问题、表面打磨时间计算问题、表面打磨区域划分问题以及模型的拓扑结构优化问题,从而可以快速优化3D打印零件的后处理工序,提高3D打印零件的制作效率,有助于3D打印生产规模的进一步扩大。
附图说明
图1为本发明的总体过程示意图;
图2为本发明的子干涉度计算过程示意图;
图3为本发明的实施例1的测试模型和区域划分计算以及区域体素碰撞计算过程示意图;
图4为本发明的实施例1中的每个连续区域的子干涉度示意图;
图5为本发明的实施例1中的子干涉度较大的几个连续区域示意图;
图6为本发明的实施例2的测试模型和区域划分计算以及区域体素碰撞计算过程示意图;
图7为本发明的实施例2中的每个连续区域的子干涉度示意图;
图8为本发明的实施例2中的子干涉度较大的几个连续区域示意图。
具体实施方式
下面结合附图及较佳实施例详细说明本发明的具体实施方式。
参见附图1,本发明提供了一种用于STL格式三维模型的表面干涉度的计算方法,采用体素映射法来映射三维模型中所有三角面片的属性,将原始互为计算因子来计算干涉度的耦合方法进行解耦处理,并利用三角面片到体素的映射求交来实现整体干涉度的快速计算,计算出定量表达的三维模型干涉度即三维模型结构复杂度数值,即根据三维模型表面的三角面片之间的拓扑关系,采用深度递归搜索法将三维模型的表面分离成多个独立的连续区域,然后,利用体素映射法对每个连续区域中的各个三角面片分别进行重复映射关系和单次映射关系计算,从而获得整个三维模型的表面干涉度。这样,获取的干涉度结果可用来快速计算表面铣削时的刀具干涉问题、表面打磨时间计算问题、表面打磨区域划分问题以及模型的拓扑结构优化问题,从而可以快速优化3D打印零件的后处理工序,提高3D打印零件的制作效率,有助于3D打印生产规模的进一步扩大。具体如下:
一、连续区域的划分与识别
STL文件格式是以三角形集合来表示模型形状的三维几何模型,目前已被广泛应用于各种三维实体模型处理领域。在STL文件格式中,文件存放的是一个个离散的三角形面片的三顶点坐标和外法向矢量,这些三角形面片由CAD模型表面三角化而成,且这些三角形面片的存储顺序是无定义的即随意的。虽然STL文件是一些离散的三角形网格描述,但它的正确性却依赖于内部隐含的拓扑关系。正确的数据模型必须满足如下一致性规则:(1)相邻两个三角形之间只有一条公共边,即相邻三角形必须共享两个顶点;(2)每一条组成三角形的边有且只有两个三角形面片与之相连。因此,STL文件描述的是一种空间封闭的、有界的、正则的、唯一表达物体的模型,包含点、线、面的几何信息,能够完整表达三维模型的表面信息。
根据上述三维模型表面的三角面片之间的拓扑关系,采用深度递归搜索法将三维模型的表面分离成多个独立的连续区域即分离区域,具体包括以下步骤:
步骤Ⅰ、任取三维模型中的一个三角面片,作为当前三角面片,通过拓扑关系拾取与之相邻的三角面片,若相邻的三角面片与当前三角面片满足设定角度关系,则将所述相邻的三角面片作为当前三角面片继续重复搜索判别;若不满足角度关系,则拾取与当前三角面片相邻的另一个三角面片,若所述相邻的另一个三角面片与当前三角面片满足设定角度关系,则将所述相邻的另一个三角面片作为当前三角面片继续重复搜索判别;若不满足角度关系,则退回上一个当前三角面片,直至退回至最开始的当前三角面片;
步骤Ⅱ、将所有满足角度关系的三角面片合并成一个独立的区域,形成一个连续区域;
步骤Ⅲ、从剩余三角面片中再任取一个三角面片,重复步骤Ⅰ-Ⅱ,直至完成整个三维模型的连续区域划分。
这样,连续区域的划分与识别的目的是为了分离出三维模型中连续的区域,连续的区域定义为三角面片之间的法矢量夹角小于设定值,该设定值一般设定为5°即为相邻三角面片之间的角度关系。最终实现STL格式的三维模型被分离出多个连续的光滑曲面区域,例如球体的表面连续区域即为整个表面,圆柱的表面即为圆环面和上下表面三个连续区域。区域分离后的模型表面被认为由一个个单独的空间光滑曲面拼合而成,然后再以此连续区域的所有三角面片来计算干涉度。
二、干涉度计算
在STL格式三维模型中,有的表面光滑、有的表面褶皱、有的表面是简单曲面、有的表面是规则平面包围、也有表面是网状结构、还有的模型经过拓扑优化表面以自由曲面过渡,例如冲压成形的模具模型表面为自由曲面、建筑展示的模型为交错立面支撑结构、雕像模型表面为凹凸不平的褶皱结构、风扇叶片表面为重叠的叶片结构等等。这些结构缺乏一种统一的数学描述来表征模型自身的复杂度,只能从感性上描述为简单、复杂或非常复杂,没有一个精确统一的数学方法和数值描述复杂到何种程度。因此,为精确描述模型本身的复杂度信息,本发明提出干涉度概念,通过三维模型的干涉度数值来唯一表征模型自身复杂度。
干涉度的定义为:三维模型的所有连续区域之间互相交叉干涉的碰撞程度,即模型的自身表面沿法矢方向延伸碰撞程度的大小。计算方法为通过上节所计算的连续区域与其他连续区域之间的沿法矢量方向延伸碰撞度的集合归一化值,数学表达为:其中/>为Ri连续区域在整个三维模型中的区域子干涉度,/>为三维模型所有区域的子干涉度的集合,∑Ri为模型所有连续区域的面集合,两者的比值即表示计算后的无量纲归一化值,这样干涉度就不依赖于三维模型本身分离区域的数目以及模型本身面积和体积的大小,也不依赖于模型的三角面片数目,而得到唯一的精确的干涉度数值。例如针对半径为R的球体计算自身干涉度,如果不进行归一化计算会出现球体表面精度高,得到直接结果是干涉度越高,这是因为精度越高三角面片的数目相应增加其区域沿法向矢量延伸重叠度集合值越大,实际上这是不合理的结果。
在计算干涉度时,以延伸碰撞高度Hcollision模拟连续区域之间的延伸状态下的碰撞程度。在模型原始连续区域计算后理论上表面是没有碰撞现象的,否则该模型为自身交叉模型,是一种不合理的模型的。当碰撞高度Hcollision设定为一个具体的数值时,每个连续区域表面三角面片以此数值向其连续区域法线方向延伸该碰撞高度,延伸后连续区域与连续区域之间会出现全部或部分碰撞,延伸碰撞的空间区域大小则表示碰撞程度的大小,也直接反映到干涉度大小,因此,不同的碰撞高度会计算出不同的干涉度,在本发明中,碰撞高度设定值一般设定为三维模型包围框长宽高三者最大值的0.1倍。
为实现干涉度的计算,本发明将三维模型空间进行网格离散化,然后采用基于体素映射法计算每个连续区域与其他所有连续区域的碰撞程度,规避了连续区域之间互相重复计算的耦合问题,通过第三方空间结构-体素来实现解耦计算,达到快速高效的目的。其具体步骤如下所述:
步骤一、对整个三维模型所在的包围框进行体素化网格划分,每个体素定义为Xijk,每个体素内开辟内存空间O(Xijk)用于存入与其有映射关系的连续区域编号;
步骤二、对所有连续区域的各个体素分别进行单次映射关系计算,计算出各个连续区域内所有的三角面片沿各自的法矢量V△延伸碰撞高度Hcollision范围内的映射体素,统计映射体素的数目,记为p(N),其中,N表示连续区域内对应的三角面片;
步骤三、对每一连续区域的各个映射体素分别进行重复映射关系计算,计算出与整个三维模型其他连续区域相交的状况并存入对应的内存空间,统计这些映射体素的内存空间所包含的全部重复映射的连续区域数目,记为:Q(N)=∑Count(O(Xijk))|Xijk∈R,其中,R表示连续区域;特别地,每一连续区域内的体素如果与其他连续区域重复多次碰撞,则可看做体素的“碰撞程度”大,相反如果连续区域内体素与其他连续区域未发生多次碰撞,则该体素的“碰撞程度”小;
通过上述步骤,将原本需要每个连续区域交叉计算延伸碰撞范围的耦合问题,分解为每个连续区域与空间体素网格碰撞计算,将所有碰撞信息记录在体素网格内存空间中,然后再通过统计每个连续区域各自所包含的体素的重复映射值即“碰撞程度值”,用这个重复映射值除以单次映射值,则可得到每个连续区域的子干涉度,计算过程不需要进行交叉耦合计算,最终实现解耦计算。
采用体素映射法计算连续区域的子干涉度,其精度取决于网格划分的尺寸,网格越致密,体素尺寸越小,干涉度计算越精确,但计算时间会越长,因此,选择一个合适的体素尺寸对于干涉度计算的效率和精度非常关键。在本发明中网格划分尺寸分三个标准划分:1)高密度网格,网格尺寸为三维模型所在的包围框三个方向尺寸的0.001倍;2)中密度网格,网格尺寸为三维模型所在的包围框三个方向尺寸的0.005倍;3)低密度网格,网格尺寸为三维模型所在的包围框三个方向尺寸的0.01倍。其标准由用户进行自行选择,一般默认为中密度网格。
连续区域的子干涉度IR=Q(N)/p(N)计算是本发明方法的核心,首先,计算该连续区域内每个三角面片在沿法矢量延伸碰撞高度方向上产生相交的体素并做标记;然后统计该连续区域的所有相交体素数量,若相交体素同时也和其他连续区域内的三角面片相交,则数量加1;
再利用公式IR=Q(N)/p(N)计算该连续区域子干涉度,其中Q(N)和p(N)分布为重复映射的区域数值和单次映射的体素数值:对每一连续区域内各个三角面片,将沿其法矢量延伸碰撞高度Hcollision得到对应的新三角面片,连同对应的六个顶点共同构成对应的三棱柱体,然后对各个三棱柱体所在的包围框进行体素化网格划分,计算它们各自对应的体素中与整个三维模型所在的包围框重合的体素,将这些体素转换为对应的空间坐标点,以这些空间坐标点为顶点,以其所在三角面片的法矢量的反方向做射线,判断所述射线与整个三维模型的其他三角面片是否相交,若相交,则对应的体素为映射体素,并将相交的三角面片所在的连续区域编号存入对应的体素内存空间O(Xijk)内,统计映射体素的数目,即为p(N);统计所有映射体素的内存空间O(Xijk)中的编号数目,即为Q(N)。
如图2所示,具体如下:
第一步:获取该连续区域中的每一个三角面片的法矢量和三个顶点;
第二步:根据上一步法矢量和三个顶点值计算向其法矢量延伸后的新三角面片,新三角面片即为上一步三角面片的沿法矢平移的面片,这两个三角面片六个顶点进行直连形成一个三菱柱体;
第三步:计算这个三棱柱体的“可能碰撞”包围框Cube;
第四步:对该三棱柱体的包围框Cube进行离散化,得到对应的所有体素;
第五步:计算该三棱柱体的包围框Cube所有体素在整个三维模型的包围框Cube中离散体素的匹配位置即相互重合,该相互重合的体素转换为对应的空间坐标点;
第六步:上述空间坐标点为顶点,以空间坐标点所在三角面片的法矢量反方向作的射线,判断所述射线是否与整个三维模型的其他三角面片相交;
第七步:如果相交,则对应体素为映射体素,并将相交的三角面片所在的连续区域的编号加入对应映射体素的内存空间里;
第八步:当该连续区域内所有三角面片可能碰撞的体素计算完毕后,统计所有的映射体素数目,记为:p(Ri),这一步可理解为离散体素向连续区域的碰撞反射过程;
第九步:通过计算统计映射体素的内存空间里所有编号的数量来得到散体素向连续区域的重复反射次数,记为:Q(∑Ri);
第十步:利用公式IR=Q(N)/p(N)计算该连续区域子干涉度,如果该连续区域内相交的体素网格同时也与其他连续区域相交,这说明该连续区域与其他连续区域相交,并且如果相交的体素数目越多,则该连续区域与其他连续区域相交越大,也即子干涉度越大。
因此,通过上述多个步骤计算,实现了连续区域之间的空间碰撞通过统一空间的体素网格这个“桥梁”来映射到连续区域与连续区域的干涉,并通过体素网格重复相交的次数来计算干涉度大小,从而避免了连续区域与连续区域的耦合计算,实现解耦计算。
本发明针对模型中所有分离区域的干涉度进行解耦计算,其算法复杂度依赖于STL模型的三角面片数目N。原因分析为:从上述第三步至第七步中可以看出,每个分离区域内每个三角面片仅仅进行了一次体素碰撞计算,在体素碰撞(射线求交)计算时,仅仅提取了每个三角面片可能碰撞的体素,而没有选择模型的所有体素计算,所以每个三角面片进行计算可能碰撞的体素数目远远小于模型的所有体素数目M,其平均计算体素数目可标记为M',M'<<M,因此该步骤时间复杂度可记为:O(N*M'),M'<<M,其内存空间上来看该步骤依赖于三角面片数目和每个三角面片所可能碰撞的体素数目,因此空间复杂度为V(N*M')。再从第八步到第九步中可以看出,仅仅针对模型的所有体素内内存空间C数组进行求和计算,并不依赖于三角面片的数目,因此该部分计算时间可以忽略。所需要注意的是本算法在体素初始化时需要开辟内存空间为V(M)。
因此综上所有步骤分析:本发明时间复杂度为:O(N*M'),M'<<M,空间复杂度为:V(N*M')+V(M),其中N为三角形数目,M为体素数目。
为了直观看出三维模型区域之间的干涉程度,本发明通过基于OpenGL的编程来构建干涉云图直观显示互相干涉的区域和干涉程度,编程平台采用VC6.0,图形现实引擎采用OpenGL。在云图中,以离散化网格体素的颜色和透明度来显示所有分离区域的干涉区域,体素颜色越深、透明度越小则干涉程度越大,反之则干涉程度越小。
实验1:
标准打印测试件,测试模型为边长90mm的多个平面和斜角组成的标准3D打印测试件,该测试件中有圆孔、长方体以及倾斜平面等特征。该模型在3D打印中应用较广,由于该模型在设计时涵盖了非常多的纵横交错的+字型、X字型、T字型特征,以及用于支撑作用的加强筋等,多数用来测试3D打印的制造精度。用此模型可验证水平平面与垂直平面、交叉平面之间、斜角交叉平面之间以及圆环内圈自身是否有干涉问题,计算时碰撞高度为10mm。测试模型和区域划分计算以及区域体素碰撞计算过程如图3所示:
图3(b)中深浅不同区域为识别的各个连续区域,可以看到该标准打印测试模型识别为多个单独的平面区域及部分圆孔区域等,每个单独的平面区域面积较小且与其他平面区域互相垂直,可能碰撞的区域较多;图3(c)图为对整个三维模型的包围框Cube作网格化,生成了一个立方体体素阵列;图3(d)图中深色部分即为连续区域即分离区域的可碰撞体素,从图3(d)图上可以看出浅色体素在整个Cube中大部分区域颜色较深、透明度更小,只有在Cube外侧部分区域绿色的透明度较大,这表明该模型大多数分离区域的干涉程度较大,少部分分离区域的干涉程度较低,如下表所示通过该模型的干涉度计算结果也可反映出该模型的干涉程度较大。
表1标准打印测试模型计算结果数据:
从上表中可以看到其计算的干涉度为1.98,从上图3(d)干涉云图上可看到该模型干涉区域较大,干涉程度较明显,从模型图上可看到模型Cube中部区域大部分区域都有干涉情况,以及内圆柱面有部分自干涉。其每个连续区域的子干涉度请见图4所示。
从上图中可以看出仅有159-163号分离区域和129号等分离区域子干涉度较大,159-163号区域对应于4个方形内孔和1个圆形内孔,129号区域对应于内圆柱面如下图5所示,其中亮色部分为子干涉度较大的区域,从干涉云图以及模型视图上都可直观看出这几个区域本身干涉程度较大,因此,从该表中印证了本发明的计算方法的正确性。
实验2:
泵轮,测试模型为边长28mm的泵轮测试件,该测试件中有圆周分布的大小叶片,中间有内圆孔以及叶轮座等特征。该模型在流体输送、压力泵等场景中应用较广。由于该模型含有很多光滑曲面,用此模型可验证叶片曲面是否可以正确识别并分离出来,并验证平行相邻的叶片之间是否有干涉问题,计算时碰撞高度为10mm。测试模型和区域划分计算以及区域体素碰撞计算过程如图6所示。
图6(b)中深浅不同区域为识别的各个分离区域即连续区域,可以看到该泵轮测试模型识别为多个单独封闭的连续曲面区域及圆环区域等,每个单独的曲面区域面积较小且与其他平面区域互相平行,可能碰撞的区域较多;图6(c)图为对整个三维模型的Cube作网格化,生成了一个立方体体素阵列;图6(d)图中浅色部分即为分离区域的可碰撞体素,从图6(d)图上可以看出浅色体素在叶片部分区域颜色较深、透明度更小,只有在Cube外侧和圆环外侧区域浅色的透明度较大,这表明该模型叶片分离区域的干涉程度较大,圆环分离区域的干涉程度较低,如下表所示通过该模型的干涉度计算结果也可反映出该模型的干涉程度较大。
表2泵轮模型计算结果数据:
从上表中可以看到其计算的干涉度为2.50,从图6(d)干涉云图上可看到该模型干涉区域较大,干涉程度较明显,从模型图上可看到该模型Cube中部叶片大部分区域都有干涉情况,以及内圆柱面有部分自干涉。其每个分离区域的子干涉度请见图7所示。
从图7中可以看出仅有第18号以后的分离区域子干涉度和干涉的网格数量都较大,其原因为18号之前的分离区域都是泵轮叶片的端面区域(如图(8a)),这些区域的法矢指向为反径向方向,这些区域从模型上看出不会与其他分离区有任何干涉现象,其子干涉度都为1.0。而18号-35号分离区域都是泵轮的每一个分支叶片的封闭区域(如图(8c)),这些区域从模型上看几乎都与其平行的其他分支叶片有干涉现象,因此这些叶片区域的子干涉度都为3.68。另外还有该模型的内圆柱面由于直径为8mm,小于本算法设定的碰撞高度10mm,因此内圆柱面也有较大的子干涉度:4.38(如图(8c))。另外第40和41号区域为泵轮圆柱的上下端面区域(如图(8d)),都不与其他区域干涉,其子干涉度值都为1.0。以上,从干涉云图以及模型视图上都可直观看出这些区域本身干涉程度较大,因此从该图中印证了本文算法的正确性。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,因此,本发明的保护范围由所附权利要求书限定。
Claims (5)
1.一种用于STL格式三维模型的表面干涉度的计算方法,其特征在于:根据三维模型表面的三角面片之间的拓扑关系,采用深度递归搜索法将三维模型的表面分离成多个独立的连续区域,然后,利用体素映射法对每个所述连续区域中的各个三角面片分别进行重复映射关系和单次映射关系计算,从而获得整个三维模型的表面干涉度;
所述体素映射法包括以下步骤:
步骤一、对整个三维模型所在的包围框进行体素化网格划分,每个体素定义为Xijk,每个体素内开辟内存空间O(Xijk)用于存入与其有映射关系的连续区域编号;
步骤二、对所有连续区域的各个体素分别进行单次映射关系计算,计算出各个连续区域内所有的三角面片沿各自的法矢量V△延伸碰撞高度Hcollision范围内的映射体素,统计映射体素的数目,记为p(N),其中,N表示连续区域内对应的三角面片;
步骤三、对每一连续区域的各个映射体素分别进行重复映射关系计算,计算出与整个三维模型其他连续区域相交的状况并存入对应的内存空间,统计这些映射体素的内存空间所包含的全部重复映射的连续区域数目,记为:Q(N)=∑Count(O(Xijk))|Xijk∈R,其中,R表示连续区域;
2.根据权利要求1所述的用于STL格式三维模型的表面干涉度的计算方法,其特征在于:对每一连续区域内各个三角面片,将沿其法矢量延伸碰撞高度Hcollision得到对应的新三角面片,连同对应的六个顶点共同构成对应的三棱柱体,然后对各个三棱柱体所在的包围框进行体素化网格划分,计算它们各自对应的体素中与整个三维模型所在的包围框重合的体素,将这些体素转换为对应的空间坐标点,以这些空间坐标点为顶点,以其所在三角面片的法矢量的反方向做射线,判断所述射线与整个三维模型的其他三角面片是否相交,若相交,则对应的体素为映射体素,并将相交的三角面片所在的连续区域编号存入对应的体素内存空间O(Xijk)内,统计映射体素的数目,即为p(N);统计所有映射体素的内存空间O(Xijk)中的编号数目,即为Q(N)。
3.根据权利要求1所述的用于STL格式三维模型的表面干涉度的计算方法,其特征在于:所述碰撞高度Hcollision设置为三维模型包围框对应的长宽高三者中最大值的0.1倍;进行体素化网格化分时,所述网格尺寸设置为三维模型包围框长宽高三个方向尺寸的0.005倍。
4.根据权利要求1所述的用于STL格式三维模型的表面干涉度的计算方法,其特征在于:所述拓扑关系设置为(1)相邻的两个三角形之间只有一条公共边,即相邻的两个三角形必须共享两个顶点;(2)每一条组成三角形的边有且只有两个三角形面片与之相连;
所述深度递归搜索法包括以下步骤:
步骤Ⅰ、任取三维模型中的一个三角面片,作为当前三角面片,通过拓扑关系拾取与之相邻的三角面片,若相邻的三角面片与当前三角面片满足设定角度关系,则将所述相邻的三角面片作为当前三角面片继续重复搜索判别;若不满足角度关系,则拾取与当前三角面片相邻的另一个三角面片,若所述相邻的另一个三角面片与当前三角面片满足设定角度关系,则将所述相邻的另一个三角面片作为当前三角面片继续重复搜索判别;若不满足角度关系,则退回上一个当前三角面片,直至退回至最开始的当前三角面片;
步骤Ⅱ、将所有满足角度关系的三角面片合并成一个独立的区域,形成一个连续区域;
步骤Ⅲ、从剩余三角面片中再任取一个三角面片,重复步骤Ⅰ-Ⅱ,直至完成整个三维模型的连续区域划分。
5.根据权利要求4所述的用于STL格式三维模型的表面干涉度的计算方法,其特征在于:所述设定角度关系设置为相邻的三角面片和当前三角面片的法矢量夹角不超过五度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110553510.1A CN113505447B (zh) | 2021-05-20 | 2021-05-20 | 一种用于stl格式三维模型的表面干涉度的计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110553510.1A CN113505447B (zh) | 2021-05-20 | 2021-05-20 | 一种用于stl格式三维模型的表面干涉度的计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113505447A CN113505447A (zh) | 2021-10-15 |
CN113505447B true CN113505447B (zh) | 2023-03-31 |
Family
ID=78008502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110553510.1A Active CN113505447B (zh) | 2021-05-20 | 2021-05-20 | 一种用于stl格式三维模型的表面干涉度的计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113505447B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113359608A (zh) * | 2021-06-30 | 2021-09-07 | 华中科技大学 | 一种面向机床加工过程仿真的体素干涉检测方法和系统 |
CN113919036B (zh) * | 2021-10-26 | 2022-12-06 | 山东同圆数字科技有限公司 | 一种基于bim引擎的数字化住宅说明书系统及方法 |
CN114309658B (zh) * | 2021-11-15 | 2023-06-02 | 上海工程技术大学 | 一种基于非均匀点阵结构的增材制造方法 |
CN118013770A (zh) * | 2024-04-10 | 2024-05-10 | 成都飞机工业(集团)有限责任公司 | 一种离散网格面片几何拓扑关系重建方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582173B (zh) * | 2009-06-24 | 2012-07-11 | 中国石油天然气集团公司 | 复杂地质构造块状模型构建方法 |
US9747394B2 (en) * | 2014-03-18 | 2017-08-29 | Palo Alto Research Center Incorporated | Automated design and manufacturing feedback for three dimensional (3D) printability |
CN104943173A (zh) * | 2015-04-30 | 2015-09-30 | 北京敏速自动控制设备有限公司 | 多彩表示的三维打印方法及系统 |
CN104881891B (zh) * | 2015-04-30 | 2018-07-27 | 北京敏速自动控制设备有限公司 | 面向三维打印的三维模型处理方法及装置 |
CN109624326B (zh) * | 2018-12-19 | 2020-07-03 | 华中科技大学 | 一种3d打印模型支撑结构生成过程中干涉点获取方法 |
-
2021
- 2021-05-20 CN CN202110553510.1A patent/CN113505447B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113505447A (zh) | 2021-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113505447B (zh) | 一种用于stl格式三维模型的表面干涉度的计算方法 | |
EP3483755B1 (en) | Additive manufacturing of a 3d part | |
CN111382777B (zh) | 从网格中提取特征树 | |
US8175734B2 (en) | Methods and system for enabling printing three-dimensional object models | |
KR101955035B1 (ko) | 기하학적 3차원 모델링된 오브젝트를 디자인하는 방법 | |
US20080225044A1 (en) | Method and Apparatus for Editing Three-Dimensional Images | |
Podolak et al. | Atomic Volumes for Mesh Completion. | |
Tedia et al. | Manufacturability analysis tool for additive manufacturing using voxel-based geometric modeling | |
US20200058160A1 (en) | System and method for generating planar section 3d shape representations | |
Hoffmann et al. | Solid modeling | |
CN113724401A (zh) | 一种三维模型切割方法、装置、计算机设备和存储介质 | |
US20050128198A1 (en) | Method and apparatus for generating three-dimensional finite element mesh | |
Yau et al. | Efficient NC simulation for multi-axis solid machining with a universal APT cutter | |
JP2003330976A (ja) | 境界データの内外判定方法とそのプログラム | |
Liu et al. | Accurate volume calculation driven by Delaunay triangulation for coal measurement | |
CN115908733A (zh) | 一种角点网格地质模型的实时切分及三维可视化方法 | |
Velez et al. | Real-time part detection in a virtually machined sheet metal defined as a set of disjoint regions | |
Ćurković et al. | Enhanced 3D parameterization for integrated shape synthesis by fitting parameter values to point sets | |
Patel et al. | Automatic CAD model topology generation | |
CA2864700A1 (en) | System and method for generating planar section 3d shape representations | |
Inui et al. | Simple offset algorithm for generating workpiece solid model for milling simulation | |
JP4526063B2 (ja) | ボリュームデータのセルラベリング方法とそのプログラムとボリュームデータのセルラベリング装置 | |
CN111383341A (zh) | 从原始网格生成结构化的3d模型 | |
Inui et al. | Contour-type cutter path computation using ultra-high-resolution dexel model | |
US20220068021A1 (en) | Three-dimensional shape data processing apparatus and non-transitory computer readable medium |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |