一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

模型法线处理方法、装置、存储介质及电子设备与流程

2022-05-21 08:15:31 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种模型法线处理方法、装置、存储介质及电子设备。


背景技术:

2.基于操作系统读取模型时,由于该模型表面是由多个平面组成,每一平面的顶点对应一条法线,当多个平面共用一个顶点时,该顶点对应多条法线,计算多条法线对应的平均法线,并将平均法线作为该顶点的法线,从而使得模型表面呈现光滑的效果,但无法满足模型中需要呈现棱角效果的部位,也会使得模型的光照效果失真。当保持该顶点的多条法线时,会使得模型呈现棱角的效果,但无法满足模型中需要光滑效果的部位。因此,以上的模型法线处理方法不能同时满足模型中需要呈现光滑效果的部位和需要呈现棱角效果的部位,同时会使得模型的光照效果失真。


技术实现要素:

3.本技术实施例提供了一种模型法线处理方法、装置、存储介质及电子设备,可以使得模型表面既能呈现光滑的效果,也能呈现棱角的效果,进而使得模型的光照效果不失真。所述技术方案如下:
4.第一方面,本技术实施例提供了一种模型法线处理方法,所述方法包括:
5.确定模型中同一顶点对应的至少两条法线;
6.计算所述至少两条法线中每两条法线之间的夹角;
7.当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的法线。
8.第二方面,本技术实施例提供了一种模型法线处理装置,所述装置包括:
9.法线确定模块,用于确定模型中同一顶点对应的至少两条法线;
10.夹角计算模块,用于计算所述至少两条法线中每两条法线之间的夹角;
11.平均法线模块,用于当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的法线。
12.第三方面,本技术实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
13.第四方面,本技术实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
14.本技术一些实施例提供的技术方案带来的有益效果至少包括:
15.在本技术一个或多个实施例中,先确定模型中同一顶点对应的至少两条法线,再计算所述至少两条法线中每两条法线之间的夹角,当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的
法线。可以通过设置夹角阈值来判断是否将平均法线作为顶点的法线,从而使得模型表面既能呈现光滑的效果,也能呈现棱角的效果,进而使得模型的光照效果不失真。
附图说明
16.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1是本技术实施例提供的一种模型法线处理方法的流程示意图;
18.图2a是本技术实施例提供的一种模型表面的举例示意图;
19.图2b是本技术实施例提供的一种夹角计算的举例示意图;
20.图2c是本技术实施例提供的另一种夹角计算的举例示意图;
21.图3是本技术实施例提供的另一种模型法线处理方法的流程示意图;
22.图4是本技术实施例提供的一种模型法线处理装置的结构示意图;
23.图5是本技术实施例提供的另一种模型法线处理装置的结构示意图;
24.图6是本技术实施例提供的一种索引值生成模块的结构示意图;
25.图7是本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
26.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.在本技术的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本技术的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本技术中的具体含义。此外,在本技术的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
28.在模型表面有多个平面共用一个顶点的情况,因此使得一个顶点对应多条法线。通过依次对共用顶点的平面进行判断,当该共用顶点的平面需要呈现光滑效果则计算所共用的顶点对应的多条法线之间的平均法线,并将平均法线作为所共用顶点的法线。当该共用顶点的平面需要呈现棱角效果,同时使得模型的光照效果不失真,则保持共用顶点的多条法线。此过程需要模型读取者对每两个相连接的面进行判断,当平面数量较多时,工作量很大。因此,根据一些实施例,通过设置夹角阈值来判断模型中相连接的平面需要光滑效果
还是棱角效果,从而判断是否将平均法线作为顶点的法线。
29.下面结合具体的实施例对本技术进行详细说明。
30.在一个实施例中,如图1所示,特提出了一种模型法线处理方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的模型法线处理装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。
31.具体的,该模型法线处理方法包括:
32.s101:确定模型中同一顶点对应的至少两条法线。
33.所述模型是指由三维制作软件通过虚拟三维空间构建出具有三维数据的模型,可以由操作系统(operating system,os)读取。其中,操作系统是指管理计算机硬件与软件资源的计算机程序,包括但不限于以下系统:安卓系统(android系统)、微软视窗操作系统(windows系统)、苹果电脑操作系统(mac系统)、linux系统以及苹果移动设备操作系统(iphoneoperationsystem,ios)等。
34.所述模型的表面是由多个平面组成,一个平面包括至少三个顶点,而在一个平面上一个顶点对应一条法线,当多个平面共用一个顶点时,该顶点对应至少两条法线。在读取所述模型时,通过读取该顶点对应的法线向量来确定该顶点对应的法线。其中,法线向量是指包括法线的大小以及方向的量,可以通过vn(a,b,c)的形式进行表示。需要说明的是,所述平面可以为模型表面的最小单元,包括但不限于三角面以及四边面,当所述平面为三角面时,每个平面包括三个顶点;当所述平面为四边面时,每个平面包括四个顶点。如图2a所示,一种模型表面的举例示意图,以球形模型为例,所述模型表面是由最小单元三角面组成。
35.具体的,确定模型中同一顶点对应的至少两条法线的方法包括但不限于以下方式:依次读取模型中每一平面中每个顶点的法线向量,当读取到顶点具有相同的顶点坐标而不同的法线向量时,将该顶点中不同的法线向量提取出来,从而确定模型中同一顶点对应的至少两条法线。其中,顶点坐标是指模型中顶点在三维空间中的坐标,可以以v(x,y,z)的形式表示,每一顶点有与之唯一对应的顶点坐标。
36.s102:计算所述至少两条法线中每两条法线之间的夹角。
37.具体的,基于法线向量,计算两条法线之间的夹角。在确定同一顶点对应的至少两条法线的同时,确定每条法线对应的法线向量,其中,计算每两条法线之间的夹角的过程为:先将两条法线对应的法线向量进行内积计算,再将由内积计算得到的数值除以两个法线向量的模,最后得到所述夹角的余弦值。通过所述夹角的余弦值可以得出所述夹角。例如,以第一条法线的法线向量vn1(a1,b1,c1)以及第二条法线的法线向量vn2(a2,b2,c2)为例,所述夹角的余弦值计算公式如下:
[0038][0039]
从而可以得到:
[0040]
[0041]
其中,θ为所述两条法线之间的夹角,由此可计算得所述夹角θ。
[0042]
需要说明的是,可以按照预设规则在所述至少两条法线中选取得到所述每两条法线,从而对所选取的每两条法线之间进行夹角计算。
[0043]
预设规则为按照法线读取的顺序进行选取,如图2b所示,夹角计算的举例示意图,以同一顶点对应法线包括法线1、法线2、法线3以及法线4为例。在第二步读取中,读取到法线2与法线1为同一顶点,则计算法线1与法线2之间的夹角,得到夹角12。在第三步读取中,读取到法线3分别与法线2以及法线1为同一顶点,则计算法线1与法线3之间的夹角,得到夹角13;计算法线2与法线3之间的夹角,得到夹角23。
[0044]
可选的,预设规则为在确定同一顶点的所有法线后选取每两条法线。如图2b所示,夹角计算的举例示意图,以同一顶点对应法线包括法线1、法线2、法线3以及法线4为例。在确定同一顶点对应的所有法线,即法线1、法线2、法线3以及法线4,同时计算法线1与法线2之间的夹角12,法线1与法线3之间的夹角13,法线2与法线3之间的夹角23。
[0045]
s103:当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的法线。
[0046]
所述夹角阈值是判断是否将所述平均法线作为所述顶点的标准。当所述夹角中小于夹角阈值时,将所述平均法线作为所述顶点的法线,从而使得该顶点在模型表面呈现光滑的效果。当所述夹角大于夹角阈值时,保持顶点对应的所述至少两条法线,从而使得该顶点在模型表面呈现棱角的效果。其中,所述目标夹角即为所述夹角中小于夹角阈值的夹角。
[0047]
可选的,夹角阈值可以由模型读取者来设置,也可以由操作系统根据模型展示需求来设置,设置不同的夹角阈值,从而使得模型呈现不同的效果。
[0048]
基于所述目标夹角对应的法线计算平均法线,具体的,所述平均法线的计算过程可以为:
[0049]
对所述目标法线对应的法线向量进行相加,得到相加向量,再对所述相加向量进行单位化,从而得到平均法线。
[0050]
以第一条法线的法线向量vn1(a1,b1,c1),第二条法线的法线向量vn2(a2,b2,c2)为例,平均法线vn
12
(a
12
,b
12
,c
12
)的计算公式为:
[0051][0052][0053][0054]
具体的,当所述目标夹角包括一个时,计算所述目标夹角对应的两条法线的平均法线,将所述平均法线作为所述顶点的法线,例如,当所述目标夹角对应的两条法线为vn1(a1,b1,c1)和vn2(a2,b2,c2),则将平均法线vn
12
(a
12
,b
12
,c
12
)作为所述顶点的法线。
[0055]
当所述目标夹角包括至少两个时,分别计算每个目标夹角对应的两条法线的第一平均法线,计算各所述第一平均法线的平均法线,将所述平均法线作为所述顶点的法线,
[0056]
例如,以存在两个目标夹角为例,一个目标夹角对应的两条法线为vn1(a1,b1,c1)和vn2(a2,b2,c2),根据平均法线的计算公式得第一平均法线为vn
12
(a
12
,b
12
,c
12
);另一个目标夹角对应的两条法线为vn3(a3,b3,c3)和vn4(a4,b4,c4),根据平均法线的计算公式得第一平均法线为vn
34
(a
34
,b
34
,c
34
)。再计算第一平均法线vn
12
和vn
34
的平均法线为vn,并将vn作为所述顶点的法线,其中,vn(a,b,c)的计算公式如下:
[0057][0058][0059][0060]
需要说明的是,在模型的光照效果中,法线向量的方向作为模型表面到空间的朝向,即模型表面相对于光源的方向,当所述将平均法线作为顶点的法线时,模型表面相对于光源的方向变为平均法线的方向,而不是对应多法线的多个方向,从而会导致模型的光照效果失真。当所述夹角大于夹角阈值时,保持顶点对应的所述至少两条法线,同时也保持模型表面相对于光源的方向为所述至少两条法线的方向,从而使得模型的光照效果不失真。
[0061]
在本技术实施例中,先确定模型中同一顶点对应的至少两条法线,再计算所述至少两条法线中每两条法线之间的夹角,当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的法线。可以通过设置夹角阈值来判断是否将平均法线作为顶点的法线,从而使得模型表面既能呈现光滑的效果,也能呈现棱角的效果,进而使得模型的光照效果不失真。
[0062]
请参见图3,图3是本技术提出的一种模型法线处理方法的另一种实施例的流程示意图。具体的:
[0063]
s201:读取所述模型对应的模型文件,获取所述模型文件中的顶点数据,所述顶点数据至少包括各顶点的顶点坐标以及各所述顶点的法线向量。
[0064]
所述模型文件是指包含模型中顶点数据的文件,可以通过读取模型文件实现模型的读取。所述模型文件包括但不限于以下几种:obj文件,3ds文件以及max文件等。
[0065]
所述顶点数据是指为模型中顶点设置的相关数据,用于呈现模型以及模型效果的数据,包括顶点坐标以及法线向量。
[0066]
可选的,所述顶点数据还包括各所述顶点的纹理坐标。其中,纹理坐标是指将纹理像素映射到顶点坐标的二维数组,其中,每一个纹理像素在纹理中都有唯一对应的地址,可以表示为vt(u,v)。
[0067]
具体的,读取所述模型文件中顶点数据的方式可以为按字节读取、按字符读取、按行读取或随机读取。
[0068]
s202:将所述各顶点的顶点坐标保存至第一集合中,将各所述顶点的法线向量保存至第二集合中。
[0069]
具体的,可以将模型中的顶点数据(顶点坐标以及法线向量)自由组合,得到每一
顶点对应的顶点坐标以及法线向量,在对顶点坐标以及法线向量自由组合前,将所述各顶点的顶点坐标保存至第一集合中,将各所述顶点的法线向量保存至第二集合中。
[0070]
可选的,当顶点数据包括纹理坐标时,将各所述顶点的纹理坐标保存至第三集合中,从而可以将顶点坐标、法线向量以及纹理坐标自由组合,得到每一顶点对应的顶点坐标、法线向量以及纹理坐标。
[0071]
s203:获取所述模型的平面数据集合,各所述平面数据包括平面上的顶点索引、所述顶点索引在所述平面的纹理索引以及所述顶点索引在所述平面对应的法线索引。
[0072]
所述平面数据集合是指模型中各所述平面数据的集合,包括模型中所有平面数据。其中,所述平面数据是指所述平面中各顶点的顶点坐标的顶点索引、纹理坐标的纹理索引以及法线向量的法线索引。
[0073]
具体的,获取所述模型的平面数据集合的过程为:获取第一集合中顶点坐标,第二集合中法线向量以及第三集合中纹理坐标。
[0074]
例如,第一集合以及顶点坐标对应的顶点索引为[1(x1,y1,z1),2(x2,y2,z2),3(x3,y3,z3)],其中“1”为顶点坐标(x1,y1,z1)的索引,“2”为顶点坐标(x2,y2,z2)的索引,“3”为顶点坐标(x3,y3,z3)的索引。第二集合以及法线向量对应的法线索引为[1(a1,b1,c1),2(a2,b2,c2),3(a3,b3,c3)],其中“1”为法线向量(a1,b1,c1)的索引,“2”为法线向量(a2,b2,c2)的索引,“3”为法线向量(a3,b3,c3)的索引。第三集合以及纹理坐标对应的纹理索引为[1(u1,v1),2(u2,v2),3(u3,v3)],其中“1”为纹理坐标(u1,v1)的索引,“2”为纹理坐标(u2,v2)的索引,“3”为纹理坐标(u3,v3)的索引。当一平面包括三个顶点,且第一顶点的顶点坐标(x1,y1,z1)、纹理坐标(u1,v1)以及法线向量(a2,b2,c2),第二顶点的顶点坐标(x3,y3,z3)、纹理坐标(u1,v1)以及法线向量(a2,b2,c2),以及第二顶点的顶点坐标(x2,y2,z2)、纹理坐标(u2,v2)以及法线向量(a1,b1,c1),则平面数据为(1/1/2,3/1/2,2/2/1)。
[0075]
s204:基于所述第一集合、所述第二集合以及所述第三集合,生成所述平面数据对应的索引值。
[0076]
具体的,在所述第一集合中查找所述顶点索引对应的顶点坐标,在所述第二集合中查找所述纹理索引对应的纹理坐标,在所述第三集合中查找所述法线索引对应的法线向量,生成包含所述顶点坐标、所述纹理坐标以及所述法线向量的索引值。
[0077]
例如,平面数据为(1/1/2,3/1/2,2/2/1),则所述平面数据对应的索引值f1[(x1,y1,z1,u1,v1,u2,v2),(x3,y3,z3,u1,v1,u2,v2),(x2,y1,z2,u2,v2,u1,v1)]
[0078]
可选的,删除所述平面数据集合中的相同平面数据。
[0079]
为了避免数据重复,当获取到顶点坐标、纹理坐标以及法线向量相同的顶点数据时,删除所述顶点数据,只保留一个所述相同的顶点数据,从而避免了对法线向量的重复计算。
[0080]
s205:确定顶点坐标相同的至少两个索引值,确定所述至少两个索引值中的法线向量。
[0081]
当所述索引值中顶点坐标相同,而法线向量不同,具体可参见s101,此处不再赘述。
[0082]
可选的,当所述顶点数据包括纹理坐标时,所述索引值中顶点坐标相同,存在纹理坐标或法线向量不同,再根据纹理坐标以及法线向量确定法线向量不同的情况,而法线向
量不同的平面数据对应的索引值,最后根据索引值确定法线向量。
[0083]
s206:计算所述至少两条法线中每两条法线之间的夹角。
[0084]
具体可参见s102,此处不再赘述。
[0085]
s207:当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的法线。
[0086]
具体可参见s103,此处不再赘述。
[0087]
可选的,当所述目标夹角包括至少两个时,确定每个目标夹角对应的法线,计算至少三条所述法线对应的平均法线,例如,以存在两个目标夹角为例,一个目标夹角对应的两条法线为vn1(a1,b1,c1)和vn2(a2,b2,c2),另一个目标夹角对应的两条法线为vn3(a3,b3,c3)和vn4(a4,b4,c4),再计算vn1、vn2、vn3以及vn4对应的平均法线为vn,并将vn作为所述顶点的法线,其中,vn(a,b,c)的计算公式如下:
[0088][0089][0090][0091]
可选的,将平均法线作为所述顶点的法线之后,根据平均法线的法线向量在第二集合中确定法线向量的索引值,并对所述顶点所在平面的平面数据中法线向量的索引值更新为平均法线的法线向量的索引值,将更新后的平面数据保存至平面数据集合中。
[0092]
在本技术实施例中,可以通过设置夹角阈值来判断是否将平均法线作为顶点的法线,从而使得模型表面既能呈现光滑的效果,也能呈现棱角的效果,进而使得模型的光照效果不失真。另外,将读取的顶点坐标保存至第一集合,将法线向量保存至第二集合,通过读取平面数据集合中平面数据索引值而确定同一顶点对应的至少两条法线,使得确定过程具有条理性,不会出现数据遗漏,进一步的,删除相同平面数据,从而避免无效的重复计算夹角。
[0093]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
[0094]
请参见图4,其示出了本技术一个示例性实施例提供的模型法线处理装置的结构示意图。该模型法线处理装置可以通过软件、硬件或者两者的结合实现成为装置的全部或一部分。该装置1包括法线确定模块11、夹角计算模块12和平均法线模块13。
[0095]
法线确定模块11,用于确定模型中同一顶点对应的至少两条法线;
[0096]
夹角计算模块12,用于计算所述至少两条法线中每两条法线之间的夹角;
[0097]
平均法线模块13,用于当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的法线。
[0098]
可选的,如图5所示,所述装置1,还包括:
[0099]
数据读取模块14,用于读取所述模型对应的模型文件,获取所述模型文件中的顶
点数据,所述顶点数据至少包括各顶点的顶点坐标以及各所述顶点的法线向量;
[0100]
数据保存模块15,用于将所述各顶点的顶点坐标保存至第一集合中,将各所述顶点的法线向量保存至第二集合中。
[0101]
可选的,所述顶点数据还包括各所述顶点的纹理坐标,所述数据保存模块15,还用于:
[0102]
将各所述顶点的纹理坐标保存至第三集合中。
[0103]
可选的,所述装置1,还包括:
[0104]
集合获取模块16,用于获取所述模型的平面数据集合,各所述平面数据包括平面上的顶点索引、所述顶点索引在所述平面的纹理索引以及所述顶点索引在所述平面对应的法线索引;
[0105]
索引值生成模块17,用于基于所述第一集合、所述第二集合以及所述第三集合,生成所述平面数据对应的索引值。
[0106]
可选的,所述装置1,还包括:
[0107]
数据删除模块18,用于删除所述平面数据集合中的相同平面数据;
[0108]
可选的,如图6所示,索引值生成模块17,还包括:
[0109]
顶点坐标查找单元171,用于在所述第一集合中查找所述顶点索引对应的顶点坐标;
[0110]
纹理坐标查找单元172,用于在所述第二集合中查找所述纹理索引对应的纹理坐标;
[0111]
法线向量查找单元173,用于在所述第三集合中查找所述法线索引对应的法线向量;
[0112]
索引值生成单元174,用于生成包含所述顶点坐标、所述纹理坐标以及所述法线向量的索引值。
[0113]
可选的,法线确定模块11,还用于:
[0114]
确定顶点坐标相同的至少两个索引值,确定所述至少两个索引值中的法线向量。
[0115]
可选的,平均法线模块13,还用于:
[0116]
当所述目标夹角包括一个时,计算所述目标夹角对应的两条法线的平均法线;
[0117]
当所述目标夹角包括至少两个时,分别计算每个目标夹角对应的两条法线的第一平均法线,计算各所述第一平均法线的平均法线。
[0118]
需要说明的是,上述实施例提供的模型法线处理装置在执行模型法线处理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的模型法线处理装置与模型法线处理方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
[0119]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0120]
在本实施例中,先确定模型中同一顶点对应的至少两条法线,再计算所述至少两条法线中每两条法线之间的夹角,当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的法线。可以通过设置夹角阈值来判断是否将平均法线作为顶点的法线,从而使得模型表面既能呈现光滑的
效果,也能呈现棱角的效果,进而使得模型的光照效果不失真。
[0121]
本技术实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1-图3所示实施例的所述模型法线处理方法,具体执行过程可以参见图1-图3所示实施例的具体说明,在此不进行赘述。
[0122]
本技术还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述图1-图3所示实施例的所述模型法线处理方法,具体执行过程可以参见图1-图3所示实施例的具体说明,在此不进行赘述。
[0123]
请参见图7,为本技术实施例提供了一种电子设备的结构示意图。如图7所示,所述电子设备1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
[0124]
其中,通信总线1002用于实现这些组件之间的连接通信。
[0125]
其中,用户接口1003可以包括显示屏(display)、摄像头(camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
[0126]
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。
[0127]
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个服务器1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行服务器1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
[0128]
其中,存储器1005可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图7所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及模型法线处理应用程序。
[0129]
在图7所示的电子设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的模型法线处理应用程序,并具体执行以下操作:
[0130]
确定模型中同一顶点对应的至少两条法线;
[0131]
计算所述至少两条法线中每两条法线之间的夹角;
[0132]
当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的法线。
[0133]
在一个实施例中,所述处理器1001在执行所述确定模型中同一顶点对应的至少两条法线之前,还执行以下操作:
[0134]
读取所述模型对应的模型文件,获取所述模型文件中的顶点数据,所述顶点数据至少包括各顶点的顶点坐标以及各所述顶点的法线向量;
[0135]
将所述各顶点的顶点坐标保存至第一集合中,将各所述顶点的法线向量保存至第二集合中。
[0136]
在一个实施例中,所述处理器1001在执行所述将所述各顶点的顶点坐标保存至第一集合中,将各所述顶点的法线向量保存至第二集合中时,所述顶点数据还包括各所述顶点的纹理坐标,还执行以下操作:
[0137]
将各所述顶点的纹理坐标保存至第三集合中。
[0138]
在一个实施例中,所述处理器1001,还执行以下操作:
[0139]
获取所述模型的平面数据集合,各所述平面数据包括平面上的顶点索引、所述顶点索引在所述平面的纹理索引以及所述顶点索引在所述平面对应的法线索引;
[0140]
基于所述第一集合、所述第二集合以及所述第三集合,生成所述平面数据对应的索引值。
[0141]
在一个实施例中,所述处理器1001,还执行以下操作:
[0142]
删除所述平面数据集合中的相同平面数据。
[0143]
在一个实施例中,所述处理器1001在执行所述基于所述第一集合、所述第二集合以及所述第三集合,生成所述平面数据对应的索引值时,具体执行以下操作:
[0144]
在所述第一集合中查找所述顶点索引对应的顶点坐标;
[0145]
在所述第二集合中查找所述纹理索引对应的纹理坐标;
[0146]
在所述第三集合中查找所述法线索引对应的法线向量;
[0147]
生成包含所述顶点坐标、所述纹理坐标以及所述法线向量的索引值。
[0148]
在一个实施例中,所述处理器1001在执行所述确定模型中同一顶点对应的至少两条法线,具体执行以下操作:
[0149]
确定顶点坐标相同的至少两个索引值,确定所述至少两个索引值中的法线向量。
[0150]
在一个实施例中,所述处理器1001在执行所述确定模型中同一顶点对应的至少两条法线,具体执行以下操作:
[0151]
当所述目标夹角包括一个时,计算所述目标夹角对应的两条法线的平均法线;
[0152]
当所述目标夹角包括至少两个时,分别计算每个目标夹角对应的两条法线的第一平均法线,计算各所述第一平均法线的平均法线。
[0153]
在一个实施例中,所述处理器1001在执行所述计算所述每两条目标法线之间的平均法线,具体执行以下操作:
[0154]
对所述目标法线对应的法线向量进行相加,得到平均法线
[0155]
在本实施例中,先确定模型中同一顶点对应的至少两条法线,再计算所述至少两条法线中每两条法线之间的夹角,当所述夹角中存在小于夹角阈值的目标夹角时,基于所述目标夹角对应的法线计算平均法线,并将所述平均法线作为所述顶点的法线。可以通过
设置夹角阈值来判断是否将平均法线作为顶点的法线,从而使得模型表面既能呈现光滑的效果,也能呈现棱角的效果,进而使得模型的光照效果不失真。
[0156]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
[0157]
以上所揭露的仅为本技术较佳实施例而已,当然不能以此来限定本技术之权利范围,因此依本技术权利要求所作的等同变化,仍属本技术所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献