发明内容
本发明实施例的目的在于提供一种虚拟对象渲染方法及装置,以提高虚拟场景的真实感。
为达到上述目的,本发明实施例公开了一种虚拟对象渲染方法,所述方法包括:
获得待渲染对象的材质和各个模型面的渲染需求;
根据所述待渲染对象的材质,从预先建立的材质贴图库中选择与每一个模型面的渲染需求相对应的材质贴图,其中,所述材质贴图库中存储有每一材质的不同渲染需求对应的材质贴图;
根据所选择的各个材质贴图对每一模型面进行渲染,进而完成对所述待渲染对象的渲染。
可选的,通过以下方式建立所述材质贴图库:
利用显示器作为面光源,基于傅里叶变换模拟出不同形状的光照图案,并利用单相机获取预设的材质在不同光照条件下的各个样本图像;
根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法计算所述材质基于不同渲染需求的材质贴图参数;
根据所述材质贴图参数,生成所述材质的不同渲染需求对应的各个材质贴图。
可选的,所述根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法计算所述材质基于不同渲染需求的材质贴图参数,包括:
通过以下步骤,计算所述材质基于不同渲染需求的材质贴图参数:
依据像素点的像素值,利用预设的聚类算法,对所述各个样本图像中的全部像素点进行聚类处理,获得聚类后的类别;
按照预设的像素点遍历规则,确定每一类别中的第一个像素点;
根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法,计算每一类别中第一个像素点的材质贴图参数;
根据每一类别中其他像素点与第一个像素点的亮度比值,计算其他像素点的权重系数,并根据所述每一类中第一个像素点的材质贴图参数计算其他像素点的材质贴图参数。
可选的,所述利用显示器作为面光源,基于傅里叶变换模拟出不同形状的光照图案,并利用单相机获取预设的材质在不同光照条件下的各个样本图像,包括:
利用显示器作为面光源,基于傅里叶变换模拟出不同形状的光照图案,并利用单相机,采集所述材质在每一预设光源颜色的不同光照强度下的各个样本图像。
可选的,所述材质贴图参数包括:漫反射系数、镜面反射系数、法向量、高光系数;
根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法,计算每一类别中第一个像素点的材质贴图参数,包括:
根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,并按照以下表达式计算每一类别中第一个像素点的材质贴图参数,
其中,V(x)=ρd(x)·Dot(N(x),L)+ρs(x)·pow((Dot(N(x),H),g(x))·Dot(N(x),L),I(x)为所述各个样本图像中与第一个像素点坐标相同的像素点x的像素值,ρd(x)为像素点x的漫反射系数,ρs(x)为像素点x的镜面反射系数,N(x)为像素点x的法向量,g(x)为像素点x的高光系数,L为像素点x的光源方向,H为像素点x的光源方向与图像采集设备方向的中间分量。
可选的,所述根据所述材质贴图参数,生成所述材质的不同渲染需求对应的各个材质贴图之后,还包括:
利用预先生成的标准材质的标准材质贴图参数,校正计算得到的所述材质的材质贴图参数。
可选的,每一个模型面的渲染需求中包括镜面反射信息、漫反射信息、法向量信息和高光信息;
所述材质贴图库中存储有每一材质对应的镜面反射材质贴图、漫反射材质贴图、法向量材质贴图和高光材质贴图。
为达到上述目的,本发明实施例公开了一种虚拟对象渲染装置,所述装置包括:
信息获得模块,用于获得待渲染对象的材质和各个模型面的渲染需求;
贴图选择模块,用于根据所述待渲染对象的材质,从预先建立的材质贴图库中选择与每一个模型面的渲染需求相对应的材质贴图,其中,所述材质贴图库中存储有每一材质的不同渲染需求对应的材质贴图;
渲染模块,用于根据所选择的各个材质贴图对每一模型面进行渲染,进而完成对所述待渲染对象的渲染。
可选的,还包括材质贴图库建立模块,所述材质贴图库建立模块包括:图像获得子模块、贴图参数计算子模块、材质贴图生成子模块;其中,
所述图像获得子模块,用于利用显示器作为面光源,基于傅里叶变换模拟出不同形状的光照图案,并利用单相机获取预设的材质在不同光照条件下的各个样本图像;
所述贴图参数计算子模块,用于根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法计算所述材质基于不同渲染需求的材质贴图参数;
所述材质贴图生成子模块,用于根据所述材质贴图参数,生成所述材质的不同渲染需求对应的各个材质贴图。
可选的,所述贴图参数计算子模块,包括:聚类单元、像素点确定单元、第一贴图参数计算单元、第二贴图参数计算单元;其中,
所述聚类单元,用于依据像素点的像素值,利用预设的聚类算法,对所述各个样本图像中的全部像素点进行聚类处理,获得聚类后的类别;
所述像素点确定单元,用于按照预设的像素点遍历规则,确定每一类别中的第一个像素点;
所述第一贴图参数计算单元,用于根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法,计算每一类别中第一个像素点的材质贴图参数;
所述第二贴图参数计算单元,用于根据每一类别中其他像素点与第一个像素点的亮度比值,计算其他像素点的权重系数,并根据所述每一类中第一个像素点的材质贴图参数计算其他像素点的材质贴图参数。
可选的,所述图像获得子模块,具体用于:
利用显示器作为面光源,基于傅里叶变换模拟出不同形状的光照图案,并利用单相机,采集所述材质在每一预设光源颜色的不同光照强度下的各个样本图像。
可选的,所述材质贴图参数包括:漫反射系数、镜面反射系数、法向量、高光系数;
所述第一贴图参数计算单元,具体用于:
根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,并按照以下表达式计算每一类别中第一个像素点的材质贴图参数,
其中,V(x)=ρd(x)·Dot(N(x),L)+ρs(x)·pow((Dot(N(x),H),g(x))·Dot(N(x),L),I(x)为所述各个样本图像中与第一个像素点坐标相同的像素点x的像素值,ρd(x)为像素点x的漫反射系数,ρs(x)为像素点x的镜面反射系数,N(x)为像素点x的法向量,g(x)为像素点x的高光系数,L为像素点x的光源方向,H为像素点x的光源方向与图像采集设备方向的中间分量。
可选的,还包括:贴图参数校正模块,用于:
在所述材质贴图生成子模块根据所述材质贴图参数获得与所述材质的不同渲染需求对应的各个材质贴图之后,利用预先生成的标准材质的标准材质贴图参数,校正计算得到的所述材质的材质贴图参数。
可选的,每一个模型面的渲染需求中包括镜面反射信息、漫反射信息、法向量信息和高光信息;
所述材质贴图库中存储有每一材质对应的镜面反射材质贴图、漫反射材质贴图、法向量材质贴图和高光材质贴图。
本发明实施例提供一种虚拟对象渲染方法及装置。在进行虚拟对象渲染时,首先获得待渲染对象的材质和各个模型面的渲染需求,然后根据待渲染对象的材质,从预先建立的材质贴图库中选择与每一个模型面的渲染需求相对应的材质贴图,最后根据所选择的各个材质贴图对每一模型面进行渲染,进而完成对所述待渲染对象的渲染。应用本发明实施例提供的方法进行虚拟对象渲染时,利用预先根据真实材质得到的材质贴图进行渲染,而无需采用美工绘制的方式,提高了虚拟对象渲染的效果,提高了虚拟场景的真实感。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的一种虚拟对象渲染方法的流程示意图,该方法可以包括以下步骤:
步骤S101:获得待渲染对象的材质和各个模型面的渲染需求。
材质,可以理解成材料和质感的结合,其表面具有特定的可视属性,简而言之,就是物体看起来是什么质地。这些可视属性是指表面的色彩、纹理、光滑度、透明度、反射率、折射率、发光度等。
对于不同的材质而言,往往具有不同的可视属性,因此,对不同材质的模型面进行渲染时的渲染需求也往往是不同的。
这里提及的“渲染需求”,为用于指示如何对待渲染对象进行渲染的信息。
需要说明的是,本领域内的技术人员可以根据实际应用中的具体情况,合理设定针对待渲染对象的渲染需求。
一种实现方式中,每一个模型面的渲染需求中具体可以包括:镜面反射信息、漫反射信息、法向量信息和高光信息。举例而言,对于镜面渲染效果而言,渲染需求可以包括:镜面反射信息和法向量;对于漫反射渲染效果而言,渲染需求可以包括:漫反射信息和法向量,需要说明的是,这里仅仅是列举了几种具体的渲染需求,当然还可以有其他的渲染需求,在此不再一一列举。
当然,实际应用中,每一模型面的渲染需求还可以包括除上述列举的四种渲染需求以外的其他信息,本发明实施例不需要对渲染需求的具体内容进行限定。
步骤S102:根据待渲染对象的材质,从预先建立的材质贴图库中选择与每一个模型面的渲染需求相对应的材质贴图。
其中,材质贴图库中存储有每一材质的不同渲染需求对应的材质贴图。
需要说明的是,材质贴图库中存储有多种材质的材质贴图,每一材质又可以包括多种材质贴图,每一材质贴图与每一材质的具体渲染需求是一一对应的。举例而言,若用于指示如何对材质A进行渲染的渲染需求中包括:镜面反射信息和法向量,则材质贴图库中材质A应该至少包括:镜面反射材质贴图和法向量材质贴图。
一种实现方式中,材质贴图库中存储有每一材质对应的镜面反射材质贴图、漫反射材质贴图、法向量材质贴图和高光材质贴图。当然,这里仅仅是举例说明而已,材质贴图库中所存储的每一材质对应的材质贴图还可以包括除所列举的这四种材质贴图以外的贴图。但是,材质贴图库中每一材质所对应的材质贴图至少需要包括与步骤S101中所提及的渲染需求中的每一具体渲染需求对应的材质贴图。
在本发明的一种具体实施例中,可以通过以下方式建立材质贴图库:
(11)利用显示器作为面光源,基于傅里叶变换模拟出不同形状的光照图案,并利用单相机获取预设的材质在不同光照条件下的各个样本图像。
具体来说,获取预设的材质在不同光照条件下的各个样本图像,可以按照以下方式进行:采集预设的材质在每一预设光源颜色的不同光照强度下的各个样本图像,其中,光源形状可变。
这里提及的预设光源颜色的不同光照强度,是指在进行样本图像的采集过程中,光源的颜色可以是不同的,例如,白色光源、蓝色光源、红色光源等等,另外,即使是使用同样颜色的光源,例如白色光源,光照强度也可以是不同的,例如,白色强光、白色弱光等等。
需要说明的是,之所以采集不同光照条件下的样本图像,目的是为了增加预设的材质的样本的多样性,以保证进行后续处理时能够得到较准确的材质贴图。
一种实现方式中,预设光源可以为面光源,实际应用中,可以用液晶显示器来模拟不同光照条件的光源,这样能够大大降低真实光源的成本,且应用起来比较便捷。当然,这里仅仅是举例说明,本发明实施例并不需要对预设光源的颜色和光照强度进行限定,本领域内的技术人员需要根据实际应用中的具体情况进行合理的设置。
(12)根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法计算该材质基于不同渲染需求的材质贴图参数。
材质贴图参数,是指用于对待渲染对象进行渲染的材质贴图的具体数值,材质贴图参数中可以包括多种具体的参数,且每一材质贴图的具体参数与每一渲染需求中的具体渲染需求是一一对应的。举例而言,针对渲染需求中的镜面反射信息而言,材质贴图参数中有镜面反射贴图参数与其对应。进一步来讲,渲染需求、材质贴图和材质贴图参数中所包括的具体内容均是一一对应的,例如,镜面反射信息(属于渲染需求)、镜面反射材质贴图(属于材质贴图)、和镜面反射材质贴图参数(属于材质贴图参数)两两之间均是一一对应的关系。
具体的,通过以下步骤,获得材质基于每一渲染需求的材质贴图参数:
(12-1)依据像素点的像素值,利用预设的聚类算法,对各个样本图像中的全部像素点进行聚类处理,获得聚类后的类别。
这里提及的预设的聚类算法可以是现有技术中常用的聚类算法,例如,K-means聚类算法,这里不再对现有技术中的聚类算法进行描述。
另外,对于聚类后的类别的数目可以由本领域内的技术人员根据实际应用中的具体情况进行合理的设置,本发明并不需要对此进行限定。
(12-2)按照预设的像素点遍历规则,确定每一类别中的第一个像素点。
一种实现方式中,可以按照所采集的样本图像的顺序,针对每一样本图像按照逐行扫描的方式进行遍历,当扫描到与聚类后的类别相同的像素点时,确定定该像素点为该类别中的第一个像素点,然后,再进行下一个类别的扫描。
举例而言,假设按照采集顺序分别采集了I1、I2和I3三张样本图像,聚类后的类别为C1、C2。首先,将C1确定为当前类别,从I1开始扫描图像,当扫描到I1中坐标为(2,3)像素点时,扫描到与C1类别相同的像素点P1,则将像素点P1确定为C1类别的第一个像素点;然后再将C2确定为当前类别,按照同样的扫描方式进行扫描,当扫描到当扫描到I2中坐标为(5,6)像素点时,扫描到与C2类别相同的像素点P2,则将像素点P2确定为C2类别的第一个像素点,遍历结束。
另一种实现方式中,可以按照聚类后的类别进行,针对每一类别中的像素点的聚类顺序进行遍历,当扫描到与聚类后的类别相同的像素点时,确定该像素点为该类别中的第一个像素点,然后,再进行下一个类别的扫描。
举例而言,同样假设聚类后的类别为C1、C2,其中,C1中包括P11、P12、P13和P14四个像素点,C2中包括P21、P22、P23和P24四个像素点。首先,将C1确定为当前类别,从C1类别开始扫描,当扫描到像素点P12时,扫描到与C1类别相同的像素点,则将像素点P12确定为C1类别的第一个像素点;然后再将C2确定为当前类别,按照同样的扫描方式进行扫描,当扫描到当扫描到像素点P23时,扫描到与C2类别相同的像素点,则将像素点P23确定为C2类别的第一个像素点,遍历结束。
需要说明的是,上述列举的两种实现方式仅仅是举例说明而已,本发明实施例不需要对具体的像素点遍历规则进行限定,任何可能的实现方式均可以应用于本发明。
(12-3)根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法,计算每一类别中第一个像素点的材质贴图参数。
一种实现方式中,材质贴图参数可以包括:漫反射系数、镜面反射系数、法向量、高光系数;
根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法,计算每一类别中第一个像素点的材质贴图参数,可以包括:
根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,并按照以下表达式计算每一类别中第一个像素点的材质贴图参数,
其中,V(x)=ρd(x)·Dot(N(x),L)+ρs(x)·pow((Dot(N(x),H),g(x))·Dot(N(x),L),I(x)为各个样本图像中与第一个像素点坐标相同的像素点x的像素值,ρd(x)为像素点x的漫反射系数,ρs(x)为像素点x的镜面反射系数,N(x)为像素点x的法向量,g(x)为像素点x的高光系数,L为像素点x的光源方向,H为像素点x的光源方向与图像采集设备方向的中间分量。
一种实现方式中,可以按照以下方式获得像素点的光源方向L、像素点的光源方向与图像采集设备方向的中间分量H:
按照预设的图像校正规则,对获取的各个样本图像进行图像校正;
根据图像校正的数据计算光源方向L、中间分量H。
需要说明的是,这里所提及的像素点的光源方向L、像素点的光源方向与图像采集设备方向的中间分量H与样本图像采集时的硬件的位置关系有关,实际应用中,除了可以通过上面提及的通过图像校正的方式来获得光源方向L和中间分量H的方式以为,还可以利用其它方式,例如借助测量仪器手动测量等等。当然,本发明实施例并不需要对光源方向L和中间分量H的获得方式进行限定,任何可能的实现方式均可以应用于本发明。
(12-4)根据每一类别中其他像素点与第一个像素点的亮度比值,计算其他像素点的权重系数,并根据每一类中第一个像素点的材质贴图参数计算其他像素点的材质贴图参数。
可以看出,在获得材质贴图参数的过程中,实际上仅仅对聚类后所确定的属于每一类别的第一个像素点的材质贴图参数进行了相关计算,而对于每一类别中除第一个像素点以为的其他材质贴图参数仅仅是复制了同类别中的第一个像素点的材质贴图参数,由于图像数据中像素点通常都是成千上万的,因此,利用由步骤(12-1)至步骤(12-4)提供的方法,大大降低了计算材质贴图参数的计算量。
(13)根据该材质贴图参数,生成该材质的不同渲染需求对应的各个材质贴图。
一种实现方式中,步骤(13)根据材质贴图参数获得与材质的不同渲染需求对应的各个材质贴图之后,还可以包括:
(14)利用预先生成的标准材质的标准材质贴图参数,校正计算得到的材质贴图参数。
通过利用标准材质的标准材质贴图参数对计算得到的材质贴图参数的校正,能够尽可能的对计算失真的材质贴图参数进行修正,这样进一步保证了材质贴图参数的准确程度和真实感。
步骤S103:根据所选择的各个材质贴图对每一模型面进行渲染,进而完成对待渲染对象的渲染。
应用本发明实施例提供的方法进行虚拟对象渲染时,利用预先根据真实材质得到的材质贴图进行渲染,而无需采用美工绘制的方式,提高了虚拟对象渲染的效果,提高了虚拟场景的真实感。
进一步的,现有技术中采用美工绘制的方式获得材质贴图,即使是对于相同材质的同一材质贴图仍需要美工绘制一次,而本发明实施例提供的方案进行虚拟对象渲染时,对每一模型面进行渲染所利用的各个材质贴图是从预先建立的材质贴图库中选择得到的,当材质贴图库建立以后,仅仅是选择合适的材质贴图进行渲染即可,无需再次进行美工绘制或建立材质贴图库,因此,大大降低了虚拟对象渲染的工作量,提高了虚拟对象渲染的效率。
如图2所示,为本发明实施例提供的一种虚拟对象渲染装置的结构示意图,该装置可以包括以下模块:
信息获得模块210,用于获得待渲染对象的材质和各个模型面的渲染需求。
贴图选择模块220,用于根据待渲染对象的材质,从预先建立的材质贴图库中选择与每一个模型面的渲染需求相对应的材质贴图。
其中,材质贴图库中存储有每一材质的不同渲染需求对应的材质贴图。
渲染模块230,用于根据所选择的各个材质贴图对每一模型面进行渲染,进而完成对待渲染对象的渲染。
具体的,还可以包括材质贴图库建立模块,材质贴图库建立模块可以包括:图像获得子模块、贴图参数计算子模块、材质贴图生成子模块。
其中,图像获得子模块,用于利用显示器作为面光源,基于傅里叶变换模拟出不同形状的光照图案,并利用单相机获取预设的材质在不同光照条件下的各个样本图像。
贴图参数计算子模块,用于根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法计算该材质基于不同渲染需求的材质贴图参数。
材质贴图生成子模块,用于根据材质贴图参数,生成该材质的不同渲染需求对应的各个材质贴图。
具体的,贴图参数计算子模块,可以包括:聚类单元、像素点确定单元、第一贴图参数计算单元、第二贴图参数计算单元。
其中,聚类单元,用于依据像素点的像素值,利用预设的聚类算法,对各个样本图像中的全部像素点进行聚类处理,获得聚类后的类别。
像素点确定单元,用于按照预设的像素点遍历规则,确定每一类别中的第一个像素点。
第一贴图参数计算单元,用于根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,利用非线性优化方法,计算每一类别中第一个像素点的材质贴图参数。
第二贴图参数计算单元,用于根据每一类别中其他像素点与第一个像素点的亮度比值,计算其他像素点的权重系数,并根据每一类中第一个像素点的材质贴图参数计算其他像素点的材质贴图参数。
具体的,图像获得子模块,具体用于:
利用显示器作为面光源,基于傅里叶变换模拟出不同形状的光照图案,并利用单相机,采集该材质在每一预设光源颜色的不同光照强度下的各个样本图像。
具体的,材质贴图参数可以包括:漫反射系数、镜面反射系数、法向量、高光系数。
第一贴图参数计算单元,具体用于:
根据各个样本图像的图像信息、各个样本图像对应的光照图案以及相机位置,并按照以下表达式计算每一类别中第一个像素点的材质贴图参数,
其中,V(x)=ρd(x)·Dot(N(x),L)+ρs(x)·pow((Dot(N(x),H),g(x))·Dot(N(x),L),I(x)为各个样本图像中与第一个像素点坐标相同的像素点x的像素值,ρd(x)为像素点x的漫反射系数,ρs(x)为像素点x的镜面反射系数,N(x)为像素点x的法向量,g(x)为像素点x的高光系数,L为像素点x的光源方向,H为像素点x的光源方向与图像采集设备方向的中间分量。
具体的,还可以包括:贴图参数校正模块,用于:
在材质贴图生成子模块根据材质贴图参数获得与材质的不同渲染需求对应的各个材质贴图之后,利用预先生成的标准材质的标准材质贴图参数,校正计算得到的材质的材质贴图参数。
具体的,每一个模型面的渲染需求中可以包括镜面反射信息、漫反射信息、法向量信息和高光信息。
材质贴图库中存储有每一材质对应的镜面反射材质贴图、漫反射材质贴图、法向量材质贴图和高光材质贴图。
应用本发明实施例提供的方法进行虚拟对象渲染时,利用预先根据真实材质得到的材质贴图进行渲染,而无需采用美工绘制的方式,提高了虚拟对象渲染的效果,提高了虚拟场景的真实感。
进一步的,现有技术中采用美工绘制的方式获得材质贴图,即使是对于相同材质的同一材质贴图仍需要美工绘制一次,而本发明实施例提供的方案进行虚拟对象渲染时,对每一模型面进行渲染所利用的各个材质贴图是从预先建立的材质贴图库中选择得到的,当材质贴图库建立以后,仅仅是选择合适的材质贴图进行渲染即可,无需再次进行美工绘制或建立材质贴图库,因此,大大降低了虚拟对象渲染的工作量,提高了虚拟对象渲染的效率。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。