一种材质贴图的生成方法和装置与流程

文档序号:19421709发布日期:2019-12-14 01:34阅读:205来源:国知局
一种材质贴图的生成方法和装置与流程

本申请涉及计算机技术领域,尤其涉及一种材质贴图的生成方法和装置。



背景技术:

材质贴图又可以理解为纹理贴图、纹理映射,可以用于绘制三维应用(特别是三维游戏)中的三维对象。具体地,可以将材质贴图贴到(即映射到)与三维对象对应的三维模型的表面,使三维模型的表面呈现相应的渲染效果,从而绘制得到三维对象。

通常,为了便于三维模型绘制得到三维对象,一个三维模型可以对应多个材质贴图。然而,实际的三维应用中通常包括多个三维对象,如果一个三维模型对应多个材质贴图,那么绘制多个三维对象所需的材质贴图的数量将会非常多,占用的存储空间也比较大,从而导致三维应用所占的存储空间较大,影响用户对三维应用的正常使用。



技术实现要素:

本申请实施例提供一种材质贴图的生成方法和装置,用于解决在现有的三维应用中,由于绘制多个三维对象所需的材质贴图的数量比较多,导致三维应用所占存储空间比较大,影响用户对三维应用的正常使用的问题。

为了解决上述技术问题,本申请是这样实现的:

本申请实施例提供一种材质贴图的生成方法,包括:

按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型;每组模型中包括的三维模型的数量至少为2至多为4;

针对每组模型中包括的多个模型,获取所述多个模型各自对应的固有色信息,并基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图;所述颜色贴图中包括所述多个模型的固有色;

对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图;所述光影贴图中包括所述多个模型各自对应的光影信息;

将所述光影贴图以及所述颜色贴图进行组合,并将组合得到的一组贴图作为所述多个模型对应的目标贴图;所述目标贴图用于绘制所述多个模型各自对应的三维对象。

本申请实施例提供一种材质贴图的生成装置,包括:

分组单元,按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型;每组模型中包括的三维模型的数量至少为2至多为4;

第一生成单元,针对每组模型中包括的多个模型,获取所述多个模型各自对应的固有色信息,并基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图;所述颜色贴图中包括所述多个模型的固有色;

第二生成单元,对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图;所述光影贴图中包括所述多个模型各自对应的光影信息;

确定单元,将所述光影贴图以及所述颜色贴图进行组合,并将组合得到的一组贴图作为所述多个模型对应的目标贴图;所述目标贴图用于绘制所述多个模型各自对应的三维对象。

本申请实施例提供一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:

按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型;每组模型中包括的三维模型的数量至少为2至多为4;

针对每组模型中包括的多个模型,获取所述多个模型各自对应的固有色信息,并基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图;所述颜色贴图中包括所述多个模型的固有色;

对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图;所述光影贴图中包括所述多个模型各自对应的光影信息;

将所述光影贴图以及所述颜色贴图进行组合,并将组合得到的一组贴图作为所述多个模型对应的目标贴图;所述目标贴图用于绘制所述多个模型各自对应的三维对象。

本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:

按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型;每组模型中包括的三维模型的数量至少为2至多为4;

针对每组模型中包括的多个模型,获取所述多个模型各自对应的固有色信息,并基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图;所述颜色贴图中包括所述多个模型的固有色;

对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图;所述光影贴图中包括所述多个模型各自对应的光影信息;

将所述光影贴图以及所述颜色贴图进行组合,并将组合得到的一组贴图作为所述多个模型对应的目标贴图;所述目标贴图用于绘制所述多个模型各自对应的三维对象。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

本申请实施例提供的技术方案,在生成三维应用中多个三维对象所需的材质贴图时,可以按照类型对三维对象对应的三维模型进行分组,得到多组模型;针对每组模型中包括的多个模型,可以获取多个模型各自的固有色信息,并基于固有色信息分别进行色块提取,得到包括多个模型的固有色的颜色贴图;对多个模型分被进行光影烘焙,得到包括多个模型的光影信息的光影贴图;将颜色贴图和光影贴图进行组合,并将组合得到的一组贴图作为多个模型的目标贴图,该目标贴图可以用于绘制该多个模型各自对应的三维对象。这样,通过将三维应用中多个三维对象的三维模型进行分组,针对每组模型中的多个模型,通过将多个模型的固有色合并到一张颜色贴图,并将多个模型的光影信息合并到一张光影贴图,可以有效减少每组模型对应的材质贴图的数量,进一步减少三维应用中三维对象所需的材质贴图的数量,从而减少三维应用所占的存储空间,方便用户的正常使用。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请的一个实施例材质贴图的生成方法的流程示意图;

图2是本申请的一个实施例材质贴图的生成方法的流程示意图;

图3(a)是本申请的一个实施例材质贴图的生成方法的示意图;

图3(b)是本申请的一个实施例材质贴图的生成方法的示意图;

图3(c)是本申请的一个实施例材质贴图的生成方法的示意图;

图3(d)是本申请的一个实施例材质贴图的生成方法的示意图;

图3(e)是本申请的一个实施例材质贴图的生成方法的示意图;

图4为本申请实施例提供的一种电子设备的结构示意图;

图5为本申请实施例提供的一种材质贴图的生成装置的结构示意图。

具体实施方式

通常,三维应用中的三维对象可以基于材质贴图以及三维对象对应的三维模型绘制得到。具体地,在绘制三维对象时,可以将材质贴图贴到(即映射到)与三维对象对应的三维模型的表面,就像给墙面上贴壁纸一样,使三维模型的表面呈现相应的渲染效果,从而可以绘制得到的三维对象,整个过程可以极大减少制作形体和纹理的计算量。

目前,一个三维模型通常需要对应多个材质贴图,即一个三维对象需要多个材质贴图绘制得到,然而,在实际应用中,三维应用中包括的三维对象的数量通常比较多,这样,多个三维对象所需的材质贴图数量也会比较多,导致材质贴图所占的存储空间比较大,针对三维应用而言,如果三维应用中三维对象所需的材质贴图所占的存储空间较大,那么将会导致三维应用所占的存储空间比较大,极大影响用户对三维应用的正常使用。

例如,三维应用中三维对象所需的材质贴图所占的存储空间较大时,会导致三维应用的安装包的体积较大,这样,用户在下载该三维应用时,下载时长将会比较长,从而影响用户的正常使用。

为了解决上述技术问题,本申请实施例提供一种材质贴图的生成方法和装置,该方法包括:按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型;每组模型中包括的三维模型的数量至少为2至多为4;针对每组模型中包括的多个模型,获取所述多个模型各自对应的固有色信息,并基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图;所述颜色贴图中包括所述多个模型的固有色;对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图;所述光影贴图中包括所述多个模型各自对应的光影信息;将所述光影贴图以及所述颜色贴图进行组合,并将组合得到的一组贴图作为所述多个模型对应的目标贴图;所述目标贴图用于绘制所述多个模型各自对应的三维对象。

这样,在生成三维应用中多个三维对象所需的材质贴图时,通过将三维应用中多个三维对象的三维模型进行分组,针对每组模型中的多个模型,通过将多个模型的固有色合并到一张颜色贴图,并将多个模型的光影信息合并到一张光影贴图,可以有效减少每组模型对应的材质贴图的数量,进一步减少三维应用中三维对象所需的材质贴图的数量,从而减少三维应用所占的存储空间,方便用户的正常使用。

下面结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

以下结合附图,详细说明本申请各实施例提供的技术方案。

图1为本申请实施例提供的一种材质贴图的生成方法的流程示意图。所述方法如下所述。

s102:按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型。

在s102中,在生成三维应用中的三维对象所需的材质贴图时,可以将三维应用中多个三维对象对应的三维模型进行分类,将相同类型的三维模型划分为一组,得到多组模型。

例如,可以将多个三维模型中属于“战舰”的多个模型划分为一组,该组模型的类型为“战舰”,将属于“战船”的多个模型划分为一组,该组模型的类型为“战船”。

本实施例中,三维应用可以是三维小游戏,这些三维小游戏可以具有极简风格,且在游戏中无环境光或对环境光的要求不高;三维对象可以理解为三维应用在运行的过程中所涉及到的三维对象,例如三维游戏中的角色等;三维模型可以用于结合材质贴图绘制得到三维对象。

需要说明的是,本实施例在对多个三维模型进行分组时,为了便于实现减少材质贴图的目的,每组模型包括的模型的数量需要大于或等于2,且小于或等于4,原因在于,如果一组模型中包括的模型数量为1,那么,将无法减少材质贴图的数量;如果一组模型中包括的模型数量大于4,那么,在后续生成该组模型中多个模型对应的光影贴图时,将无法生成相应的光影贴图,具体可以参见后续记载的相应内容,这里不再详细说明。

s104:针对每组模型中包括的多个模型,获取所述多个模型各自对应的固有色信息,并基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图;所述颜色贴图中包括所述多个模型的固有色。

在s104中,在得到多组模型后,针对每组模型,可以获取每组模型中包括的多个模型各自对应的固有色信息。为了便于理解,以下可以以其中一组模型为例进行说明。

固有色可以理解为物体在白色光源下呈现出来的色彩,在获取一组模型中包括的多个模型各自对应的固有色信息时,可以从多个模型各自的原始贴图中提取得到,其中,多个模型各自的原始贴图可以基于多个模型预先确定得到,具体可以理解为绘制多个模型各自对应的三维对象时所需的原有的贴图,一个模型的原始贴图中可以包括该模型的固有色和光影信息,且一个模型的固有色可以是一个,也可以是多个。

此外,在获取一组模型中包括的多个模型各自对应的固有色信息时,也可以对多个模型的相关文件进行分析,基于分析结果获取得到多个模型各自对应的固有色信息,其中,多个模型的相关文件中记录有多个模型各自对应的固有色信息。

在得到一组模型中多个模型各自对应的固有色信息后,可以基于固有色信息分别进行色块提取,得到多个模型对应的一张颜色贴图,其中,该张颜色贴图中可以包括多个模型各自的固有色。

在基于多个模型各自对应的固有色信息分别进行色块提取,得到多个模型对应的颜色贴图时,具体实现方式如下:

首先,基于多个模型各自对应的固有色信息,提取得到多个模型各自的固有色对应的色块。

具体地,以其中一个模型为例,可以基于模型对应的固有色信息,确定得到模型的固有色对应的色码,其中,一个模型的固有色可以是一个,也可以是多个。在得到色码后,可以基于色码在调色板中进行搜索,搜索到的颜色即为模型的固有色,基于模型的固有色,可以得到对应的色块。

在得到一个模型的固有色对应的色块后,可以基于相同的方法,提取得到一组模型中其他模型的固有色对应的色块。其中,每个固有色对应的色块的大小可以相同。

在一种实现方式中,若多个模型具有各自的原始贴图,则可以由用户手动提取得到多个模型各自的固有色对应的色块。具体地,以其中一个模型为例,用户可以在制图软件中对模型的原始贴图中的固有色进行色码的提取,在提取得到色码后,可以手动打开调色板,基于提取到的色码在调色板中搜索对应的颜色,搜索到的颜色即为该模型的固有色,基于模型的固有色,可以得到对应的色块。这样,可以基于相同的方法,由用户提取得到一组模型中其他模型的固有色对应的色块。

其次,将多个模型各自的固有色对应的色块添加至画布贴图中。

在得到多个模型各自的固有色的色块后,可以将这些色块添加至一张画布贴图中,即将多个模型各自的固有色对应的色块合并到一张画布贴图中。其中,画布贴图的大小可以是1024*1024,当然,也可以根据实际情况确定画布的大小,这里不做具体限定。

最后,对画布贴图进行压缩,得到多个模型对应的颜色贴图。

在得到画布贴图后,可以对画布贴图进行压缩,以减少画布贴图的大小(即所占的存储空间)。其中,在对画布贴图进行压缩时,优选地,可以将画布贴图中每个色块可以压缩至10个像素左右。

在对画布贴图进行压缩后,可以得到多个模型对应的一张颜色贴图,其中,该颜色贴图中包括多个模型的固有色。

在得到多个模型对应的颜色贴图后,可以将颜色贴图进行存储,存储的格式包括但不限于png格式。

需要说明的是,针对s102中划分得到的多组模型而言,多组模型中包括的模型的固有色对应的色块均可以添加至同一张画布贴图中,这样,三维应用中多个三维对象对应的三维模型均可以对应一张颜色贴图,可以在很大程度上减少所需的颜色贴图的数量。

s106:对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图,所述光影贴图中包括所述多个模型各自对应的光影信息。

在s106中,可以对一组模型中包括的多个模型分别进行光影烘焙,得到多个模型对应的一张光影贴图,其中,该张光影贴图中可以包括多个模型各自对应的光影信息。

本实施例中,光影烘焙可以理解为将经过高级渲染器计算的光影效果,记录在贴图上面,即将模型与模型之间的光阴关系通过图片的形式转换出来,这样就形成了一种贴图,将这种贴图控制在模型上,可以得到一种假的但很真实的效果。

本实施例在对多个模型分别进行光影烘焙,得到多个模型对应的光影贴图时,具体实现方式如下:

首先,对多个模型进行光影烘焙,得到多个模型各自对应的子光影贴图。

本实施例中,在对多个模型分别进行光影烘焙时,每个模型的烘焙方法相同,以其中一个模型为例,在对该模型进行光影烘焙时,可以包括以下步骤:

第一:获取模型的光影层uv。

uv可以理解为贴图影射到模型表面的依据,其中,u和v分别是图片在显示器的水平、垂直方向上的坐标,取值一般都是0~1。

本实施例中,用户可以预先在任意的三维软件中,基于模型创建对应的光影层uv,在创建得到模型的光影层uv后,可以将光影层uv进行保存,这样,在获取该模型的光影层uv时,可以获取由用户预先保存的该模型的光影层uv。

第二:将模型的光影层uv展开。

具体地,可以将模型的光影层uv分解,将分解后的光影层uv全部展开。需要注意的是,在将光影层uv展开时,需要保证光影层uv不能有任何的重叠部分,这样,在后续进行光影烘焙时,可以使得光影层uv的每个像素坐标具有不一样的光影效果。

第三:模拟模型对应的三维对象在目标引擎中的环境光照。

目标引擎可以理解为三维对象所在的三维应用对应的引擎,环境光照可以理解为三维对象在目标引擎中的真实环境光照。本实施例中,可以在三维软件中模拟模型对应的三维对象在目标引擎中的环境光照。

第四:清空模型的固有色材质,并将初始材质赋予模型。

本实施例中的模型具有固有色材质,固有色材质会对烘焙产生影响(因为烘焙时的光照是黑色或灰色),因此,为了避免固有色材质对光影烘焙的影响,可以将模型的固有色材质清空,以去掉模型的固有色,同时,为了便于烘焙,还可以新建初始材质,并将初始材质赋予模型,其中,初始材质可以是与目标引擎适配的且仅包括黑白灰颜色的材质。

第五:在模拟的环境光照下,基于预设的烘培参数对模型进行烘焙,得到模型对应的子光影贴图。

烘焙参数可以包括采样率等,可以根据实际需要预先设置得到。在基于预设的烘焙参数对模型进行烘焙后,可以得到模型对应的子光影贴图,其中,一个模型对应一张子光影贴图,一张子光影贴图中包括一个模型的光影信息,子光影贴图中包含的颜色为黑色、白色和灰色。

这样,在基于上述记载的方法得到一个模型对应的一张子光影贴图后,可以基于相同的方法对多个模型中的其他模型进行光影烘焙,得到多个模型各自对应的子光影贴图。

其次,在得到多个模型各自对应的子光影贴图后,可以将多个模型各自对应的子光影贴图合并输入至rgba通道中,得到多个模型对应的光影贴图。

在将多个模型各自对应的子光影贴图合并输入至rgba通道时,一张子光影贴图可以对应一个通道。

需要说明的是,输入rgba通道的子光影贴图的数量,需要至少为2至多为4,这样,才可以保证多个模型各自对应的子光影贴图可以合并输入至rgba通道中,这也是上述s102中提及的一组模型中包括的模型的数量至少为2至多为4的原因。

具体地,若一组模型中包括的模型的数量为2,即合并输入至rgba通道的子光影贴图的数量为2,则可以将一张子光影贴图输入至r通道,另一张子光影贴图输入至g通道,b和a通道为空;若模型的数量为3,即合并输入至rgba通道的子光影贴图的数量为3,则可以将一张子光影贴图输入至r通道,一张子光影贴图输入至g通道,最后一张子光影贴图输入至b通道,a通道为空;若模型的数量为4,即合并输入至rgba通道的子光影贴图的数量为4,则可以将4张子光影贴图分别输入至r、g、b、a通道。

在将多张子光影贴图合并输入至rgba通道中后,可以输出一张光影贴图,该张光影贴图中包括多个模型各自的光影信息。

s108:将所述光影贴图以及所述颜色贴图进行组合,并将组合得到的一组贴图作为所述多个模型对应的目标贴图;所述目标贴图用于绘制所述多个模型各自对应的三维对象。

在s108中,可以将s104中确定得到的颜色贴图以及s106中确定得到的光影贴图进行组合,即将颜色贴图和光影贴图作为一组贴图,并该组贴图作为多个模型对应的目标贴图,该目标贴图可以用于绘制得到多个模型各自对应的三维对象。

本实施例在得到目标贴图后,还可以基于其中的颜色贴图得到包括颜色贴图中的固有色的目标模型,并将目标模型和目标贴图进行存储,以便基于该目标模型和目标贴图绘制多个模型各自对应的三维对象,具体实现方式如下:

首先,获取多个模型各自的颜色层uv和光影层uv。

本实施例中,用户可以预先在任意的三维软件中,基于多个模型分别创建各自的颜色层uv和光影层uv,在创建得到多个模型各自的颜色层uv和光影层uv后,可以将这些颜色层uv和光影层uv进行保存,这样,在获取多个模型各自的颜色层uv和光影层uv时,可以获取由用户预先保存的这些颜色层uv和光影层uv。其中,这里的光影层uv是上述s106中记载的光影层uv,并基于相同的方法确定得到。

其次,将多个模型各自的颜色层uv与颜色贴图中包括的固有色相对应,得到多个中间模型。

具体地,用户可以在任意的三维软件中编辑多个模型各自的颜色层uv,将多个模型各自的颜色层uv与颜色贴图中的固有色进行对应,即将颜色贴图中的固有色放置到背景中对照,将颜色贴图中的固有色分别赋予多个模型各自的颜色层uv的特定位置,最终可以得到包括颜色贴图中的固有色以及光影层uv的多个模型,这里为了便于区分,可以由多个中间模型表示。

再次,清空多个中间模型的材质,得到多个目标模型。

由于在不同的引擎中基于模型绘制三维对象时,需要适配相应的材质,因此,为了使模型适用于不同的引擎,可以在得到多个中间模型后,将多个中间模型的材质清空,得到多个目标模型,这样,后续在引擎中绘制三维对象时,可以赋予目标模型与引擎适配的材质。

最后,将多个目标模型以及目标贴图进行存储。

在得到多个目标模型后,可以将多个模型以fbx的形式进行存储,将目标贴图以图片的形式进行存储,这样,可以得到包括颜色贴图中的固有色和光影层uv的多个目标模型,多个目标模型对应两张贴图,一张是颜色贴图,一张是光影贴图。

在基于上述记载的方法得到一组模型对应的目标模型和目标贴图后,可以基于相同的方法确定得到其他组模型对应的目标模型和目标贴图。

本实施例中,基于模型的多uv识别应用和图片多通道可承载黑白图的特性,通过采集每组模型中包括的多个模型的固有色,可以对模型的固有色部分进一步压缩多余像素,通过对每组模型中包括的多个模型进行光影烘焙,并利用亮度对比值能够使用多通道可承载黑白图的特性,可以将多个模型的光影信息反映在一张光影贴图中,这样,由于一组模型对应的目标贴图的数量可以减少为2,因此,相较于一组模型中每个模型各自对应多个材质贴图而言,可以有效减少贴图数量,针对多组模型而言,由于每组模型对应的贴图数量减少,因此,可以多组模型对应的贴图数量也会相应减少,针对三维应用而言,由于减少了三维应用中三维对象所需的贴图数量,因此,可以有效减少三维应用所占的存储空间,方便用户对三维应用的正常使用,例如,可以减少用户对三维应用的下载时长等。

可选地,针对每组模型而言,在将对应的多个目标模型和目标贴图存储后,还可以基于该多个目标模型和目标贴图绘制对应的三维对象。以其中一组模型为例,在绘制三维对象时,可以包括如下步骤:

首先,在目标引擎中导入多个目标模型以及目标贴图。

目标引擎与上述s106中记载的目标引擎相同,即为待绘制的三维对象所在的三维应用对应的引擎,在绘制三维对象时,可以将多个目标模型和目标贴图导入目标引擎中。

其次,在目标引擎中新建多个材质。

基于上述记载的内容可知,多个目标模型中的材质已被清空,因此,为了便于绘制,可以新建多个材质,该多个材质与目标引擎适配,且多个材质的数量等于多个目标模型的数量,以便后续将多个材质赋予多个目标模型。

再次,将多个材质分别赋予多个目标模型。

最后,将目标贴图添加至多个目标模型中,得到具有颜色和光影的多个三维对象,其中,三维对象的个数与目标模型的个数相同,一个三维对象对应一个目标模型。

这里可以理解为将目标贴图贴到多个目标模型上,使得多个目标模型具有颜色效果和光影效果,从而得到与多个目标模型各自对应的三维对象。具体可以包括以下步骤:

第一:将颜色贴图与多个目标模型的颜色层uv对应。

这里可以将颜色贴图中包括的固有色与多个目标模型中的颜色层uv相对应,将固有色赋予颜色层uv的特定位置。在对应后,可以使得多个目标模型具有与颜色贴图中包括的固有色对应的颜色效果。

第二:将光影贴图的rgba通道与多个目标模型的光影层uv对应。

这里可以基于上述在得到多个模型的光影贴图时,将多个子光影贴图合并输入rgba通道的方式,将光影贴图的rgba通道分别与多个目标模型的光影层uv对应。在对应后,可以使得多个目标模型呈现将光影贴图的rgba通道与光影层uv对应后的光影效果。

第三:基于颜色层uv所呈现的颜色效果,以及光影层uv对应rgba通道后所呈现的光影效果,将颜色贴图以及光影贴图贴入多个目标模型的材质。

第四:将颜色贴图以及光影贴图相乘,得到具有颜色和光影的多个三维对象。

这样,可以基于多个目标模型以及目标贴图绘制得到与多个目标模型各自对应的三维对象,这些三维对象具有颜色和光影。

为了便于理解本申请实施例提供的整个技术方案,可以参见图2。图2为本申请的一个实施例材质贴图的生成方法的流程示意图,图2所示的实施例具体可以包括以下步骤:

s201:按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型。

其中,每组模型中包括的模型的数量至少为2至多为4。

如图3(a)所示,可以将属于“轿车”这一类型的模型1、模型2、模型3和模型4划分为一组模型,其中,图3(a)中每个模型的灰度不同,不同的灰度可以表示不同的材质。

s202:针对每组模型中包括的多个模型,获取多个模型各自对应的固有色信息。

这里以其中一组模型为例进行说明,在获取该组模型中包括的多个模型各自对应的固有色信息时,可以基于多个模型各自对应的原始贴图获取得到,其中,一个模型可以对应一张原始贴图,该原始贴图中包括一个模型的固有色,此外,也可以通过对多个模型的相关文件进行分析,得到多个模型各自对应的固有色信息,这里不做具体限定。

s203:基于多个模型各自的固有色信息,提取得到多个模型各自的固有色对应的色块。

以其中一个模型为例,可以基于模型的固有色信息,提取得到模型的固有色对应的色码,基于色码,可以得到模型的固有色,进而得到模型的固有色对应的色块。其中,一个模型的固有色可以是一个,也可以是多个。

s204:将多个模型各自的固有色对应的色块添加至画布贴图中。

画布贴图的大小可以是1024*1024,这里可以将多个模型的固有色对应的色块添加合并至画布贴图中。

仍以图3(a)所示的4个模型为例,假设模型1的固有色包括a、b,模型2的固有色包括b、c,模型3的固有色包括a、b和c,模型4的固有色包括b、c和d,则,将4个模型的固有色对应的色块添加至画布贴图中,可以得到如图3(b)所示的画布贴图。

s205:对画布贴图进行压缩,得到多个模型对应的颜色贴图。

在得到颜色贴图后,可以将颜色贴图保存,以备后续使用。

s206:获取多个模型各自的颜色层uv和光影层uv。

多个模型的颜色层uv和光影层uv可以预先基于多个模型创建得到。

s207:将多个模型各自的颜色层uv与颜色贴图中包括的固有色相对应,得到多个中间模型。

其中,多个中间模型中可以包括颜色贴图中的固有色以及多个模型中的光影层uv。

如图3(c)所示,将模型1中颜色层uv与颜色贴图中的固有色a和b对应,可以将颜色a赋予模型1的颜色层uv(可以视为模型1的车表面)的位置11,将颜色b赋予模型1的颜色层uv的位置12,得到具有固有色a和b模型1,且模型1中包括光影层uv(图3(c)中并未示出)。

同理,可以将模型2中颜色层uv与颜色贴图中的固有色b和c对应,将模型3中颜色层uv与颜色贴图中的固有色a、b和c对应,将模型4中颜色层uv与颜色贴图中的固有色b、c和d对应,得到具有固有色b和c以及光影层uv的模型2,具有固有色a、b和c以及光影层uv的模型3,具有固有色b、c和d以及光影层uv的模型4(图3(c)中并未一一示出模型2、3和4),这里不再一一详细说明。

s208:清空多个中间模型的材质,得到多个目标模型。

在得到目标模型后,可以保存多个目标模型,以备后续使用。

s209:将多个模型各自的光影层uv展开。

在展开时,可以分别将多个模型的光影层uv分解,并在分解后,展开分解后多个模型各自的光影层uv。这里需要保证每个模型的光影层uv不能有重叠的部分,以便在后续烘焙之后,光影层uv的不同像素可以具有不同的光影效果。

以上述图3(a)所示的模型1为例,在将模型1的光影层uv展开后,可以得到如图3(d)所示的展开图,其中,展开部分没有任何重叠。

s210:模拟多个模型对应的三维对象在目标引擎中的环境光照。

s211:清空多个模型的固有色材质,并将初始材质赋予多个模型。

初始材质可以是与目标引擎适配的且仅包括黑白颜色的材质。

s212:在环境光照下,基于预设的烘培参数分别对多个模型进行烘焙,得到多个模型各自对应的子光影贴图。

其中,一个模型可以对应一个张子光影贴图,一张子光影贴图中包括的颜色为黑色、灰色和白色。

s213:将多张子光影贴图合并输入至rgba通道中,得到多个模型对应的光影贴图。

如图3(e)所示,在得到图3(a)所示的模型1、模型2、模型3和模型4各自的子光影贴图后,可以将模型1的子光影贴图1与r通道对应,将模型2的子光影贴图1与g通道对应,将模型3的子光影贴图3与b通道对应,将模型4的子光影贴图4与a通道对应,在将四个模型的子光影贴图输入rgba通道后,可以输出四个模型对应的光影贴图,该光影贴图中包括模型1、模型2、模型3和模型4的光影信息。

至此,可以将s205中得到颜色贴图和s213中得到的光影贴图的组合,作为s202中记载的多个模型对应的目标贴图,该目标贴图可以用于绘制该多个模型各自对应的三维对象。

s214:在目标引擎中导入多个目标模型、光影贴图和颜色贴图。

s215:在目标引擎中新建多个材质,并将新建的多个材质分别赋予多个目标模型。

其中,新建的多个材质与目标引擎适配,且,多个材质的数量等于多个目标模型的数量。

s216:将光影贴图和颜色贴图添加至多个目标模型中,得到具有颜色和光影的多个三维对象。

具体地,可以将颜色贴图与多个目标模型的颜色层uv对应;将光影贴图的rgba通道与多个目标模型的光影层uv对应;基于颜色层uv所呈现的颜色效果,以及光影层uv对应rgba通道后所呈现的光影效果,将颜色贴图以及光影贴图贴入多个目标模型的材质;将颜色贴图以及光影贴图相乘,得到具有颜色和光影的多个三维对象,其中,多个三维对象的个数与多个目标对象的个数相同,一个三维对象对应一个目标模型。

本申请实施例提供的技术方案,基于模型的多uv识别应用和图片多通道可承载黑白图的特性,在生成三维应用中多个三维对象所需的材质贴图时,通过将三维应用中多个三维对象的三维模型进行分组,针对每组模型中的多个模型,通过将多个模型的固有色合并到一张颜色贴图,并将多个模型的光影信息合并到一张光影贴图,可以有效减少每组模型对应的材质贴图的数量,进一步减少三维应用中三维对象所需的材质贴图的数量,从而减少三维应用所占的存储空间,方便用户的正常使用。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

图4是本申请的一个实施例电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成材质贴图的生成装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型;每组模型中包括的三维模型的数量至少为2至多为4;

针对每组模型中包括的多个模型,获取所述多个模型各自对应的固有色信息,并基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图;所述颜色贴图中包括所述多个模型的固有色;

对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图;所述光影贴图中包括所述多个模型各自对应的光影信息;

将所述光影贴图以及所述颜色贴图进行组合,并将组合得到的一组贴图作为所述多个模型对应的目标贴图;所述目标贴图用于绘制所述多个模型各自对应的三维对象。

上述如本申请图4所示实施例揭示的材质贴图的生成装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图1和图2的方法,并实现材质贴图的生成装置在图1和图2所示实施例的功能,本申请实施例在此不再赘述。

当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1和图2所示实施例的方法,并具体用于执行以下操作:

按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型;每组模型中包括的三维模型的数量至少为2至多为4;

针对每组模型中包括的多个模型,获取所述多个模型各自对应的固有色信息,并基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图;所述颜色贴图中包括所述多个模型的固有色;

对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图;所述光影贴图中包括所述多个模型各自对应的光影信息;

将所述光影贴图以及所述颜色贴图进行组合,并将组合得到的一组贴图作为所述多个模型对应的目标贴图;所述目标贴图用于绘制所述多个模型各自对应的三维对象。

图5为本申请实施例提供的一种材质贴图的生成装置的结构示意图。所述装置可以包括:分组单元51、第一生成单元52、第二生成单元53以及确定单元54,其中:

分组单元51,按照类型对三维应用中多个三维对象对应的三维模型进行分组,得到多组模型;每组模型中包括的三维模型的数量至少为2至多为4;

第一生成单元52,针对每组模型中包括的多个模型,获取所述多个模型各自对应的固有色信息,并基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图;所述颜色贴图中包括所述多个模型的固有色;

第二生成单元53,对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图;所述光影贴图中包括所述多个模型各自对应的光影信息;

确定单元54,将所述光影贴图以及所述颜色贴图进行组合,并将组合得到的一组贴图作为所述多个模型对应的目标贴图;所述目标贴图用于绘制所述多个模型各自对应的三维对象。

可选地,所述第一生成单元52,基于所述固有色信息分别进行色块提取,得到所述多个模型对应的颜色贴图,包括:

基于所述固有色信息,提取得到所述多个模型各自的固有色对应的色块;

将所述多个模型各自的固有色对应的色块添加至画布贴图中;

对所述画布贴图进行压缩,得到所述多个模型对应的颜色贴图。

可选地,所述第二生成单元53,对所述多个模型分别进行光影烘焙,得到所述多个模型对应的光影贴图,包括:

对所述多个模型分别进行光影烘焙,得到所述多个模型各自对应的子光影贴图,其中,一张子光影贴图中包括一个模型的光影信息;

将所述多个模型各自对应的子光影贴图合并输入至rgba通道中,得到所述多个模型对应的光影贴图。

可选地,所述第二生成单元53,对所述多个模型分别进行光影烘焙,得到所述多个模型各自对应的子光影贴图,包括:

针对其中一个模型,执行以下操作:

获取所述模型的光影层uv,所述颜色层uv基于所述多个模型创建得到;

将所述模型的光影层uv展开;

模拟所述模型对应的三维对象在目标引擎中的环境光照;

清空所述模型的固有色材质,并将初始材质赋予所述模型;

在所述环境光照下,基于预设的烘培参数对所述模型进行烘焙,得到所述模型对应的子光影贴图。

可选地,所述确定单元54,在将组合得到的一组贴图作为所述多个模型对应的目标贴图后,还包括:

获取所述多个模型各自的颜色层uv和光影层uv,所述多个模型的颜色层uv和光影层uv基于所述多个模型创建得到;

将所述多个模型各自的颜色层uv与所述颜色贴图中包括的固有色相对应,得到多个中间模型,所述多个中间模型中包括所述颜色贴图中的固有色以及所述多个模型各自的光影层uv;

清空所述多个中间模型的材质,得到多个目标模型;

将所述多个目标模型以及所述目标贴图进行存储。

可选地,所述装置还包括绘制单元55,其中:

所述绘制单元55,在所述确定单元54将所述多个目标模型以及所述目标贴图进行存储后,在目标引擎中导入所述多个目标模型以及所述目标贴图;

在所述目标引擎中新建多个材质,所述多个材质的数量等于所述多个目标模型的数量;

将所述多个材质分别赋予所述多个目标模型;

将所述目标贴图添加至所述多个目标模型中,得到具有颜色和光影的多个三维对象,一个三维对象对应一个目标模型。

可选地,所述绘制单元55,将所述目标贴图添加至所述多个目标模型中,得到具有颜色和光影的多个三维对象,包括:

将所述颜色贴图与所述多个目标模型的颜色层uv对应;

将所述光影贴图的rgba通道与所述多个目标模型的光影层uv对应;

基于所述颜色层uv所呈现的颜色效果,以及所述光影层uv对应rgba通道后所呈现的光影效果,将所述颜色贴图以及所述光影贴图贴入所述多个目标模型的材质;

将所述颜色贴图以及所述光影贴图相乘,得到具有颜色和光影的多个三维对象。

本申请实施例提供的材质贴图的生成装置还可执行图1和图2的方法,并实现材质贴图的生成装置在图1和图2所示实施例的功能,本申请实施例在此不再赘述。

总之,以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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