具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例中所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
下面结合附图对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
先对本发明实施例中涉及到的术语或概念进行解释说明:
轴对齐包围盒(AABB):能够包围给定模型且边与坐标轴平行的最小矩形。
四叉树(quad-tree):一种树状数据结构,每个非叶子节点会有四个孩子节点。
轴对齐多边形:所有边都与坐标轴平行的多边形。
纹理坐标,通常表示为uv坐标:定义了纹理图像上每个点的位置信息,这些点与几何模型相互联系,以决定几何模型表面纹理贴图的位置。
本发明实施例提供的三维模型纹理处理方法可以由一电子设备来执行,实际应用中,该电子设备可以是服务器,也可以是诸如PC机等用户终端,该服务器可以是云端的服务器,也可以是用户端的服务器。
本发明实施例提供的方案,可以适用于对一个大规模的三维模型进行裁剪显示的应用场景中,即每次仅加载、显示该大的三维模型中的局部模型。
图1为本发明实施例提供的一种三维模型纹理处理方法的流程图,如图1所示,该方法包括如下步骤:
101、响应于对原始三维几何模型中待显示的目标三维几何模型的选择操作,确定目标三维几何模型对应的目标参数化网格,目标参数化网格中包括目标三维几何模型中的各面元以及各面元的顶点所对应的原始纹理坐标,原始纹理坐标是在原始三维几何模型对应的原始纹理图像中对应的纹理坐标。
102、确定包围目标参数化网格的轴对齐多边形,轴对齐多边形的各边平行于纹理坐标轴。
103、分割轴对齐多边形以得到多个矩形位置区域,从原始纹理图像中确定多个矩形位置区域对应的多个矩形纹理图像区域。
104、对多个矩形纹理图像区域进行重组,得到重组后纹理图像。
105、根据重组后纹理图像对目标三维几何模型进行显示处理,以得到目标三维模型。
实际应用中,可以预先通过三维模型采集设备对某空间场景(比如某个住宅小区)或某立体物体(比如某个车辆)进行图像采集、建模,得到原始三维模型,该原始三维模型由两部分构成,一部分是表征几何结构的几何模型,称为原始三维几何模型,另一部分是纹理图像,称为原始纹理图像。也就是说,通过原始的采集、建模处理得到上述两部分数据后,将这两部分数据存储下来,在后续需要显示该原始三维模型的时候,基于这两部分数据进行显示处理。
其中,原始纹理图像比如为图2中所示,两个纹理坐标轴分别表示为u、v,纹理坐标可以表示为(u i,vi),取值范围为(0,0)至(1,1)。原始纹理图像中包括若干像素点,每个像素点表示一个纹理值,假设原始纹理图像的宽度和高度分别是w0、h0。在图2中,每个像素点以图中示意的方格表示。
其中,原始三维几何模型中包含若干面元,也就是说该几何模型的表面是由设定形状的若干面元拼接而成的,常见的面元包括三角形面元。对该原始三维几何模型的存储,具体可以是存储其中各个面元的顶点的三维的空间坐标(xyz坐标)以及顶点的二维的纹理坐标(uv坐标)。因此为便于描述,可以认为该原始三维几何模型中记录了各个面元的顶点的空间坐标和纹理坐标。
实际上,原始三维几何模型和原始纹理图像之间是存在对应关系的,该对应关系就是通过纹理坐标来实现的。因为原始纹理图像中记录了每个纹理坐标所对应的纹理值(或者称颜色值),基于原始三维几何模型中记录的每个顶点的纹理坐标,可以查询该原始纹理图像以确定每个面元的颜色。
基于上述介绍内容,先简单说明下一般情况下该原始三维模型的显示处理过程:通过CPU或显卡加载原始三维几何模型,以得到其中每个面元的顶点的纹理坐标,之后,使用某插值算法,基于一个面元的各顶点的纹理坐标确定该面元内各个点纹理坐标,之后查询原始纹理图像以确定每个点对应的纹理值,这样,基于确定出了原始三维几何模型中每个空间坐标点对应的纹理值,进行渲染处理即可显示出对应的三维模型(包含纹理的)。
本实施例中,假设上述原始三维模型是一个规模较大的模型,即其对应的数据量大于设定阈值。基于该假设,当需要在屏幕上显示该原始三维模型时,并非是一次性将其对应的原始三维几何模型和原始纹理图像全部加载出来进行显示处理,而是可以多次逐步地完成该原始三维模型的显示,即每次仅加载原始三维几何模型中的局部子模型以及从原始纹理图像中加载该局部子模型对应的局部纹理图像。本实施例中,将当前需要加载、显示的局部子模型称为目标三维几何模型。
实际应用中,目标三维几何模型可以是用户手动选择的,也可以是基于设定的切割方法自动确定出的。比如,可以向用户提供完整的原始三维几何模型的空间坐标在三个坐标轴方向上分别对应的取值范围,用户通过输入每个坐标轴方向上需要截取出的坐标范围以确定出目标三维几何模型。或者,也可以先在屏幕上显示出原始三维几何模型,用户通过框选的方式从中选定当前需要进行显示处理的目标三维几何模型。
本实施例中,将最终得到的与目标三维几何模型对应的纹理图像称为重组后纹理图像,可以理解的是,第一,该重组后纹理图像中的纹理值都来自于原始纹理图像;第二,该重组后纹理图像越接近于原始纹理图像中对应于目标三维几何模型所对应的纹理图像区域越好,因为这样可以保证获得一致性的贴图效果。
关于第二点,可以这样理解:首先,该重组后纹理图像中应该尽量少的包含冗余纹理信息,即尽量少的包含与该目标三维几何模型无关的空间点所对应的纹理值;其次,假设基于原始纹理图像对原始三维几何模型进行显示处理后,其中目标三维几何模型对应的贴图效果为S1,基于重组后纹理图像对目标三维几何模型进行显示处理后得到的贴图效果为S2,S1=S2才能获得一致性的贴图效果。
因此,针对目标三维几何模型,如何得到高质量的含有更少冗余纹理信息的重组后纹理图像至关重要。
为便于理解,下面结合图3示例出一种包含较多冗余纹理信息的重组后纹理图像获取方法。这种方法可以称为是基于轴对齐包围盒的纹理图像获取方法。假设图3中外围的矩形框代表原始纹理图像的边框,针对目标三维几何模型中的一个三角形面元,假设其三个顶点对应的uv坐标分别为图中示意的(u1,v1)、(u2,v2)、(u3,v3),确定一个包含这三个uv坐标的外接矩形纹理区域K(一个轴对齐包围盒)。基于此,针对目标三维几何模型中包含的若干三角形面元可以在原始纹理图像中确定出对应的若干矩形纹理区域,对这些矩形纹理区域进行重组(可以简单理解为拼接成一个可以容纳这些矩形纹理区域的大的矩形图像)可以最终得到重组后纹理图像,该重组后纹理图像的尺寸是小于原始纹理图像的。在上述示例中,由于每个纹理矩形区域内包含大量的冗余纹理信息,即包含大量不位于由上述三个uv坐标所界定的三角形区域内的纹理值,使得重组后纹理图像中包含的冗余纹理信息较多,基于该重组后纹理图像对目标三维几何模型进行显示处理时,无法获得与基于原始纹理图像进行显示处理时一致的贴图效果。其中,可以理解的是,之所以不能直接截取出由上述三个uv坐标所界定的三角形纹理区域,是因为一方面图像(纹理区域也是一个小图像)实际上都是矩形的,实际上不存在三角形图像,另一方面,基于三角形纹理区域进行重组以得到矩形的重组后纹理图像时,得到的重组后纹理图像的质量可能更差,比如可能存在很多空洞区域。
再比如另一种基于轴对齐包围盒的纹理裁剪方法:基于目标三维几何模型中边界顶点所对应的纹理坐标,在原始纹理图像中直接截取出包围边界顶点对应的纹理坐标的矩形框,截取出该矩形框中的纹理图像,此时得到的纹理图像中也包含较多的冗余纹理信息。
本实施例中,通过上述步骤101-103进行从原始纹理图像中分割出对应于目标三维几何模型的多个矩形纹理图像区域,之后对这多个矩形纹理图像区域进行重组,以得到重组后纹理图像,此时得到的重组后纹理图像中包含的冗余纹理信息较少。
首先,提取参数化网格,即确定与目标三维几何模型对应的目标参数化网格(也可以称为目标UV网格)。目标三维几何模型中针对每个面元的顶点保存有空间坐标和纹理坐标,可以将每个面元的顶点的坐标仅保留纹理坐标,便可以得到二维平面的目标参数化网格。简单来说,就是对目标三维几何模型进行UV展开,得到相应的UV网格。
由于目标参数化网格中既包含目标三维几何模型的几何结构特征又包含纹理坐标信息,因此可以作为确定目标三维几何模型对应的多个矩形纹理图像区域的中间工具,其中,目标三维几何模型的几何结构特征是指目标三维几何模型中的各面元以及各面元的顶点,而目标参数化网格中包含的纹理坐标信息即为目标三维几何模型中的各面元的顶点所对应的原始纹理坐标,原始纹理坐标是指顶点在原始纹理图像中对应的纹理坐标。
之后,构造包围目标参数化网格的轴对齐多边形。其中,轴对齐多边形的各边平行于纹理坐标轴,即轴对齐多边形中的各个边平行于u轴或v轴,比如图4中示意的多边形即为一个轴对齐多边形。轴对齐多边形的构建方法将在下文实施例中介绍,在此先不赘述。
本实施例中,通过构造轴对齐多边形来近似目标三维几何模型所需引用的纹理区域,将该纹理区域包含在轴对齐多边形内,相比于直接以轴对齐包围盒(即矩形)来划定目标三维几何模型所需引用的纹理区域,可以引入更少的冗余纹理信息。
之后,对轴对齐多边形进行矩形分割,以得到多个矩形位置区域。可选地,可以采用摩托车图算法(motorcycle graph algorithm)来对轴对齐多边形进行矩形分割。简单来说,可以确定轴对齐多边形的角点(内角为3π/2)的顶点,可以从每个角点处同时发射一条射线,射线沿垂直于纹理坐标轴的方向向轴对齐多边形内部发射,当射线遇到其他射线或轴对齐多边形的边界时即停止。当所有射线都停止后,这些射线的轨迹就将轴对齐多边形分割成了多个矩形位置区域。
为便于理解,图5中示意了对图4中的轴对齐多边形进行矩形分割时得到的一种分割结果。其中,轴对齐多边形中存在三个角点,以圆点示意,三个角点发射出的三条射线如图5中所示,基于这三条射线,将轴对齐多边形分割成了图5中示意的四个矩形位置区域。
可以理解的是,由于轴对齐多边形是包围在目标参数化网格外的,对轴对齐多边形进行矩形分割得到的多个矩形位置区域实际上就是将该目标参数化网格划分成了多个矩形位置区域,那么目标参数化网格中包含的若干面元也将基于该分割结果被划分到了不同的矩形位置区域内。
之后,在原始纹理图像中定位这多个矩形位置区域,便可以得到落入每个矩形位置区域内的纹理图像区域,从而得到多个矩形位置区域对应的多个矩形纹理图像区域。可以理解的是,在得到上述多个矩形位置区域后,可以确定每个矩形位置区域的四个顶点所对应的纹理坐标,在原始纹理图像中定位一个矩形位置区域的四个顶点的纹理坐标,便可以得到该矩形位置区域对应的矩形纹理图像区域。
之后,对多个矩形纹理图像区域进行重组,得到重组后纹理图像。其中,重组的目的就是这多个矩形纹理图像区域放在一张图像中。在重组过程中,以使得该图像中产生的空洞最小为目标来确定每个矩形纹理图像区域在图像中的填充位置和角度。具体的重组过程将在下文实施例中进行说明。
得到了上述重组后纹理图像后,便可以根据重组后纹理图像对目标三维几何模型进行显示处理,得到包含纹理信息的目标三维模型,以进行显示。
综上,通过构造上述轴对齐多边形来近似目标三维几何模型所需的纹理区域,将形状不规则的纹理区域分割为若干规则的矩形纹理图像区域,可以明显降低引入的冗余纹理信息,有利于提高目标三维模型的显示效率。
图6为本发明实施例提供的一种构造对轴对齐多边形的流程图,如图6所示,可以包括如下步骤:
601、确定包围目标参数化网格的轴对齐包围盒。
602、以轴对齐包围盒作为根节点,构建四叉树,其中,当四叉树中一叶子节点与目标参数化网格的边界不相交时不再产生该叶子节点的孩子节点。
603、根据四叉树确定包围目标参数化网格的轴对齐多边形。
结合图7a和图7b示例说明上述轴对齐多边形的构造过程,其中,图7a和图7b中的虚线代表的是目标参数化网格的边界线。
首先,确定包围目标参数化网格的轴对齐包围盒,即包围目标参数化网格的边界线的外接矩形,如图7a中的最外侧的矩形框所示。
之后,构造四叉树。具体地,以上述轴对齐包围盒作为四叉树的根节点,然后对叶子节点不断细分,直至当前的叶子节点与目标参数化网格边界不相交,则该叶子节点下不再细分出孩子节点。或者,直至四叉树的深度达到设定深度。
具体地,在图7a中,每个方格都表示一个叶子节点,其中,与目标参数化网格不相交的叶子节点,比如包括图7a中位于目标参数化网格边界线外部的空白方格以及完全位于目标参数化网格内部的空白方格,这些方格不会再细分出孩子节点。而与目标参数化网格相交(是指与其边界线相交)的叶子节点,会继续细分出四个孩子节点,如果孩子节点还是与目标参数化网格边界相交时,继续细分,直到达到设定深度或者不再与目标参数化网格相交。
之后,根据构造出的四叉树确定包围目标参数化网格的轴对齐多边形。具体地,可以对四叉树中与目标参数化网格的边界相交的叶子结点或位于目标参数化网格内的叶子节点进行并集处理,以确定包围目标参数化网格的轴对齐多边形。其中,如图7b中所示,四叉树中与目标参数化网格的边界相交的叶子结点,实际上就是目标参数化网格的边界线所穿过的叶子节点。并集处理就是把作为两个叶子节点的多边形合并成一个多边形。实际上,如图7b所示,就是确定四叉树中与目标参数化网格的边界相交的叶子结点的外围边界线,将这些边界线依次连接到一起以形成轴对齐多边形,由于每个叶子节点的边界线都是平行于u轴或v轴的,所以得到的多边形是轴对齐多边形。
下面结合图8示例说明对前述多个矩形纹理图像区域进行重组得到重组后纹理图像的过程。
图8为本发明实施例提供的一种纹理重组方法的流程图,如图8所示,可以包括如下步骤:
801、根据设定的图像尺寸指标对多个矩形纹理图像区域进行降序排序。
802、按照排序,将多个矩形纹理图像区域填充到第一矩形区域中以得到第一重组后纹理图像。
803、采用二分查找法,对第一矩形区域的尺寸进行缩小处理,以确定能够容纳多个矩形纹理图像区域的第二矩形区域,将多个矩形纹理图像区域填充到第二矩形区域中以得到第二重组后纹理图像。
其中,第二矩形区域的尺寸小于或等于第一矩形区域的尺寸。
上述图像尺寸指标包括但不限于面积、周长、宽度、高度等。当采用的图像尺寸指标包括多个时,对多种图像尺寸指标也可以进行排序,比如面积、周长、宽度、高度的降序排序,以实现优先填充尺寸较大的矩形纹理图像区域的目的。比如两个矩形纹理图像区域的面积相同时,根据周长大小确定这两个矩形纹理图像区域的排序结果。
对多个矩形纹理图像区域进行重组实际上就是由这两个矩形纹理图像区域生成一个新的纹理图像。具体地,可以初始化一个空白的矩形区域作为初始矩形区域(即一个空白的纹理图像),之后,根据多个矩形纹理图像区域的排序结果,依次向该初始矩形区域中填充。在填充过程中,如果发现初始矩形区域不足以容纳还未被填充的矩形纹理图像区域,则不断扩大初始矩形区域的尺寸,直到所有的矩形纹理图像区域都被填充进去。此时得到的矩形区域称为第一矩形区域。
其中,在将矩形纹理图像区域向上述矩形区域中进行填充时,可以对矩形纹理图像区域进行旋转(比如逆时针方向进行旋转)、平移等变换操作。其中,平移是指假设某矩形纹理图像区域在原始纹理图像中对应的纹理坐标为L1,在第一矩形区域中对应的纹理坐标为L2,则L2-L1即可以作为该矩形纹理图像区域对应的平移向量。
其中,初始矩形区域的尺寸可以随机设定,或者比如可以设定为多个矩形纹理图像区域的面积和,等等,不具体限定。其中,每次需要对矩形区域进行扩大时,可选地,可以每次扩大设定的宽、高值,或者每次扩大设定的倍数,不如0.5倍。
在一可选实施例中,当确定出足以容纳上述多个矩形纹理图像区域的第一矩形区域时,可以确定多个矩形纹理图像区域填充到第一矩形区域后得到的纹理图像即作为最终的重组后纹理图像。
但是,为了能进一步优化重组后纹理图像,可选地,还可以将多个矩形纹理图像区域填充到第一矩形区域后得到的纹理图像作为第一重组后纹理图像,之后采用二分查找法,对第一矩形区域的尺寸进行缩小处理,以确定能够容纳多个矩形纹理图像区域的第二矩形区域,将多个矩形纹理图像区域填充到第二矩形区域中以得到第二重组后纹理图像,第二重组后纹理图像作为最终得到的重组后纹理图像,第二重组后纹理图像实际上是一个最小的可以填充所有矩形纹理图像区域的纹理图像,在第二重组后纹理图像中,多个矩形纹理图像区域更加紧凑,产生的空洞区域会更小。
下面简单举例说明二分查找法的执行过程。
假设第一矩形区域的尺寸为100*100,则第一次进行二分查找时中间点为:50*50,确定多个矩形纹理图像区域是否能够填充到50*50的矩形区域内。如果能,则确定下一次二分查找的中间点为:25*25;如果不能,则确定下一次二分查找的中间点为:75*75,以此类推,直到找到能够容纳多个矩形纹理图像区域的第二矩形区域。
针对前述实施例中的步骤105,结合图9,示例一种具体的实施方式。
图9为本发明实施例提供的一种基于重组后纹理图像的显示处理方法的流程图,如图9中所示,可以包括如下步骤:
901、针对目标矩形位置区域内包含的面元的目标顶点,确定目标矩形位置区域对应的目标矩形纹理图像区域在进行重组时对应的位姿变换向量,其中,目标矩形位置区域是多个矩形位置区域中任一个,目标顶点是目标参数化网格中位于目标矩形位置区域内的多个面元的顶点中的任一个。
902、根据目标顶点对应的原始纹理坐标、位姿变换向量、原始纹理图像的图像尺寸和重组后纹理图像的图像尺寸,确定目标顶点在重组后纹理图像中对应的更新后纹理坐标。
903、根据目标三维几何模型中各面元的顶点分别对应的更新后纹理坐标和重组后纹理图像,对目标三维几何模型进行显示处理。
实际上,重组后纹理图像中前述多个矩形纹理图像区域的位姿关系与这多个矩形纹理图像区域在原始纹理图像中的位姿关系很可能已经不同,比如某矩形纹理图像区域在原始纹理图像中位于左上角位置,但是在重组后纹理图像中位于右下角位置,比如某矩形纹理图像区域在原始纹理图像中是横向放置的,但是在重组后纹理图像中是纵向放置的(逆时针旋转90度)。也就是说,在对多个矩形纹理图像区域进行重组的过程中,很可能会更新矩形纹理图像区域之间的位姿关系。需要基于这种位姿关系的更改来更新目标三维几何模型中各面元的顶点所对应的纹理坐标,否则会导致贴图结果错误。比如,某顶点在原始纹理图像中对应的纹理坐标为(u1,v1),即需要渲染该纹理坐标对应的纹理值,但是在重组过程中如果该纹理坐标所对应的矩形纹理图像区域被移动到其他位置,那么在重组后纹理图像中如果仍旧确定该顶点对应的纹理坐标为(u1,v1),由于重组后纹理图像中该纹理坐标对应的纹理值与原始纹理图像中该纹理坐标对应的纹理值已经不同,将重组后纹理图像中该纹理坐标对应的纹理值赋值给该顶点显然是不对的。
因此,在得到重组后纹理图像之后,需要重新确定目标三维几何模型中各面元的顶点在重组后纹理图像中对应的纹理坐标,即更新各顶点的纹理坐标。
本实施例中,可以借助对目标三维几何模型对应的目标参数化网格进行矩形分割后得到的多个矩形位置区域来实现各顶点的纹理坐标的更新。
具体地,以多个矩形位置区域内的目标矩形位置区域内包含的任一面元的目标顶点为例,首先,确定目标矩形位置区域对应的目标矩形纹理图像区域在进行重组时对应的位姿变换向量。该位姿变换向量用于反映目标矩形纹理图像区域在原始纹理图像和重组后纹理图像中的位姿变换,主要包括上文中举例的平移变换和旋转变换。
之后,根据目标顶点对应的原始纹理坐标、该位姿变换向量、原始纹理图像的图像尺寸和重组后纹理图像的图像尺寸,确定目标顶点在重组后纹理图像中对应的更新后纹理坐标。
假设目标顶点p对应的原始纹理坐标为(u0,v0),目标矩形纹理图像区域对应的平移变换向量为(tx,ty),目标矩形纹理图像区域对应的旋转变换向量为θ,原始纹理图像的图像尺寸为w0*h0,重组后纹理图像的图像尺寸为w*h,则目标顶点p的更新后纹理坐标(unew,vnew)的计算过程可以表示为:
之后,可以根据目标三维几何模型中各面元的顶点分别对应的更新后纹理坐标和重组后纹理图像,对目标三维几何模型进行显示处理,显示处理的过程参考上文中相关介绍,在此不赘述。
图10为本发明实施例提供的一种三维模型纹理处理方法的流程图,如图10所示,该方法可以包括如下步骤:
1001、响应于对原始三维几何模型中待显示的目标三维几何模型的选择操作,确定目标三维几何模型对应的目标参数化网格,目标参数化网格中包括目标三维几何模型中的各面元以及各面元的顶点所对应的原始纹理坐标。
1002、确定包围目标参数化网格的轴对齐多边形,分割轴对齐多边形以得到多个矩形位置区域,从原始纹理图像中确定多个矩形位置区域对应的多个矩形纹理图像区域,对多个矩形纹理图像区域进行重组得到重组后纹理图像。
1003、确定目标参数化网格中与不同矩形位置区域相交的待裁剪面元,对待裁剪面元进行裁剪,以使得到的各裁剪后面元不跨越不同矩形位置区域,根据面元裁剪结果更新目标三维几何模型。
1004、根据重组后纹理图像对更新后目标三维几何模型进行显示处理,以输出目标三维模型。
由于上述多个矩形位置区域实际上就是将目标参数化网格进行了分割,分割成了多个矩形块,可能会存在目标参数化网格中的同一面元跨越不同矩形位置区域的情形,即一个面元与多个矩形位置区域的边界都存在相交的情形。
本实施例中将存在这种情形的面元称为待裁剪面元。需要对目标参数化网格以及目标三维几何模型都进行上述待裁剪面元的裁剪,以使得到的各裁剪后面元不跨越不同矩形位置区域,也就是说,经过裁剪后得到的每个面元,仅位于一个矩形位置区域内部,不会与不同矩形位置区域再相交。这是因为目标三维几何模型在进行显示处理时,是以其几何单元—面元的粒度进行处理的,如果同一个面元跨越比如两个矩形位置区域,由于每个矩形位置区域对应于纹理图像中的一个矩形纹理图像区域,而且在重组过程中这两个矩形纹理图像区域可能经过平移、旋转变换后位于重组后纹理图像中的两块远离的位置处,这就意味着一个面元会映射到分离较远的两块纹理区域,会获得不正确的贴图效果。因此,对原始的目标参数化网格中这种跨越不同矩形位置区域的待裁剪面元进行裁剪,裁剪成更多的小的面元,使得每个裁剪后面元都只位于一个矩形位置区域内,以保证目标三维几何模型最终能够在纹理重组前后获得一致性的贴图效果。
由于每个矩形位置区域可以以一个矩形框来表示,其边界线是已知的,根据目标参数化网格中各个面元的边界线与各个矩形位置区域的边界线的相交情况,便可以得知哪些面元是待裁剪面元。
在一可选实施例中,步骤1003中对待裁剪面元的裁剪处理过程可以是:
确定待裁剪面元与相交的矩形位置区域的交点作为裁剪后面元的顶点,确定该顶点对应的原始纹理坐标以及该顶点在目标三维几何模型中对应的空间坐标;基于待裁剪面元与相交的矩形位置区域的相交线,确定待裁剪面元在矩形位置区域内形成的待裁剪多边形,待裁剪多边形的形状与面元形状不同;基于待裁剪多边形的各顶点的原始纹理坐标,确定在待裁剪多边形中新增的边,新增的边使得待裁剪多边形被分割为多个面元;在目标三维几何模型中标记上裁剪后面元的顶点的空间坐标、新增的边和上述相交线,以更新目标三维几何模型。
为便于理解,结合图11示例说明上述裁剪过程。
在图11中,假设目标参数化网格中包括图中示意的三角形面元:GAB、GAF、ABC、ACF,并假设图中示意的矩形框为从轴对齐多边形中分割出的一个矩形位置区域,由图中的示意可知,三角形面元GAF、ABC和ACF分别与该矩形位置区域的边界相交,交点分别为K、J、L、M。
可以理解的是,由于对轴对齐多边形进行分割后得到的多个矩形位置区域会覆盖目标参数化网格全部,比如图11中示意的与某矩形位置区域相交的三角形面元,实际上还会与其他矩形位置区域相交,只是图11中未示意出。因此,可以初步确定三角形面元GAF、ABC和ACF是待裁剪面元。
之后,将上述交点作为新增的顶点(即新增的裁剪后面元的顶点),分别计算每个交点对应的纹理坐标和空间坐标。实际上,可以基于已知的上述三角形面元GAF、ABC和ACF的各顶点的纹理坐标和空间坐标,采用重心坐标插值方法来计算每个交点对应的纹理坐标和空间坐标。重心坐标插值方法可以参考现有相关技术实现,在此不赘述。
另外,上述三角形面元GAF、ABC和ACF与矩形位置区域的边界相交时会产生图中示意的位于矩形位置区域内的不同多边形。
比如,与三角形面元GAF的相交线KJ会使得三角形面元GAF分割成两部分,其中位于矩形位置区域内的部分是三角形KFJ,由于该三角形与面元的形状(三角形)是一致的,所以直接确定产生了一个新的裁剪后三角形面元KFJ即可。同理,与三角形面元ABC的相交线LM会使得三角形面元ABC分割出位于矩形位置区域内的新增的裁剪后三角形面元LMC。
再比如,与三角形面元ACF的相交线JL会使得三角形面元ACF分割出位于矩形位置区域内的四边形FJLC,由于该四边形与面元的形状(三角形)不一致,所以将该四边形作为待裁剪多边形,进一步对该四边形进行裁剪,是该四边形被裁剪成多个三角形面元。可选地,可以基于德劳内三角化方法对该四边形进行三角化处理,以得到多个三角形面元,比如图11中示意的通过确定出的一条新增边LF,将该四边形裁剪成三角形面元FJL和三角形面元FLC。
具体地,本实施例中,可以采用带约束的德劳内三角化方法对上述待裁剪多边形进行裁剪处理,其中,约束条件是:保留待裁剪多边形原本具有的各条边。具体地,将待裁剪多边形的各顶点(比如图11中的F、J、L和C这四个顶点)的原始纹理坐标输入到德劳内三角化算法中,以在该约束条件下,产生图中示意的新增边。
通过上述裁剪过程,便可以在原始的目标参数化网格中产生若干新的裁剪后面元,每个裁剪后面元的边中会包含与矩形位置区域相交的边和/或上述新增的边。
由于目标参数化网格是对目标三维几何模型中的各面元的顶点去掉空间坐标后得到的,因此可以根据裁剪处理后得到的新的目标参数化网格中包含的各个裁剪后面元,在原始的目标三维几何模型中对应地标记上这些裁剪后面元,即标记上裁剪后面元的顶点的空间坐标、以及上述相交线、新增的边,从而实现对目标三维几何模型的更新。
之后,根据重组后纹理图像对更新后目标三维几何模型进行显示处理,以输出目标三维模型。其中,显示处理过程中也需要进行如图9所示实施例中介绍的更新目标三维模型中各面元的顶点所对应的纹理坐标的过程。
通过以上实施例提供的方案,通过四叉树构造轴对齐多边形来近似当前显示某局部三维模型时所需引用的纹理区域,可以降低引入冗余的纹理信息。然后对轴对齐多边形对应的纹理区域进行分割,分割成若干个矩形纹理图像区域,对矩形纹理图像区域进行重组生成新的纹理图像,并通过对跨矩形区域的面元进行裁剪以更新局部三维模型的几何结构以及顶点的纹理坐标,以保证纹理重组前后该局部三维模型的贴图效果的一致性。
图13为本发明实施例提供的一种三维模型纹理处理方法的应用示意图,在图13中,该方法可以由用户终端(比如PC机)来执行,该用户终端中存储有预先采集到的原始三维几何模型和原始纹理图像构成的完整的原始三维模型。在切割逐步显示该原始三维模型的过程中,假设当前用户从原始三维几何模型中选定了目标三维几何模型进行显示处理,则首先要从目标三维几何模型中提取目标参数化网格,之后通过构造四叉树来生成包围目标参数化网格的轴对齐多边形,之后,对轴对齐多边形进行矩形分割,基于矩形分割结果从原始纹理图像中获得多个矩形纹理图像区域,对多个矩形纹理图像区域进行重组以得到重组后纹理图像。之后裁剪目标参数化网格和目标三维几何模型中的跨矩形区域的面元,以更新目标三维几何模型,更新目标三维几何模型中各顶点的纹理坐标,根据重组后纹理图像和目标三维几何模型的纹理坐标更新结果进行显示处理,输出贴图后的目标三维子模型。
本发明提供的三维模型纹理处理方法可以在云端来执行,在云端可以部署有若干计算节点,每个计算节点中都具有计算、存储等处理资源。在云端,可以组织由多个计算节点来提供某种服务,当然,一个计算节点也可以提供一种或多种服务。云端提供该服务的方式可以是对外提供服务接口,用户调用该服务接口以使用相应的服务。服务接口包括软件开发工具包(Software Development Kit,简称SDK)、应用程序接口(ApplicationProgramming I nterface,简称API)、数据库的SQL函数等形式。
针对本发明实施例提供的方案,云端可以提供有三维模型裁剪服务的服务接口,用户通过用户设备调用该服务接口,以向云端触发服务请求,该服务请求中包括从原始三维几何模型中选出的待显示的目标三维几何模型以及原始三维几何模型对应的原始纹理图像。云端确定响应该请求的计算节点,利用该计算节点中的处理资源执行如下步骤:
确定所述目标三维几何模型对应的目标参数化网格,所述目标参数化网格中包括所述目标三维几何模型中的各面元以及各面元的顶点所对应的原始纹理坐标,所述原始纹理坐标是在所述原始纹理图像中对应的纹理坐标;
确定包围所述目标参数化网格的轴对齐多边形,所述轴对齐多边形的各边平行于纹理坐标轴;
分割所述轴对齐多边形以得到多个矩形位置区域;
从所述原始纹理图像中确定所述多个矩形位置区域对应的多个矩形纹理图像区域;
对所述多个矩形纹理图像区域进行重组,得到重组后纹理图像;
将所述重组后纹理图像反馈给所述用户设备,以使所述用户设备根据所述重组后纹理图像对所述目标三维几何模型进行显示处理,以输出目标三维模型。
上述执行过程可以参考前述其他实施例中的相关说明,在此不赘述。
为便于理解,结合图13来示例性说明。用户可以通过图13中示意的用户设备E1调用三维模型裁剪服务,以上传从原始三维几何模型中选出的待显示的目标三维几何模型以及原始三维几何模型对应的原始纹理图像的服务请求。在云端,如图中所示,部署有若干计算节点,可以基于某种调度策略从中选定计算节点E2,计算节点E2在接收到该服务请求后,执行上述计算过程,以得到重组后纹理图像。之后,计算节点E2将重组后纹理图像发送给用户设备E1,用户设备E1根据重组后纹理图像对目标三维几何模型进行显示处理,输出得到的目标三维模型。
以下将详细描述本发明的一个或多个实施例的三维模型纹理处理装置。本领域技术人员可以理解,这些装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图14为本发明实施例提供的一种三维模型纹理处理装置的结构示意图,如图14所示,该装置包括:参数化网格确定模块11、纹理图像裁剪模块12、纹理图像重组模块13、三维模型显示模块14。
参数化网格确定模块11,用于响应于对原始三维几何模型中待显示的目标三维几何模型的选择操作,确定所述目标三维几何模型对应的目标参数化网格,所述目标参数化网格中包括所述目标三维几何模型中的各面元以及各面元的顶点所对应的原始纹理坐标,所述原始纹理坐标是在所述原始三维几何模型对应的原始纹理图像中对应的纹理坐标。
纹理图像裁剪模块12,用于确定包围所述目标参数化网格的轴对齐多边形,分割所述轴对齐多边形以得到多个矩形位置区域,从所述原始纹理图像中确定所述多个矩形位置区域对应的多个矩形纹理图像区域,所述轴对齐多边形的各边平行于纹理坐标轴。
纹理图像重组模块13,用于对所述多个矩形纹理图像区域进行重组,得到重组后纹理图像。
三维模型显示模块14,用于根据所述重组后纹理图像对所述目标三维几何模型进行显示处理,以得到目标三维模型。
可选地,纹理图像裁剪模块12具体用于:确定包围所述目标参数化网格的轴对齐包围盒;以所述轴对齐包围盒作为根节点,构建四叉树,其中,当所述四叉树中一叶子节点与所述目标参数化网格的边界不相交时不再产生所述叶子节点的孩子节点;根据所述四叉树,确定包围所述目标参数化网格的轴对齐多边形。
其中,可选地,纹理图像裁剪模块12具体用于:对所述四叉树中与所述目标参数化网格的边界相交的叶子结点或位于所述目标参数化网格内部的叶子节点进行并集处理,以确定包围所述目标参数化网格的轴对齐多边形。
可选地,纹理图像重组模块13具体用于:根据设定的图像尺寸指标对所述多个矩形纹理图像区域进行降序排序;按照所述排序,将所述多个矩形纹理图像区域填充到第一矩形区域中以得到第一重组后纹理图像。
可选地,纹理图像重组模块13还用于:采用二分查找法,对所述第一矩形区域的尺寸进行缩小处理,以确定能够容纳所述多个矩形纹理图像区域的第二矩形区域;将所述多个矩形纹理图像区域填充到所述第二矩形区域中以得到第二重组后纹理图像。
可选地,三维模型显示模块14还用于:确定所述目标参数化网格中与不同矩形位置区域相交的待裁剪面元;对所述待裁剪面元进行裁剪,以使得到的各裁剪后面元不跨越不同矩形位置区域。
其中,可选地,三维模型显示模块14具体用于:确定所述待裁剪面元与相交的矩形位置区域的交点作为裁剪后面元的顶点;确定所述顶点对应的原始纹理坐标以及所述顶点在所述目标三维几何模型中对应的空间坐标;基于所述待裁剪面元与相交的矩形位置区域的相交线,确定所述待裁剪面元在所述矩形位置区域内形成的待裁剪多边形,所述待裁剪多边形的形状与面元形状不同;基于所述待裁剪多边形的各顶点的原始纹理坐标,确定在所述待裁剪多边形中新增的边,所述新增的边使得所述待裁剪多边形被分割为多个面元;在所述目标三维几何模型中标记上所述裁剪后面元的顶点的空间坐标、所述新增的边和所述相交线,以更新所述目标三维几何模型。
可选地,三维模型显示模块14具体用于:针对目标矩形位置区域内包含的面元的目标顶点,确定所述目标矩形位置区域对应的目标矩形纹理图像区域在进行重组时对应的位姿变换向量,其中,所述目标矩形位置区域是所述多个矩形位置区域中任一个,所述目标顶点是所述目标参数化网格中位于所述目标矩形位置区域内的多个面元的顶点中的任一个,所述位姿变换向量用于反映所述目标矩形纹理图像区域在所述原始纹理图像和所述重组后纹理图像中的位姿变换;根据所述目标顶点对应的原始纹理坐标、所述位姿变换向量、所述原始纹理图像的图像尺寸和所述重组后纹理图像的图像尺寸,确定所述目标顶点在所述重组后纹理图像中对应的更新后纹理坐标;根据所述目标三维几何模型中各面元的顶点分别对应的更新后纹理坐标和所述重组后纹理图像,对所述目标三维几何模型进行显示处理。
图14所示装置可以执行前述实施例中提供的步骤,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
在一个可能的设计中,上述图14所示三维模型纹理处理装置的结构可实现为一电子设备。如图15所示,该电子设备可以包括:处理器21、存储器22、通信接口23。其中,存储器22上存储有可执行代码,当所述可执行代码被处理器21执行时,使处理器21至少可以实现如前述实施例中提供的三维模型纹理处理方法。
实际应用中,该电子设备可以是虚拟现实、扩展现实等电子设备,从而,需要显示的三维模型可以是对现实世界中的物理对象进行采集得到的,也可以是生成的虚拟三维模型。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述实施例中提供的三维模型纹理处理方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的网元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。