三维模型纹理贴图转换方法与装置与流程

文档序号:14489351阅读:4518来源:国知局
三维模型纹理贴图转换方法与装置与流程

本申请涉及图像数据处理技术领域,特别是涉及一种三维模型纹理贴图转换方法、装置、计算机设备和存储介质。



背景技术:

在三维数字成像领域,为了获得真实感的三维模型,需要获取物体的高清彩色图像,通过二维彩色图像与三维模型的映射关系,生成真实感的三维模型。彩色图像通常由彩色相机在不同角度对建模物体拍摄的照片获得,为了实现准确的贴图,必须准确估计出彩色相机坐标系与三维深度相机坐标系的转换关系,即根据彩色相机的内外参数获得三维物体上的点和纹理图像中像素的映射关系。

为了将二维的纹理信息映射到三维网格上,需要对网格进行纹理展开。网格纹理坐标展开到平面后,把网格对应的贴图填充到纹理坐标域,就得到了纹理贴图,当把纹理应用于三维模型时,需要为每个顶点指定一组纹理坐标,标明该顶点在贴图中的位置,从而建立起三维模型和纹理贴图之间的映射关系。网格在渲染的时候,每个三角面片离散化后,每个离散点会根据纹理坐标值从纹理贴图里拾取颜色,最终获得具有真实感三维模型。

建模师在使用三维建模软件时,需要对三维模型进行纹理展开,得到一张包含模型所有纹理信息的纹理贴图,同时获得三维模型与纹理贴图之间的映射关系,不同的映射关系对应着不同的纹理贴图。而在实际纹理图像的采集处理过程中,得到的纹理贴图通常为一系列拍摄的纹理照片的汇总,包含大量冗余信息且无法直接应用,而且对于同一模型,由于不同建模师对模型纹理展开方式不同,纹理贴图也无法通用,这给模型处理带来很大的不便。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够实现纹理贴图通用转换的三维模型纹理贴图转换方法、装置、计算机设备和存储介质。

一种三维模型纹理贴图转换方法,所述方法包括:

获取初始目标纹理贴图,将三维模型面片的顶点投影至所述初始目标纹理贴图中,得到初始目标纹理贴图坐标,根据初始目标纹理贴图坐标,计算所述初始目标纹理贴图中每个面片内像素的重心坐标,所述初始目标纹理贴图内像素填充为0;

根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,根据所述重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标;

根据所述初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系;

根据所述初始目标纹理贴图到原始纹理贴图的映射关系,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

在其中一个实施例中,计算所述初始目标纹理贴图中每个面片内像素的重心坐标的步骤包括:

从纹理映射关系中读取当前处理三角形面片中三个顶点的纹理坐标;

将所述三个顶点的纹理坐标转换为像素坐标;

选取三个顶点的像素坐标中x方向最大值和最小值以及y方向最大值和最小值,构建三角形包围盒;

根据所述当前处理三角形面片中三个顶点的纹理坐标,计算所述三角形包围盒内每个像素点的三角形重心坐标。

在其中一个实施例中,所述根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,根据所述重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标的步骤包括:

根据已有原始纹理贴图的纹理映射关系,将当前处理三角形面片的顶点投影到原始纹理贴图中,得到当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标;

根据所述三角形包围盒内每个像素点的三角形重心坐标,识别位于当前处理三角形面片内的像素;

计算位于当前处理三角形面片内的像素在原始纹理贴图中像素坐标。

在其中一个实施例中,所述计算位于当前处理三角形面片内的像素在原始纹理贴图中像素坐标的公式为:

x′=λ1x1′+λ2x2′+λ3x3′,

y′=λ1y1′+λ2y2′+λ3y3′

其中,(x1′,y1′),(x2′,y2′),(x3′,y3′)为当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标,(x′,y′)为原始纹理贴图中当前处理三角形面片内的像素坐标,(λ1,λ2,λ3)为所述三角形重心坐标。

在其中一个实施例中,若像素对应的所述三角形重心坐标值均为非负值,则该像素位于当前处理三角形面片内。

在其中一个实施例中,所述根据所述初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系的步骤之后还包括:

将初始目标纹理贴图到原始纹理贴图的映射关系保存为具有多通道的矩阵m,所述矩阵m的大小与初始目标纹理贴图大小一致。

在其中一个实施例中,所述根据所述初始目标纹理贴图到原始纹理贴图的映射关系,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中的步骤包括:

根据所述初始目标纹理贴图到原始纹理贴图的映射关系、采用插值算法,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

一种三维模型纹理贴图转换装置,包括:

重心计算模块,用于获取初始目标纹理贴图,将三维模型面片的顶点投影至所述初始目标纹理贴图中,得到初始目标纹理贴图坐标,根据初始目标纹理贴图坐标,计算所述初始目标纹理贴图中每个面片内像素的重心坐标,所述初始目标纹理贴图内像素填充为0;

纹理坐标计算模块,用于根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,根据所述重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标;

映射关系建立模块,用于根据所述初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系;

处理模块,用于根据所述初始目标纹理贴图到原始纹理贴图的映射关系,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时上述的方法的步骤。

上述三维模型纹理贴图转换方法、装置、计算机设备和存储介质,将三维模型面片的顶点投影至所述初始目标纹理贴图中,计算初始目标纹理贴图中每个面片内像素的重心坐标,根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,通过三角形重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系,将原始纹理图转化成实际需要的目标纹理贴图,实现任意纹理贴图的相互通用转化。

附图说明

图1为一个实施例中三维模型纹理贴图转换方法的应用环境图;

图2为一个实施例中三维模型纹理贴图转换方法的流程示意图;

图3为初始目标纹理贴图与原始纹理贴图像素映射关系示意图;

图4为双线性插值示意图;

图5为是三角形面片包围盒及重心坐标系示意图;

图6另一个实施例中三维模型纹理贴图转换方法的流程示意图;

图7(a)~7(e)为一个应用实施例中三维模型纹理贴图转换方法处理前后效果示意图;

图8为一个实施例中三维模型纹理贴图转换装置的结构框图;

图9为另一个实施例中三维模型纹理贴图转换装置的结构框图;

图10为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的三维模型纹理贴图转换方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。终端102可以将需要进行纹理贴图的原始纹理贴图发送至服务器104处理,服务器104采用本申请提供的三维模型纹理贴图转换方法进行纹理贴图处理,反馈纹理贴图处理的目标纹理贴图至终端102,终端102将目标纹理贴图显示、展示给用户。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供一种三维模型纹理贴图转换方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:

s200:获取初始目标纹理贴图,将三维模型面片的顶点投影至初始目标纹理贴图中,得到初始目标纹理贴图坐标,根据初始目标纹理贴图坐标,计算初始目标纹理贴图中每个面片内像素的重心坐标,初始目标纹理贴图内像素填充为0。

目标纹理贴图是指待求的纹理贴图,对应的现有纹理贴图称为原始纹理贴图。在初始目标纹理贴图中,其像素填充为0。非必要的,可以根据实际情况需要的尺寸初始化目标纹理贴图,将目标纹理贴图中像素填充为0,得到初始目标纹理贴图。三维模型是指建模师使用的三维建模软件中携带的模型,一般三维模型面片为三角形或为多边形(一般为四边形),在三维模型面片上有多个顶点,例如当为三角形时,其有三个顶点、当为四边形时,其有四个顶点。针对三维模型面片为多边形的情况可以将其切割为三角形后再进行下一步处理,如为四边形时,可以将四边形分割为2个三角形再进行下一步处理。顶点投影的操作可以是根据初始目标纹理贴图映射关系来进行的,通常地,该映射关系包含在三维模型文件obj文件里,可直接从模型文件中读取。在三维模型每个面片都完成投影操作之后,根据初始目标纹理贴图坐标,计算初始目标纹理贴图中每个面片内像素的重心坐标。具体来说,重心坐标计算是基于投影至初始目标纹理贴图中顶点的纹理坐标来完成,以面片为三角形为例,其3个顶点,面片的3个顶点投影至初始目标纹理贴图中,得到其对应的纹理坐标分别为(x1,y1),(x2,y2),(x3,y3),计算其对应的重心坐标为:

λ3=1-λ1-λ2。

s400:根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,根据重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标。

已有原始纹理贴图映射关系是指由三维扫描设备得到或由他人提供的现有纹理贴图映射关系,基于该映射关系,可以将三维模型面片的顶点投影至原始纹理贴图中,在步骤s200中已将三维模型面片的顶点投影至初始目标纹理贴图中,得到投影后的初始目标纹理贴图中每个面片内像素的重心坐标,根据该重心坐标,可以计算出初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标。具体可以参见图3,在图3中,三维模型面片的顶点投影至初始目标纹理贴图,并且三维模型面片的顶点投影至原始纹理贴图中。在其中一个实施例中,面片为三角形面片,根据已有原始纹理贴图映射关系,将三角形的3个顶点投影至原始纹理贴图中,得到三角形三个顶点的纹理坐标为(x1′,y1′),(x2′,y2′),(x3′,y3′),根据步骤s200得到的重心坐标(λ1、λ2、λ3),可以计算得到初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标为:

s600:根据初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系。

继续参见图3,在图3中三维模型面片的顶点投影至初始目标纹理贴图,并且三维模型面片的顶点投影至原始纹理贴图中,因此,基于初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标可以建立初始目标纹理贴图到原始纹理贴图的映射关系。这里建立的映射关系即,初始目标纹理贴图中像素(x,y)与原始纹理贴图中像素(x′,y′)的一一映射关系。

s800:根据初始目标纹理贴图到原始纹理贴图的映射关系,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

由于初始目标纹理贴图中像素填充为0,在步骤s600已经得到初始目标纹理贴图到原始纹理贴图中的映射关系,基于该映射关系,可以将原始纹理贴图中颜色放入到初始目标纹理贴图中。具体来说,该放入的过程可以理解为填充的过程,基于映射关系将原始纹理贴图中颜色一一对应填充到初始目标纹理贴图中,完成纹理贴图转换,得到完整目标纹理贴图。

在其中一个实施例中,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中具体可以是采用插值算法得到相应的颜色,插值算法包括但不限于最近邻域插值、双线性插值、双三次插值中的一种,优选的,双线性插值算法计算复杂度低且效果较为平滑,可作为优选方案。当选用双线性插值算法,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中时,具体可以参见图4所示,双线性插值算法计算方法如下:

其中,函数f(·)为图像函数,返回当前坐标颜色值,q11,q12,q21,q22为待插值坐标相邻的四个整数坐标点,即q11=(x1,y1),q12=(x1,y2),q21=(x2,y1),q22=(x2,y2)。

上述三维模型纹理贴图转换方法,将三维模型面片的顶点投影至初始目标纹理贴图中,计算初始目标纹理贴图中每个面片内像素的重心坐标,根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,通过三角形重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系,将原始纹理图转化成实际需要的目标纹理贴图,实现任意纹理贴图的相互通用转化。

在其中一个实施例中,计算初始目标纹理贴图中每个面片内像素的重心坐标的步骤包括:

步骤一:从纹理映射关系中读取当前处理三角形面片中三个顶点的纹理坐标。

纹理映射关系是记载于三维模型内置文件中的,可以直接从三维模型中读取该部分数据。如上述,三维模型中面片可以为三角形或为多边形,当为多边形时,可以将多边形切割为三角形再进行下一步处理。如图3所示,三维模型中包括有多个面片,针对每个面片依次采用相同的方式进行处理,在三维模型中针对面片都有排序,即每个面片都有对应的序号。在这里,可以针对当前处理三角形面片序号,从纹理映射关系中读取三角形面片中三个顶点的纹理坐标。

步骤二:将三个顶点的纹理坐标转换为像素坐标。

通常地,计算机在处理纹理坐标时经常使用相对纹理坐标代替实际纹理坐标,相对纹理坐标是根据当前像素位置占实际贴图尺寸大小的百分比来定义的,即纹理坐标的取值范围在[0,1]内,需根据需求的贴图尺寸大小将其转换为实际的像素坐标。具体地,假设某顶点纹理坐标为(u,v),纹理贴图尺寸为w×h,实际像素坐标为(x,y),则x=u×w,y=v×h。

步骤三:选取三个顶点的像素坐标中x方向最大值和最小值以及y方向最大值和最小值,构建三角形包围盒。

比较三角形三个顶点像素坐标在x方向和y方向的大小,分别取x方向和y方向的最小值和最大值,同时最小值向下取整,最大值向上取整,可以得到xmin,ymin,xmax,ymax四个坐标值,以(xmin,ymin)为左上角坐标,(xmax,ymax)为右下角坐标构建矩形,如图5所示,该矩形可将三角形包围其中,构成三角形包围盒。

步骤四:根据当前处理三角形面片中三个顶点的纹理坐标,计算三角形包围盒内每个像素点的三角形重心坐标。

针对三角形包围盒内每个像素坐标,将其转化为三角形重心坐标。三角形重心坐标具有仿射不变性,利用该性质可以建立不同视角下三角形内对应点的映射关系。面片的3个顶点投影至初始目标纹理贴图中,得到其对应的纹理坐标分别为(x1,y1),(x2,y2),(x3,y3),计算其对应的重心坐标为:

λ3=1-λ1-λ2。

根据三角形重心坐标计算方法,依次对三角形包围盒内每个像素计算出三角形重心坐标。

如图6所示,在其中一个实施例中,s400包括:

s420:根据已有原始纹理贴图的纹理映射关系,将当前处理三角形面片的顶点投影到原始纹理贴图中,得到当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标。

已有原始纹理贴图的纹理映射关系是指现有针对原始纹理贴图的纹理映射关系,针对上述当前处理相同的三角形面片,将该三角形面片的顶点投影至原始纹理贴图中。具体可以参见图3,步骤s200将当前处理三角形面片的顶点投影至初始目标纹理贴图中,在这里,针对同一个三面形面片,将其顶点投影到原始纹理贴图中,得到当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标。更具体来说,此时在三角形面片列表中找到与上述步骤中相对应的三角面片。如图3所示,根据现有纹理贴图的纹理映射关系,将该三角面片的顶点投影到原始纹理贴图内,得到该三角形三个顶点在原始纹理贴图内的纹理坐标(x1′,y1′),(x2′,y2′),(x3′,y3′)。

s440:根据三角形包围盒内每个像素点的三角形重心坐标,识别位于当前处理三角形面片内的像素。

利用上述三角形面片的重心坐标,找出位于三角形面片内的像素。具体的,若像素三个重心坐标值均为非负值,即有λ1≥0&λ2≥0&λ3≥0为真,表示该像素位于三角形内,进入下一步操作,其余像素则不做进一步处理。

s460:计算位于当前处理三角形面片内的像素在原始纹理贴图中像素坐标。

将具有非负重心坐标值的像素按如下公式得到该像素在原始纹理贴图的像素坐标:

x′=λ1x1′+λ2x2′+λ3x3′,

y′=λ1y1′+λ2y2′+λ3y3′。

据此,可建立初始目标纹理贴图中的像素(x,y)到原始纹理贴图像素(x′,y′)的一一映射关系(s600)。需要指出的是,关于像素坐标与纹理坐标之间转换关系,可以参见上述内容,在此不再赘述。

如图6所示,在其中一个实施例中,s600之后还包括:

s700:将初始目标纹理贴图到原始纹理贴图的映射关系保存为具有多通道的矩阵m,矩阵m的大小与初始目标纹理贴图大小一致。

将该映射关系保存为大小为h×w且具有多通道的矩阵m,非必要的,可以为2通道的矩阵m,该矩阵与初始目标纹理贴图大小一致,通道1和通道2分别记录当前像素位置对应的原始纹理贴图的x坐标和y坐标。若原始纹理贴图内容发生变化,则无需重复步骤s200、步骤s400以及s600,可直接使用该映射关系进行下一步骤s800处理。

在其中一个实施例中,若像素对应的三角形重心坐标值均为非负值,则该像素位于当前处理三角形面片内。

应该理解的是,虽然图2与图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2与图6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在具体应用实例中,上述三维模型纹理贴图转换方法得到的效果如图7(a)~图7(e)所示,其中7(a)为原始纹理贴图,图7(b)为经其中一个实施例转化的目标纹理贴图,其中图7(a)(b)中的网格代表三维模型网格在纹理贴图上的投影,图7(c)为该实施例所使用的三维模型线框图,图7(d)使用原始纹理贴图映射生成的彩色模型,图7(e)使用转化后的目标纹理贴图映射生成的彩色模型。

如图8所示,一种三维模型纹理贴图转换装置,包括:

重心计算模块200,用于获取初始目标纹理贴图,将三维模型面片的顶点投影至初始目标纹理贴图中,得到初始目标纹理贴图坐标,根据初始目标纹理贴图坐标,计算初始目标纹理贴图中每个面片内像素的重心坐标,初始目标纹理贴图内像素填充为0。

纹理坐标计算模块400,用于根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,根据重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标。

映射关系建立模块600,用于根据初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系。

处理模块800,用于根据初始目标纹理贴图到原始纹理贴图的映射关系,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

上述三维模型纹理贴图转换装置,将三维模型面片的顶点投影至初始目标纹理贴图中,计算初始目标纹理贴图中每个面片内像素的重心坐标,根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,通过三角形重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系,将原始纹理图转化成实际需要的初始目标纹理贴图,实现任意纹理贴图的相互通用转化。

在其中一个实施例中,重心计算模块200计算初始目标纹理贴图中每个面片内像素的重心坐标的过程包括:从纹理映射关系中读取当前处理三角形面片中三个顶点的纹理坐标;将三个顶点的纹理坐标转换为像素坐标;选取三个顶点的像素坐标中x方向最大值和最小值以及y方向最大值和最小值,构建三角形包围盒;根据当前处理三角形面片中三个顶点的纹理坐标,计算三角形包围盒内每个像素点的三角形重心坐标。

如图9所示,在其中一个实施例中,纹理坐标计算模块400包括:

投影单元420,用于根据已有原始纹理贴图的纹理映射关系,将当前处理三角形面片的顶点投影到原始纹理贴图中,得到当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标;

识别单元440,用于根据三角形包围盒内每个像素点的三角形重心坐标,识别位于当前处理三角形面片内的像素;

计算单元460,用于计算位于当前处理三角形面片内的像素在原始纹理贴图中像素坐标。

在其中一个实施例中,计算位于当前处理三角形面片内的像素在原始纹理贴图中像素坐标的公式为:

x′=λ1x1′+λ2x2′+λ3x3′,

y′=λ1y1′+λ2y2′+λ3y3′

其中,(x1′,y1′),(x2′,y2′),(x3′,y3′)为当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标,(x′,y′)为原始纹理贴图中当前处理三角形面片内的像素坐标,(λ1,λ2,λ3)为三角形重心坐标。

在其中一个实施例中,若像素对应的三角形重心坐标值均为非负值,则该像素位于当前处理三角形面片内。

如图8所示,在其中一个实施例中,上述三维模型纹理贴图转换装置还包括:

存储模块700,用于将初始目标纹理贴图到原始纹理贴图的映射关系保存为具有多通道的矩阵m,矩阵m的大小与初始目标纹理贴图大小一致。

在其中一个实施例中,处理模块800还用于根据初始目标纹理贴图到原始纹理贴图的映射关系、采用插值算法,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

关于上述三维模型纹理贴图转换装置的具体限定可以参见上文中对于上述三维模型纹理贴图转换方法的限定,在此不再赘述。上述三维模型纹理贴图转换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种三维模型纹理贴图转换方法。

在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:

获取初始目标纹理贴图,将三维模型面片的顶点投影至初始目标纹理贴图中,得到初始目标纹理贴图坐标,根据初始目标纹理贴图坐标,计算初始目标纹理贴图中每个面片内像素的重心坐标,初始目标纹理贴图内像素填充为0。

根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,根据重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标。

根据初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系。

根据初始目标纹理贴图到原始纹理贴图的映射关系,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:计算初始目标纹理贴图中每个面片内像素的重心坐标的步骤包括:从纹理映射关系中读取当前处理三角形面片中三个顶点的纹理坐标;将三个顶点的纹理坐标转换为像素坐标;选取三个顶点的像素坐标中x方向最大值和最小值以及y方向最大值和最小值,构建三角形包围盒;根据当前处理三角形面片中三个顶点的纹理坐标,计算三角形包围盒内每个像素点的三角形重心坐标。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据已有原始纹理贴图的纹理映射关系,将当前处理三角形面片的顶点投影到原始纹理贴图中,得到当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标;根据三角形包围盒内每个像素点的三角形重心坐标,识别位于当前处理三角形面片内的像素;计算位于当前处理三角形面片内的像素在原始纹理贴图中像素坐标。

在一个实施例中,处理器执行计算机程序时,计算位于当前处理三角形面片内的像素在原始纹理贴图中像素坐标的公式为:

x′=λ1x1′+λ2x2′+λ3x3′,

y′=λ1y1′+λ2y2′+λ3y3′

其中,(x1′,y1′),(x2′,y2′),(x3′,y3′)为当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标,(x′,y′)为原始纹理贴图中当前处理三角形面片内的像素坐标,(λ1,λ2,λ3)为三角形重心坐标。

在一个实施例中,处理器执行计算机程序时,若像素对应的三角形重心坐标值均为非负值,则该像素位于当前处理三角形面片内。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:将初始目标纹理贴图到原始纹理贴图的映射关系保存为具有多通道的矩阵m,矩阵m的大小与初始目标纹理贴图大小一致。

在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:根据初始目标纹理贴图到原始纹理贴图的映射关系、采用插值算法,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取初始目标纹理贴图,将三维模型面片的顶点投影至初始目标纹理贴图中,得到初始目标纹理贴图坐标,根据初始目标纹理贴图坐标,计算初始目标纹理贴图中每个面片内像素的重心坐标,初始目标纹理贴图内像素填充为0。

根据已有原始纹理贴图映射关系,将三维模型面片的顶点投影至原始纹理贴图中,根据重心坐标,计算初始目标纹理贴图中的像素在原始纹理贴图中的纹理坐标。

根据初始目标纹理贴图中像素在原始纹理贴图中的纹理坐标,建立初始目标纹理贴图到原始纹理贴图的映射关系。

根据初始目标纹理贴图到原始纹理贴图的映射关系,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:计算初始目标纹理贴图中每个面片内像素的重心坐标的步骤包括:从纹理映射关系中读取当前处理三角形面片中三个顶点的纹理坐标;将三个顶点的纹理坐标转换为像素坐标;选取三个顶点的像素坐标中x方向最大值和最小值以及y方向最大值和最小值,构建三角形包围盒;根据当前处理三角形面片中三个顶点的纹理坐标,计算三角形包围盒内每个像素点的三角形重心坐标。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据已有原始纹理贴图的纹理映射关系,将当前处理三角形面片的顶点投影到原始纹理贴图中,得到当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标;根据三角形包围盒内每个像素点的三角形重心坐标,识别位于当前处理三角形面片内的像素;计算位于当前处理三角形面片内的像素在原始纹理贴图中像素坐标。

在一个实施例中,处理器执行计算机程序时,计算位于当前处理三角形面片内的像素在原始纹理贴图中像素坐标的公式为:

x′=λ1x1′+λ2x2′+λ3x3′,

y′=λ1y1′+λ2y2′+λ3y3′

其中,(x1′,y1′),(x2′,y2′),(x3′,y3′)为当前处理三角形面片的顶点在原始纹理贴图内的纹理坐标,(x′,y′)为原始纹理贴图中当前处理三角形面片内的像素坐标,(λ1,λ2,λ3)为三角形重心坐标。

在一个实施例中,处理器执行计算机程序时,若像素对应的三角形重心坐标值均为非负值,则该像素位于当前处理三角形面片内。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:将初始目标纹理贴图到原始纹理贴图的映射关系保存为具有多通道的矩阵m,矩阵m的大小与初始目标纹理贴图大小一致。

在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:根据初始目标纹理贴图到原始纹理贴图的映射关系、采用插值算法,从原始纹理贴图中拾取颜色放入初始目标纹理贴图中。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1