基于多信息体素的三角网格模型距离场生成方法及系统

文档序号:32416537发布日期:2022-12-02 22:18阅读:52来源:国知局
基于多信息体素的三角网格模型距离场生成方法及系统

1.本发明属于计算机辅助设计领域,更具体地,涉及一种基于多信息体素的三角网格模型距离场生成方法及系统。


背景技术:

2.三角网格模型是由三角形组成的,表示复杂3d模型的一种方式,如stl(stereolithography)、obj(object)等。
3.符号距离场(signed distance field,以下简称距离场)表示空间内任意一点到模型表面的最短距离,符号的正负分别表示该点在模型外部还是内部,如下式所示:
[0004][0005]
距离场是模型的一种隐式表达,可以用来对模型进行一些快速处理,如骨架线提取、形态学处理、渲染和建模等。距离场通过mc(marching cube)或者dc(dual contouring)算法可以转化为三角网格模型。由于非常适合进行模型的布尔运算、偏置、抽壳及随形梯度点阵结构生成等操作,距离场隐式建模在增材制造领域的应用越来越多,而增材制造领域中的标准模型是三角网格模型。因此将三角网格模型转换为距离场对于增材制造前端的复杂模型处理有重要意义。
[0006]
求三角网格模型的距离场有两种方法,分为基于体素的粗糙距离场和基于三角面片的精确距离场。将三角网格模型进行体素化后经距离变换生成的粗糙距离场计算量较小,但是丧失了三角网格模型的精确边界;直接求目标点到三角网格模型表面的最近距离可以保持完整的边界信息但是计算量很大。因此快速计算三角网格模型的距离场成为亟待解决的问题。距离场计算分为两个部分,一是绝对值的计算,即找到点到模型表面最近的一点;二是符号的判断,即判断点在模型外部还是内部。
[0007]
最直观的三角网格模型的距离场计算方法是暴力算法,直接计算点到模型的所有三角面片的距离并取最小值。但是暴力算法的时间复杂度太高,无法实际用于复杂模型的距离场计算。
[0008]
距离场符号的判断方法包括扫描线算法,通过判断以计算点为原点的射线所相交的三角形数量的奇偶性判断符号。该方法并不具有鲁棒性,当相交点为三角面片的顶点或者边时存在歧义,但是在体素空间中扫描线算法是最常用的方法。另一种方法是伪法线法,根据三角形的法线计算三角网格所有的点和边的伪法线,通过模型表面最近点的伪法线判断距离场的符号。


技术实现要素:

[0009]
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于多信息体素的三角网格模型距离场生成方法及系统,其目的在于,在保证计算精度的情况下,提高用距离场处理三角网格模型的效率。
[0010]
为实现上述目的,按照本发明的一方面,提出了一种基于多信息体素的三角网格模型距离场生成方法,包括如下步骤:
[0011]
s1、构建待制造零件的三角网格模型;
[0012]
s2、将三角网格模型的包围盒空间分割为多个大小相同的体素,并确定体素中与该体素相交的所有三角形,形成基于空间分割的体素空间;
[0013]
s3、对体素空间进行距离变换,即计算每个体素到其最近边界体素的符号距离,得到粗糙距离场;边界体素指与三角网格有相交部分的体素;
[0014]
s4、根据粗糙距离场,确定有效体素;计算各有效体素中三角形到体素中心的最小距离,进而确定有效三角形,并将有效三角形存储到相应体素对应的索引sdfbox中;
[0015]
s5、确定待求点所在的体素,进而获取该体素对应的索引sdfbox;若sdfbox为空,则以距离变换后的粗糙距离场作为距离场;若sdfbox不为空,则计算待求点到sdfbox存储的三角形的最短距离,进而确定距离场。
[0016]
作为进一步优选的,粗糙距离场dt(i,j,k)满足下式的体素为有效体素:
[0017][0018]
其中,dt0为当前体素到最近的边界体素的最短距离,d为体素的边长。
[0019]
作为进一步优选的,有效体素中,满足下式的三角形为有效三角形:
[0020][0021]
其中,d为三角形到相应体素中心的距离,d0为体素中所有三角形到体素中心距离的最小值,d为体素的边长。
[0022]
作为进一步优选的,步骤s4中,过滤离边界较远的体素,在三角网格附近一定偏移量范围内确定有效体素和有效三角形。
[0023]
作为进一步优选的,步骤s4中,过滤离边界较远的体素,具体为,仅在满足下式的体素中搜索有效体素:
[0024][0025]
其中,dt为当前体素到最近边界体素的距离,f为预设的相对三角网格的偏移量,d为体素的边长。
[0026]
作为进一步优选的,步骤s5中,若sdfbox不为空,则计算待求点到sdfbox存储的所有三角形的最短距离dist,并根据伪法线判断待求点在模型内外,从而确定距离场值的符号sign,得到距离场为sign*dist。
[0027]
按照本发明的另一方面,提供了一种基于多信息体素的三角网格模型距离场生成系统,包括处理器,所述处理器用于执行上述基于多信息体素的三角网格模型距离场生成方法。
[0028]
总体而言,通过本发明所构思的以上技术方案与现有技术相比,主要具备以下的技术优点:
[0029]
1.本发明将粗糙距离场和精确距离场结合起来,具体通过将三角网格模型的包围盒空间体素化,并进行距离变换获得粗糙距离场,然后在计算精确距离场的过程中通过粗
糙距离场的信息过滤大量无关的三角形,构建多信息体素空间,减少精确距离场的求解时间;从而在保证计算精度的情况下,提高了用距离场处理三角网格模型的效率。
[0030]
2.对于只关注边界附近距离场的应用场景下,本发明在构建距离场时通过粗糙距离场过滤掉无关的求解空间,只构建边界附近的距离场;而远离三角网格的内部用距离变换的粗糙距离场表示,减少需要计算精确距离场的区域。因此,本发明可以选择性构建局部区域的精确距离场,其余区域用距离变换的粗糙距离场表示,生成混合距离场;在特定应用场景下减少精确距离场构建区域,进一步提升效率。
附图说明
[0031]
图1为本发明实施例基于多信息体素的三角网格模型距离场生成方法流程图;
[0032]
图2为本发明实施例原始的三角网格模型;
[0033]
图3为本发明实施例三角网格模型的角度权重伪法线的可视化表示;
[0034]
图4为本发明实施例基于距离场分割的多信息体素空间计算原理示意图;
[0035]
图5为本发明实施例混合距离场原理示意图;
[0036]
图6为本发明实施例生成的距离场的可视化表示。
具体实施方式
[0037]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0038]
本发明实施例提供的一种基于多信息体素的三角网格模型距离场生成方法,如图1所示,包括如下步骤:
[0039]
s1、构建待制造零件的三角网格模型。
[0040]
以三角网格模型作为输入,采用如stl、obj等格式,可以由3d建模软件如ug、solidworks等导出。以图2所示的模型为例具体说明本发明的距离场生成成方法。
[0041]
s2、读取三角网格模型的三角面片数据并计算伪法线。
[0042]
读取模型的三角面片数据,并建立三角形的拓扑关系,存储三角面片的法线信息,计算边和点的角度权重伪法线(angle weighted pseudonormal),如图3所示。
[0043]
s3、建立基于空间分割的多信息体素空间。
[0044]
将三角网格模型的包围盒空间在三个坐标轴方向等间距地分割为单个体素,在体素中存储与该体素相交的所有三角形的索引号,形成包含三角形精确边界信息的基于空间分割的多信息体素空间。
[0045]
具体的,空间表示为space《box》[i][j][k](《》表示存储的数据类型,[]表示空间的维度和大小,下同),其中,box《tri》[n]存储三角形索引号。space表示三维尺度分别为i、j、k的三维体素空间,每个体素存储的是box,box存储了与体素相交的三角形。体素分为两种,一种是与三角网格有相交部分的边界体素,另一种是与三角形网格没有相交部分的非边界体素,即box为空。
[0046]
更具体的,遍历空间的所有三角面片,对于每一个三角面片,做如下的两级相交检
测:
[0047]
(1)求出该三角面片的包围盒,通过六面体的相交检测找出与三角面片包围盒相交的体素。
[0048]
(2)对于每一个与三角面片包围盒相交的体素,再利用分离轴定理进行进一步判断,将当前三角形的索引号存储到与之相交的体素中。
[0049]
建立三角网格模型到多信息三维体素空间的转化,使得模型从连续的三角网格转化为了存储边界特征的离散体素。
[0050]
s4、对基于空间分割的多信息体素空间进行距离变换。
[0051]
通过快速距离变换算法获取粗糙距离场,即每个体素到最近边界体素的符号距离。
[0052]
s5、建立基于距离场分割的多信息体素空间。
[0053]
完成距离变换后,基于距离场,(1)可以直接构建精确距离场;或(2)构建混合距离场,即为了减少需要计算精确距离场的区域,对于只关注边界附近距离场的应用场景下,可以选择性地只构建边界附近的精确距离场,内部用距离变换的粗糙距离场表示。
[0054]
以下为具体说明:
[0055]
(1)构建精确距离场
[0056]
将三角网格模型转化为基于空间分割的多信息体素空间,体素的边长为d。对于每一个体素,定义基于距离场分割的体素sdfbox《d0,t0,t1,t2……
》和多信息体素空间sdfspace《sdfbox》[i][j][k]。每个体素对应一个sdfbox,sdfbox存储了到对应体素中的所有待求解点p的所有可能的最近三角形t0,t1,t2……
和最近三角形的距离d0,并且按照到体素中心c的距离d的升序排列;称可能的最近三角形为有效三角形。
[0057]
具体的,确定有效三角形前需确定有效体素,有效体素指的是对于当前sdfbox产生影响的所有三角形所处的体素,即该体素可能包含当前sdfbox需要存储的三角形。通过距离变换的结果提取有效体素,有效体素的判定原理如下:
[0058]
已知当前体素到最近的边界体素的最短距离dt0(distance transform,此部分距离变换均取绝对值),则到当前体素中心的最近三角形的距离的最大值为进而推出到当前体素中心满足条件的三角形所在的体素均满足由此得到有效体素距离变换的距离场值
[0059]
有效体素的搜索区域形成了一个以当前待求sdfbox的体素为中心的球壳形区域。若在整个三维空间中按照欧式距离寻找有效体素将十分消耗时间,因此在上述球壳形区域进行搜索,为了简化计算,将其简化为包含该球壳形区域的空心立方体。
[0060]
得到有效体素之后,确定有效三角形,将有效体素里的有效三角形存储到对应的sdfbox中,如图4所示。具体的,有效三角形均满足条件:当前体素对应的sdfbox的最小距离为d0,三角形到当前体素中心的距离d满足有效三角形集合表述为:
[0061][0062]
体素内部所有点的精确距离场只和对应的sdfbox中存储的三角形有关。因此构建
体素的sdfbox就是将所有三角形中满足上述条件的有效三角形存储到对应的sdfbox中。
[0063]
(2)构建混合距离场
[0064]
前述(1)中精确距离场的构建方法对三角网格模型的体素空间内的任意位置的sdfbox都进行了计算,即可以求解任意位置的距离场值。进一步的,在某些场景下面,可以通过构建混合距离场来减少构建时间,同时减少距离场求解时间。
[0065]
在进行三角网格模型随形梯度tpms点阵结构生成时,并非空间内所有点的距离场值都是必需精确的,因此并非所有体素的sdfbox都是必须要构建的,仅仅需要三角网格模型边界附近点的精确距离场值,而模型内部的距离场值可以是粗糙距离场值。
[0066]
具体的,对于三角网格附近范围内偏移量为f的sdfbox的求解,在构建基于距离场分割的多信息体素空间时只计算所有的sdfbox,(dt为当前体素到边界体素的距离),从而减少了计算;sdfbox的计算可采用前述(1)中方法,在此不再赘述。
[0067]
因此,构建混合距离场的基本过程与构建精确距离场类似,仅在构建基于距离场分割的多信息体素空间时过滤离边界较远的体素,如图5所示。
[0068]
s6、距离场求解。
[0069]
对于一个待求点p(x,y,z),计算p所在的体素坐标(i,j,k),进而获取对应的存储三角形索引的sdfbox。如果sdfbox为空,则返回距离变换的粗糙距离场值;如果不为空,则计算p到sdfbox存储的所有三角形的最短距离dist和最近点所在位置的伪法线。根据伪法线判断p在三角网格模型内外,从而确定距离场值的符号sign,返回距离场为sign*dist。对上述模型求解的距离场结果如图6所示。
[0070]
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1