曲面平滑的方法、装置、存储介质和电子装置与流程

文档序号:28595839发布日期:2022-01-22 10:21阅读:125来源:国知局
曲面平滑的方法、装置、存储介质和电子装置与流程

1.本发明涉及计算机领域,具体而言,涉及一种曲面平滑的方法、装置、存储介质和电子装置。


背景技术:

2.目前,在三维模型中,通常会以连续的多边形来模拟平滑曲面。三维软件在对上述三维模型进行渲染显示时,通常会在多边形中间插入足够密度的渐变法线。
3.法线的渐变过渡是否平滑会直接影响三维模型表面视觉上的平滑感,如果某顶点的法线出现明显偏差则会严重影响曲面的视觉平滑感,可以通过恰当设置的法线方向在视觉上掩盖其不平滑的表面。
4.而在相关技术中,可以手动调整顶点法线的方向。但是,手动调整顶点法线的方向耗时耗力且不准确,不可能在多面数的多边形曲面上做整体调整并取得平滑的曲面效果,从而使得对曲面进行平滑的效率低。
5.针对现有技术中对曲面进行平滑的效率低的技术问题,目前尚未提出有效的解决方案。


技术实现要素:

6.本发明的主要目的在于提供一种曲面平滑的方法、装置、存储介质和电子装置,以至少解决对曲面进行平滑的效率低的技术问题。
7.为了实现上述目的,根据本发明的一个方面,提供了一种曲面平滑的方法。该方法可以包括:在三维模型上选取待平滑的目标曲面;在目标曲面中确定目标顶点,且确定目标顶点的多个邻点,其中,每个邻点与目标顶点在目标曲面上共面;基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,得到多个第二法线向量,其中,每个邻点的权重用于表示每个邻点的第一法线向量对目标顶点的第三法线向量的重要度;基于多个第二法线向量确定第三法线向量,且基于第三法线向量对目标曲面进行平滑处理。
8.可选地,该方法还包括:在多个邻点中,确定每个邻点对应的第一邻点和每个邻点对应的第二邻点,其中,第一邻点位于每个邻点的第一侧,第二邻点位于每个邻点的第二侧;获取每个邻点与目标顶点之间的距离;基于第一邻点、第二邻点和距离,确定每个邻点的权重。
9.可选地,基于第一邻点、第二邻点和距离,确定每个邻点的权重,包括:获取每个邻点对应的第一夹角和每个邻点对应的第二夹角,其中,第一夹角由每个邻点对应的第一邻点、目标顶点和每个邻点形成,第二夹角由每个邻点、目标顶点和每个邻点对应的第二邻点形成;获取第一夹角和第二夹角二者之间的和;基于和与距离二者之间的商,确定每个邻点的权重。
10.可选地,该方法还包括:获取每个邻点的多个顶点的法线向量;将多个顶点的法线向量的平均值,确定为第一法线向量。
11.可选地,基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,包括:将每个邻点的权重与第一法线向量二者之间的积,确定为第二法线向量。
12.可选地,基于多个第二法线向量确定第三法线向量,包括:将多个第二法线向量的和,确定为第三法线向量。
13.可选地,在目标曲面中确定目标顶点,包括:识别目标曲面中的边缘顶点;该方法还包括:获取边缘顶点在目标曲面的边缘边集合上的多个邻边;获取多个邻边上除边缘顶点之外的第三邻点;对第一连续边集合上的顶点和第三邻点进行排序,得到第一顶点集合,其中,第一连续边集合包括由边缘顶点的邻点构成的边,边缘顶点的邻点与边缘顶点共面且在目标曲面内;从第一顶点集合中获取每相邻的第一顶点和第二顶点;基于每相邻的第一顶点和第二顶点以及对应的边缘顶点确定第三夹角,得到多个第三夹角。
14.可选地,确定目标顶点的多个邻点,包括:在多个第三夹角之和处于第一阈值范围的情况下,将第一顶点集合中排序首位的顶点和排序末位的顶点确定为边缘顶点的多个邻点;基于多个第二法线向量确定第三法线向量,包括:基于与边缘顶点的多个邻点对应的多个第二法线向量,确定第四法线向量。
15.可选地,该方法还包括:在多个第三夹角之和处于第一阈值范围的第一子阈值范围的情况下,基于多个第三夹角之和、第一子阈值范围的下限值和边缘顶点的当前法线向量对第四法线向量进行调整;基于第三法线向量对目标曲面进行平滑处理,包括:基于调整后的第四法线向量对目标曲面进行平滑处理。
16.可选地,该方法还包括:在多个第三夹角之和处于第一阈值范围的第二子阈值范围的情况下,基于多个第三夹角之和、第二子阈值范围的下限值对第四法线向量进行调整;基于第三法线向量对目标曲面进行平滑处理,包括:基于调整后的第四法线向量对目标曲面进行平滑处理。
17.可选地,确定目标顶点的多个邻点,包括:在多个第三夹角之和处于第二阈值范围的情况下,将第一顶点集合中的多个顶点确定为边缘顶点在目标曲面内的多个邻点;基于多个第二法线向量确定第三法线向量,包括:基于与边缘顶点在目标曲面内的多个邻点对应的多个第二法线向量,确定第五法线向量;基于第三法线向量对目标曲面进行平滑处理,包括:基于第五法线向量对目标曲面进行平滑处理。
18.可选地,该方法还包括:在多个第三夹角之和处于第三阈值范围的情况下,获取边缘顶点对应的目标向量,其中,目标向量为当边缘顶点的多个顶点法线垂直于边缘顶点所在的多边形时,多个顶点法线的多个向量的平均向量,多个顶点法线为目标曲面的边缘上的多边形的顶点法线;将目标向量确定为第三法线向量。
19.可选地,该方法还包括:获取目标曲面的多边形集合;基于多边形集合获取边缘边集合。
20.可选地,该方法还包括:获取边缘边集合所经过的顶点,得到边缘顶点集合;识别目标曲面中的边缘顶点,包括:将边缘顶点集合中的顶点,确定为边缘顶点。
21.可选地,在确定与多个边缘顶点一一对应的多个第三法线向量之后,分别基于多个第三法线向量对对应的多个边缘顶点的当前法线向量进行修正,得到多个第一目标法线向量,以平滑目标曲面。
22.可选地,在目标曲面中确定目标顶点,包括:在目标曲面中识别内部顶点。
23.可选地,该方法还包括:基于内部顶点获取第二连续边集合,其中,第二连续边集合包括由内部顶点的邻点构成的边,内部顶点的邻点与内部顶点共面;对第二连续边集合上的顶点和内部顶点进行排序,得到第二顶点集合;确定目标顶点的多个邻点,包括:在第二顶点集合中确定内部顶点的多个邻点。
24.可选地,在确定与多个内部顶点一一对应的多个第三法线向量之后,分别基于多个第三法线向量对对应的多个内部顶点的当前法线向量进行修正,得到多个第二目标法线向量,以平滑目标曲面。
25.可选地,该方法还包括:对经平滑处理后的三维模型进行渲染处理,得到目标图像;在图形用户界面上显示目标图像。
26.为了实现上述目的,根据本发明的另一方面,提供了一种曲面平滑的装置。该装置可以包括:选取单元,用于在三维模型上选取待平滑的目标曲面;确定单元,用于在目标曲面中确定目标顶点,且确定目标顶点的多个邻点,其中,每个邻点与目标顶点在目标曲面上共面;调整单元,用于基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,得到多个第二法线向量,其中,每个邻点的权重用于表示每个邻点的第一法线向量对目标顶点的第三法线向量的重要度;平滑单元,用于基于多个第二法线向量确定第三法线向量,且基于第三法线向量对目标曲面进行平滑处理。
27.为了实现上述目的,根据本发明的另一方面,提供了一种计算机可读存储介质。该计算机可读存储介质中存储有计算机程序,其中,在计算机程序被处理器运行时控制计算机可读存储介质所在设备执行本发明实施例的曲面平滑的方法。
28.为了实现上述目的,根据本发明的另一方面,提供了一种电子装置。该电子装置包括存储器和处理器,其特征在于,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行本发明实施例的曲面平滑的方法。
29.在该实施例中,通过对目标曲面上的目标顶点确定其邻点对应的权重和法线向量,可以优化所选取的目标曲面上的所有顶点的顶点法线的法线向量,以实现对曲面进行平滑的目的,解决了对曲面进行平滑的效率低的技术问题,达到了提高对曲面进行平滑的效率的技术效果。
附图说明
30.构成本技术的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
31.图1是根据本发明实施例的一种曲面平滑的方法的移动终端的硬件结构框图;
32.图2是根据本发明实施例的一种曲面平滑的方法的流程图;
33.图3是根据相关技术中的一种顶点法线垂直于本身所在多边形的模型的示意图;
34.图4根据本发明实施例的一种顶点法线垂直于所模拟曲面的切面的模型的示意图;
35.图5是根据本发明实施例的一种法线缺陷与布线缺陷对曲面视觉效果所造成影响的对比示意图;
36.图6是根据本发明实施例的一种自动法线平滑系统的结构图;
37.图7是根据本发明实施例的一种各模块的关系及数据处理的方法的流程图;
38.图8是根据相关技术中的一种典型的表面顶点密度不均造成曲面不平滑的待优化三维模型的示意图;
39.图9是根据本发明实施例的一种曲面布线的拓扑结构及各顶点法线状态的示意图;
40.图10是根据本发明实施例的一种用户所选择的待优化多边形的示意图;
41.图11是根据本发明实施例的一种三维模型的顶点分布的示意图;
42.图12为根据本发明实施例的一种完成三次优化迭代后的效果的示意图;
43.图13为根据本发明实施例的一种完成三次优化迭代后的顶点法线状态的示意图;
44.图14是根据本发明实施例的一种曲面平滑的装置的示意图。
具体实施方式
45.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
46.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
47.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
48.本技术实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是根据本发明实施例的一种曲面平滑的方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
49.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种数据处理的方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
50.传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
51.在本实施例中提供了一种运行于上述移动终端的一种曲面平滑的方法。下面对其进行进一步介绍。
52.图2是根据本发明实施例的一种曲面平滑的方法的流程图。如图2所示,该方法可以包括如下步骤:
53.步骤s202,在三维模型上选取待平滑的目标曲面。
54.在本发明上述步骤s202提供的技术方案中,三维模型可以为多边形三维模型(也可以称为三维多边形模型、多边形模型),也即,为需要通过连续的多个多边形来模拟平滑曲面的三维模型,其中,多边形可以为低面数的多边形,且曲率相近(可以排除倒角面等曲率变化较大的多边形)。该实施例可以在三维模型上选取待平滑的目标曲面,该目标曲面可以为视觉平滑感(平滑程度)的视觉效果受到影响的曲面,对应了三维模型上所选取的需要优化的区域。
55.步骤s204,在目标曲面中确定目标顶点,且确定目标顶点的多个邻点。
56.在本发明上述步骤s204提供的技术方案中,在三维模型上选取待平滑的目标曲面之后,可以在目标曲面中确定目标顶点,且确定目标顶点的多个邻点,其中,每个邻点与目标顶点在目标曲面上共面。
57.在该实施例中,目标曲面中包括多个顶点,其可以用于组成目标曲面的多边形,该多个顶点的顶点法线未平滑过渡,需要对其进行修正。该实施例在多个顶点中确定目标顶点,其可以用于v进行表示,并且确定目标顶点在目标曲面上每一个共面并且按后续算法判定后纳入计算的多个邻点,该多个邻点可以为目标顶点的多个法线向量参考邻点,比如,该多个邻点可以为v1、v2、......、vn。
58.步骤s206,基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,得到多个第二法线向量。
59.在本发明上述步骤s206提供的技术方案中,在目标曲面中确定目标顶点,且确定目标顶点的多个邻点之后,可以基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,得到多个第二法线向量,其中,每个邻点的权重用于表示每个邻点的第一法线向量对目标顶点的第三法线向量的重要度。
60.在该实施例中,顶点法线为三维模型上的顶点在其某一邻面上的法线。在三维模型中,每个顶点都会延伸出若干条边,而每两条相邻的边与该顶点共同所在的多边形会在该顶点处生成一条法线,也即,若顶点与n个多边形相邻,则在该顶点处会有n条顶点法线,这些顶点法线可以同时具有相同向量,也可以分开具有不同向量。相应地,该实施例的目标顶点的每个邻点可以具有多个顶点法线,可以基于该多个顶点法线确定第一法线向量,该第一法线向量可以为目标顶点的多个法线的相同向量。
61.该实施例可以分别获取多个邻点的权重,该权重也即邻点的加成权重、权重系数,用于表示每个邻点的第一法线向量对目标顶点的第三法线向量的重要度,其中,第三法线
向量为用于对目标顶点的当前法线向量进行调整的参考法线向量,重要度可以为每个邻点的第一法线向量对目标顶点的第三法线向量的重要程度。
62.在获取每个邻点的第一法线向量和对应的权重之后,可以基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,这样每个邻点对应一个第二法线向量,从而多个第二法线向量对应多个第二法线向量。
63.步骤s208,基于多个第二法线向量确定第三法线向量,且基于第三法线向量对目标曲面进行平滑处理。
64.在本发明上述步骤s208提供的技术方案中,在基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,得到多个第二法线向量之后,基于多个第二法线向量确定第三法线向量,且基于第三法线向量对目标曲面进行平滑处理。
65.在该实施例中,由于每个邻点的权重用于表示每个邻点的第一法线向量对目标顶点的第三法线向量的重要度,基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,可以基于每个邻点对应的第二法线向量确定上述第三法线向量,可以对多个第二法线向量进行综合处理,进而基于该第三法线向量对目标顶点的当前法线向量进行修正,得到目标法线向量,比如,该目标法线向量可以通过进行表示,进而实现对目标曲面进行平滑处理的目的。
66.可选地,该实施例通过上述方法使得同一目标顶点的多条顶点的法线向量被设定为相同的法线向量,组成目标曲面的多边形的每个顶点的法线都不会垂直于本身所在的多边形,而是垂直于与该目标顶点相邻的所有多边形所模拟的曲面的切平面(tangent plane),以通过连续的多边形模拟平滑的目标曲面。如果每个顶点上的顶点法线相互分开并垂直于本身所在的多边形,则会出现硬边,使得曲面平滑效果差。在相关技术中,自动平滑法线的功能只能令图3所示的硬面变成图8所示的程度。其中,图3是根据相关技术中的一种顶点法线垂直于本身所在多边形的模型的示意图;图8是根据相关技术中的一种典型的表面顶点密度不均造成曲面不平滑的待优化三维模型的示意图。
67.可选地,该实施例对于目标曲面的每个顶点,均按照上述方法对每个顶点的当前法线向量进行调整,其中,同一多边形上不同顶点的法线向量会存在一定范围内的偏差,在具有偏差的两条法线向量中间插入足够密度的渐变法线,也即,插入逐渐过渡的值,使得同一多边形两端的两顶点间呈现出切平面角度的渐变过渡,以提高三维模型表面视觉上的平滑感,从而达到对目标曲面进行平滑处理的目的,不仅提高了曲面平滑的效率,而且还提高了曲面平滑的效果。
68.需要说明的是,该实施例的上述方法适用于所有平面、凸面、凹面、马鞍面、柱面、锥面、带分缝线的表面等三维模型的法线平滑修正。
69.通过本技术上述步骤s202至步骤s208,在三维模型上选取待平滑的目标曲面;在目标曲面中确定目标顶点,且确定目标顶点的多个邻点,其中,每个邻点与目标顶点在目标曲面上共面;基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,得到多个第二法线向量,其中,每个邻点的权重用于表示每个邻点的第一法线向量对目标顶点的第三法线向量的重要度;基于多个第二法线向量确定第三法线向量,且基于第三法线向量对目标曲面进行平滑处理。也就是说,本技术通过对目标曲面上的目标顶点确定其邻点对应的权重和法线向量,可以优化所选取的目标曲面上的所有顶点的顶点法线的法线向
量,以实现对曲面进行平滑的目的,解决了对曲面进行平滑的效率低的技术问题,达到了提高对曲面进行平滑的效率的技术效果。
70.下面对该实施例的上述方法进行进一步举例说明。
71.作为一种可选的实施方式,该方法还包括:在多个邻点中,确定每个邻点对应的第一邻点和每个邻点对应的第二邻点,其中,第一邻点位于每个邻点的第一侧,第二邻点位于每个邻点的第二侧;获取每个邻点与目标顶点之间的距离;基于第一邻点、第二邻点和距离,确定每个邻点的权重。
72.在该实施例中,在目标顶点的多个邻点中,每个邻点具有对应的第一邻点和第二邻点,比如,多个邻点为v1、v2、......、vn,其中,对于邻点v1而言,其第一邻点可以为vn,第二邻点可以为v2,对于邻点vi而言,其第一邻点可以为v
i-1
,第二邻点可以为v
i+1
,其中,i=2~n-1,对于邻点vn而言,其第一邻点可以为v
n-1
,第二邻点可以为v1。该实施例可以获取每个邻点与目标顶点之间的距离,比如,对于邻点v1而言,其与目标顶点之间的距离可以为对于邻点vi而言,其与目标顶点之间的距离可以为对于邻点vn而言,其与目标顶点之间的距离可以为其中,也即距离权重。
73.在确定每个邻点对应的第一邻点和每个邻点对应的第二邻点,且获取每个邻点与目标顶点之间的距离之后,该实施例可以基于第一邻点、第二邻点和上述每个邻点与目标顶点之间的距离共同来确定每个邻点的权重。
74.可选地,如果目标顶点的多个邻点中某一邻点或至少两个邻点与目标顶点重合,使得距离为零,则可以跳过计算,直接输出距离为零的所有邻点的第一法线向量的平均值,将其作为目标顶点的第三法线向量,即参考法线向量。
75.作为一种可选的实施方式,基于第一邻点、第二邻点和距离,确定每个邻点的权重,包括:获取每个邻点对应的第一夹角和每个邻点对应的第二夹角,其中,第一夹角由每个邻点对应的第一邻点、目标顶点和每个邻点形成,第二夹角由每个邻点、目标顶点和每个邻点对应的第二邻点形成;获取第一夹角和第二夹角二者之间的和;基于和与距离二者之间的商,确定每个邻点的权重。
76.在该实施例中,在实现基于第一邻点、第二邻点和距离,确定每个邻点的权重时,可以是先获取每个邻点对应的第一夹角和每个邻点对应的第二夹角,其中,第一夹角和第二夹角为由目标顶点与对应的邻点及其两侧的第一邻点和第二邻点所组成的共边夹角,比如,∠vnvv1、∠v1vv2为目标顶点v与对应的邻点v1及其两侧的邻点vn和v2所组成的共边夹角,∠v
i-1
vvi、∠vivv
i+1
为目标顶点v与对应的邻点vi及其两侧的邻点v
i-1
和v
i+1
所组成的共边夹角,∠v
n-1
vvn、∠vnvv1为目标顶点v与对应的邻点vn及其两侧的邻点v
n-1
和v1所组成的共边夹角。
77.该实施例可以获取第一夹角的角度和第二夹角的角度的和,比如,获取∠vnvv1+∠v1vv2,∠v
i-1
vvi+∠vivv
i+1
,∠v
n-1
vvn∠vnvv1,其也即角度权重。在获取第一夹角和第二夹角二者角度之间的和之后,可以基于该和与距离二者之间的商,确定每个邻点的权重,比如,获取该和与距离二者之间的商,可以将该商确定为每个邻点的初始权重,然后对其进行归一化处理,比如,获取多个邻点的初始权重之和,比如,获取
进而以每个邻点的初始权重除以多个邻点的初始权重之和,从而得到每个邻点最终的权重,其可以称为法线向量权重,可以称为法线向量加成权重,可以为由下述式子进行表示:
[0078][0079][0080][0081]
由上述可知,在该实施例中,目标顶点的邻点越接近目标顶点,该邻点与目标顶点之间的距离就越小,该邻点对应的权重就越大;在目标顶点的多个邻点中,由目标顶点与对应的邻点及其两侧的第一邻点和第二邻点所组成的两个共边夹角的角度之和越大,则该邻点对应的权重就越大。
[0082]
该实施例的上述计算目标顶点的每个邻点的权重的方法,可以仅需检测目标顶点的邻点与目标顶点之间的距离,以及检测目标顶点与对应的邻点及其两侧的第一邻点和第二邻点所组成的两个共边夹角的角度之和,即可完成每个邻点的权重计算,在节省计算资源的同时,所得效果在各种类型的曲面上非常接近以严谨三角函数计算所得的结果,其具有非常强大的普适性,可以直接用于平面、凸面、凹面、马鞍面、柱面、锥面、带分缝线的表面等多边形三维模型表面,且计算无需过度依赖平滑的多边形布线,可以用于掩盖曲面布线起伏和顶点间距不均匀所造成的曲面不平滑。
[0083]
需要说明的是,在上述方法中,之所以不用更严谨的三角函数来计算目标顶点的第三法线向量,是因为在绝大多数情况下,难以用一个简单方程描述目标顶点及其各邻点所在目标曲面的曲率,即使是模拟一个近似曲面,而随着曲面类型不同,计算公式也必须随之改变,再加上检测目标曲面的曲面类型与后续计算所消耗的计算资源,使用严谨三角函数计算第三法线向量会令每次优化多面数的三维模型时变得非常缓慢。
[0084]
作为一种可选的实施方式,该方法还包括:获取每个邻点的多个顶点的法线向量;将多个顶点的法线向量的平均值,确定为第一法线向量。
[0085]
在该实施例中,基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,其中,第一法线向量可以基于该多个顶点法线来进行确定,可以获取每个邻点的多个顶点的法线向量,然后对该多个顶点的法线向量取平均值,也即,向量平均值,进而将其确定为每个邻点的第一法线向量,比如,第一法线向量可以为
[0086]
作为一种可选的实施方式,步骤s206,基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,包括:将每个邻点的权重与第一法线向量二者之间的积,确定
为第二法线向量。
[0087]
在该实施例中,在实现基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量时,可以是获取每个邻点的权重与上述第一法线向量二者之间的积,比如,获取下式:
[0088][0089][0090][0091]
在获取每个邻点的权重与上述第一法线向量二者之间的积之后,可以将该积确定为每个邻点的第二法线向量,从而实现了法线向量加权计算的目的。
[0092]
作为一种可选的实施方式,步骤s208,基于多个第二法线向量确定第三法线向量,包括:将多个第二法线向量的和,确定为第三法线向量。
[0093]
在该实施例中,在实现基于多个第二法线向量确定第三法线向量时,可以是对多个第二法线向量进行求和计算,进而将该和确定为目标顶点的第三法线向量,比如,第三法线向量进而基于该第三法线向量对目标顶点的当前法线向量进行调整,以实现对目标曲面进行平滑处理。
[0094]
下面对该实施例的目标曲面的选区边缘顶点法线修正的方法进行介绍。
[0095]
作为一种可选的实施方式,步骤s204,在目标曲面中确定目标顶点,包括:识别目标曲面中的边缘顶点;该方法还包括:获取边缘顶点在目标曲面的边缘边集合上的多个邻边;获取多个邻边上除边缘顶点之外的第三邻点;对第一连续边集合上的顶点和第三邻点进行排序,得到第一顶点集合,其中,第一连续边集合包括由边缘顶点的邻点构成的边,边缘顶点的邻点与边缘顶点共面且在目标曲面内;从第一顶点集合中获取每相邻的第一顶点和第二顶点;基于每相邻的第一顶点和第二顶点以及对应的边缘顶点确定第三夹角,得到多个第三夹角。
[0096]
在该实施例中,目标顶点可以包括边缘顶点,从而该实施例可以在目标曲面中确定边缘顶点,该实施例的边缘顶点可以通过v
bi
进行表示。
[0097]
在三维多边形模型中,每个边缘顶点在拓扑结构上有且仅有两条在边缘上的邻边和两个在邻边上另一侧的邻点。该实施例可以获取边缘顶点在目标曲面的边缘边集合上的两条邻边,进而获取位于每个邻边另一侧的两个第三邻点,比如,该两个第三邻点可以为v
n1
、v
nn
。在该实施例中,获取第一连续边集合,该第一连续边集合可以包括由上述边缘顶点
的邻点构成的边,可以由en进行表示。其中,边缘顶点的邻点与边缘顶点共面且在目标曲面对应的选定区域内。在获取到第一边缘边集合上的多个邻边和多个第三邻点之后,可以对第一连续边集合上的顶点和多个第三邻点中的任意一个第三邻点(比如,为v
n1
)进行排序,得到第一顶点集合,该第一顶点集合可以为以上述一个第三邻点为起点,按顺序经过第一连续边集合en上所有顶点至另一个第三邻点v
nn
结束的顶点集合vn。
[0098]
该实施例可以从第一顶点集合中获取每相邻的第一顶点和第二顶点,然后可以计算第一顶点、边缘顶点以及第二顶点之间的第三夹角的角度,比如,从i=1开始,可以依次获取由第一顶点集合vn上的第一顶点v
ni
与第二顶点v
n(i+1)
形成的第三夹角,直至完成i=n-1点的计算后把所有夹角汇总,得到多个第三夹角,可以进一步获取多个第三夹角之和,可以将其记为a
bi
,其将用于判断后续采用何种方式计算目标顶点vb的邻点vn的权重,下面对其进行进一步介绍。
[0099]
作为一种可选的实施方式,步骤s204,确定目标顶点的多个邻点,包括:在多个第三夹角之和处于第一阈值范围的情况下,将第一顶点集合中排序首位的顶点和排序末位的顶点确定为边缘顶点的多个邻点;基于多个第二法线向量确定第三法线向量,包括:基于与边缘顶点的多个邻点对应的多个第二法线向量,确定第四法线向量。
[0100]
在该实施例中,可以判断多个第三夹角之和是否处于第一阈值范围,该第一阈值范围可以为(120
°
,240
°
),该实施例可以获取第一顶点集合中排序首位的顶点v
n1
和排序末位的顶点v
nn
,将其确定为边缘顶点v
bi
的两个邻点,可以基于第一顶点集合中排序首位的顶点v
n1
、边缘顶点v
bi
、排序末位的顶点v
nn
进行法线向量加权计算,以确定边缘顶点v
bi
的第三法线向量。可选地,因为两条边v
n1vbi
与v
bivnn
两侧对应的角度权重的夹角为∠v
n1vbivnn
与∠v
nnvbivn1
,因此该实施例仅需以两条边v
n1vbi
与v
bivnn
的长度计算其距离权重,进而基于其将每个邻点(v
n1
、v
nn
)的第一法线向量调整为第二法线向量,得到多个第二法线向量,基于多个第二法线向量确定边缘顶点v
bi
的第四法线向量,也即,上述第三法线向量包括第四法线向量,可以将其记为
[0101]
可选地,该实施例可以获取目标曲面对应的优化范围的多边形集合fs,获取边缘顶点的多个邻边和多个邻面。其中,多个邻边可以通过e
t
进行表示,比如,e
t
包括邻边e1、邻边e2、邻边e3等,多个邻面可以通过f
t
进行表示,比如,f
t
包括邻面f1、邻面f2等。获取上述多个第一邻面f
t
与多边形集合fs的交集并记为新的集合f
t
。也即,取f
t
与fs的交集并记为新的集合f
t
。其中,这里的f
t
既包含了某一个边缘顶点的邻面中位于fs一侧的面,也包含了不属于fs范围内位于边缘另一侧的面,因此获取f
t
与fs的交集之后就只剩与该边缘顶点相邻且位于fs范围内一侧的面了。该实施例可以获取该新的集合f
t
的多个边,并从该多个边中剔除与该边缘顶点相连的所有邻边e
t
,需要说明的是,这里指的是单一一个边缘顶点,不能包括其两侧位于边缘上的邻点,否则“剔除与边缘顶点相连的所有邻边”就会将与其邻点相连的边也剔除掉了。该实施例的剔除后剩下的边就是经过所有邻点的第一连续边集合en。该实施例获取e
t
与所有边缘边集合eb之间的交集,在获得边缘边集合eb中与边缘顶点相连的两条邻边后,继而将其转化获得位于邻边另一端的两个邻点v
n1
、v
nn

[0102]
作为一种可选的实施方式,该方法还包括:在多个第三夹角之和处于第一阈值范围的第一子阈值范围的情况下,基于多个第三夹角之和、第一子阈值范围的下限值和边缘顶点的当前法线向量对第四法线向量进行调整;基于第三法线向量对目标曲面进行平滑处
理,包括:基于调整后的第四法线向量对目标曲面进行平滑处理。
[0103]
在该实施例中,第一阈值范围可以包括第一子阈值范围,比如,该第一子阈值范围可以为a
bi
∈(120
°
,180
°
],可以基于多个第三夹角之和、第一子阈值范围的下限值和边缘顶点的当前法线向量对第四法线向量进行调整。随着第三夹角之和超过第一子阈值范围的下限值(120
°
),边缘顶点的参考法线向量可以逐渐偏向于上述计算得到的第四法线向量可选地,该实施例可以通过下述公式获得边缘顶点的参考法线向量:
[0104]
其中,用于表示边缘顶点的当前法线向量。
[0105]
作为一种可选的实施方式,步骤s204,确定目标顶点的多个邻点,包括:在多个第三夹角之和处于第二阈值范围的情况下,将第一顶点集合中的多个顶点确定为边缘顶点在目标曲面内的多个邻点;基于多个第二法线向量确定第三法线向量,包括:基于与边缘顶点在目标曲面内的多个邻点对应的多个第二法线向量,确定第五法线向量。
[0106]
在该实施例中,可以判断多个第三夹角是否处于第二阈值范围,该第二阈值范围可以为≥240
°
的范围,获取边缘顶点在目标曲面对应的选区内的邻点集合vn,进而基于邻点集合vn中每个邻点的权重,将每个邻点的第一法线向量调整为第二法线向量,得到多个第二法线向量,基于多个第二法线向量确定第五法线向量,也即,上述第三法线向量可以包括第五法线向量,可以将其记为
[0107]
作为一种可选的实施方式,步骤s208,基于第三法线向量对目标曲面进行平滑处理,包括:在多个第三夹角之和处于第二阈值范围的情况下,基于第五法线向量对目标曲面进行平滑处理。
[0108]
在该实施例中,在多个第三夹角之和处于第二阈值范围的情况下,比如,为大于等于240
°
的范围,由于第三法线向量包括上述第五法线向量其可以作为对边缘顶点的当前法线向量进行修正的参考法线向量,从而在实现基于第三法线向量对目标曲面进行平滑处理,可以是基于第五法线向量边缘顶点的当前法线向量进行修正,以实现对目标曲面进行平滑处理的目的。
[0109]
作为一种可选的实施方式,该方法还包括:在多个第三夹角之和处于第一阈值范围的第二子阈值范围的情况下,基于多个第三夹角之和、第二子阈值范围的下限值对第四法线向量进行调整;步骤s208,基于第三法线向量对目标曲面进行平滑处理,包括:基于调整后的第四法线向量对目标曲面进行平滑处理。
[0110]
在该实施例中,第一阈值范围还可以包括第二子阈值范围,比如,第二子阈值范围可以为(180
°
,240
°
),此时边缘顶点的邻点已不限于仅处于目标曲面对应的选区边缘任一邻边的一侧。随着多个第三夹角之和a
bi
超过第二子阈值范围的下限值,用于对边缘顶点的当前法线向量进行修正的参考法线向量可以逐渐从第四法线向量偏向于第五法线向量可以基于多个第三夹角之和、第二子阈值范围的下限值对第四法线向量进行调整,可以是基于多个第三夹角之和、第二子阈值范围的下限值和上述第五法线向量对第四法线向量进行调整,从而得到边缘顶点的参考法线向量。可选地,该实施例通过下述公式获得边缘顶
点的参考法线向量
[0111][0112]
作为一种可选的实施方式,该方法还包括:在多个第三夹角之和处于第三阈值范围的情况下,获取边缘顶点对应的目标向量,其中,目标向量为当边缘顶点的多个顶点法线垂直于边缘顶点所在的多边形时,多个顶点法线的多个向量的平均向量,多个顶点法线为目标曲面的边缘上的多边形的顶点法线;将目标向量确定为第三法线向量。
[0113]
在该实施例中,可以判断多个第三夹角之和是否处于第三阈值范围,比如,该第三阈值范围可以为≤120
°
的范围,此时边缘顶点无法仅通过计算一个方向内小范围的相邻顶点的权重(加权法线向量)获得理想的平滑曲面结果。该实施例可以直接获取边缘顶点上多个顶点法线垂直于其所在的多边形时的法线向量,可以获取其中属于目标曲面的边缘上的多边形的多个顶点法线n
vbs
对应的多个向量,将该多个向量的平均值确定为边缘顶点对应的目标向量,进而可以将该目标向量确定第三法线向量,以对边缘顶点的当前法线向量进行修改,以对目标曲面进行平滑处理的目的。
[0114]
可选地,该实施例可以获取目标曲面对应的所选优化范围内的多边形,记为多边形集合fs,获取该多边形集合的所有顶点法线,将其记为集合n
vs
,该集合可以不包含边缘顶点在所选优化范围多边形的边缘边集合eb在选择范围外一侧的邻面的顶点法线,用于排除选择范围外曲率不一致的倒角面的顶点法线)。该实施例可以获取所有与边缘边集合相邻的顶点法线,将其记为集合n
vb
,获取上述n
vs
与n
vb
的交集,从而获得所有在选区边缘的边上,属于所选区域范围一侧的多边形的顶点法线,并记为上述n
vbs

[0115]
需要说明的是,上述作为阈值范围的阈值120
°
、180
°
、240
°
等角度均为经验数据,如有需要可以根据实际情况而灵活调整。
[0116]
作为一种可选的实施方式,该方法还包括:获取目标曲面的多边形集合;基于多边形集合获取边缘边集合。
[0117]
在该实施例中,可以将目标曲面对应的所选优化范围内的多边形记为多边形集合fs,获取组成集合fs中的多边形的边,将其记为集合es。该实施例还可以获取未被选中的面,并将其转化为组成这些面的边,可以将其记为集合e
ns
,获取整个三维模型的边缘上的边,并将其添加至集合e
ns
,然后取上述es与e
ns
之间的交集,从而获得所选优化范围内的多边形的边缘边集合eb。
[0118]
作为一种可选的实施方式,该方法还包括:获取边缘边集合所经过的顶点,得到边缘顶点集合;识别目标曲面中的边缘顶点,包括:将边缘顶点集合中的顶点,确定为边缘顶点。
[0119]
在该实施例中,可以对目标曲面的边缘边集合进行转化,得到边缘边集合所经过的所有顶点,从而得到上述边缘顶点集合vb,进而在识别目标曲面中的边缘顶点时,可以将边缘顶点集合中的顶点确定为边缘顶点v
bi

[0120]
作为一种可选的实施方式,在确定与多个边缘顶点一一对应的多个第三法线向量之后,分别基于多个第三法线向量对对应的多个边缘顶点的当前法线向量进行修正,得到多个第一目标法线向量,以平滑目标曲面。
[0121]
在该实施例中,对于多个边缘顶点,可以逐一基于边缘顶点集合中的第i个边缘顶
点v
bi
、边缘边集合eb和选取的优化范围内的多边形集合fs输计算获取其第三法线向量(参考法线向量)并获取边缘顶点v
bi
的当前法线向量通过第三法线向量对当前法线向量进行调整,可以通过目标参数、第三法线向量对边缘顶点的当前法线向量进行调整,以得到边缘顶点v
bi
的第一目标法线向量可选地,该实施例可以通过以下公式计算得出优化后的边缘顶点v
bi
的第一目标法线向量
[0122]
其中,cn为上述目标参数。
[0123]
该实施例通过上述方法遍历边缘顶点集合vb中的所有边缘顶点,得到包括每个边缘顶点的第一目标法线向量的第一目标向量序列集合nv。
[0124]
在该实施例中,上述目标参数可以为优化偏向设置系数,其取值范围可以为0-1,该值可以用于确定优化的第一目标法线向量是偏向原有的当前法线向量,还是当前状态下计算出的第三法线向量,可以取值0.5,并通过多次迭代使得每一个边缘顶点的第一目标法线向量在迭代中逐渐趋向理论最优解。可选地,如果目标参数的取值过大,可能令第一目标法线向量矫枉过正,多次迭代时会出现第一目标法线向量在最优解附近反复摇摆的情况。
[0125]
在获取上述第一目标向量序列集合nv后,可以从i=1开始,逐一把边缘顶点集合vb中第i位的边缘顶点v
bi
的所有顶点法线向量统一修正为第一目标向量序列集合nv第i位的第一目标法线向量重复以上步骤,直至遍历完边缘顶点集合vb中的所有顶点。
[0126]
需要说明的是,该实施例之所以不在计算出某一边缘顶点的第一目标法线向量后立即对该边缘顶点的当前法线向量进行修正,是因为改变后的某个边缘顶点也可能是另一未优化的边缘顶点的邻点,先改变的边缘顶点会导致后续优化结果出现偏差。
[0127]
可选地,该实施例可以从交互界面中获取用户的优化设置。可选地。获取是否优化边缘顶点的当前法线向量的选项,如果是,则可以执行上述对边缘顶点的处理方法,如果否,则可以执行。可选地,该实施例还可以从交互界面中获取目标参数cn。
[0128]
下面对该实施例的目标曲面的选取内部顶点法线修正的方法进行进一步介绍。
[0129]
作为一种可选的实施方式,步骤s204,在目标曲面中确定目标顶点,包括:在目标曲面中识别内部顶点。
[0130]
在该实施例中,在获取边缘边集合eb所经过的所有边缘顶点,得到边缘顶点集合vb,以及获取组成多边形记为集合fs的所有顶点之后,可以多边形记为集合fs的所有顶点中剔除边缘顶点集合vb,从而获得内部顶点集合,可以将该内部顶点集合记为vi,进而在该内部顶点集合中确定出内部顶点,该内部顶点可以记为v
ii

[0131]
可选地,如果用户选择不优化边缘,则可以执行对内部顶点的第二目标法线向量的计算,以通过该第二目标法线向量实现对目标曲面进行平滑的目的。
[0132]
作为一种可选的实施方式,该方法还包括:基于内部顶点获取第二连续边集合,其中,第二连续边集合包括由内部顶点的邻点构成的边,内部顶点的邻点与内部顶点共面;对第二连续边集合上的顶点和内部顶点进行排序,得到第二顶点集合;步骤s204,确定目标顶点的多个邻点,包括:在第二顶点集合中确定内部顶点的多个邻点。
[0133]
在该实施例中,对于内部顶点v
ii
,可以获取该内部顶点v
ii
的所有邻边e
t
和所有邻面e
t
,获取组成里面e
t
的所有边,并从中剔除与内部顶点v
ii
相连的上述所有邻边e
t
,从而获
取连接与内部顶点v
ii
共面的所有邻点的第二连续边集合en,并获取第二连续边集合en上任一顶点v
i1
。可选地,该实施例可以对第二连续边集合上的顶点和内部顶点进行排序,得到第二顶点集合,其是以第二连续边集合上的顶点v
i1
为起点,按顺序经过第二连续边集合en上所有顶点的内部顶点集合,可以记为vi,进而该实施例可以在第二顶点集合中确定上述内部顶点的多个邻点。
[0134]
作为一种可选的实施方式,在确定与多个内部顶点一一对应的多个第三法线向量之后,分别基于多个第三法线向量对对应的多个内部顶点的当前法线向量进行修正,得到多个第二目标法线向量,以平滑目标曲面。
[0135]
在该实施例中,可以逐一获取内部顶点集合vi中的内部顶点,并获取内部顶点的所有顶点的法线向量,对内部顶点的所有顶点的法线向量求取平均值后,将该平均值赋予该内部顶点上所有的顶点法线,以此令每一个内部顶点上所有顶点法线向量都一致,以方便后续优化计算。
[0136]
可选地,该实施例可以从i=1开始,逐一将内部顶点集合vi上的第i个内部顶点v
ii
通过确定内部顶点的多个邻点,基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,得到多个第二法线向量,基于多个第二法线向量确定其参考法线向量(第三法线向量)并并获取内部顶点v
ii
当前法线向量可以通过可以通过计算得出优化后顶点v
ii
的第二目标法线向量
[0137]
该实施例通过上述方法遍历内部顶点集合vi中的所有内部顶点,得到包括每个内部顶点的第二目标法线向量的第二目标向量序列集合nv。
[0138]
该实施例可以在获取所有内部顶点的第二目标向量序列集合nv后,可以从i=1开始,逐一将内部顶点集合vi中第i位的顶点v
ii
的所有顶点法线统一修正为第二目标向量序列集合nv第i位的法线向量重复以上步骤直至遍历内部顶点集合vi中所有内部顶点后,记已执行迭代次数加一。若已执行迭代次数小于设定的迭代次数t,则可以在优化边缘顶点法线的情况下,重新执行上述选区边缘顶点法线计算以及选区内部顶点法线计算,或者在不优化边缘顶点法线的情况下,重新执行上述选区内部顶点法线计算。当已执行迭代次数等于t时,优化结束。可选地,该实施例还可以从交互界面中获取迭代次数t。
[0139]
作为一种可选的实施方式,该方法还包括:对经平滑处理后的三维模型进行渲染处理,得到目标图像;在图形用户界面上显示目标图像。
[0140]
在该实施例中,通过上述方法对三维模型的目标曲面进行平滑处理,实现了对三维模型进行平滑处理的目的,可以进一步对经平滑处理后的三维模型进行渲染处理,得到与经平滑处理后的三维模型相对应的目标图像。
[0141]
可选地,该实施例可以使用渲染程序对经平滑处理后的三维模型进行渲染处理,其中,渲染程序可以通过摄像机获取上述经平滑处理后的三维模型需要渲染的范围,计算场景中添加的每一光源对经平滑处理后的三维模型的影响。与真实世界中光源不同的是,上述渲染程序可以计算大量的辅助光源。在该实施例中,还可以根据光源投射出来的阴影确定对经平滑处理后的三维模型是使用深度贴图阴影还是使用光线追踪阴影。另外,在使用了面积光源之后,场景中的光源如果使用了光源特效,渲染程序还将计算特效的结果,特别是体积光(灯光雾),进而实现对经平滑处理后的三维模型进行渲染处理的目的。
[0142]
可选地,在该实施例中,上述渲染程序还可以根据经平滑处理后的三维模型的材质来计算经平滑处理后的三维模型的表面的颜色,其中,材质的类型不同,属性不同,纹理不同都会产生各种不同的效果,且这个结果不是独立存在的,其可以和上述光源结合起来。
[0143]
在对经平滑处理后的三维模型进行渲染处理,得到目标图像之后,可以在图形用户界面上显示目标图像,从而实现了在图形用户界面上渲染显示经平滑处理后的三维模型对应的目标图像的目的。
[0144]
在该实施例中,通过对目标曲面上的目标顶点确定其邻点对应的权重和法线向量,可以优化所选取的目标曲面上的所有顶点的顶点法线的法线向量,以实现对曲面进行平滑的目的,解决了对曲面进行平滑的效率低的技术问题,达到了提高对曲面进行平滑的效率的技术效果。
[0145]
下面结合优选的实施方式对本发明实施例的技术方案进行进一步地举例说明。
[0146]
在多边形三维模型中,为了以连续的多边形模拟平滑曲面,组成曲面的多边形每个顶点的法线都不会垂直于本身所在的多边形,而是垂直于与该顶点相邻的所有多边形所模拟的曲面的切平面,也即,在平滑曲面中的同一顶点上,所有顶点的法线向量相同。
[0147]
如果每个顶点上的顶点法线相互分开并垂直于本身所在的多边形,则会出现如图3所示的硬边。其中,图3是根据相关技术中的一种顶点法线垂直于本身所在多边形的模型的示意图。因此在多边形曲面模型上,同一顶点的多条顶点法线通常被设定为相同的法线向量,而同一多边形上不同顶点的法线角度会存在一定的偏差。
[0148]
在三维计算机图形学中,三维软件会在渲染显示多边形时在两条偏差法线中间插入逐渐过渡的值,令同一多边形两端的两顶点间呈现出切平面角度的渐变过渡。就如图4左侧所示。其中,图4根据本发明实施例的一种顶点法线垂直于所模拟曲面的切面的模型的示意图,由多个多边形模拟的曲面,其每个顶点的法线垂直于其所模拟曲面的切平面,则在渲染显示时三维软件会在多边形中间插入足够密度的渐变法线,使得各顶点的法线平滑过渡,可以令多个平面多边形组成如图4右侧所示的顺滑曲面。
[0149]
法线的渐变过渡是否平滑会直接影响三维模型表面视觉上的平滑感,如图5左侧所示。其中,图5是根据本发明实施例的一种法线缺陷与布线缺陷对曲面视觉效果所造成影响的对比示意图,如果某顶点的法线出现明显偏差,则会严重影响曲面的视觉平滑感,反而如图5右侧所示的布线起伏瑕疵可以通过恰当设置的法线方向在视觉上掩盖其不平滑的表面。
[0150]
因此,三维模型的曲面,尤其是低面数的三维模型曲面上各顶点的法线的平滑过渡,对曲面的平滑程度有重要影响。
[0151]
在相关技术中,对于法线的平滑过渡,可以有以下三种方式:手动调整顶点法线的方向。但是,手动调整顶点法线的方向耗时耗力且不准确,不可能在多面数的多边形曲面上做整体调整并取得平滑的曲面效果,因此该方案实用性较差。
[0152]
在另一种相关技术中,可以直接获取曲面上每一个顶点上所有顶点的法线向量,对所有顶点的法线向量求平均值后,将平均值赋予该顶点的所有顶点法线,如图4所示。但是,该方法只适用于布线平滑无异常起伏,曲面上所有顶点密度均匀分布的曲面,当遇到顶点间距必须靠近时,其算法必然会令曲面出现不平滑,从而使得曲面平滑效果差,如图8中所示的曲面,以及如图9中所示的拓扑结构及法线方向,因此该方法通用性较差。其中,图8
是根据相关技术中的一种典型的表面顶点密度不均造成曲面不平滑的待优化三维模型的示意图,图9是根据本发明实施例的一种曲面布线的拓扑结构及各顶点法线状态的示意图。
[0153]
在另一种相关技术中,可以以高面数多边形模型作为法线来源,对待优化曲面上每一个顶点取高面数模型上最接近的一点的插值向量作为法线向量来源,获取后赋予目标模型顶点上的所有顶点法线。但是,该方法要么必须为低面数模型制作一个高面数且曲面布线平滑的模型作为法线来源,要么在已有高面数模型的基础上手动删减曲面上的布线以降低其面数,并保留高面数模型的法线,二者均耗时耗力,且所得曲面的平滑程度极其依赖模型表面的布线平滑程度,因此该方案易用性较差。
[0154]
然而,该实施例提供了一种获得顶点周边邻点法线加权向量的算法,可以针对曲面表面某一顶点v在计算法线时,获取该顶点v在曲面上每一个共面的邻点的权重(权重系数、法线向量权重、法线向量加成权重);以该权重乘以该邻点的法线向量,得到所有邻点的加权法线向量;综合所有邻点的加权法线向量;获得该顶点在当前邻点法线状态下,令曲面看起来最平滑的参考法线向量。下面对该算法进行进一步介绍。
[0155]
当顶点v有n个邻点时,顶点v的参考法线向量可以为:
[0156][0157]
其中,用于表示参考法线向量;v1、v2、......、vn用于表示顶点v在曲面上与之具有共面并且按后续算法判定后纳入计算的邻点;∠vnvv1、∠v1vv2、......、∠v
n-1
vvn、∠vnvv1用于表示顶点v与对应邻点v1、v2、......、vn及其两侧邻点组成的两个共边夹角的角度;用于表示对应各邻点与顶点v的距离,可选地,如果某一邻点或多个邻点与顶点v重合使得l为零,则可以跳过计算,直接输出其法线向量平均值作为参考法线向量;可以利用与表示对应各邻点上所有顶点的法线向量平均值。
[0158]
该实施例之所以不用更严谨的三角函数计算目标向量值,是因为在绝大多数情况下,难以用一个简单方程描述顶点v及其各邻点所在曲面的曲率,即使是模拟一个近似曲面,随着曲面类型不同,计算公式也必须随之改变,加上检测曲面类型与后续计算所消耗的计算资源,使用严谨三角函数计算参考法线向量会令每次优化多面数模型时变得非常缓慢。
[0159]
该实施例的上述算法所依据的原则是:a)当某一邻点越接近顶点v,则其法线向量的距离权重)越大;b)在顶点v的所有邻点中,每个邻点两侧的两个邻点与该邻点及顶点v组成的两个夹角的角度之和越大,该邻点法线向量的角度权重(∠v
i-1
vvi+∠vivv
i+1
)越大。
[0160]
根据上述原则设计的算法,则仅需检测顶点间夹角及距离即可完成权重计算,节省计算资源的同时,所得效果在各种曲面上非常接近以严谨三角函数计算所得的结果,具有非常强大的普适性,完全可以直接用于平面、凸面、凹面、马鞍面、柱面、锥面、带分缝线的表面等多边形三维模型表面,且计算无需过度依赖平滑的多边形布线,可以用于掩盖曲面
布线起伏和顶点间距不均匀所造成的曲面不平滑(如图5中右侧曲面所示)。
[0161]
该实施例为根据一套拓扑结构识别逻辑自动判断所选待优化区域的顶点拓扑结构,可以针对不同位置及结构的顶点以不同方法计算其邻点的法线向量加成权重,最终取得理想的优化效果。
[0162]
图6是根据本发明实施例的一种自动法线平滑系统的结构图。如图6所示,该系统可以包括:程序主控及结构识别模块101、选区边缘顶点法线修正模块102、选区内部顶点法线修正模块103和连续边集合相关顶点顺序排列模块104。
[0163]
程序主控及结构识别模块101,用于初步判定待优化多边形区域的拓扑结构,将判定结果分别输出至选区边缘顶点法线计算模块102和选区内部顶点法线计算模块103进行参考法线向量的计算,记录汇总返回的结果后以之修正待优化曲面各顶点的法线。
[0164]
选区边缘顶点法线计算模块102,用于判定边缘顶点集合的结构,对不同的结构采取不同的加权算法计算边缘顶点的参考法线向量,并将结果返回至程序主控及结构识别模块101。
[0165]
选区内部顶点法线计算模块103,用于直接计算选区内部顶点周边邻点法线的加权向量,并将结果返回至程序主控及结构识别模块101。
[0166]
连续边集合相关顶点顺序排列模块104,会被选区边缘顶点法线计算模块102和选区内部顶点法线计算模块103在计算过程中进行调用,用于按顺序排列一条连续边集合上所有相连的顶点。
[0167]
为了更形象的解释图6所示的工作原理,下面将以图7所示的示例解析图6所示的各模块的功能及优化流程,其包含了在典型的三维模型中,因倒角面拐角造成曲面顶点分布不均,从而导致自动法线计算不理想,令高光异常聚集的情况。如图9所示,为该曲面的多边形拓扑结构及自动平滑法线前各顶点法线状态,如图12所示,图12为根据本发明实施例的一种完成三次优化迭代后的效果的示意图,为完成优化后图8所示案例的最终效果,如图13所示,图13为根据本发明实施例的一种完成三次优化迭代后的顶点法线状态的示意图。
[0168]
图7是根据本发明实施例的一种各模块的关系及数据处理的方法的流程图。如图7所示,程序主控及结构识别模块101中的数据处理方法可以包括以下步骤:
[0169]
步骤s201

,拓扑结构识别。
[0170]
该实施例可以从ui界面获取用户的优化设置:可以获取是否优化边缘的选项,获取优化偏向设置系数cn和迭代次数t。
[0171]
该实施例可以将用户选取的优化范围内的多边形记为集合fs,如图10所示。图10是根据本发明实施例的一种用户所选择的待优化多边形的示意图,集合fs为图中高亮显示的面,包括右侧的第二象限、第三象限和第四象限的高亮区域,其中,fs的面有一点一点的白点作为高亮显示,将其转化获取组成fs的边,记为集合es,获取所有未被选中的面并转化为组成这些面的边,记为集合e
ns
,获取整个物体的边缘上的边并将之加入集合e
ns
,获取es与e
ns
之间的交集,获取所选优化范围多边形的边缘边集合eb,将其转化获取eb所经过的所有顶点,记为边缘顶点集合vb,转化获取组成fs的所有顶点并从中剔除集合vb,获得内部顶点集合vi。若用户选择优化边缘,则可以将集合fs、eb、vb和vi输出至步骤s202

,否则,可以直接输出至步骤s205


[0172]
需要说明的是,该实施例的上述cn的取值范围可以为0-1,此值在后续计算中决定
了优化结果是偏向原有法线还是当前状态下计算出的参考加权法线,一般取值0.5,并通过多次迭代令每一个顶点的法线在迭代中逐渐趋向理论最优解,如果取值过大,则可能令优化结果矫枉过正,多次迭代时会出现法线在最优解附近反复摇摆的情况。
[0173]
步骤s202

,边缘法线均化。
[0174]
该实施例可以获取待优化多边形集合fs范围内的所有顶点法线,将其记为集合n
vs
,该此集合不包含边缘边集合eb在选择范围外一侧的邻面的顶点法线,可以用于排除选择范围外曲率不一致的倒角面的顶点法线,将其转化获取所有与eb相邻的顶点法线,记为集合n
vb
,获取n
vs
与n
vb
之间的交集,获取所有在选区边缘的边上,属于所选区域范围一侧的多边形的顶点法线并记为集合n
vbs
,逐一取边缘顶点集合vb中的顶点上属于集合n
vbs
的顶点法线,对其求得其平均向量,并将平均赋予该顶点上所有的顶点法线,以此统一每一个边缘顶点上的所有顶点法线向量,方便后续优化计算。
[0175]
步骤s203

,边缘法线目标向量计算。
[0176]
该实施例可以从i=1开始,逐一将边缘顶点集合vb上的第i个顶点v
bi
、边缘边集合eb和选取的优化范围内的多边形集合fs输出至选区边缘顶点法线向量计算模块102,计算获取其参考法线向量并获取顶点v
bi
当前的法线向量可以通过以下公式计算得出优化后顶点v
bi
的目标法线向量
[0177][0178]
最后将记入目标法线向量序列集合nv的第i位。重复以上步骤直至遍历边缘顶点集合vb中的所有顶点。
[0179]
步骤s204

,边缘顶点法线调整。
[0180]
该实施例在获得所有边缘顶点的目标向量序列集合nv后,可以从i=1开始,逐一将边缘顶点集合vb中第i位的顶点v
bi
的所有顶点法线向量统一修正为集合nv第i位的法线向量
[0181]
该实施例可以重复以上步骤,直至遍历集合vb中的所有顶点。之所以不在步骤s203

中计算目标法线向量后立即修正,是因为改变后的某顶点也可能是另一未优化顶点的邻点,先改变的顶点会导致后续优化结果出现偏差。
[0182]
需要说明的是,上述步骤s203

只是计算出每个顶点根据当前邻点的法线状态所得到的目标法线向量,得到目标向量序列集合,实际上每一个顶点的法线仍维持在优化前的状态,只有完成所有顶点的目标法线向量计算并得到目标向量序列集合nv后,才会以步骤s204

改变每一个顶点的法线向量。否则,未优化的顶点用已经修正过的邻点的法线向量进行计算会令结果出现偏差。上述统一修正是指将该顶点的所有顶点法线(每个邻面有一条顶点法线)统一修改为计算所得集合中的目标法线向量。
[0183]
步骤s205

,内部法线目标向量计算。
[0184]
该实施例可以逐一获取内部顶点集合vi中的顶点并获取其所有顶点的法线向量,对其求取平均值后赋予该顶点上所有的顶点法线,以此使得每一个内部顶点上所有顶点法线向量都一致,从而方便后续优化计算。
[0185]
可选地,该实施例可以从i=1开始,逐一将集合vi上的第i个顶点v
ii
输出至选区内
部顶点法线向量计算模块103,计算获取其参考法线向量并获取v
ii
当前法线向量通过以下公式计算得出优化后顶点v
ii
的目标法线向量
[0186][0187]
最后将记入目标法线向量序列集合nv的第i位。重复以上步骤直至遍历集合vi中的所有顶点。
[0188]
步骤s206

,内部顶点法线调整。
[0189]
该实施例可以获得所有内部顶点的目标向量序列集合nv后,可以从i=1开始,逐一将集合vi中第i位的顶点v
ii
的所有顶点法线统一修正为目标向量序列集合nv第i位的法线向量重复以上步骤,直至遍历vi中所有顶点后,记已执行迭代次数加一。若已执行迭代次数小于设定的迭代次数t,则可以根据优化边缘顶点法线的选项重新执行步骤s203
′‑
s206

,或者根据不优化边缘顶点法线的选项,重新执行步骤s205
′‑
s206

。当已执行迭代次数等于t时,优化结束。
[0190]
下面对该实施例的选区边缘顶点法线向量计算模块102中的数据处理方法进行介绍。
[0191]
步骤s301

,顶点周边拓扑结构识别。
[0192]
该实施可以从步骤s203

处获取边缘顶点集合vb中第i位的边缘顶点v
bi
、边缘边集合eb和优化范围多边形集合fs。下面以图11中的h点作为所述输入的顶点v
bi
进行说明。其中,图11是根据本发明实施例的一种三维模型的顶点分布的示意图,包括点a、b、c、d、e、f、g、h、i、j、k、l、m。该实施例可以获取顶点v
bi
的所有邻边e
t
和所有邻面f
t
,获取f
t
与fs之间的交集并将其记为新的集合f
t
,f
t
可以包含如图11中所示的多边形cgh、chd和dhie,获取组成f
t
的所有边,并从中剔除与v
bi
相连的所有邻边e
t
,获得连接与顶点v
bi
(h)共面且在选定区域内的所有邻点的连续边集合en,其中,该en包含如图11中所示的边gc、cd、de和ei,获取eb与e
t
之间的交集,在获取顶点v
bi
在所选优化范围多边形的边缘边集合eb上的邻边后,继而转化获得位于邻边另一端的两个邻点,将其记为v
n1
、v
nn
,如图11中所示的顶点g、i。
[0193]
步骤s302

,邻点集合排序。
[0194]
在该实施例中,可以将连续边集合en与邻点v
n1
、v
nn
中任意一点,此处可以取v
n1
,比如,为图11中所示的g点,将其输入连续边集合相关顶点顺序排列模块104进行排序,排序后可以获取以顶点v
n1
为起点,按顺序经过连续边集合en上所有顶点至vn结束的顶点集合vn,其中,顶点集合vn按顺序可以包含如图11所示的顶点g、c、d、e、i。
[0195]
步骤s303

,计算边缘夹角。
[0196]
该实施例可以从i=1开始,依次取vn上的顶点v
ni
与v
n(i+1)
,计算由v
ni
、v
bi
与v
n(i+1)
所组成夹角的角度,直至完成i=n-1点的计算后,将所有夹角汇总,获得顶点v
bi
在选取范围一侧的所有邻边所组成的角的总角度,可以将其记为边缘邻边夹角a
bi
,在如图11所示中,a
bi
可以为∠ghc、∠chd、∠dhi的角度之和。上述a
bi
将用于判断后续采用何种方式计算顶点v
bi
的邻点vn的法线向量权重。
[0197]
可选地,如果a
bi
∈(120
°
,240
°
),则跳转至步骤s304

;如果a
bi
≥240
°
,则跳转至步骤s305

;如果a
bi
≤120
°
,则跳转至步骤s306


[0198]
步骤s304

,参考法线向量加权计算a1。
[0199]
该实施例可以获取顶点v
n1
、v
bi
与v
nn
三个顶点并忽略其他邻点,对顶点v
bi
进行法线向量的加权计算,因为两条边v
n1vbi
与v
bivnn
两侧用于代入公式计算角度权重的夹角均为∠v
n1vbivnn
与∠v
nnvbivn1
,因此该实施例仅需以两条边v
n1vbi
与v
bivnn
的长度计算其距离权重,即可获得顶点v
bi
的参考法线向量,可以将之记为之后,若a
bi
》180
°
,则继续执行步骤s305

,否则直接跳转至步骤s306


[0200]
步骤s305

,参考法线向量加权计算b1。
[0201]
该实施例可以获取顶点v
bi
以及其在选区内的邻点集合vn,可以忽略其不属于所选区域的邻点,比如,图11所示的顶点k、l、m将不被纳入参考计算,可以对顶点v
bi
进行法线向量加权计算,获得顶点v
bi
的参考法线向量,并将之记为
[0202]
步骤s306

,参考法线向量加权综合。
[0203]
该实施例可以获取顶点v
bi
的当前法线向量,将其记为
[0204]
可选地,当边缘邻边夹角a
bi
《120
°
时,顶点v
bi
无法仅通过计算一个方向内小范围的相邻顶点的加权法线向量获得理想的平滑曲面结果,比如,在如图11中所示中,假设顶点v
bi
是c点,选区边缘的两条邻边是bc、cd,则纳入计算范围的相邻顶点仅有b、g、h、d,处于c点一侧一个狭小的角度范围内,以之为参考计算目标法线向量会令顶点c的法线偏向这几个顶点。因而,该实施例可以直接获取顶点v
bi
上所有顶点法线垂直于其所在的多边形时的法线向量(如图3所示的状态),可以取其中属于集合n
vbs
的顶点法线,求得其平均向量,可以将其记为需要说明的是,该实施例不取所有顶点法线的平均值是因为该顶点位于边缘,如果获取所有顶点法线的平均值,则会将曲率不一致的顶点法线纳入计算。
[0205]
可选地,当a
bi
∈(120
°
,180
°
]时,则参考法线向量可以部分参考其两侧位于边缘上的邻点,也即,随着a
bi
超过120
°
,参考法线向量可以逐渐偏向于步骤s304

计算所得的结果在如图11所示中,假设顶点v
bi
是点b,选区边缘的两条邻边是ab、bc,则纳入计算范围的相邻顶点包括a、f、g、c,若全部包含在参考范围内则会令b点法线偏向g点一侧,但若只参考计算a、c两点的法线则可以获得较理想的b点法线,因此该实施例可以如下公式获得向量
[0206][0207]
其中,当a
bi
∈(180
°
,240
°
)时,v
bi
的邻点已不限于仅处于选区边缘任一邻边的一侧,因而可以逐渐使参考法线向量从步骤s304

计算所得的偏向于步骤s305

计算所得的因此应该以如下公式获得向量
[0208][0209]
当a
bi
≥240
°
时,v
bi
在选区内的所有邻点的法线向量完全足以作为参考法线向量的来源,因此,
[0210]
最终将所得参考法线向量返回至程序主控及结构识别模块101。
[0211]
需要说明的是,该实施例的上述步骤s303
′‑
s306

中所述的作为判定条件的120
°
、180
°
、240
°
等角度均为经验数据,如有需要可以根据实际情况调整。
[0212]
选区内部顶点法线计算模块103中的数据处理可分为以下步骤:
[0213]
步骤s401

,顶点周边拓扑结构识别。
[0214]
该实施例可以从s205

处获取顶点v
ii
,转化获取顶点v
ii
的所有邻边e
t
和所有邻面f
t
,转化获取组成f
t
的所有边并从中剔除与v
ii
相连的所有邻边e
t
,获得连接与顶点v
ii
共面的所有邻点的连续边集合en,并转化获取en上任一顶点v
i1

[0215]
步骤s402

,邻点集合排序。
[0216]
该实施例将集合en与v
i1
输入连续边集合相关顶点顺序排列模块104进行排序,排序后获得以顶点v
i1
为起点,按顺序经过连续边集合en上所有顶点的顶点集合vn。
[0217]
步骤s403

,参考法线向量加权计算。
[0218]
该实施可以获取顶点v
ii
及其邻点集合vn,对顶点v
ii
进行法线向量加权计算,获得顶点v
ii
的参考法线向量,将之记为并返回至程序主控及结构识别模块101。
[0219]
下面对该实施例的连续边集合相关顶点顺序排列模块104中的数据处理方法进行介绍。
[0220]
该实施例在从选区边缘顶点法线修正模块102、选区内部顶点法线修正模块103获取所输入的连续边集合en及起始顶点v后,可以将起始顶点v记为顶点集合vn的第一位并重复以下步骤:获取位于集合vn末位的顶点,转化获取其所有邻边e
t
,获取e
t
与en的交集,在转化获取该顶点在集合en中的邻边后,获取该顶点在邻边另一端的顶点v
t
,在从v
t
中剔除集合vn中已包含的顶点后,将位于集合v
t
中首位的顶点加入当前顶点集合vn中并置于末尾,重复以上步骤直至与集合en相连的所有顶点均被记入集合vn,最终将vn返回至选区边缘顶点法线修正模块102、选区内部顶点法线修正模块103。
[0221]
该实施例的上述平滑曲面法线方法,可以为多边形模型曲面法线平滑提供一种既便捷高效又简单易用的工具,可以一键优化选择范围内的所有顶点法线,也即,一键修正曲面上不平滑的法线方向。而在实际应用中,该实施例的方法可以适用于所有平面、凸面、凹面、马鞍面、柱面、锥面、带分缝线的表面等多边形三维模型表面的法线平滑修正。
[0222]
该实施例只需选定待优化曲面上曲率接近的多边形(排除倒角面等曲率变化较大的多边形),则可以一键完成多次曲面法线优化迭代,从而提高了曲面平滑的便捷性;该实施例可以适应各种多边形的拓扑结构,因而可以用于所有三维模型基于多边形制作的模型的曲面法线优化,可适用于所有平面、凸面、凹面、马鞍面、柱面、锥面、带分缝线的表面等多边形三维模型表面,为模型制作优化中需要平滑曲面法线的操作带来极大的效率,从而提高了曲面平滑的通用性;该实施例可以使用组件化和模块化的思维进行设计,这样不仅有利于提高代码的调试效率,而且可以以本工具为核心拓展出单个顶点法线优化功能,或结合多边形模型倒角面选择工具,开发出模型整体法线自动优化功能,且非常便于后期的代码维护,从而提高了曲面平滑的可拓展性与维护性;该实施例以独特的算法计算所选区域曲面上每个顶点的法线向量,效果理想,实用性高;该实施例可以选择需要优化的区域后可一键完成法线优化,且可以设置自动迭代次数,通过多次迭代获得理想效果,简化操作流程,增加操作效率,易用性高。
[0223]
本发明实施例还提供了一种曲面平滑的装置。需要说明的是,该实施例的曲面平
滑的装置可以用于执行本发明实施例图2所示的曲面平滑的方法。
[0224]
图14是根据本发明实施例的一种曲面平滑的装置的示意图。如图14所示,该曲面平滑的装置140包括:选取单元141、确定单元142、调整单元143和平滑单元144。
[0225]
选取单元141,用于在三维模型上选取待平滑的目标曲面。
[0226]
确定单元142,用于在目标曲面中确定目标顶点,且确定目标顶点的多个邻点,其中,每个邻点与目标顶点在目标曲面上共面。
[0227]
调整单元143,用于基于每个邻点的权重将每个邻点的第一法线向量调整为第二法线向量,得到多个第二法线向量,其中,每个邻点的权重用于表示每个邻点的第一法线向量对目标顶点的第三法线向量的重要度。
[0228]
平滑单元144,用于基于多个第二法线向量确定第三法线向量,且基于第三法线向量对目标曲面进行平滑处理。
[0229]
在该实施例的曲面平滑的装置中,通过对目标曲面上的目标顶点确定其邻点对应的权重和法线向量,可以优化所选取的目标曲面上的所有顶点的顶点法线的法线向量,以实现对曲面进行平滑的目的,解决了对曲面进行平滑的效率低的技术问题,达到了提高对曲面进行平滑的效率的技术效果。
[0230]
本发明的实施例还提供了一种计算机可读存储介质。该计算机可读存储介质中存储有计算机程序,其中,在计算机程序被处理器运行时控制计算机可读存储介质所在设备执行本发明实施例的曲面平滑的方法。
[0231]
可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0232]
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0233]
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0234]
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0235]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1