一种基于二维图像的纹理替换方法与流程

文档序号:17798264发布日期:2019-05-31 20:55阅读:315来源:国知局
一种基于二维图像的纹理替换方法与流程

本发明属于计算机图形学领域,涉及一种基于二维图像的纹理替换方法。



背景技术:

对于一个三维场景进行渲染,一般情况下需要花费二十分钟时间,如果场景更为复杂,可能需要更多的时间,并且每替换一套不同材质,都需要重新进行渲染,如果对于一个由家具模型组成的室内场景,又或者说一个新发明的汽车进行内室设计,都需要通过替换不同的材质查看怎样的材质才能得到好的效果。但是每次都必须重新渲染,因此对于三维模型的渲染是一件极其浪费时间的事情。

但是,现在越来越多三维场景的应用,包括三维游戏,三维室内装修等等,如果可以利用之前一次渲染的成果,并且不要求极其细致的渲染,就可以通过简单的光照模型以及基本的美学基础进行简单的纹理替换。因此这里提出了一种基于二维图像的纹理替换方法,在保证效果的情况下大大的增加了速度,使用预先渲染的模型的整体效果图以及部分中间渲染结果,仅仅替换需要替换材质的部分,替换后仍然保持整体明暗的协调性。这种方式可以用于在不特别要求极致效果的情况下进行室内装修设计,也可以进行现实场景模拟等。



技术实现要素:

发明目的:本发明所要解决的问题是针对现有技术的不足,提供基于一种二维图像的纹理替换方法,从而在保证效果的情况下大大加速了纹理替换速度。

技术方案:本发明公开了一种基于二维图像的纹理替换方法,其核心在于利用一次三维渲染的中间结果,仅仅需要通过三维渲染得到的二维图片,从而为场景中的每个物体或者场景本身进行纹理替换,包括以下步骤:

步骤1,导出模型信息:在3dmax中建立三维模型,并进行渲染,将渲染后三维模型的各个分量导出,包括三维模型的法线信息,光照信息,高光信息,掩码信息,纹理贴图时UV信息(U和V分别是图片在显示器水平、垂直方向上的坐标,取值一般都是0~1,也就是水平方向的第U个像素/图片宽度,垂直方向的第V个像素/图片高度)以及整体渲染效果图。

步骤2,准备好材质:准备好要替换的材质信息,包括材质的法线信息,颜色信息(即漫反射光照信息),高光信息。

步骤3,根据三维模型图片大小计算纹理贴图:根据三维模型图片大小计算对应的材质贴图,包括材质的法线贴图,颜色贴图以及高光贴图。

步骤4,材质法线与三维模型法线的融合:将得到的材质的法线图片与模型的法线图片采用点对点融合。以模型法线为主,材质法线为辅实现模型法线的微调。

步骤5,计算漫反射信息:根据融合后的法线信息以及设置的光线信息计算替换材质后的整体漫反射信息。

步骤6,高光信息的融合:将三维模型本身的高光信息和材质的高光信息进行融合得到替换材质后的整体高光信息。

步骤7,计算颜色信息:计算替换材质后三维模型整体显示的颜色信息Color。

步骤8,整体融合计算:将颜色信息Color,替换材质后的漫反射信息以及高光信息进行融合,并进行整体微调得到最终替换材质后的效果。

其中,步骤1包括以下步骤:

步骤1-1,在3dmax中建立三维模型,并进行渲染,得到模型整体渲染效果图,将渲染结果保存为图片,记为beauty.png,该图片主要是为了实现纹理部分替换,因为一个场景中可能有多个模型,在渲染的时候也许场景中并不是所有模型都需要替换材质,因此整体渲染效果图主要是使得不需要纹理替换的模型部分其效果仍然是原来渲染的效果;

步骤1-2,渲染完成后需要导出以下5种图片:

第1需要渲染出三维模型场景的法线信息,并保存为图片,记为normal.png;

第2需要渲染出三维模型场景的光照信息,并保存为图片,记为diffuse.png;

第3需要渲染出三维模型场景的高光信息,并保存为图片,记为specular.png;

第4需要渲染出三维模型场景的纹理坐标贴图信息,并保存为图片,记为UV.png(在UV纹理坐标贴图中,UV中每一个坐标点的像素值代表了需要选取纹理中对应位置的像素值),这里的UV一般选择重复度为1,因此在纹理替换时用户可以手动选择替换纹理的重复度;

第5需要渲染出三维模型场景中每一个独立物体的掩码信息,并保存为图片,记为mask.png(一般的mask采用纯白色表示物体,纯黑色表示非物体所在位置即不需要替换纹理的地方),以便于在纹理替换时可以选择性的替换其中的一部分,如果需要替换多个物体这里的mask可以有多个,在实验中采用了替换一个物体,因此存储其中一个物体的mask;

步骤2包括以下步骤:

步骤2-1,使用SIS-A42标准型扫描仪扫描(本扫描仪是北京晨风驷铁信息科技有限公司提供)需要替换的材质;

步骤2-2,通过扫描仪软件对扫描的材质进行拼切,得到上下可拼接,左右可拼接的材质,导出材质的颜色信息(也可以理解为漫反射光照信息,因为材质在只有漫反射的情况下反射的光线记为材质本身发颜色信息),高光信息以及法线信息,并存储为图片,颜色信息存储为图片texDif.png,高光信息存储为图片texSpe.png,法线信息存储为图片texNor.png。

步骤3包括以下步骤:

步骤3-1,根据需要替换的纹理大小以及导出的模型图片的大小计算纹理重复度,假设横纵方向的重复分别为repeatX和repeatY,则:

其中,tw表示步骤2得到的材质图片的宽度,th表示步骤2得到的材质图片的高度,mw表示三维模型图片的宽度,mh表示三维模型图片的高度,repeatX的计算表示当tw大于mw时repeatX=1,否则repeatY的计算同repeatX。这里主要是为了防止纹理在进行替换的时候有拉伸,因此在替换纹理之前首先对纹理进行处理,保证纹理的大小与三维模型图片的大小一致。

步骤3-2,根据步骤1得到的三维模型整体渲染效果图的大小以及步骤2得到的材质图片的大小合成与步骤1导出的三维模型图片大小一致的材质贴图。根据重复度信息得到材质法线信息图片texNor.png对应的材质法线贴图texNormal.png,根据重复度信息得到材质颜色信息图片texDif.png对应的材质颜色贴图texDiffuse.png,根据重复度信息得到材质高光信息图片texSpe.png对应的材质高光贴图texSpecular.png。

步骤4包括以下步骤:

步骤4-1,将得到的材质法线贴图texNormal.png与导出的三维模型法线图片normal.png进行融合,材质法线贴图texNormal中的每点以导出的三维模型法线图片normal.png中的每一点为基础进行旋转,得到替换纹理后更多细节的法线图,记为newNormal.png。这里采用了JeppeRevallFrisvad提出的法线融合方法(参考文章Building an Orthonormal Basis from a 3D Unit Vector Without Normalization)。假设有基础法线t以及细节法线u,则最后融合后的法线r为:

其中t′=tx,ty,tz+1],u′=[-ux,-uy,uz],

其中t,t′,u,u′以及r都是三维向量,t′表示根据基础法线t得到的中间计算法线,u′表示根据细节法线u得到的中间计算法线,tx表示基础法线t的x分量,ty表示基础法线t的y分量,tz表示基础法线t的z分量,ux表示细节法线u的x分量,uy表示细节法线u的y分量,uz表示细节法线u的z分量。

步骤5包括以下步骤:

步骤5-1,为了模拟出全局光照的效果并且提高计算效率,至少设置四个光源,这里假设所有的光源都是平行光,其中有一个主光源,三个副光源,若光源数量多于四,仍然是一个主光源,其余的为副光源。

步骤5-2,假设四个光源的光线方向分别为L1,L2,L3,L4,其中L1为主光源,则替换材质后的漫反射信息newDiffuse表示如下:

其中clamp表示将结果截取至0到1之间,将替换材质后的漫反射信息newDiffuse保存到图片newDiffuse.png中。newNormal表示步骤4-1中得到的融合后的法线信息,Li表示光线方向,i取值为2、3和4,分别表示三个辅助光源的光线方向。

步骤6包括:

根据三维模型导出的高光图片specular.png以及材质的高光图片计算替换纹理后的高光信息,并对此高光信息进行调整,这里采用了材质的基本光照信息进行调整,则通过如下公式计算替换材质后的高光信息newSpecular:

newSpecular=specular*texSpe*pow(newDiffuse*α+β,2)

为了保持整体色调以及光照效果,其中,α取0.2,β取0.9,specular为步骤1-2中得到的三维模型的高光图,TexSpe为步骤2中得到的材质的高光信息。将替换材质后的高光信息newSpecular存储到图片newSpecular.png中。pow是一个数学函数,表示计算次方,其中pow(x,y)表示计算x的y次方。

步骤7包括:

替换纹理后三维模型的颜色由材质的颜色信息所决定,通过三维模型的基本光照信息进行调整,并考虑整体效果以α进行调整,一般取公式如下:

Color=texDif*newDiffuse*γ;

其中γ取0.5,texDif表示步骤二中得到的材质的颜色信息(即漫反射光照信息),newDiffuse表示步骤5-2得到的替换材质后的漫反射信息。

步骤8包括:

在得到了颜色信息,漫反射信息以及高光信息后对替换后的整体效果可以采用三者叠加的方式进行展示,并对效果进行微调。则最终效果final图为:

其中clamp表示将结果截取到0到1之间。Color,newDiffuse,newSpecular为以上计算所得,mask表示步骤1中得到的掩码图像,beauty为步骤1中得到的整体渲染效果图。

有益效果:

1)本发明提出的基于二维图像的纹理替换方法具有高度的仿真性,整个替换效果类似三维模型渲染效果。

2)本发明实现了纹理替换的快速性。本发明采用二图像的方式,利用普通的光照模型以及纹理与模型之间的关系进行简单快速的纹理替换。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。

图1为本发明方法的基本流程图。

图2a为一个输入场景导出的整体渲染图。

图2b为用户选择的材质图。

图2c为根据用户选择的材质进行替换后的效果图。

图3a~图3c为不同的材质替换效果图。

具体实施方式

下面结合附图及实例对本发明做进一步说明。

本方法的流程图如图1所示,分为八大过程:首先是将模型信息导出为图片;然后是准备好材质信息;然后是根据导出的模型图片的大小计算材质贴图;然后是将材质的法线信息和导出模型图片的法线信息进行融合;然后是根据设立的光源信息计算融合了材质法线后的模型的漫反射信息;然后是将导出模型的高光信息与材质的高光信息进行融合;然后是计算替换材质后的模型的颜色信息;最后是将上述得到的信息进行融合得到最终替换材质后的效果图。

具体地说,如图1所示,本发明公开了一种基于二维图像的纹理替换方法,主要包括以下几个步骤:

步骤1,导出模型信息:在3dmax中建立三维模型,并进行渲染,将渲染后三维模型的各个分量导出,包括三维模型的法线信息,光照信息,高光信息,掩码信息,纹理贴图时UV信息(U和V分别是图片在显示器水平、垂直方向上的坐标,取值一般都是0~1,也就是水平方向的第U个像素/图片宽度,垂直方向的第V个像素/图片高度)以及整体渲染效果图。

步骤2,准备好材质:准备好要替换的材质信息,包括材质的法线信息,光照信息,高光信息。

步骤3,根据三维模型图片大小计算纹理贴图:根据三维模型图片大小计算对应的材质贴图,包括材质的法线贴图,颜色贴图以及高光贴图。

步骤4,材质法线与三维模型法线的融合:将得到的材质的法线图片与模型的法线图片采用点对点融合。以模型法线为主,材质法线为辅实现模型法线的微调。

步骤5,计算漫反射信息:根据融合后的法线信息以及设置的光线信息计算替换材质后的整体漫反射信息。

步骤6,高光信息的融合:将三维模型本身的高光信息和材质的高光信息进行融合得到替换材质后的整体高光信息。

步骤7,计算颜色信息:计算替换材质后三维模型整体显示的颜色信息Color。

步骤8,整体融合计算:将颜色信息Color,替换材质后的漫反射信息以及高光信息进行融合,并进行整体微调得到最终替换材质后的效果。

其中,步骤1包括以下步骤:

步骤1-1,在3dmax中建立三维模型,并进行渲染,得到模型整体渲染效果图,将渲染结果保存为图片,记为beauty.png,该图片主要是为了实现纹理部分替换,因为一个场景中可能有多个模型,我们在渲染的时候也许场景中并不是所有模型都需要替换材质,因此整体渲染效果图主要是使得不需要纹理替换的模型部分其效果仍然是原来渲染的效果。

步骤1-2,渲染完成后需要导出以下5种图片:

第1需要渲染出三维模型的法线信息,并保存为图片,记为normal.png;

第2需要渲染出三维模型的光照信息,并保存为图片,记为diffuse.png;

第3需要渲染出三维模型的高光信息,并保存为图片,记为specular.png;

第4需要渲染出三维模型的纹理坐标贴图信息,并保存为图片,记为UV.png(在UV纹理坐标贴图中,UV中每一个坐标点的像素值代表了需要选取纹理中对应位置的像素值),这里的UV一般选择重复度为1,因此在纹理替换时用户可以手动选择替换纹理的重复度;

第5需要渲染出三维模型中每个部分的掩码信息,并保存为图片,记为mask.png(一般的mask采用纯白色表示物体,纯黑色表示非物体所在位置即不需要替换材质的地方),以便于在纹理替换时可以选择性的替换其中的一部分,如果需要替换多个物体这里的mask可以有多个,在实验中采用了替换一个物体,因此存储其中一个物体的mask;

步骤2包括以下步骤:

步骤2-1,使用SIS-A42标准型扫描仪扫描(本扫描仪是北京晨风驷铁信息科技有限公司提供)需要替换的材质;

步骤2-2,通过扫描仪软件对扫描的材质进行拼切,得到上下可拼接,左右可拼接的材质,导出材质的颜色信息,高光信息以及法线信息,并存储为图片,颜色信息存储为图片texDif.png,高光信息存储为图片texSpe.png,法线信息存储为图片texNor.png。

步骤3包括以下步骤:

步骤3-1,根据需要替换的纹理大小以及导出的模型图片的大小计算纹理重复度,假设横纵方向的重复分别为repeatX和repeatY,则:

其中,tw示步骤2-2得到的材质图片的宽度,th表示步骤2-2得到的材质图片的高度,mw表示三维模型图片的宽度,mh表示三维模型图片的高度,repeatX的计算表示当tw大于mw时repeatX=1,否则repeatY的计算同repeatX。这里主要是为了防止纹理在进行替换的时候有拉伸,因此在替换纹理之前首先对纹理进行处理,保证纹理的大小与三维模型图片的大小一致。

步骤3-2,根据步骤1得到的模型图片的大小以及步骤2得到的材质图片的大小合成与步骤1导出的三维模型图片大小一致的材质贴图。根据重复度信息得到材质法线信息图片texNor.png对应的材质法线贴图texNormal.png,根据重复度信息得到材质颜色信息图片texDif.png对应的材质颜色贴图texDiffuse.png,根据重复度信息得到材质高光信息图片texSpe.png对应的材质高光贴图texSpecular.png。

步骤4包括以下步骤:

步骤4-1,将得到的材质法线贴图texNormal.png与导出的三维模型法线图片normal.png进行融合,材质法线贴图texNormal中的每点以导出的三维模型法线图片normal.png中的每一点为基础进行旋转,得到替换纹理后更多细节的法线图,记为newNormal.png。这里采用了JeppeRevallFrisvad提出的法线融合方法(参考文章Building an Orthonormal Basis from a 3D Unit Vector Without Normalization)。假设有基础法线t以及细节法线u,则最后融合后的法线r为:

其中t′=tx,ty,tz+1],u′=[-ux,-uy,uz],

其中t,t′,u,u′以及r都是三维向量,t′表示根据基础法线t得到的中间计算法线,u′表示根据细节法线u得到的中间计算法线,tx表示向量t的x分量,ty表示向量t的y分量,tz表示向量t的z分量,ux表示向量u的x分量,uy表示向量u的y分量,uz表示向量u的z分量。

步骤5包括以下步骤:

步骤5-1,为了模拟出全局光照的效果并且提高计算效率,至少设置四个光源,这里假设所有的光源都是平行光,其中有一个主光源,三个副光源,若光源数量多于四,仍然是一个主光源,其余的为副光源。

步骤5-2,假设四个光源的光线方向分别为L1,L2,L3,L4,其中L1为主光源,则替换材质后的漫反射信息newDiffuse表示如下:

其中clamp表示将结果截取至0到1之间,将替换材质后的漫反射信息newDiffuse保存到图片newDiffuse.png中。

步骤6包括:

根据三维模型导出的高光图片specular.png以及材质的高光图片计算替换纹理后的高光信息,并对此高光信息进行调整,这里采用了材质的基本光照信息进行调整,则通过如下公式计算替换材质后的高光信息newSpecular:

newSpecular=specular*texSpe*pow(newDiffuse*α+β,2)

为了保持整体色调以及光照效果,其中,α取0.2,β取0.9,specular为步骤1-2中得到的三维模型的高光图,TexSpe为步骤二中得到的材质的高光信息。将替换材质后的高光信息newSpecular存储到图片newSpecular.png中。pow是一个数学函数,表示计算次方,其中pow(x,y)表示计算x的y次方。

步骤7包括:

替换纹理后三维模型的颜色由材质的颜色信息所决定,通过三维模型的基本光照信息进行调整,并考虑整体效果以α进行调整,一般取公式如下:

Color=texDif*newDiffuse*γ;

其中γ取0.5,texDif表示步骤二中得到的材质的颜色信息(或者漫反射光照信息),newDiffuse表示步骤5-2得到的替换材质后的漫反射信息。

步骤8包括:

在得到了颜色信息,漫反射信息以及高光信息后对替换后的整体效果可以采用三者叠加的方式进行展示,并对效果进行微调。则最终效果final图为:

其中clamp表示将结果截取到0到1之间。Color,newDiffuse,newSpecular为以上计算所得,mask表示步骤1中得到的掩码图像,beauty为步骤1中得到的整体渲染效果图。

实施例2

本实施例的实施硬件环境是:Intel酷睿i5-4590 3.3GHz,4G内存,SIS-A42标准型扫描仪,软件环境是3d max,SIS-A42,eclipse。

本发明公开了一种基于二维图像的纹理替换方法,特征在于不需要物体的三维信息,仅仅需要一些根据三维模型在3d max中导出来的二维图片即可以进行模型中部分区域的纹理替换,包括以下步骤:

步骤1,导出模型信息:在3dmax中将渲染模型的各个分量导出,包括模型的法线信息,光照信息,高光信息,掩码信息,纹理贴图时UV信息以及整体渲染效果图。

步骤2,准备好材质:准备好要替换的材质信息,包括材质的法线信息,颜色信息(漫反射光照信息),高光信息。

步骤3,根据模型图片大小计算纹理贴图:根据模型图片大小计算对应的材质贴图,包括材质的法线贴图,颜色贴图以及高光贴图。

步骤4,材质法线与模型法线的融合:将得到的材质的法线图片与模型的法线图片采用点对点融合。以模型法线为主,材质法线为辅实现模型法线的微调。

步骤5,漫反射信息的计算:根据融合后的法线信息以及设置的光线信息计算替换材质后的整体漫反射信息。

步骤6,高光信息的融合:将模型本身的高光信息以及材质的高光信息进行融合得到替换材质后的整体高光信息。

步骤7,颜色信息的计算:计算替换材质后模型整体显示的颜色信息。

步骤8,整体融合计算:将计算的颜色信息,漫反射信息以及高光信息进行融合,并进行整体微调得到最终替换材质后的效果。

输入的三维模型导出的二维图片如图2a所示。用户选择的材质如图2b所示,从左到右的图片为texDif.png、texNor.png和texSpe.png,替换后的结果如图2c所示,可以看出整个场景的纹理替换效果非常自然和谐,图3a、图3b和图3c为同一场景的其他方案纹理替换结果。

本发明方法的特征在于不需要物体的三维信息,仅仅需要一些根据三维模型在3d max中导出来的二维图片即可以进行模型图片中部分区域的纹理替换,并能保证生成视觉上和谐的光影效果。

本发明提供了一种基于二维图像的纹理替换方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

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