阴影渲染方法、装置、终端及存储介质制造方法及图纸

技术编号:21573661 阅读:27 留言:0更新日期:2019-07-10 15:57
本发明专利技术公开了一种阴影渲染方法、装置、终端及存储介质,属于图像渲染技术领域。该方法包括:根据虚拟场景中的光照方向,获取该虚拟场景中的至少一个渲染结构体;根据当前视角和该多个像素点的深度信息,获取该多个像素点的模型坐标;根据该多个像素点的模型坐标,对至少一个阴影贴图进行采样,得到与该多个像素点所对应的多个采样点;在该虚拟场景中对该多个采样点进行渲染,得到该至少一个阴影。本发明专利技术不使用第三方插件的情况下,基于渲染引擎本身的功能实现了阴影的实时渲染,节约了终端的内存资源,提高了终端CPU的处理效率。

Shadow Rendering Method, Device, Terminal and Storage Media

【技术实现步骤摘要】
阴影渲染方法、装置、终端及存储介质
本专利技术涉及图像渲染
,特别涉及一种阴影渲染方法、装置、终端及存储介质。
技术介绍
随着图像渲染技术的发展,为了模拟出更加逼真的三维场景,终端通常会实时地对三维场景内的对象的阴影进行渲染,该对象可以是人物,也可以是物体。目前,可以通过第三方插件(例如FastShadowReceiver,快速阴影接收器)实现实时阴影渲染,也即是:对场景网格(mesh)进行烘焙(bake)处理,将高维、具体的场景数据转换为近似的低维、泛化的场景数据,其中,上述场景网格用于表示三维模型的纹理、光照、材质等信息;根据光源数据和已烘焙好的场景网格,从该场景网格中获取阴影区域的网格,将阴影纹理渲染在该阴影区域上,得到具有阴影的场景网格,第三方插件直接渲染出来的阴影通常会和场景中原本的三维模型产生“重影”(例如地形互相穿插、地面有贴花等)问题,因此技术人员通常会基于该具有阴影的场景网格,重新制作一张修正了重影部分的新网格,从而修正了“重影”问题,以达到实时展示阴影的效果。在上述过程中,已烘焙好的场景网格通常需占用1.5~4M的内存,因此通过第三方插件进行阴影渲染时,挤占了终端的内存资源,影响了终端CPU(centralprocessingunit,中央处理器)的处理效率。
技术实现思路
本专利技术实施例提供了一种阴影渲染方法、装置、终端及存储介质,能够解决第三方插件渲染阴影时挤占终端内存资源,影响终端CPU处理效率的问题。该技术方案如下:一方面,提供了一种阴影渲染方法,该方法包括:根据虚拟场景中的光照方向,获取该虚拟场景中的至少一个渲染结构体,该至少一个渲染结构体用于渲染至少一个虚拟对象的至少一个阴影,每个渲染结构体包括多个像素点;根据当前视角和该多个像素点的深度信息,获取该多个像素点的模型坐标,一个模型坐标用于描述一个像素点相对于一个虚拟对象的模型顶点的纹理信息;根据该多个像素点的模型坐标,对至少一个阴影贴图进行采样,得到与该多个像素点所对应的多个采样点,每个阴影贴图用于提供一个阴影的纹理信息;在该虚拟场景中对该多个采样点进行渲染,得到该至少一个阴影。一方面,提供了一种阴影渲染装置,该装置包括:第一获取模块,用于根据虚拟场景中的光照方向,获取该虚拟场景中的至少一个渲染结构体,该至少一个渲染结构体用于渲染至少一个虚拟对象的至少一个阴影,每个渲染结构体包括多个像素点;第二获取模块,用于根据当前视角和该多个像素点的深度信息,获取该多个像素点的模型坐标,一个模型坐标用于描述一个像素点相对于一个虚拟对象的模型基点的纹理信息;采样模块,用于根据该多个像素点的模型坐标,对至少一个阴影贴图进行采样,得到与该多个像素点所对应的多个采样点,每个阴影贴图用于提供一个阴影的纹理信息;渲染模块,用于在该虚拟场景中对该多个采样点进行渲染,得到该至少一个阴影。在一种可能实施方式中,该装置还包括:根据该多个像素点的屏幕坐标,从深度贴图中获取该多个像素点的深度信息,一个屏幕坐标用于描述一个像素点相对于终端屏幕的屏幕基点的位置信息。在一种可能实施方式中,该第一获取模块用于:根据该至少一个虚拟对象,确定该至少一个渲染结构体的初始大小和初始位置,该初始大小和该初始位置与该至少一个虚拟对象相匹配;根据该光照方向,确定该至少一个渲染结构体的方向,调整该初始大小和初始位置,得到该至少一个渲染结构体。在一种可能实施方式中,该至少一个渲染结构体为立方体、球体或者圆柱体。在一种可能实施方式中,该装置还包括:将该光照方向的视点矩阵左乘该至少一个虚拟对象的世界坐标,生成从该光照方向对该至少一个虚拟对象进行阴影投射的该至少一个阴影贴图。在一种可能实施方式中,该装置还包括:将不允许遮挡的虚拟对象的材质标记为目标材质,该目标材质为渲染过程中不支持阴影渲染的材质。一方面,提供了一种终端,该终端包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条指令,该至少一条指令由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的阴影渲染方法所执行的操作。一方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该至少一条指令由处理器加载并执行以实现如上述任一种可能实现方式的阴影渲染方法所执行的操作。本专利技术实施例提供的技术方案带来的有益效果至少包括:通过根据虚拟场景中的光照方向,获取该虚拟场景中的至少一个渲染结构体,从而将该至少一个渲染结构体作为阴影渲染的模型,根据当前视角和该多个像素点的深度信息,获取该多个像素点的模型坐标,从而能够使得模型坐标与阴影贴图的UV空间一一对应,根据该多个像素点的模型坐标,对至少一个阴影贴图进行采样,得到与该多个像素点所对应的多个采样点,在该虚拟场景中对该多个采样点进行渲染,得到该至少一个阴影,使得终端在不使用第三方插件的情况下,基于渲染引擎本身的功能实现了阴影的实时渲染,由于没有使用第三方插件,也就无需在阴影渲染时调用已烘焙好的场景网格,节约了终端的内存资源,提高了终端CPU的处理效率。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的一种阴影渲染方法的实施环境示意图;图2是本专利技术实施例提供的一种阴影渲染方法的流程图;图3是本专利技术实施例提供的确定目标像素点的示意图;图4是本专利技术实施例提供的一种渲染效果的示意图;图5是本专利技术实施例提供的一种渲染效果的示意图;图6是本专利技术实施例提供的一种渲染效果的示意图;图7是本专利技术实施例提供的一种阴影渲染装置的结构示意图;图8是本专利技术实施例提供的终端的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。图1是本专利技术实施例提供的一种阴影渲染方法的实施环境示意图。参见图1,在该实施环境中,终端101上可以安装有渲染引擎102。其中,该终端101用于提供阴影渲染服务,终端101可以基于该渲染引擎102,对任一虚拟场景中的虚拟对象以及虚拟对象的阴影进行渲染,该虚拟对象可以是人物,也可以是物体,该虚拟场景可以是任一展示在终端上的虚拟场景,例如该虚拟场景可以是游戏场景、室内设计模拟场景等,本专利技术实施例不对该虚拟场景的内容进行具体限定。在一些实施例中,该渲染引擎102可以以独立的渲染客户端的形式安装在终端上,使得终端可以直接通过该渲染客户端实现阴影渲染,例如,该渲染引擎102可以是unity3D(联合三维),可以是Unreal(unrealengine,虚幻引擎),也可以是OpenGL(opengraphicslibrary,开放图形库)等。在一些实施例中,终端上可以安装有用于提供虚拟场景的应用客户端,该应用客户端可以是游戏客户端、三维设计客户端等,该渲染引擎102可以以API(applicationprogramminginterface,应用程序编程接口)的形式封装在终端操作系统的内核层,终端操作系统向上层的应用客户端提供该API,从而使得终端上的该应用客户端能够调用该API,渲染虚拟场景本文档来自技高网...

【技术保护点】
1.一种阴影渲染方法,其特征在于,所述方法包括:根据虚拟场景中的光照方向,获取所述虚拟场景中的至少一个渲染结构体,所述至少一个渲染结构体用于渲染至少一个虚拟对象的至少一个阴影,每个渲染结构体包括多个像素点;根据当前视角和所述多个像素点的深度信息,获取所述多个像素点的模型坐标,一个模型坐标用于描述一个像素点相对于一个虚拟对象的模型顶点的纹理信息;根据所述多个像素点的模型坐标,对至少一个阴影贴图进行采样,得到与所述多个像素点所对应的多个采样点,每个阴影贴图用于提供一个阴影的纹理信息;在所述虚拟场景中对所述多个采样点进行渲染,得到所述至少一个阴影。

【技术特征摘要】
1.一种阴影渲染方法,其特征在于,所述方法包括:根据虚拟场景中的光照方向,获取所述虚拟场景中的至少一个渲染结构体,所述至少一个渲染结构体用于渲染至少一个虚拟对象的至少一个阴影,每个渲染结构体包括多个像素点;根据当前视角和所述多个像素点的深度信息,获取所述多个像素点的模型坐标,一个模型坐标用于描述一个像素点相对于一个虚拟对象的模型顶点的纹理信息;根据所述多个像素点的模型坐标,对至少一个阴影贴图进行采样,得到与所述多个像素点所对应的多个采样点,每个阴影贴图用于提供一个阴影的纹理信息;在所述虚拟场景中对所述多个采样点进行渲染,得到所述至少一个阴影。2.根据权利要求1所述的方法,其特征在于,所述根据当前视角和所述多个像素点的深度信息,获取所述多个像素点的模型坐标包括:根据所述当前视角和所述多个像素点的深度信息,获取所述多个像素点的世界坐标,一个世界坐标用于描述一个像素点相对于所述虚拟场景的场景基点的位置信息;根据所述多个像素点的世界坐标,获取所述多个像素点的模型坐标。3.根据权利要求2所述的方法,其特征在于,所述根据所述当前视角和所述多个像素点的深度信息,获取所述多个像素点的世界坐标包括:对每个像素点,以所述当前视角的视点为射线端点,在所述视点与所述像素点所确定的射线方向上,确定与所述视点之间的距离符合所述像素点的深度信息的目标像素点;将所述目标像素点的世界坐标确定为所述像素点的世界坐标。4.根据权利要求2所述的方法,其特征在于,所述根据所述多个像素点的世界坐标,获取所述多个像素点的模型坐标包括:将所述当前视角的视点矩阵左乘所述多个像素点的世界坐标,得到所述多个像素点的本地坐标;将所述多个像素点的本地坐标映射到纹理映射空间,得到所述多个像素点的模型坐标。5.根据权利要求1所述的方法,其特征在于,所述根据当前视角和所述多个像素点的深度信息,获取所述多个像素点的模型坐标之前,所述方法还包括:根据所述多个像素点的屏幕坐标,从深度贴图中获取所述多个像素点的深度信息,一个屏幕坐标用于描述一个像素点相对于终端屏幕的屏幕基点的位置信息。6.根据权利要求1所述的方法,其特征在于,所述根据虚拟场景中的光照方向,获取所述虚拟场景中的至少一个渲染结构体包括:根据所述至少一个虚拟对象,确定所述至少一个渲染结构体的初始大小和初始位置,所述初始大小和所述初始位置与所述至少一个虚拟对象相匹配;根据所述光照方向,确定所述至少一个渲染结构体的方向,调整所述初始大小和初始位置,得到所述至少一个渲染结构体。7.根据权利要求1所述的方法,其特征在于,所述至少一个渲染结构体为立方体、球体或者圆柱体。8.根据权利要求1所述的方法,其特征在于,所述根据所述多个像素点的模型坐标...

【专利技术属性】
技术研发人员:侯仓健
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1