发明内容
基于此,有必要针对上述技术问题,提供一种能够解决三维模型简化时出现破面问题的三维模型简化方法、装置、计算机设备和计算机存储介质。
一种三维模型简化方法,所述方法包括:
获取初始三维模型中三角面片上顶点的目标信息;所述目标信息包括所述顶点的位置信息及属性信息;
遍历所述初始三维模型中的所有三角面片,根据所述三角面片上顶点的目标信息确定所述三角面片的网格类型;所述网格类型包括二维流形网格和非二维流形网格;
确定所述二维流形网格的三角面片与所述非二维流形网格的三角面片之间的公共边,对所述二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片;所述待简化边包括从所述二维流形网格的三角面片中除去所述公共边之外的其他边;
基于所述简化后三角面片以及所述非二维流形网格的三角面片,构建简化后的三维模型。
在其中一个实施例中,所述位置信息包括几何坐标信息;所述根据所述三角面片上顶点的目标信息确定所述三角面片的网格类型,包括:
根据所述三角面片上顶点的几何坐标信息,从所述三角面片中提取公共点;
根据所述公共点确定所述三角面片的网格类型。
在其中一个实施例中,所述确定所述二维流形网格的三角面片与所述非二维流形网格的三角面片之间的公共边,对所述二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片,包括:
根据所述公共点确定所述二维流形网格的三角面片与所述非二维流形网格的三角面片之间的公共边;
将从所述二维流形网格的三角面片中除去所述公共边之外的其他边,作为所述待简化边;
对所述二维流形网格的三角面片中的所述待简化边进行坍塌处理,更新所述二维流形网格的三角面片中各边的拓扑关系,基于所述各边更新后的拓扑关系生成简化后的三角面片。
在其中一个实施例中,所述对所述二维流形网格的三角面片中的所述待简化边进行坍塌处理,更新所述二维流形网格的三角面片中各边的拓扑关系,基于所述各边更新后的拓扑关系生成简化后的三角面片,包括:
根据所述二维流形网格的三角面片上顶点的位置信息及属性信息,计算所述二维流形网格的三角面片中各边的目标能量值生成能量值列表;
从所述能量值列表中确定最小的目标能量值,对所述最小的目标能量值对应的待简化边进行坍塌处理,生成用于替换所述待简化边的新的边;
基于所述新的边更新所述二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的新的目标能量值,基于所述各边新的目标能量值生成新的能量值列表;
判断所述各边新的目标能量值是否大于或等于预设能量值阈值;
若是,则基于所述更新后的拓扑关系生成简化后的三角面片。
在其中一个实施例中,在所述判断所述各边新的目标能量值是否大于或等于预设能量值阈值之后,还包括:
若所述各边新的目标能量值小于所述预设能量值阈值,则循环执行以下操作;
从所述新的能量值列表中确定最小的目标能量值,对所述最小的能量值对应的待简化边进行坍塌处理,生成用于替换所述待简化边的新的边;
基于所述新的边更新所述二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的目标能量值,基于所述各边新的目标能量值生成新的能量值列表;直到所述更新后的拓扑关系中各边的目标能量值大于或等于预设能量值阈值,基于所述各边更新后的拓扑关系生成简化后的三角面片为止。
在其中一个实施例中,所述属性信息还包括所述顶点的颜色信息、纹理信息、法线信息;所述根据所述二维流形网格的三角面片上顶点的位置信息及属性信息,计算所述二维流形网格的三角面片中各边的目标能量值生成能量值列表,包括:
根据所述二维流形网格的三角面片上所述顶点的几何坐标信息,计算所述三角面片中各边的第一能量值;根据所述二维流形网格的三角面片上所述顶点的颜色信息,计算所述三角面片中各边的第二能量值;根据所述二维流形网格的三角面片上所述顶点的纹理信息,计算所述三角面片中各边的第三能量值;根据所述二维流形网格的三角面片上所述顶点的法线信息,计算所述三角面片中各边的第四能量值;
针对所述三角面片中的各边,基于所述边的所述第一能量值、所述第二能量值、所述第三能量值及所述第四能量值,计算所述边的目标能量值;
根据所述二维流形网格的三角面片中各边的目标能量值生成能量值列表。
在其中一个实施例中,所述属性信息包括纹理信息;在所述对所述二维流形网格的三角面片中的待简化边进行简化之前,还包括:
根据所述三角面片上顶点的纹理信息,确定所述非二维流形网格的三角面片的纹理边界;
根据所述三角面片上顶点的位置信息,确定所述非二维流形网格的三角面片的位置边界;
从所述待简化边中除去所述纹理边界以及所述位置边界,生成新的待简化边。
一种三维模型简化装置,所述装置包括:
目标信息获取模块,用于获取初始三维模型中三角面片上顶点的目标信息;所述目标信息包括所述顶点的位置信息及属性信息;
网格类型确定模块,用于遍历所述初始三维模型中的所有三角面片,根据所述三角面片上顶点的目标信息确定所述三角面片的网格类型;所述网格类型包括二维流形网格和非二维流形网格;
网格简化模块,用于确定所述二维流形网格的三角面片与所述非二维流形网格的三角面片之间的公共边,对所述二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片;所述待简化边包括从所述二维流形网格的三角面片中除去所述公共边之外的其他边;
简化三维模型构建模块,用于基于所述简化后三角面片以及所述非二维流形网格的三角面片,构建简化后的三维模型。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
上述三维模型简化方法、装置、计算机设备和计算机可读存储介质,包括:获取初始三维模型中三角面片上顶点的目标信息;所述目标信息包括所述顶点的位置信息及属性信息;遍历所述初始三维模型中的所有三角面片,根据所述三角面片上顶点的目标信息确定所述三角面片的网格类型;所述网格类型包括二维流形网格和非二维流形网格;确定所述二维流形网格的三角面片与所述非二维流形网格的三角面片之间的公共边,对所述二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片;所述待简化边包括从所述二维流形网格的三角面片中除去所述公共边之外的其他边;基于所述简化后三角面片以及所述非二维流形网格的三角面片,构建简化后的三维模型。由于二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边不具有拓扑结构信息,因此,若对二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边进行简化,则简化后的公共边会出现没有任何拓扑结构信息的情况,进而导致简化后的三维模型出现破面的问题。本申请根据三维模型中三角面片上顶点的目标信息,将三维模型中的所有三角面片分为二维流形网格和非二维流形网格,从而确定出二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,再通过上述公共边确定二维流形网格的三角面片中的待简化边,这样可以针对性地对二维流形网格的三角面片中除去上述公共边之外的其他边进行简化,而不会对非二维流形网格的边进行简化。从而,避免了简化后的三维模型会出现破面的问题。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的三维模型简化方法,可以应用于如图1所示的应用环境中。其中,三维模型120可以为非流形变电站,服务器140首先获取初始三维模型120中三角面片上顶点的目标信息;目标信息包括顶点的位置信息及属性信息;然后,服务器140遍历初始三维模型120中的所有三角面片,根据三角面片上顶点的目标信息确定三角面片的网格类型;网格类型包括二维流形网格和非二维流形网格;其次,服务器140确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,对二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片;待简化边包括从二维流形网格的三角面片中除去公共边之外的其他边;最后,服务器140基于简化后三角面片以及非二维流形网格的三角面片,构建简化后的三维模型。其中,服务器140可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、独立的服务器或者是多个服务器组成的服务器集群来实现,本申请对此不做限定。
在一个实施例中,如图2所示,提供了一种三维模型简化方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤220至步骤280:
S220、获取初始三维模型中三角面片上顶点的目标信息;目标信息包括顶点的位置信息及属性信息。
其中,三维模型是物体的多边形表示,通常用计算机或者其它视频设备进行显示,显示的物体可以是现实世界的实体,也可以是虚构的物体,任何物理自然界存在的东西都可以用三维模型表示。三维模型经常用三维建模工具等专门的软件生成,但是也可以用其它方法生成。作为点和其它信息集合的数据,三维模型可以手工生成,也可以按照一定的算法生成,从而按照虚拟的方式存在于计算机或者计算机文件中。三维模型广泛用任何使用三维图形的地方。实际上,它们的应用早于个人电脑上三维图形的流行。目前,三维模型已经用于各种不同的领域。在医疗行业使用它们制作器官的精确模型;电影行业将它们用于活动的人物、物体以及现实电影;视频游戏产业将它们作为计算机与视频游戏中的资源;在科学领域将它们作为化合物的精确模型;建筑业将它们用来展示提议的建筑物或者风景表现;工程界将它们用于设计新设备、交通工具、结构以及其它应用领域;在最近几十年,地球科学领域开始构建三维地质模型。三维模型可以根据简单的线框在不同细节层次渲染的或者用不同方法进行明暗描绘。但是,许多三维模型使用纹理进行覆盖,将纹理排列放到三维模型上的过程称作纹理映射。纹理就是一个图像,但是它可以让模型更加细致并且看起来更加真实。例如,一个人的三维模型如果带有皮肤与服装的纹理那么看起来就比简单的单色模型或者是线框模型更加真实。除了纹理之外,其它一些效果也可以用于三维模型以增加真实感。例如,可以调整曲面法线以实现它们的照亮效果,一些曲面可以使用凸凹纹理映射方法以及其它一些立体渲染的技巧。纹理既包括通常意义上物体表面的纹理即使物体表面呈现凹凸不平的沟纹,同时也包括在物体的光滑表面上的彩色图案,也称纹理贴图,当把纹理按照特定的方式映射到物体表面上的时候能使物体看上去更真实。纹理映射网格赋予图象数据的技术,通过对物体的拍摄所得到的图像加工后,再各个网格上的纹理映射,最终形成三维模型。
其中,三维模型通常由多个网格组成,网格是由物体的众多点云组成的,通过点云形成三维模型网格。点云包括三维坐标、激光反射强度和颜色信息等,最终绘制成网格。网格通常由三角面片、四边面片或者其它的简单凸多边面片组成,这样可以简化渲染过程。但是,网格也可以包括带有空洞的普通多边形组成的物体。在本申请中,主要针对网格为三角面片的三维模型进行简化。
其中,三维模型中三角面片上顶点的目标信息包括顶点的位置信息及属性信息,位置信息可以为三维模型中三角面片上顶点的几何坐标,几何坐标可以表示三维模型中各个三角面片在网格中的位置信息。属性信息可以为三维模型中三角面片上顶点的纹理坐标以及颜色信息,属性信息也可以为三维模型中三角面片的法线信息。在绘制纹理映射场景时,不仅要给每个顶点定义几何坐标,而且也要定义纹理坐标,经过多种变换后,几何坐标决定顶点在网格的位置,而纹理坐标决定纹理图像中的哪一个纹素赋予该顶点。颜色信息为三维模型中三角面片上顶点的颜色,颜色信息可以使用RGB来表示,其中R表示红色,取值的范围是0-255,G表示绿色,取值的范围是0-255,B表示蓝色,取值的范围是0-255,例如:RGB(230,128,190);颜色信息还可以使用HSL来表示,其中H表示色调,取值0-360,颜色的底色调,表示色轮周围的角度,S表示饱和度,取值0%-100%,0是没有颜色显示为灰色,100%是全彩色,L表示亮度,取值0%-100%,0是无光显示为全黑的,100%是充满光,表现为全白,例如:HSL(100,23%,50%)。本申请对颜色信息的表示方法不作限定。法线信息可以为三维模型中三角面片的法线,其中,法线是指始终垂直于某平面的虚线,曲线的法线是垂直于曲线上一点的切线的直线,曲面上某一点的法线指的是经过这一点并且与该点切平面垂直的那条直线。
具体的,如图1所示,计算机设备获取初始三维模型中三角面片上顶点的目标信息,上述目标信息包括三维模型中三角面片上各个顶点的位置信息及属性信息。其中,位置信息包括但不限于三维模型中三角面片上各个顶点的几何坐标,属性信息包括但不限于三维模型中三角面片上各个顶点的颜色信息、各个顶点的颜色信息纹理信息、以及三维模型中三角面片的法线信息,本申请对三维模型中三角面片上各个顶点的位置信息及属性信息不作限定。
S240、遍历初始三维模型中的所有三角面片,根据三角面片上顶点的目标信息确定三角面片的网格类型;网格类型包括二维流形网格和非二维流形网格。
其中,三角面片上顶点的目标信息包括三维模型中三角面片上各个顶点的位置信息及属性信息。其中,位置信息包括但不限于三维模型中三角面片上各个顶点的几何坐标,属性信息包括但不限于三维模型中三角面片上各个顶点的颜色信息、各个顶点的颜色信息纹理信息、以及三维模型中三角面片的法线信息。三角面片的网格类型包括二维流形网格和非二维流形网格。其中,图3为二维流形网格和非二维流形网格的结构示意图,如图3所示,为一个正方体的三维模型,在上述三维模型中有多个四边面片组成,其中四边面片S1与四边面片S2的交线为边V1V2,二维流形网格表示边V1V2最多只有V1→V2以及V2→V1两个有向边,如果有额外的面片共享该边,不管是V1→V2还是V2→V1,都属于非二维流形网格。例如,如图3所示,四边面片S3公用边V1V2,但是边V1V2已经被四边面片S1与四边面片S2所公用,也就是说,边V1V2已经存在有V1→V2以及V2→V1两个有向边,因此,边V1V2不能被四边面片S3所公用,进而四边面片S3为非二维流形网格,而四边面片S1与四边面片S2为二维流形网格。
具体的,如图1所示,计算机设备遍历初始三维模型中的所有三角面片,根据三角面片上顶点的目标信息确定三角面片的网格类型;网格类型包括二维流形网格和非二维流形网格,计算机设备可以通过三角面片上顶点的几何坐标信息,从而判断三角面片之间是否存在公用的边,如果计算机设备判断两个三角面片仅仅公用一条边,则该三角面片为二维流形网格,若计算机设备判断两个以上的三角面片公用一条边,则该三角面片为非二维流形网格。
S260、确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,对二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片;待简化边包括从二维流形网格的三角面片中除去公共边之外的其他边。
其中,二维流形网格的三角面片与非二维流形网格的三角面片之间的公用的边为公共边,比如,如图3所示,边V1V2为二维流形网格S1以及二维流形网格S2的公共边,同时边V1V2与非二维流形网格S3的边V3V4相重合,因此,边V1V2为二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边。上所述待简化边包括从二维流形网格的三角面片中除去公共边之外的其他边,比如,如图3所示,对于二维流形网格除去边V1V2以外的其他边都称为待简化边。
具体的,通过确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,对二维流形网格的三角面片中的待简化边进行简化,上述简化方法包括但不限于顶点聚类算法以及基于二次曲面误差的边折叠算法等,本申请对此不做限定,对二维流形网格的三角面片中的待简化边进行简化后生成简化后的三角面片;其中,上述待简化边包括从二维流形网格的三角面片中除去公共边之外的其他边。
S280、基于简化后三角面片以及非二维流形网格的三角面片,构建简化后的三维模型。
其中,简化后的三角面片与非二维流形网格的三角面片之间存在公共边,上述公共边没有被简化,因此,非二维流形网格的三角面片基于三角面片的目标信息在简化后的三角面片中找到对应的位置,将非二维流形网格的三角面片拼接至简化后三角面片中,上述目标信息包括位置信息,位置信息可以为三角面片各个顶点的几何坐标信息。
上述三维模型简化方法中,获取初始三维模型中三角面片上顶点的目标信息;目标信息包括顶点的位置信息及属性信息;遍历初始三维模型中的所有三角面片,根据三角面片上顶点的目标信息确定三角面片的网格类型;网格类型包括二维流形网格和非二维流形网格;确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,对二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片;待简化边包括从二维流形网格的三角面片中除去公共边之外的其他边;基于简化后三角面片以及非二维流形网格的三角面片,构建简化后的三维模型。由于二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边不具有拓扑结构信息,因此,若对二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边进行简化,则简化后的公共边会出现没有任何拓扑结构信息的情况,进而导致简化后的三维模型出现破面的问题。本申请根据三维模型中三角面片上顶点的目标信息,将三维模型中的所有三角面片分为二维流形网格和非二维流形网格,从而确定出二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,再通过上述公共边确定二维流形网格的三角面片中的待简化边,这样可以针对性地对二维流形网格的三角面片中除去上述公共边之外的其他边进行简化,而不会对非二维流形网格的边进行简化。从而,避免了简化后的三维模型会出现破面的问题。
在其中一个实施例中,如图4所示,位置信息包括几何坐标信息;根据三角面片上顶点的目标信息确定三角面片的网格类型,包括步骤242至步骤244:
S242、根据三角面片上顶点的几何坐标信息,从三角面片中提取公共点。
其中,三角面片上顶点的几何坐标信息为顶点在坐标轴的位置坐标,公共点为二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边对应的公共点。比如,如图3所示,边V1V2为二维流形网格S1以及二维流形网格S2的公共边,同时边V1V2与非二维流形网格S3的边V3V4相重合,因此,边V1V2为二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,而边V1V2对应的两个端点为三角面片中的公共点。
S244、根据公共点确定三角面片的网格类型。
其中,根据三角面片中的公共点可以确定三角面片之间的公共边,通过三角面片之间的公共边确定三角面片的网格类型。上述三角面片的网格类型包括二维流形网格的三角面片与非二维流形网格。比如,如图3所示,为一个正方体的三维模型,在上述三维模型中有多个四边面片组成,其中四边面片S1与四边面片S2的交线为边V1V2,二维流形网格表示边V1V2最多只有V1→V2以及V2→V1两个有向边,如果有额外的面片共享该边,不管是V1→V2还是V2→V1,都属于非二维流形网格。例如,如图3所示,四边面片S3公用边V1V2,但是边V1V2已经被四边面片S1与四边面片S2所公用,也就是说,边V1V2已经存在有V1→V2以及V2→V1两个有向边,因此,边V1V2不能被四边面片S3所公用,进而四边面片S3为非二维流形网格,而四边面片S1与四边面片S2为二维流形网格。
在本申请实施例中,位置信息包括几何坐标信息;根据三角面片上顶点的目标信息确定三角面片的网格类型,包括:根据三角面片上顶点的几何坐标信息,从三角面片中提取公共点;根据公共点确定三角面片的网格类型,通过对三角面片的网格类型进行判断,有效解决了对三维模型进行模型简化时出现的破面问题。
在其中一个实施例中,如图5所示,确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,对二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片,包括步骤262至步骤266:
S262、根据公共点确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边。
具体的,计算机设备根据公共点确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,其中,三角面片上顶点的几何坐标信息为顶点在坐标轴的位置坐标,公共点为二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边对应的公共点。比如,如图3所示,边V1V2为二维流形网格S1以及二维流形网格S2的公共边,同时边V1V2与非二维流形网格S3的边V3V4相重合,因此,边V1V2为二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边。
S264、将从二维流形网格的三角面片中除去公共边之外的其他边,作为待简化边。
具体的,计算机设备将从二维流形网格的三角面片中除去公共边之外的其他边,作为待简化边,其中,二维流形网格的三角面片与非二维流形网格的三角面片之间的公用的边为公共边,比如,如图3所示,边V1V2为二维流形网格S1以及二维流形网格S2的公共边,同时边V1V2与非二维流形网格S3的边V3V4相重合,因此,边V1V2为二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边。上所述待简化边包括从二维流形网格的三角面片中除去公共边之外的其他边,比如,如图3所示,对于二维流形网格除去边V1V2以外的其他边都称为待简化边。
S266、对二维流形网格的三角面片中的待简化边进行坍塌处理,更新二维流形网格的三角面片中各边的拓扑关系,基于各边更新后的拓扑关系生成简化后的三角面片。
其中,如图3所示,边V1V2为二维流形网格S1以及二维流形网格S2的公共边,同时边V1V2与非二维流形网格S3的边V3V4相重合,因此,边V1V2为二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边。上所述待简化边包括从二维流形网格的三角面片中除去公共边之外的其他边,比如,如图3所示,对于二维流形网格除去边V1V2以外的其他边都称为待简化边。具体的,通过确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,对二维流形网格的三角面片中的待简化边进行坍塌处理,对二维流形网格的三角面片中的待简化边进行坍塌处理后生成简化后的三角面片;其中,上述待简化边包括从二维流形网格的三角面片中除去公共边之外的其他边。
在本申请实施例中,确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,对二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片,包括:根据公共点确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边;将从二维流形网格的三角面片中除去公共边之外的其他边,作为待简化边;对二维流形网格的三角面片中的待简化边进行坍塌处理,更新二维流形网格的三角面片中各边的拓扑关系,基于各边更新后的拓扑关系生成简化后的三角面片。通过对对二维流形网格的三角面片中的待简化边进行坍塌处理,从而更新二维流形网格的三角面片中各边的拓扑关系,并基于各边更新后的拓扑关系生成简化后的三角面片,有效解决了对三维模型进行模型简化时出现的破面问题。
在其中一个实施例中,如图6所示,对二维流形网格的三角面片中的待简化边进行坍塌处理,更新二维流形网格的三角面片中各边的拓扑关系,基于各边更新后的拓扑关系生成简化后的三角面片,包括步骤301至步骤305:
S301、根据二维流形网格的三角面片上顶点的位置信息及属性信息,计算二维流形网格的三角面片中各边的目标能量值生成能量值列表。
其中,二维流形网格的三角面片上顶点的位置信息可以为三维模型中三角面片上顶点的几何坐标,几何坐标可以表示三维模型中各个三角面片在网格中的位置信息,属性信息可以为三维模型中三角面片上顶点的纹理坐标以及颜色信息,属性信息也可以为三维模型中三角面片的法线信息。在绘制纹理映射场景时,不仅要给每个顶点定义几何坐标,而且也要定义纹理坐标,经过多种变换后,几何坐标决定顶点在网格的位置,而纹理坐标决定纹理图像中的哪一个纹素赋予该顶点。颜色信息为三维模型中三角面片上顶点的颜色,颜色信息可以使用RGB来表示,其中R表示红色,取值的范围是0-255,G表示绿色,取值的范围是0-255,B表示蓝色,取值的范围是0-255,例如:RGB(230,128,190);颜色信息还可以使用HSL来表示,其中H表示色调,取值0-360,颜色的底色调,表示色轮周围的角度,S表示饱和度,取值0%-100%,0是没有颜色显示为灰色,100%是全彩色,L表示亮度,取值0%-100%,0是无光显示为全黑的,100%是充满光,表现为全白,例如:HSL(100,23%,50%)。本申请对颜色信息的表示方法不作限定。法线信息可以为三维模型中三角面片的法线,其中,法线是指始终垂直于某平面的虚线,曲线的法线是垂直于曲线上一点的切线的直线,曲面上某一点的法线指的是经过这一点并且与该点切平面垂直的那条直线。
进一步的,根据二维流形网格的三角面片上顶点的位置信息及属性信息,计算二维流形网格的三角面片中各边的目标能量值生成能量值列表,其中,基于二维流形网格的三角面片上顶点的位置信息及属性信息可以计算出计算二维流形网格的三角面片中各边的目标能量值。上述目标能量值可以反映出维流形网格的三角面片中各边的颜色信息、纹理信息、法线信息以及几何坐标信息。
S302、从能量值列表中确定最小的目标能量值,对最小的目标能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边。
其中,根据二维流形网格的三角面片上顶点的位置信息及属性信息,计算二维流形网格的三角面片中各边的目标能量值生成能量值列表,其中,基于二维流形网格的三角面片上顶点的位置信息及属性信息可以计算出计算二维流形网格的三角面片中各边的目标能量值。上述目标能量值可以反映出维流形网格的三角面片中各边的颜色信息、纹理信息、法线信息以及几何坐标信息。
具体的,能量值列表中的各个能量值按照一定顺序进行排列,比如能量值按照从小到大的顺序进行排列,或者能量值按照从大到小的顺序进行排列,本申请对此不做限定。进一步的,从能量值列表中确定最小的目标能量值,对最小的目标能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边。
S303、基于新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的新的目标能量值,基于各边新的目标能量值生成新的能量值列表。
其中,从能量值列表中确定最小的目标能量值,对最小的目标能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边。基于上述新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的新的目标能量值,基于各边新的目标能量值生成新的能量值列表。上述新的能量值列表中的各个能量值按照一定顺序进行排列,比如能量值按照从小到大的顺序进行排列,或者能量值按照从大到小的顺序进行排列,本申请对此不做限定。
S304、判断各边新的目标能量值是否大于或等于预设能量值阈值。
具体的,判断各边新的目标能量值是否大于或等于预设能量值阈值,若是则进行下一步骤。其中,上述预设能量值阈值是预先设置的,预设能量值阈值越小则意味着对二维流形网格的三角面片简化的次数越多,预设能量值阈值越大则意味着对二维流形网格的三角面片简化的次数越少。
S305、若是,则基于更新后的拓扑关系生成简化后的三角面片。
具体的,若二维流形网格的三角面片中各边新的目标能量值大于或等于预设能量值阈值,则基于更新后的拓扑关系生成简化后的三角面片。
在本申请实施例中,对二维流形网格的三角面片中的待简化边进行坍塌处理,更新二维流形网格的三角面片中各边的拓扑关系,基于各边更新后的拓扑关系生成简化后的三角面片,包括:根据二维流形网格的三角面片上顶点的位置信息及属性信息,计算二维流形网格的三角面片中各边的目标能量值生成能量值列表;从能量值列表中确定最小的目标能量值,对最小的目标能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边;基于新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的新的目标能量值,基于各边新的目标能量值生成新的能量值列表;判断各边新的目标能量值是否大于或等于预设能量值阈值;若是,则基于更新后的拓扑关系生成简化后的三角面片。通过二维流形网格的三角面片上顶点的位置信息及属性信息,计算二维流形网格的三角面片中各边的目标能量值生成能量值列表,可以有效考虑到二维流形网格中各边的位置信息及属性信息,提高了对二维流形网格的化简准确度。
在其中一个实施例中,如图7所示,在判断各边新的目标能量值是否大于或等于预设能量值阈值之后,还包括步骤306至步骤307:
若各边新的目标能量值小于预设能量值阈值,则循环执行以下操作。
S306、从新的能量值列表中确定最小的目标能量值,对最小的能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边。
其中,根据二维流形网格的三角面片上顶点的位置信息及属性信息,计算二维流形网格的三角面片中各边的目标能量值生成能量值列表,基于二维流形网格的三角面片上顶点的位置信息及属性信息可以计算出计算二维流形网格的三角面片中各边的目标能量值。上述目标能量值可以反映出维流形网格的三角面片中各边的颜色信息、纹理信息、法线信息以及几何坐标信息。
具体的,能量值列表中的各个能量值按照一定顺序进行排列,比如能量值按照从小到大的顺序进行排列,或者能量值按照从大到小的顺序进行排列,本申请对此不做限定。进一步的,从能量值列表中确定最小的目标能量值,从新的能量值列表中确定最小的目标能量值,对最小的能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边。
S307、基于新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的目标能量值,基于各边新的目标能量值生成新的能量值列表;直到更新后的拓扑关系中各边的目标能量值大于或等于预设能量值阈值,基于各边更新后的拓扑关系生成简化后的三角面片为止。
其中,基于新的边更新二维流形网格的三角面片中各边的拓扑关系,通过对三角面片中各边的拓扑关系的重新构建,计算更新后的拓扑关系中各边的目标能量值,然后基于各边新的目标能量值生成新的能量值列表;上述能量值列表中的各个能量值按照一定顺序进行排列,重复步骤:从新的能量值列表中确定最小的目标能量值,对最小的能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边,基于新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的目标能量值,基于各边新的目标能量值生成新的能量值列表。直到更新后的拓扑关系中各边的目标能量值大于或等于预设能量值阈值,基于各边更新后的拓扑关系生成简化后的三角面片为止。
在本申请实施例中,在判断各边新的目标能量值是否大于或等于预设能量值阈值之后,还包括:若各边新的目标能量值小于预设能量值阈值,则循环执行以下操作;从新的能量值列表中确定最小的目标能量值,对最小的能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边;基于新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的目标能量值,基于各边新的目标能量值生成新的能量值列表;直到更新后的拓扑关系中各边的目标能量值大于或等于预设能量值阈值,基于各边更新后的拓扑关系生成简化后的三角面片为止,提高了对二维流形网格的化简准确度。
在其中一个实施例中,如图8所示,所述属性信息还包括顶点的颜色信息、纹理信息、法线信息;根据二维流形网格的三角面片上顶点的位置信息及属性信息,计算二维流形网格的三角面片中各边的目标能量值生成能量值列表,包括步骤312至步骤316:
S312、根据二维流形网格的三角面片上顶点的几何坐标信息,计算三角面片中各边的第一能量值;根据二维流形网格的三角面片上顶点的颜色信息,计算三角面片中各边的第二能量值;根据二维流形网格的三角面片上顶点的纹理信息,计算三角面片中各边的第三能量值;根据二维流形网格的三角面片上顶点的法线信息,计算三角面片中各边的第四能量值。
其中,第一能量值为三角面片中各边的几何能量值,第二能量值为三角面片中各边的颜色能量值,第三能量值为三角面片中各边的纹理能量值,第四能量值为三角面片中各边的法线能量值。具体的,根据二维流形网格的三角面片上顶点的几何坐标信息,几何坐标信息可以为三角面片中各顶点的几何坐标,计算三角面片中各边的第一能量值,根据二维流形网格的三角面片上顶点的颜色信息,颜色信息可以为三角面片上顶点的颜色坐标,计算三角面片中各边的第二能量值,根据二维流形网格的三角面片上顶点的纹理信息,纹理信息可以为三角面片上顶点的纹理坐标,计算三角面片中各边的第三能量值;根据二维流形网格的三角面片上顶点的法线信息,法线信息可以为三角面片上顶点的法线坐标,计算三角面片中各边的第四能量值。也就是说,第一能量值反映了二维流形网格的三角面片上顶点的几何坐标信息,第二能量值反映了二维流形网格的三角面片上顶点的颜色信息,第三能量值反映了二维流形网格的三角面片上顶点的纹理信息,第四能量值反映了二维流形网格的三角面片上顶点的法线信息。
S314、针对三角面片中的各边,基于边的第一能量值、第二能量值、第三能量值及第四能量值,计算边的目标能量值。
其中,针对三角面片中的各边,基于边的第一能量值、第二能量值、第三能量值及第四能量值,计算边的目标能量值,上述边的第一能量值反映了二维流形网格的三角面片上顶点的几何坐标信息,第二能量值反映了二维流形网格的三角面片上顶点的颜色信息,第三能量值反映了二维流形网格的三角面片上顶点的纹理信息,第四能量值反映了二维流形网格的三角面片上顶点的法线信息。具体的,通过对边的第一能量值、第二能量值、第三能量值及第四能量值进行相加操作,进而计算边的目标能量值。
S316、根据二维流形网格的三角面片中各边的目标能量值生成能量值列表。
其中,根据二维流形网格的三角面片中各边的目标能量值生成能量值列表,上述能量值列表中的各个能量值按照一定顺序进行排列,比如能量值按照从小到大的顺序进行排列,或者能量值按照从大到小的顺序进行排列,本申请对此不做限定。
在本申请实施例中,属性信息还包括顶点的颜色信息、纹理信息、法线信息;根据二维流形网格的三角面片上顶点的位置信息及属性信息,计算二维流形网格的三角面片中各边的目标能量值生成能量值列表,包括:根据二维流形网格的三角面片上顶点的几何坐标信息,计算三角面片中各边的第一能量值;根据二维流形网格的三角面片上顶点的颜色信息,计算三角面片中各边的第二能量值;根据二维流形网格的三角面片上顶点的纹理信息,计算三角面片中各边的第三能量值;根据二维流形网格的三角面片上顶点的法线信息,计算三角面片中各边的第四能量值;针对三角面片中的各边,基于边的第一能量值、第二能量值、第三能量值及第四能量值,计算边的目标能量值;根据二维流形网格的三角面片中各边的目标能量值生成能量值列表,通过顶点的颜色信息、纹理信息以及法线信息计算得到能量值列表,可以有效提高对二维流形网格的化简准确度。
在其中一个实施例中,如图9所示,属性信息包括纹理信息;在对二维流形网格的三角面片中的待简化边进行简化之前,还包括步骤322至步骤326:
S322、根据三角面片上顶点的纹理信息,确定非二维流形网格的三角面片的纹理边界。
其中,纹理信息可以为二维流形网格的三角面片中各个顶点的纹理坐标,根据二维流形网格的三角面片中各个顶点的纹理坐标可以确定非二维流形网格的三角面片的纹理边界,比如,针对二维流形网格的三角面片中各个顶点的纹理坐标为(0,0),(0,1),(1,0)以及(1,1)的点,可以对上述点进行标注,进而确定出非二维流形网格的三角面片的纹理边界。
S324、根据三角面片上顶点的位置信息,确定非二维流形网格的三角面片的位置边界。
其中,位置信息可以为二维流形网格的三角面片中各个顶点的几何坐标,根据二维流形网格的三角面片中各个顶点的几何坐标可以确定非二维流形网格的三角面片的位置边界,比如,针对二维流形网格的三角面片中各个顶点的几何坐标为(32,2),(54,38),(23,4)以及(44,67)的点,可以对上述点进行标注,进而确定出非二维流形网格的三角面片的位置边界。
S326、从待简化边中除去纹理边界以及位置边界,生成新的待简化边。
具体的,将待简化边中除去纹理边界对应的边以及位置边界对应的边,进而生成新的待简化边。上述新的待简化边不包括纹理边界以及位置边界。
在本申请实施例中,属性信息包括纹理信息;在对二维流形网格的三角面片中的待简化边进行简化之前,还包括:根据三角面片上顶点的纹理信息,确定非二维流形网格的三角面片的纹理边界;根据三角面片上顶点的位置信息,确定非二维流形网格的三角面片的位置边界;从待简化边中除去纹理边界以及位置边界,生成新的待简化边。通过确定二维流形网格的三角面片中的纹理边界以及位置边界,可以有效解决对网络简化过程中的边界变形以及颜色拉伸的问题。
在一个具体的实施例中,如图10所示,一种三维模型简化方法,包括步骤401至步骤4:
S401、获取初始三维模型中三角面片上顶点的目标信息;目标信息包括顶点的位置信息及属性信息;
S402、遍历初始三维模型中的所有三角面片,根据三角面片上顶点的几何坐标信息,从三角面片中提取公共点;根据公共点确定三角面片的网格类型;网格类型包括二维流形网格和非二维流形网格;
S403、根据公共点确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边;
S404、根据三角面片上顶点的纹理信息,确定非二维流形网格的三角面片的纹理边界;根据三角面片上顶点的位置信息,确定非二维流形网格的三角面片的位置边界;从待简化边中除去纹理边界以及位置边界,生成新的待简化边;
S405、根据二维流形网格的三角面片上顶点的几何坐标信息,计算三角面片中各边的第一能量值;根据二维流形网格的三角面片上顶点的颜色信息,计算三角面片中各边的第二能量值;根据二维流形网格的三角面片上顶点的纹理信息,计算三角面片中各边的第三能量值;根据二维流形网格的三角面片上顶点的法线信息,计算三角面片中各边的第四能量值;
S406、针对三角面片中的各边,基于边的第一能量值、第二能量值、第三能量值及第四能量值,计算边的目标能量值;根据二维流形网格的三角面片中各边的目标能量值生成能量值列表;
S407、从能量值列表中确定最小的目标能量值,对最小的目标能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边;
S408、基于新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的新的目标能量值,基于各边新的目标能量值生成新的能量值列表;
S409、判断各边新的目标能量值是否大于或等于预设能量值阈值;
S410、若是,则基于更新后的拓扑关系生成简化后的三角面片,执行步骤414;
S411、若各边新的目标能量值小于预设能量值阈值,则循环执行步骤412至步骤413;
S412、从新的能量值列表中确定最小的目标能量值,对最小的能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边;
S413、基于新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的目标能量值,基于各边新的目标能量值生成新的能量值列表;直到更新后的拓扑关系中各边的目标能量值大于或等于预设能量值阈值,基于各边更新后的拓扑关系生成简化后的三角面片为止,执行步骤414;
S414、获取非二维流形网格的三角面片;基于非二维流形网格的三角面片的位置信息,将非二维流形网格的三角面片与简化后三角面片进行拼接,生成简化后的三维模型。
应该理解的是,虽然图上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在其中一个实施例中,如图11所示,提供了一种三维模型简化装置500,包括:目标信息获取模块520、网格类型确定模块540、网格简化模块560以及三维模型构建模块580,其中:
目标信息获取模块520,用于获取初始三维模型中三角面片上顶点的目标信息;目标信息包括顶点的位置信息及属性信息;
网格类型确定模块540,用于遍历初始三维模型中的所有三角面片,根据三角面片上顶点的目标信息确定三角面片的网格类型;网格类型包括二维流形网格和非二维流形网格;
网格简化模块560,用于确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边,对二维流形网格的三角面片中的待简化边进行简化,生成简化后的三角面片;待简化边包括从二维流形网格的三角面片中除去公共边之外的其他边;
三维模型构建模块580,用于基于简化后三角面片以及非二维流形网格的三角面片,构建简化后的三维模型。
在其中一个实施例中,如图12所示,网格类型确定模块540包括公共点提取单元542以及网格类型确定单元544,其中:
公共点提取单元542,用于根据三角面片上顶点的几何坐标信息,从三角面片中提取公共点;
网格类型确定单元544,用于根据公共点确定三角面片的网格类型。
在其中一个实施例中,如图13所示,网格简化模块560包括公共边确定单元462、待简化边确定单元564以及待简化边坍塌单元566,其中:
公共边确定单元562,用于根据公共点确定二维流形网格的三角面片与非二维流形网格的三角面片之间的公共边;
待简化边确定单元564,用于将从二维流形网格的三角面片中除去公共边之外的其他边,作为待简化边;
待简化边坍塌单元566,用于对二维流形网格的三角面片中的待简化边进行坍塌处理,更新二维流形网格的三角面片中各边的拓扑关系,基于各边更新后的拓扑关系生成简化后的三角面片。
在其中一个实施例中,待简化边坍塌单元566,还用于根据二维流形网格的三角面片上顶点的位置信息及属性信息,计算二维流形网格的三角面片中各边的目标能量值生成能量值列表;
从能量值列表中确定最小的目标能量值,对最小的目标能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边;
基于新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的新的目标能量值,基于各边新的目标能量值生成新的能量值列表;
判断各边新的目标能量值是否大于或等于预设能量值阈值;
若是,则基于更新后的拓扑关系生成简化后的三角面片。
在其中一个实施例中,待简化边坍塌单元566,还用于若各边新的目标能量值小于预设能量值阈值,则循环执行以下操作;
从新的能量值列表中确定最小的目标能量值,对最小的能量值对应的待简化边进行坍塌处理,生成用于替换待简化边的新的边;
基于新的边更新二维流形网格的三角面片中各边的拓扑关系,并重新计算更新后的拓扑关系中各边的目标能量值,基于各边新的目标能量值生成新的能量值列表;直到更新后的拓扑关系中各边的目标能量值大于或等于预设能量值阈值,基于各边更新后的拓扑关系生成简化后的三角面片为止。
在其中一个实施例中,待简化边坍塌单元566,还用于根据二维流形网格的三角面片上顶点的几何坐标信息,计算三角面片中各边的第一能量值;根据二维流形网格的三角面片上顶点的颜色信息,计算三角面片中各边的第二能量值;根据二维流形网格的三角面片上顶点的纹理信息,计算三角面片中各边的第三能量值;根据二维流形网格的三角面片上顶点的法线信息,计算三角面片中各边的第四能量值;
针对三角面片中的各边,基于边的第一能量值、第二能量值、第三能量值及第四能量值,计算边的目标能量值;
根据二维流形网格的三角面片中各边的目标能量值生成能量值列表。
在其中一个实施例中,如图14所示,三维模型简化装置500还包括纹理边界确定模块620、位置边界确定模块640以及待简化边生成模块660,其中:
纹理边界确定模块620,用于根据三角面片上顶点的纹理信息,确定非二维流形网格的三角面片的纹理边界;
位置边界确定模块640,用于根据三角面片上顶点的位置信息,确定非二维流形网格的三角面片的位置边界;
待简化边生成模块660,用于从待简化边中除去纹理边界以及位置边界,生成新的待简化边。
关于三维模型简化装置的具体限定可以参见上文中对于三维模型简化方法的限定,在此不再赘述。上述三维模型简化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图15所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储边缘侧数据采集数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种三维模型简化方法。
本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本申请实施例还提供了一种计算机可读存储介质。一个或多个包含计算机可执行指令的非易失性计算机可读存储介质,当计算机可执行指令被一个或多个处理器执行时,使得处理器执行三维模型简化方法的步骤。
一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行三维模型简化方法。
本申请实施例所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。合适的非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。