一种基于遗传算法的三角网格模型的三角形折叠简化方法与流程

文档序号:13423177阅读:733来源:国知局
一种基于遗传算法的三角网格模型的三角形折叠简化方法与流程

本发明属于一种三角网格模型简化方法,具体涉及一种大数据量的stl格式三角网格模型处理。



背景技术:

三角网格模型是一种常用的几何模型数字化表示方法,在3d打印、娱乐行业等领域有着广泛的应用。有些三角网格模型数据量庞大,虽然能保留完整的细节特征,但在进行传输、应用等必要操作时会对计算机造成较大的压力。因此,有必要在尽可能逼近原始网格的原则下,对模型数据进行简化。网格简化的实质是删除不必要的点和面,用新的点和面重新构造模型,从而在尽可能保留原始特征的的前提下减小模型数据量。目前,存在着的网格简化方法按照处理方式的不同主要可分为三类:元素删除法、网格重绘法和元素折叠法。

大多数元素删除法、网格重绘法在细节特征遗失、误差累计等方面问题突出,简化之后与原模型相差较大。而元素折叠法的本质是通过创造新几何元素继承旧几何元素以实现“折叠”,相较其他方法细节特征保持性更好,效率也更高。但若仅采用三角形折叠方法简化三角形,不但无法把握三角形质量,也会出现较多的过共顶点区域。

优化算法在各学科领域中都有广泛的应用,将优化算法应用于网格模型简化同样能取得较好的效果,遗传算法就是其中较为经典实用的一类算法。遗传算法结合三角形折叠方法用于三角网格简化不但有效地把控了误差,还提升了三角形质量。在简化时,使用算法中的适应度函数控制误差(如体积误差、角度误差、长度误差等)能较为显著地保留细节特征。

本发明所用的术语:

三角形折叠方法:指用一个合适的新顶点代替某一三角形,删除与该三角形直接相邻的三角形,并用新点与周围各点直接相连,从而实现三角形向一个点的“折叠”。

三角形质量:为了衡量简化前后三角网格的质量,定义网格模型中三角形接近正三角形的程度为三角形的规范性,也称为三角形质量。



技术实现要素:

本发明的目的是解决针对现有技术中的问题,即针对大数据量三角网格模型的简化操作,为了克服上述现有技术的不足,本发明提供了一种结合遗传算法的三角网格折叠简化方法,它能在尽可能逼近原模型和保持折叠方法高效率的情况下简化三角网格,同时能提高三角面片的质量。

为实现本发明目的而采用的技术方案是这样的,一种基于遗传算法的三角网格模型的折叠简化方法,其特征在于,包括以下步骤:

1)在输入stl格式的三角网格模型之后,设置删减百分比;

2)选定网格模型中,计算三角面片的重心作为初始折叠点;

3)寻找出最优折叠点:

3-1)依照面片存储的顺序,处理对应的初始折叠点,随机生成步长,进而生成第一代新点;

3-2)计算步骤3-1)生成的第一代新点的体积误差和新点连接三角形的规范化系数;

3-3)利用适应度函数、选择算子、交叉算子、变异算子不断迭代,达到迭代次数时结束,选出适应度函数值最小的点作为最优折叠点,并采用该点体积误差作为折叠代价。

4)将各三角面片的最优折叠点的折叠代价数值以及相对应的面片按照代价由大到小的顺序进行排序,并存入vc++自带的容器vector中;

5)首先对折叠代价最小的三角面片进行折叠,生成折叠点,并更新新点邻域信息,对新生成的三角面片重复步骤3)~4);直到最优折叠点的折叠代价和邻域信息存储完毕,进入下一步;

6)重复步骤5),并计算被删减的面片数量占总面片数的百分数,直至满足步骤1)设定的删减百分比时结束全过程。

本发明的技术效果是:

针对某些三角网格数据量较大的情况,有效集成了遗传算法和三角形折叠方法,充分利用了遗传算法在控制误差、提升三角形质量方面的优势,结合三角形折叠方法又弥补了遗传算法在处理效率上的不足,最终在处理速度和结果质量之间取得了平衡,从而实现了获得高质量三角网格模型的目的。

附图说明

本发明的附图说明如下:

图1为应用本发明的三角网格模型简化前后的对比效果示意图;

图中:a部分为原三角网格模型、b部分为简化之后的模型。

图2为步骤3所涉及的流程图。

具体实施方式

下面结合实施例对本发明作进一步说明,但不应该理解为本发明上述主题范围仅限于下述实施例。在不脱离本发明上述技术思想的情况下,根据本领域普通技术知识和惯用手段,做出各种替换和变更,均应包括在本发明的保护范围内。

参见附图1,一种基于遗传算法的三角网格模型的折叠简化方法,其特征在于,包括以下步骤:

1)在输入stl格式的三角网格模型(附图1的a部分为对象)之后,设置删减百分比(选取20%~90%中某一数值较为适宜);

2)选定网格模型中,计算三角面片的重心作为初始折叠点;

3)寻找出最优折叠点:

3-1)依照面片存储的顺序,处理对应的初始折叠点,随机生成步长,进而生成第一代新点;

值得说明的是,每个新点都是由三个不同轴上的坐标对应三个步长。

以初始折叠点v0(x0,y0,z0)为例,随机生成x、y、z三轴上的步长lrxi、lryi、lrzi(正负符号随机),进而生成第一代新点v0i(x0+lrxi,y0+lryi,z0+lrzi),i=1,2,3...50;

3-2)计算步骤3-1)生成的第一代新点的体积误差和新点连接三角形的规范化系数;

3-3)利用适应度函数、选择算子、交叉算子、变异算子不断迭代,达到迭代次数时结束,选出适应度函数值最小的点作为最优折叠点,并采用该点体积误差作为折叠代价。

进一步,采用体积误差与规范化系数之商作为适应度函数,适应度函数值越小越接近理想折叠点,流程图如图2。

4)将各三角面片的最优折叠点(经迭代后选出)的折叠代价数值以及相对应的面片按照代价由大到小的顺序进行排序,并存入vc++自带的容器vector中;

值得说明的是,本步骤中,排列和存储的对象是最优折叠点和对应的面片,也就是迭代后最终选出的点。容器vector是能够操作多种数据结构和算法的模板类和函数库,可实现自动增长的对象数组。各三角面片是面片类定义的对象,放在容器vector中是为了存储三角面片,同时方便折叠后新生成的元素的插入。

5)首先对折叠代价最小的三角面片进行折叠,生成折叠点,并更新新点邻域信息,对新生成的三角面片重复步骤3)~4);直到最优折叠点的折叠代价和邻域信息存储完毕,进入下一步;

值得说明的是,需要重复步骤3)~4),步骤3)是寻求新三角面片最优折叠点,4)是排列各三角面片的折叠顺序。

6)重复步骤5),并计算被删减的面片数量占总面片数的百分数,直至满足步骤1)设定的删减百分比时结束全过程。本实施例中,输出为附图1的b部分,删减百分比设定为30%。对比简化前后的效果图可明显看出简化后三角面片变得稀疏、数据量变少,而且没有丢失重要的细节特征,说明本专利方法在简化三角网格模型、删减冗余数据方面能发挥理想的作用。



技术特征:

技术总结
本发明公开了一种基于遗传算法的三角网格模型的三角形折叠简化方法,它是以三角面片的重心为基础生成随机步长和新点,利用遗传算法不断迭代得到能使新网格区域误差最小、三角形质量最高的最优折叠点,根据折叠代价依次对各三角面片进行折叠,直至简化到需要的删减百分比,最终得到简化的三角网格模型。本发明的技术效果是:针对某些三角网格数据量较大的情况,有效集成了遗传算法和三角形折叠方法,充分利用了遗传算法在控制误差、提升三角形质量方面的优势,结合三角形折叠方法又弥补了遗传算法在处理效率上的不足,最终在处理速度和结果质量之间取得了平衡,从而实现了获得高质量三角网格模型的目的。

技术研发人员:段黎明;杨尚朋;邹全乐;张桂
受保护的技术使用者:重庆大学
技术研发日:2017.08.10
技术公布日:2018.01.09
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1