人体模型渲染方法、装置、电子设备及存储介质
技术领域
本申请涉及人工智能技术领域,尤其涉及一种人体模型渲染方法、装置、电子设备及存储介质。
背景技术
目前,在直播、短视频等社交应用中,出现了越来越多的虚拟与现实结合的应用需求,通常是将虚拟图像叠加到真实场景的视频图像上去,此时就需要能够将虚拟的物体以一种更加真实的方式表现出来。
例如,在直播应用中,出现一种以虚拟角色的形象代替真人表演的形式来进行直播活动,真人通过使用AI技术或者其他方式来操控该虚拟角色,或者是由计算机来自动控制虚拟角色。在短视频应用中,可以增加虚拟角色到视频场景中,以增加视频内容的趣味性和观赏性。这些应用场景的虚拟角色都需要用到虚拟人体的渲染技术。虚拟人体的渲染技术可以使得虚拟人体更具有真实感。然而,相关技术中的虚拟人体的渲染技术得到的人体图像与真实人体差别较大,逼真度较低。
发明内容
为克服相关技术中存在的问题,本申请提供了一种人体模型渲染方法、装置、电子设备及存储介质。
根据本申请实施例的第一方面,提供一种人体模型渲染方法,所述方法包括:
获取人体模型,所述人体模型包括人体三维模型数据及人体的皮肤纹理数据;
向所述人体模型添加直接光照、间接光照以及次表面散射,并进行渲染。
在一示例性实施例中,向所述人体模型添加所述直接光照的步骤包括:
添加朝向所述人体模型正面的平行光,形成正面高光以及正面阴影;
添加朝向所述人体模型背面的平行光,形成背面高光以及背面阴影。
在一示例性实施例中,在形成正面高光、正面阴影、背面高光及背面阴影之前,还包括:
在所述正面的平行光及所述背面的平行光的位置及方向上分别放置虚拟相机,通过所述虚拟相机将所述人体模型的深度信息渲染到深度纹理中;
对所述深度纹理进行采样平均,得到深度贴图,所述深度贴图用于形成所述正面阴影及所述背面阴影。
在一示例性实施例中,向所述人体模型添加所述间接光照的步骤包括:
基于所述人体模型表面各顶点的法线方向,在指定的环境贴图上采样各所述顶点对应的间接光照亮度;
将各所述顶点的间接光照亮度与各所述顶点的颜色值相乘,得到在所述人体模型上的间接光照亮度;
利用所述人体模型上的间接光照亮度向所述人体模型添加间接光照。
在一示例性实施例中,向所述人体模型添加所述次表面散射的步骤包括:
基于所述直接光照所添加的背面的平行光,添加背面的平行光穿透部分所述人体模型的次表面散射。
在一示例性实施例中,所述人体模型还包括头发纹理数据,在进行所述人体模型的渲染之前,所述方法还包括:
对所述头发纹理数据进行半透明分层渲染。
在一示例性实施例中,在完成所述人体模型的渲染之后,所述方法还包括:
对所述人体模型的图像进行景深处理。
根据本申请实施例的第二方面,提供一种人体模型渲染装置,所述装置包括:
获取模块,用于获取人体模型,所述人体模型包括人体三维模型数据及人体的皮肤纹理数据;
渲染模块,用于向所述人体模型添加直接光照、间接光照以及次表面散射,并进行渲染。
根据本申请实施例的第三方面,提供一种电子设备,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本申请任意一实施例中所述的人体模型渲染方法的步骤。
根据本申请实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本申请任意实施例中所述的人体模型渲染方法的步骤。
本申请的实施例提供的技术方案可以包括以下有益效果:
本技术方案中,在获取人体模型后,向人体模型添加直接光照、间接光照及次表面散射,由于人体模型包括人体三维模型数据和皮肤纹理数据,添加直接光照可以对人体模型产生反射高光及投射阴影的效果,使得人体模型更为立体,并且可以展示出人体模型上的皮肤纹理的细节;而添加间接光照与直接光照叠加结合,可以使得人体模型所反射的亮度更具柔和的渲染效果;添加次表面散射效果,使得部分人体模型(例如,耳朵、人脸皮肤边缘等)可以具有透射的效果。这样,渲染后的人体模型可以体现出皮肤纹理细节,使得人体模型更具有立体效果,更具有真实感。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本申请的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请一示例性实施例示出的一种人体模型渲染方法的流程示意图。
图2为本申请一示例性实施例示出的一种添加直接光照过程的流程示意图。
图3为本申请一示例性实施例示出的一种添加间接光照过程的流程示意图。
图4A为本申请一示例性实施例示出的一种人体模型渲染方法的应用环境示意图。
图4B、4C为本申请一示例性实施例示出的一种主播客户端创建人体模型的界面示意图。
图4D为本申请一示例性实施例示出的人体模型渲染后的效果示意图。
图5为本申请一示例性实施例示出的一种人体模型渲染装置的结构示意图。
图6为本申请一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图,对本申请的人体模型渲染方法、装置、电子设备及存储介质进行详细说明。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
本申请提供了一种人体模型渲染方法,图1为本申请一示例性实施例所示的一种人体模型渲染方法的流程示意图。如图1所示,该人体模型渲染方法包括一下步骤101至102:
步骤101,获取人体模型,所述人体模型包括人体三维模型数据及人体的皮肤纹理数据。
在步骤101中,获取要渲染的人体模型,人体模型包括人体三维模型数据,人体模型为立体的模型,这个人体模型可以具有头部、躯干、四肢,还可以具有服装。人体模型还包括人体的皮肤纹理数据,使得更加贴近真实的人体。
在本申请一示例性实施例中,人体模型可以是默认设置的人体模型,也可以是用户创建的人体模型。例如,在直播、视频制作等应用中,提供虚拟角色的人体模型展示功能,用户可以启动该功能,获得一个默认设置的人体模型,也可以是用户自行选择人体模型的脸型、五官、头发、身型、皮肤、服饰等进行组合,创建人体模型。
步骤102,向所述人体模型添加直接光照、间接光照以及次表面散射,并进行渲染。
在步骤102中,向人体模型添加直接光照,可以对人体模型产生反射高光及投射阴影的效果,以增加人体模型的立体感,并且人体模型的皮肤纹理可以在明暗间展示出来;添加间接光照可以是指添加其他非直接打向人体模型的光源,并与直接关照叠加结合,可以使得人体模型所反射的亮度更加柔和;添加次表面散射,可以使得部分人体模型(例如,耳朵、人脸皮肤边缘等)可以具有透射的效果。
本实施例的上述方法,在获取人体模型后,向人体模型添加直接光照、间接光照及次表面散射,由于人体模型包括人体三维模型数据和皮肤纹理数据,添加直接光照可以对人体模型产生反射高光及投射阴影的效果,使得人体模型更为立体,并且可以展示出人体模型上的皮肤纹理的细节;而添加间接光照与直接光照叠加结合,可以使得人体模型所反射的亮度更具柔和的渲染效果;添加次表面散射效果,使得部分人体模型(例如,耳朵、人脸皮肤边缘等)可以具有透射的效果。这样,渲染后的人体模型可以体现出皮肤纹理细节,使得人体模型更具有立体效果,更具有真实感。
图2为本申请一示例性实施例示出的一种添加直接光照过程的流程示意图。如图2所示,向所述人体模型添加所述直接光照的步骤具体包括步骤201至步骤202:
步骤201,添加朝向所述人体模型正面的平行光,形成正面高光以及正面阴影。
步骤202,添加朝向所述人体模型背面的平行光,形成背面高光以及背面阴影。
应该理解的是,步骤201与步骤202可以是分别执行,也可以是同时执行,可以是先添加正面的平行光,后添加背面的平行光;也可以是先添加背面的平行光,后添加正面的平行光;也可以是同时添加正面和背面的平行光。
本实施例采用两个平行光添加到人体模型,相对于点光源等其他光源,能够更全面地体现人体模型的明暗关系和皮肤纹理的细节,并且,采用平行光更为柔和,避免局部亮度过于明亮或者阴暗。
为了渲染出更真实的阴影效果,在本申请一示例性实施例中,在形成正面高光、正面阴影、背面高光及背面阴影之前,还包括:
在所述正面的平行光及所述背面的平行光的位置及方向上分别放置虚拟相机,通过所述虚拟相机将所述人体模型的深度信息渲染到深度纹理中;
对所述深度纹理进行采样平均,得到深度贴图,所述深度贴图用于形成所述正面阴影及所述背面阴影。
本实施例中,在添加直接光照形成阴影前,通过在添加的两个平行光的同一位置及方向上放置虚拟相机,这个虚拟相机用于确定人体模型各像素点与光源之间的距离,又称为深度值,并将这些深度值渲染到深度纹理中,以存储每个像素点的深度值,并对深度纹理进行采样平均,得到深度贴图,深度贴图包含每个像素点经过采样平均后的深度值。利用深度贴图的各像素点的深度值与各像素点在光源空间的深度值进行比较,得出各像素点的阴影度,将各像素点的阴影度与光照亮度相乘,得到有明暗区分的照明信息,这样,可以根据照明信息形成高光和阴影。
在本申请一示例性实施例中,所述虚拟相机的相机渲染区域的边缘刚好包围住所述人体模型,或者说,所述人体模型在所述虚拟相机的相机渲染区域内面积最大化。相机渲染区域是指虚拟相机的视角区域,也就是说,通过虚拟相机拍摄人体模型,人体模型的正面或者反面的图像恰好落在视角区域范围内,使得正面或者反面的图像在视角区域内面积最大化。这样,可以提高深度值的精度,减少锯齿。
在本申请一示例性实施例中,对所述深度纹理进行3*3采样平均,这样,可以对形成的阴影进一步减少锯齿,使得形成的阴影更具真实感。
图3为本申请一示例性实施例示出的添加间接光照过程的流程示意图。如图3所示,向所述人体模型添加所述间接光照的步骤具体包括步骤301至302:
步骤301,基于所述人体模型表面各顶点的法线方向,在指定的环境贴图上采样各所述顶点对应的间接光照亮度。
在步骤301中,环境贴图是指相对于人体模型的背景环境的图像,例如,在直播或者视频制作等应用中,展示的人体模型的背景是一些环境场景的图像,而这些环境场景的物体会反射部分光源并照射到人体模型。指定的环境贴图可以是指用户可以通过上述的应用中选择人体模型的背景图像,而根据用户选择的相对于人体模型的背景环境图像作为环境贴图,向人体模型添加间接光照。根据人体模型表面各顶点的发现方向,在环境贴图中找到各顶点所对应的间接光照亮度。人体模型表面的各顶点也是各像素点。
步骤302,将各所述顶点的间接光照亮度与各所述顶点的颜色值相乘,得到在所述人体模型上的间接光照亮度。
在步骤302中,由于光照打在不同颜色值的像素点所反射出的光照亮度不完全相同,因此,将获取的人体模型的各像素点在环境贴图上所对应的间接光照亮度与各像素点的颜色值相乘,得到所要在人体模型上各像素点所添加的间接光照亮度。
步骤303,利用所述人体模型上的间接光照亮度向所述人体模型添加间接光照。
在本申请一示例性实施例中,采用立方体环境贴图采样各顶点对应的间接光照。立方体环境贴图是将环境贴图贴在立方体的六个面上,使得环境贴图围绕整个人体模型,这样,整个人体模型都可以得到间接光照,使得人体模型上的反射高光更加柔和,以更具有真实感。
在本申请一示例性实施例中,向所述人体模型添加所述次表面散射的步骤包括:基于所述直接光照所添加的背面的平行光,添加背面的平行光穿透部分所述人体模型的次表面散射。次表面散射的效果是基于直接光照所添加的背面的平行光叠加的背面的光线穿透部分人体模型。使得人体模型的部分皮肤呈现出透光的效果,更具有真实感。
在本申请一示例性实施例中,所述人体模型还包括头发纹理数据,在进行所述人体模型的渲染之前,所述方法还包括:向所述头发纹理数据进行半透明分层渲染。这样,可以使得人体模型的头发更贴近真实头发,具有层次感。
在本申请一示例性实施例中,半透明分层渲染的步骤包括:
开启深度写入,将靠近头部的头发部分写入深度缓冲区;
关闭深度写入,将远离头部的头发部分开启颜色混合。
本实施例中,将头发分为靠近头部的部分及远离头部的部分,靠近头部的部分或者说发根部分为不透明部分,因此,开启深度写入,将不透明部分的像素的深度写入深度缓冲区,这样,可以添加不透明部分的阴影效果;远离头部的部分或者说发尾部分为半透明部分,则将深度写入关闭,并开启颜色混合,这样,可以渲染出层次分明的头发。并且,在相关技术中的为了保证颜色混合正确会关闭深度写入,并将半透明物体按由远到近的顺序进行渲染的方法,该方法未考虑到头发本身会出现模型交叉的情况,无法简单地区分出哪部分在前哪部分在后,模型内的三角形渲染顺序也无法改变。本实施例的方法相对于相关技术中的方法,可以避免上述的情况。
在本申请一示例性实施例中,在完成所述人体模型的渲染之后,所述方法还包括:向所述人体模型的图像进行景深处理。在完成人体模型的渲染后,可以得到人体模型的图像,图像还可以包括背景的图像。通过对图像进行景深处理,可以突出人体模型的细节,可以模拟真实摄像机成像原理形成的景深效果。
上述任意实施例的人体模型渲染方法可以应用于直播、视频制作、视频社交等应用程序,也可以应用于需要创建虚拟角色类型的游戏,本申请不作具体的限定。下面以直播应用为例对上述的人体模型渲染方法的应用场景进行详细说明。图4A为本申请一示例性实施例示出的一种人体模型渲染方法的应用环境示意图。如图4A所示,一种直播***40,该***包括直播服务器410、主播客户端420以及观众客户端430,例如,主播可以通过主播客户端420选择在直播视频的画面中添加虚拟角色的功能,从而创建一个人体模型,该人体模型可以是由主播根据自己的设计在直播应用所提供的人体素材库中选择脸型、五官、头发、身型、皮肤、服饰等素材进行组合并创建而成。又如,可以通过主播客户端的摄像模块识别主播的人脸、五官、头发、四肢躯干,自动生成一个与主播对应的人体模型。下面以主播可以创建人体模型的例子对人体模型渲染方法应用于直播***40进行说明。
在本申请一示例性实施例中,在人体模型创建成功后,可以是主播客户端的指定SDK(软件开发工具包)获取该人体模型,并实施本申请上述实施例的人体模型渲染方法对该人体模型进行渲染,从而增加人体模型的立体效果和真实感。由此,渲染后的人体模型可以根据主播的选择添加到直播视频的画面中,将直播视频画面发送给直播服务器410,以使直播服务器410将直播视频画面推送给收看该直播的观众客户端430。在本申请一示例性实施例中,在人体模型创建成功后,也可以是主播客户端将创建的人体模型和直播视频画面发送给直播服务器410,直播服务器410实施本申请上述实施例的人体模型渲染方法对该人体模型进行渲染,从而增加人体模型的立体效果和真实感。并根据主播的选择将渲染后的人体模型添加到直播视频的画面中,再将直播视频画面推送给收看该直播的观众客户端430。
图4B、4C为本申请一示例性实施例示出的一种主播客户端创建人体模型的界面示意图,图4D为本申请一示例性实施例示出的人体模型渲染后的效果示意图。如图4B所示,主播可以通过主播客户端的功能菜单选择创建虚拟角色跳转到图4C创建界面进行人体模型的创建,通过在所提供的人体素材库中选择脸型、五官、头发、身型、皮肤、服饰等素材进行组合,从而完成人体模型的创建,创建人体模型之后,主播客户端的指定SDK可以对该人体模型进行渲染,渲染后的效果如图4D所示,可见,渲染后的人体模型更具有立体效果和真实感。
本申请还提供了一种人体模型渲染装置,图5为本申请一示例性实施例示出的一种人体模型渲染装置的结构示意图。如图5所示,该人体模型渲染装置50包括:
获取模块510,用于获取人体模型,所述人体模型包括人体三维模型数据及人体的皮肤纹理数据;
渲染模块520,用于向所述人体模型添加直接光照、间接光照以及次表面散射,并进行渲染。
在本申请一示例性实施例中,所述渲染模块包括:
第一添加子模块,用于添加朝向所述人体模型正面的平行光,形成正面高光以及正面阴影;
第二添加子模块,用于添加朝向所述人体模型背面的平行光,形成背面高光以及背面阴影。
在本申请一示例性实施例中,所述渲染模块还包括:
第三添加子模块,用于在形成正面高光、正面阴影、背面高光及背面阴影之前,在所述正面的平行光及所述背面的平行光的位置及方向上分别放置虚拟相机,通过所述虚拟相机将所述人体模型的深度信息渲染到深度纹理中;
第一采样子模块,用于对所述深度纹理进行采样平均,得到深度贴图;
形成子模块,用于基于所述深度贴图形成所述正面阴影及所述背面阴影。
在本申请一示例性实施例中,所述渲染模块包括:
第二采样子模块,用于基于所述人体模型表面各顶点的法线方向,在指定的环境贴图上采样各所述顶点对应的间接光照亮度;
相乘子模块,用于将各所述顶点的间接光照亮度与各所述顶点的颜色值相乘,得到在所述人体模型上所添加的间接光照亮度。
在本申请一示例性实施例中,所述渲染模块还包括:
第四添加子模块,用于基于所述直接光照所添加的背面的平行光,添加背面的平行光穿透部分所述人体模型的次表面散射。
在本申请一示例性实施例中,所述人体模型还包括头发纹理数据,所述装置还包括:
头发渲染模块,用于在进行人体模型的渲染之前,向所述头发纹理数据进行半透明分层渲染。
在本申请一示例性实施例中,所述装置还包括:
景深处理模块,用于在完成所述人体模型的渲染之后,向所述人体模型的图像进行景深处理。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请还提供了一种电子设备,图6为本申请一示例性实施例示出的一种电子设备的结构示意图。如图6所示,该电子设备60包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意实施例中所述的人体模型渲染方法的步骤。
本申请的人体模型渲染装置的实施例可以应用在电子设备上,例如可以是智能手机、平板电脑、台式计算机、便携式计算机、PDA(Personal Digital Assistant,个人数字助理)等终端设备,电子设备上装载有包括但不限于直播、视频制作等应用程序。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任意实施例中所述的人体模型渲染方法的步骤。
本申请实施例可采用在一个或多个其中包含有程序代码的可读介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的可读介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本申请记载的范围。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。