一种用于快速局部Delaunay化的三维模型优化方法与流程

    专利查询2022-08-08  120


    一种用于快速局部delaunay化的三维模型优化方法
    技术领域
    1.本发明涉及工业制造技术领域,特别涉及一种用于快速局部delaunay化的三维模型优化方法。


    背景技术:

    2.三维模型是在工业制造、动画建模、影视特效等领域有广泛应用的一种三维图形显示方式,比如通过大量三角形或四面体的网格组合来显示复杂有序的三维外形。但是,现有的三维模型在显示渲染过程中仍存在一些缺陷。为了尽可能地降低三维模型的体积大小,三维建模软件在进行离散布点时,仅仅会在二面角变化剧烈的位置或指定的棱边位置进行布点,这样虽然实现了用尽可能少的三角面元数量来描绘出指定精度的三维图形,但节点的分布极为不均。在大平面区域,由于此处二面角变化不剧烈,建模软件在此处布置的节点非常稀少,这对后期三维渲染的效果产生了较大的负面影响,需要进一步优化改进。
    3.目前,这类问题已经有了一些现有的优化方案,如isotropic remeshing算法。该算法可以有效地改善节点分布不均的现象,但isotropic remeshing算法是全域优化算法,它会对每个三角面片进行重新组合优化,因此需要消耗大量的计算时间。比如,对一个超过50m的三维模型文件,如果要实现较好的优化效果,该算法的优化时间可能要达到小时级。此外,isotropic remeshing算法会在一定程度上修改原有的三维模型拓扑结构,这对于那些对三维模型形状变化敏感的工业领域来讲是难以接受的。工业领域迫切需要一种快速、高效、稳定的新优化算法来解决此类问题。


    技术实现要素:

    4.本发明的目的旨在至少解决所述技术缺陷之一。
    5.为此,本发明的一个目的在于提出一种用于快速局部delaunay化的三维模型优化方法,以解决背景技术中所提到的问题,克服现有技术中存在的不足。
    6.为了实现上述目的,本发明的实施例提供一种用于快速局部delaunay化的三维模型优化方法,包括:
    7.步骤s1,导入模型文件,并基于半边的三角面片数据结构对输入的数据文件进行重构;
    8.步骤s2,提取模型中的所有平面区域,并过滤掉不达标的平面区域,作为优化备选;
    9.步骤s3,对需要优化的三维平面进行三维旋转,以使其映射到二维空间中;
    10.步骤s4,对二维空间内的平面进行delaunay算法优化;
    11.步骤s5,将优化后的二维平面反向映射为原三维平面;
    12.步骤s6,删掉模型中的原平面,并将优化后的三维平面插入到三维模型中,其中,插入过程保证整个三维模型的拓扑封闭;
    13.步骤s7,输出优化后的三维模型结果。
    14.由上述任一方案优选的是,在步骤s1中,导入配置文件和模型信息,将模型导入至半边结构的数据体中,建立起整个模型的拓扑关系。
    15.由上述任一方案优选的是,在步骤s2中,导入模型文件后,提取模型文件中的平面区域,包括:将所有的面元导入一个队列,按照队列编号从小到大选取一个标记为false的面元作为种子面元,以该面元1-ring邻域开始搜索;寻找该邻域内标记为flase的面元,判断该单元的法向量是否与种子面元的法向量相等,如果相等则视为属于同一面元,并加入待选队列,标记为true;
    16.如果在该邻域内找到同一平面的面元,则以该面元为种子面元,继续迭代重复上述步骤,直至再也无法找到同一平面的面元为止。
    17.由上述任一方案优选的是,统计计算出的面元体积和面元个数,如果二者均超过算法设定值,则将该面元集的信息记录下来,作为一个待优化平面;如果没有超过算法设定值,则该面元集的信息废弃,但是标记为true不变;
    18.按照编号顺序选取下一个标记为false的面元作为种子面元,继续迭代上述步骤,直至循环到队列结束,查找到所有的待优化平面;
    19.将所有的待优化平面保存,并标记好其在原来数据结构中的位置,等待进一步优化。
    20.由上述任一方案优选的是,在步骤s3中,使用四元数对三维平面进行旋转,如果三维平面的法向量n,该向量沿着以单位向量定义的旋转轴u,旋转θ角度后的向量n’,用矩阵乘法来获得;
    21.令那么:
    [0022][0023]
    经过该方程的旋转,得到一个旋转到法向量为(0,0,1)的平面,此时平面内所有点的z值是相等的;去掉z值,将三维平面简化为二维平面。
    [0024]
    由上述任一方案优选的是,在步骤s4中,提取待优化平面的边缘点,按照顺序编号,对于多连通域的平面,对内部的空洞单独建立一个数组进行标注;标注后,对二维平面进行delaunay重剖分,该算法在保证原有边界点的基础上添加内部点,以使得每个单元均接近于正三角形。
    [0025]
    由上述任一方案优选的是,在步骤s5中,将二维平面反向映射回原三维空间。
    [0026]
    由上述任一方案优选的是,在步骤s6中,将识别出的所有二维平面嵌入原来的模型中,组合成最终的三维文件。
    [0027]
    由上述任一方案优选的是,在步骤s7中,优化后的三维文件具有均匀且规整的三角面片结构,将模型文件重新输出为二进制的ply文件或stl文件,算法优化计算完毕。
    [0028]
    与现有技术相比,本发明相对于现有技术具有以下有益效果:本发明提出的快速局部delaunay算法,可以有效地解决平面区域节点分布不均的问题,且经测试发现,即使对100m以上的模型文件仍然可以在3s内完成优化,具有极高的计算效率且易于并行化;同时,该算法不会对三维模型文件产生任何外形上的修改,满足对三维外形有苛刻要求的工业领
    域的使用需要。
    [0029]
    本发明通过cae技术实现对热室压铸过程中缩孔缩松的预测。通过使用高度并行化的数据架构,在保证计算精度的同时,大幅降低了算法的计算时间,使得其有了工业化应用价值。
    [0030]
    本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
    附图说明
    [0031]
    本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
    [0032]
    图1为根据本发明实施例的用于快速局部delaunay化的三维模型优化方法的流程图;
    [0033]
    图2为根据本发明实施例的压铸模具三维模型的示意图;
    [0034]
    图3为根据本发明实施例的半边结构示意图;
    [0035]
    图4为根据本发明实施例的优化前的某一个二维平面的示意图;
    [0036]
    图5为根据本发明实施例的delaunay重剖分后的某一个二维平面得我示意图;
    [0037]
    图6a和图6b为根据本发明实施例的最终优化后的stl文件效果的示意图。
    具体实施方式
    [0038]
    下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
    [0039]
    本发明提出一种用于快速局部delaunay化的三维模型优化方法,该方法不同于其他三维模型的全域优化方法,本发明采用了局部优化的策略,仅优化对节点分布不合理的区域,比如平面区域。局部优化策略可以有效降低算法所需要优化的目标面元数量,从而大幅提高优化效率。
    [0040]
    如图1所示,本发明实施例的用于快速局部delaunay化的三维模型优化方法,包括如下步骤:
    [0041]
    步骤s1,导入模型文件,并基于半边的三角面片数据结构对输入的数据文件进行重构。
    [0042]
    具体的,导入配置文件和模型信息,将模型导入至半边结构的数据体中,建立起整个模型的拓扑关系。如图2所示,该模型为压铸领域中的模具文件。这类模型往往具有非常明显的棱边,或圆润的倒角,如果使用其他算法,往往会导致模型失真。
    [0043]
    本发明将模型导入到半边结构的数据体中,建立起整个模型的拓扑关系。半边结构是描述三角面元模型中较为常见的一种数据结构,如图3所示。它把一条边拆分成两个半边分别存储,从而可以高效地描述每条边的前后邻接关系,以及是否是边界等拓扑信息,以提高算法计算效率。通过导入半边数据结构,本发明建立好了每个面元1-ring邻域的连接关系。
    [0044]
    步骤s2,提取模型中的所有平面区域,并过滤掉不达标的平面区域,作为优化备
    选。
    [0045]
    具体的,导入模型文件后,本发明需要提取模型文件中的平面区域。本发明对每个单元设定一个标记值,默认为false,标记后为true,以防止出现重复遍历的情况。计算流程图如图4所示,主要计算步骤如下:
    [0046]
    1、将所有的面元导入一个队列,按队列编号从小到大选取一个标记为false的面元作为种子面元,以该面元1-ring邻域开始搜索;
    [0047]
    2、寻找该邻域内标记为false的面元,判断该单元的法向量是否与种子面元的法向量相等,若相等,则视为属于同一面元,并加入待选队列,且标记为true;
    [0048]
    3、如果在该邻域内寻找到了同一平面的面元,那么以该面元为种子面元,继续迭代重复步骤2的阶段,直到再也无法找到同一平面的面元为止,结束步骤3;如果没有找到,那么结束步骤3。
    [0049]
    4、统计经过步骤3计算出的面元体积和面元个数,如果二者均超过算法设定值,那么将该面元集的信息记录下来,作为一个待优化平面;如果没有超过算法设定值,那么该面元集的信息废弃,但是标记为true仍不发生改变。
    [0050]
    5、根据编号顺序选取下一个标记为false的面元作为种子面元,重复步骤1~4,直到循环到队列结束。这样就找到了所有的待优化平面。
    [0051]
    6、将所有的待优化平面保存,并标记好他们在原来数据结构中的位置,等待进一步优化。
    [0052]
    在本步骤中,快速提取该模型中的所有平面区域,并过滤掉部分太小或其他不合理的平面域,作为优化备选。
    [0053]
    步骤s3,对需要优化的三维平面进行三维旋转,以使其映射到二维空间中。
    [0054]
    具体的,使用四元数对三维平面进行旋转。若三维平面的法向量为n,该向量沿着以单位向量定义的旋转轴u旋转θ角度后的向量n’可以用矩阵乘法来获得。
    [0055]
    令那么:
    [0056][0057]
    经过该方程的旋转,本发明可以得到一个旋转到法向量为(0,0,1)的平面,此时平面内所有点的z值是相等的。去掉z值,就可以把三维平面简化为二维平面。提取后的二维平面如图4所示。
    [0058]
    步骤s4,对二维空间内的平面进行delaunay算法优化。
    [0059]
    具体的,提取待优化平面的边缘点,并按顺序编号。对于多连通域的平面,需要对内部的孔洞单独建立一个数组来进行标注。标注好后,对二维平面进行delaunay重剖分。该算法会在保证原有边界点的基础上添加尽可能少的内部点,使每个单元都接近于正三角形。算法可能会在边界处新增一部分点,同时在平面内部添加大量点的位置信息。优化效果如图5所示。
    [0060]
    步骤s5,将优化后的二维平面反向映射为原三维平面。
    [0061]
    具体的,采用步骤s3类似的计算方法,将二维平面反向映射会原三维空间。需注意
    的是,在映射前,需要先把第三步丢弃的z方向坐标补全。
    [0062]
    步骤s6,删掉模型中的原平面,并将优化后的三维平面插入到三维模型中,其中,插入过程保证整个三维模型的拓扑封闭。
    [0063]
    具体的,将识别出的所有二维平面嵌入原来的模型中,组合成最终的三维stl文件。应注意,组装的时候要保证嵌入平面后的拓扑完备性,即它们的邻接边应该是完全匹配的。最终的组装效果如图6所示。
    [0064]
    步骤s7,输出优化后的三维模型结果。
    [0065]
    具体的,优化后的stl文件将具有均匀、规整的三角面片结构,会对后续的算法计算带来很大的便利。将模型文件重新输出为二进制的ply或stl文件,算法优化计算完毕。
    [0066]
    与现有技术相比,本发明相对于现有技术具有以下有益效果:本发明提出的快速局部delaunay算法,可以有效地解决平面区域节点分布不均的问题,且经测试发现,即使对100m以上的模型文件仍然可以在3s内完成优化,具有极高的计算效率且易于并行化;同时,该算法不会对三维模型文件产生任何外形上的修改,满足对三维外形有苛刻要求的工业领域的使用需要。
    [0067]
    在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
    [0068]
    本领域技术人员不难理解,本发明包括上述说明书的发明内容和具体实施方式部分以及附图所示出的各部分的任意组合,限于篇幅并为使说明书简明而没有将这些组合构成的各方案一一描述。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
    [0069]
    尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。本发明的范围由所附权利要求及其等同限定。

    技术特征:
    1.一种用于快速局部delaunay化的三维模型优化方法,其特征在于,包括如下步骤:步骤s1,导入模型文件,并基于半边的三角面片数据结构对输入的数据文件进行重构;步骤s2,提取模型中的所有平面区域,并过滤掉不达标的平面区域,作为优化备选;步骤s3,对需要优化的三维平面进行三维旋转,以使其映射到二维空间中;步骤s4,对二维空间内的平面进行delaunay算法优化;步骤s5,将优化后的二维平面反向映射为原三维平面;步骤s6,删掉模型中的原平面,并将优化后的三维平面插入到三维模型中,其中,插入过程保证整个三维模型的拓扑封闭;步骤s7,输出优化后的三维模型结果。2.如权利要求1所述的用于快速局部delaunay化的三维模型优化方法,其特征在于,在所述步骤s1中,导入配置文件和模型信息,将模型导入至半边结构的数据体中,建立起整个模型的拓扑关系。3.如权利要求1所述的用于快速局部delaunay化的三维模型优化方法,其特征在于,在所述步骤s2中,导入模型文件后,提取所述模型文件中的平面区域,包括:将所有的面元导入一个队列,按照队列编号从小到大选取一个标记为false的面元作为种子面元,以该面元1-ring邻域开始搜索;寻找该邻域内标记为false的面元,判断该单元的法向量是否与种子面元的法向量相等,如果相等则视为属于同一面元,并加入待选队列,标记为true;如果在该邻域内找到同一平面的面元,则以该面元为种子面元,继续迭代重复上述步骤,直至再也无法找到同一平面的面元为止。4.如权利要求3所述的用于快速局部delaunay化的三维模型优化方法,其特征在于,统计计算出的面元体积和面元个数,如果二者均超过算法设定值,则将该面元集的信息记录下来,作为一个待优化平面;如果没有超过算法设定值,则该面元集的信息废弃,但是标记为true不变;按照编号顺序选取下一个标记为false的面元作为种子面元,继续迭代上述步骤,直至循环到队列结束,查找到所有的待优化平面;将所有的待优化平面保存,并标记好其在原来数据结构中的位置,等待进一步优化。5.如权利要求1所述的用于快速局部delaunay化的三维模型优化方法,其特征在于,在所述步骤s3中,使用四元数对三维平面进行旋转,如果三维平面的法向量n,该向量沿着以单位向量定义的旋转轴u,旋转θ角度后的向量n’,用矩阵乘法来获得;令那么:经过该方程的旋转,得到一个旋转到法向量为(0,0,1)的平面,此时平面内所有点的z值是相等的;去掉z值,将三维平面简化为二维平面。6.如权利要求1所述的用于快速局部delaunay化的三维模型优化方法,其特征在于,在所述步骤s4中,提取待优化平面的边缘点,按照顺序编号,对于多连通域的平面,对内部的
    空洞单独建立一个数组进行标注;标注后,对二维平面进行delaunay重剖分,该算法在保证原有边界点的基础上添加内部点,以使得每个单元均接近于正三角形。7.如权利要求1所述的用于快速局部delaunay化的三维模型优化方法,其特征在于,在所述步骤s5中,将二维平面反向映射回原三维空间。8.如权利要求1所述的用于快速局部delaunay化的三维模型优化方法,其特征在于,在所述步骤s6中,将识别出的所有二维平面嵌入原来的模型中,组合成最终的三维文件。9.如权利要求1所述的用于快速局部delaunay化的三维模型优化方法,其特征在于,在所述步骤s7中,优化后的三维文件具有均匀且规整的三角面片结构,将模型文件重新输出为二进制的ply文件或stl文件,算法优化计算完毕。

    技术总结
    本发明提出了一种用于快速局部Delaunay化的三维模型优化方法,包括:步骤S1,导入模型文件,并基于半边的三角面片数据结构对输入的数据文件进行重构;步骤S2,提取模型中的所有平面区域,并过滤掉不达标的平面区域,作为优化备选;步骤S3,对需要优化的三维平面进行三维旋转,以使其映射到二维空间中;步骤S4,对二维空间内的平面进行Delaunay算法优化;步骤S5,将优化后的二维平面反向映射为原三维平面;步骤S6,删掉模型中的原平面,并将优化后的三维平面插入到三维模型中,其中,插入过程保证整个三维模型的拓扑封闭;步骤S7,输出优化后的三维模型结果。后的三维模型结果。后的三维模型结果。


    技术研发人员:张子珂 李忠林 孟少星
    受保护的技术使用者:苏州数算软云科技有限公司
    技术研发日:2022.02.21
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-5288.html

    最新回复(0)