渲染次表面散射效果的方法和装置与流程

文档序号:12675629阅读:423来源:国知局
渲染次表面散射效果的方法和装置与流程

本申请涉及图像处理技术领域,尤其涉及一种渲染次表面散射效果的方法和装置。



背景技术:

次表面散射,是光从非金属材质的物体表面进入物体后,经过物体内部散射,最后射出物体并进入视野中产生的现象。次表面散射主要用于模拟透明或半透明材质内部表面出来的一种真实光影特效,例如,在一根蜡烛烛光的照耀下,蜡烛靠近火焰的一端会呈现出半透明的效果;又如,在灯光等光线的照射下,人的皮肤所呈现出的效果等。

次表面散射已经被广泛应用于三维动画电影、游戏等诸多领域,以提高画面中物体的真实感。为了渲染出三维动画电影以及游戏等画面中的对象(如,物体、人体部位等)所产生的次表面散射效果,需要根据光源的光线射入对象表面的入射点的光强,计算出光线射出该对象表面的射出点的光强,然后基于射出点的光强渲染该对象的次表面散射效果。然而由于目前计算光线射出对象表面的射出点的光强的精准度较低,使得射出点的光强与实际光强的偏差较多,从而影响到画面中对象的次表面散射效果的真实性。



技术实现要素:

有鉴于此,本申请提供了一种渲染次表面散射效果的方法和装置,以三维动画电影以及游戏等领域中,提高画面中渲染出的对象的次表面散射效果的真实性。

为实现上述目的,一方面,本申请实施例提供了一种渲染次表面散射效果的方法,包括:

从待渲染画面对应的三维场景空间中,确定待渲染的目标对象;

获取所述目标对象中光线入射表面上各个光线入射点的光照强度;

针对所述目标对象中光线出射表面上的每个光线出射点,从所述光线入射表面的光线入射点中,采样出多个目标光线入射点;

对于所述光线出射点对应的每个所述目标光线入射点,基于所述目标光线入射点与所述光线出射点之间的目标距离,对所述目标光线入射点的光照强度进行指数衰减,得到经过衰减的光照强度;

对于每个所述光线出射点,将所述光线出射点对应的多个经过衰减的光照强度进行加和,得到所述光线出射点的光照强度;

依据所述光线出射面上各个所述光线出射点的光照强度,渲染所述目标对象的次表面散射效果。

另一方面,本申请实施例还提供了一种渲染次表面散射效果的装置,包括:

对象确定单元,用于从待渲染画面对应的三维场景空间中,确定待渲染的目标对象;

光强获取单元,用于获取所述目标对象中光线入射表面上各个光线入射点的光照强度;

入射点采样单元,用于针对所述目标对象中光线出射表面上的每个光线出射点,从所述光线入射表面的光线入射点中,采样出多个目标光线入射点;

光照衰减单元,用于对于所述光线出射点对应的每个所述目标光线入射点,基于所述目标光线入射点与所述光线出射点之间的目标距离,对所述目标光线入射点的光照强度进行指数衰减,得到经过衰减的光照强度;

出射光强确定单元,用于对于每个所述光线出射点,将所述光线出射点对应的多个经过衰减的光照强度进行加和,得到所述光线出射点的光照强度;

效果渲染单元,用于依据所述光线出射面上各个所述光线出射点的光照强度,渲染所述目标对象的次表面散射效果。

经由上述的技术方案可知,在本申请实施例中,从待渲染画面对应的三维场景空间中确定出待渲染的目标对象之后,对于该目标对象中光线射出的光线出射表面中的每个光线出射点,会从该目标对象中光线射入的光线入射表面中采集出多个目标光线入射点,然后根据该多个目标光线入射点的光照强度随着距离的指数衰减,确定出该光线出射点的光照强度,可见,在确定光线出射点的光照强度时,并非假设光线在目标对象中以直线传播,而仅仅依据一个某一个光线入射点的光照强度来确定光线出射点的光照强度;而是充分考虑到光线在目标对象中的漫反射现象,而综合考虑到目标对象的光线入射表面中多个光线入射点对该光线出射点的光照强度的影响,从而综合确定出该光线出射点的光照强度,使得光线出射点的光照强度更为贴近真实性,进而使得依据该光线出射点渲染出的次表面散射效果更佳符合真实的物理效果,提高了次表面散射的精准性和真实性。

附图说明

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

图1为本申请实施例公开的计算机设备的一种组成结构示意图;

图2为本申请实施例所公开渲染次表面散射效果的方法所适用的一种应用场景的示意图;

图3为本申请实施例公开的一种渲染次表面散射效果的方法的一个实施例的流程示意图;

图4示出了光源与目标对象的相对位置关系的平面效果示意图;

图5a示出了光线在物体内部发生散射的示意图;

图5b示出了光线入射点处射出的光线经过散射后从光线出射点射出的效果示意图;

图6a示出了用于确定光线出射点的光照强度所基于的光线入射点的集合的示意图;

图6b示出了光线出射点A对应的一个光线入射点B,以及该光线入射点B对应的直接光线出射点C之间的位置关系平面示意图;

图7示出了本申请实施例中确定目标光线入射点的光照强度经过折射损耗后的修正光照强度的实现流程示意图;

图8示出了本申请实施例公开的一种渲染次表面散射效果的方法又一个实施例的流程示意图;

图9a示出了从光线入射表面中首次采样得到的与该目标光线出射点对应的目标光线入射点的示意图;

图9b为图9a中采样得到的目标光线入射点所对应的光线入射表面的坐标纹理图像中像素点的示意图;

图9c示出了从光线入射表面中第二次采样得到的与该目标光线出射点对应的目标光线入射点的示意图;

图9d为图9c中采样得到的目标光线入射点所对应的光线入射表面的坐标纹理图像中像素点的示意图;

图10示出了本申请一种渲染次表面散射效果的装置一个实施例的组成结构示意图。

具体实施方式

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

本申请实施例提供了一种渲染次表面散射效果的方法和装置,该方法和装置应用于计算机图形、计算机动画、虚拟现实等领域所涉及到的画面中对象的次表面散射效果的渲染,提高画面中对象的次表面散射的精准度,提升画面中对象的次表面散射的真实性。

例如,可以应用于对游戏画面中对象的次表面散射效果的渲染,以提高游戏对象的次表面散射效果的真实性。

本实施例的方法和装置适用于任意计算机设备中,以通过该计算机设备完成对象的次表面散射效果的渲染,如,该计算机设备可展现游戏画面或三维动画等画面的终端,当然,也可以是向外提供游戏服务或者虚拟现实服务的服务器,或者是其他具备图形数据处理能力的设备。例如,该计算机设备可以是台式电脑、笔记本电脑、手机等设备。

如图1,其示出了本申请实施例的渲染次表面散射效果的方法和装置所适用的计算机设备的一种组成结构示意图。在图1中,该计算机设备可以包括:处理器101、存储器102、通信接口103、显示器104、输入单元105和通信总线106。

处理器101、存储器102、通信接口103、显示器104、输入单元105均通过通信总线106完成相互间的通信。

在本申请实施例中,该处理器101至少包括:显卡中的图形处理器(GPU,Graphics Processing Unit)1012,GPU可以用于实现本申请实施例中模拟摄取虚拟三维场景中的对象的图像、图像渲染等相关的图形数据处理。

该处理器101中还可以包括中央处理器(CPU,Central Processing Unit)1011,以辅助GPU完成一些相关的数据处理,可以实现该计算机设备主要的数据处理操作,当然,该中央处理器还可以被替换为特定应用集成电路(application-specific integrated circuit,ASIC),数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件等。

存储器102中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令。该存储器可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

该通信接口103可以为通信模块的接口,如GSM模块的接口。

该显示器104可用于显示三维场景空间中所涉及到的对象以及其他图像信息;还可以显示由用户输入的信息,或者提供给用户的信息,以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图片等任意组合来构成。该显示器可以包括显示面板,如,可以为采用液晶显示器、有机发光二极管等形式来配置的显示面板。进一步的,该显示器可以包括具备采集触摸事件的触摸显示面板。

可选的,计算机设备还可以包括输入单元105该输入单元105可用于接收输入的用户输入的字符、数字等信息,以及产生与用户设置以及功能控制有关的信号输入。该输入单元可以包括但不限于物理键盘、鼠标、操作杆等中的一种或多种。

当然,图1所示的计算机设备结构并不构成对计算机设备的限定,在实际应用中计算机设备可以包括比图1所示的更多或更少的部件,或者组合某些部件。

为了便于理解本申请的方案,下面对本申请的方案所适用的一种场景进行简单介绍,参见图2,其示出了本申请一种渲染次表面散射的方法所适用的一种场景示意图。

如图2所示,在该种应用场景中可以包括由至少一台服务器201组成的服务系统,以及多台终端202。

其中,服务系统中的服务器201中可以接收终端的场景展现请求,并根据该场景展现请求,获取用于实现游戏或者虚拟现实等功能的场景数据,如,以游戏为例,场景数据可以包括游戏画面数据,在该游戏画面数据中包含了画面中各个对象的相关数据;

该终端202用于展现服务器返回的场景数据所对应的场景,并根据用户的操作,向服务器发送更新该场景中对象位置或者姿态的更新请求。

相应的,该服务系统中的服务器201还用于响应于终端的更新请求,更新该场景中该对象的位置或者姿态。

可选的,终端202在检测到场景中的对象周围存在光源,如点光源,还可以对该对象进行次表面散射效果的渲染。

当然,在实际应用中,也可以是服务器对场景中的对象进行次表面散射效果进行渲染之后,再返回给终端。考虑到数据传输量以及渲染效果的实时展现,以在终端测对场景中的对象进行次表面散射效果的渲染作为优选实施方式。

基于以上本实施例的共性,对本申请实施例的渲染次表面散射效果的方法进行详细介绍。

参见图3,其示出了本申请一种渲染次表面散射效果的方法一个实施例的流程示意图,本实施例的方法可以应用于前面所提到的计算机设备,本实施例的方法可以包括:

S301,从待渲染画面对应的三维场景空间中,确定待渲染的目标对象。

针对所应用的不同领域,该待渲染画面也会有所不同,如,对于游戏而言,该待渲染画面可以为游戏中的游戏画面;又如,在虚拟现实场景中,该待渲染的画面可以为虚拟现实中所呈现出的画面。

可以理解的是,在计算机设备中所呈现出的画面可能是一个二维画面,但是在构建该画面的场景时,该画面实际上是处于三维场景中的一个画面,而画面中每一个对象,在三维场景中都是一个虚拟的三维对象模型。为了确定出该画面中所需渲染的对象,需要在该画面对应的三维场景中定位出该对象的三维模型。

为了便于区分,在本申请实施例中,将从三维场景中确定出的需要进行次表面散射渲染的对象称为目标对象。该目标对象可以为物体、人物或者物体或人体的一部分等,例如,该目标对象可以为人体的手部。

S302,获取该目标对象中光线入射表面上各个光线入射点的光照强度。

可以理解的是,光线从目标对象的表面射入目标对象,在本申请实施例中将光线射入该目标对象所经过的表面称为光线入射表面,光线入射表面上各个像素点均存在光线射入,因此,该光线入射表面上每个像素点均可以称为一个光线入射点。

光线入射点的光照强度取决于光源的位置、光源的强度等信息,可选的,为了确定光线入射点的光照强度,可以先确定照射该目标对象的光源的空间位置以及光源的光照强度,并按照预设的光照模型,并结合该目标光源的空间位置和光照强度,确定该目标对象中光线入射面中各个光线入射点的光照强度。如,该光照模型可以为冯氏光照模型或者phone光照模型等等。

在实际应用中,还可以按照预设的光照模型,并结合光源的空间位置、光源的光照强度等参数,生成该目标对象中光线入射表面的光照纹理图像,该光照纹理图像中的每个像素点具有一个光照强度的取值,而光照纹理图像中的每个像素点对应该光线入射表面中的一个光线入射点。

当然,在实际应用中,还可以有其他方式来确定光线入射表面中各个光线入射点的光照强度,对于其他方式也同样适用于本申请实施例,在此不加以限制。

S303,针对该目标对象中光线出射表面上的每个光线出射点,从该光线入射表面的光线入射点中,采样出多个目标光线入射点。

与目标对象的光线入射表面相对应,光线经该目标对象的表面射出该目标对象,而光线射出该目标对象的表面为该光线射出表面,光线射出表面上的各个像素点为光线射出点。

一般情况下,在光源的位置确定后,目标对象中表面中存在光线射入的区域也会相应确定,其中,目标对象的表面中朝向光源的表面区域为光线入射表面,而背向光源的表面区域为光线出射表面。

为了便于理解,可以参见图4,其示出了表示光源、目标对象的相对位置关系的平面示意图,由图4可以看出,目标对象41中朝向光源42的一面可以被光源照射,如图4中目标对象41中表面线条加粗的一面即为光线入射表面411。光线入射表面411上的各个小圆圈可以表示光线入射点;光源的光从该光线入射表面射入到该目标对象内部,并在目标对象内部进行散射,并最终从目标对象背向光源的一面上各个点上射出,如图4中目标物体的表面线条未加粗的一面即为光线出射表面412,光线出射表面412上的各个点为光线出射点。

光线进入目标对象之后,并非沿着直线传播,如图5a,其示出了光线在物体内部发生散射的示意图,在图5a中以一条光线为例,在光线在目标对象中传播的过程中,在不同的点处都可能会发生散射,当然,光线传播过程中发生散射的点可以很多,图5a仅仅是示意性的画出了在几个点处散射。

而正是由于光线在物体中会存在散射,光线入射表面中不同光线入射点射入的光线在物体中经过散射之后,可能会经过光线出射表面中的同一个光线出射点射出,如图5b,光线入射表面中存在多个光线入射点,这些入射点的光线经过直接传播以及散射之后,会从同一个光线出射点射出。

结合对图5a和图5b的分析可知,光线出射点的光照强度不仅仅是受到该光线入射表面中的一个光线入射点,而是受到光线入射表面的全部光线入射点的光照强度的影响。因此,在本申请实施例中,分别针对每一个光线出射点,从该光线入射表面的光线入射点中,采样出多个与该光线出射点对应的目标光线入射点。如,可以将光线入射表面中全部光线入射点均作为该光线出射点对应的目标光线入射点。考虑到数据处理量,可以对光线入射表面中的光线入射点进行采样,如,每间隔设定数量个光线入射点进行一次采样,从而采样出多个目标光线入射点。

可以理解的是,光线经过散射会导致光照强度的损耗,因此,对于一个光线出射点而言,如果光线是从光线入射点直接传播到该光线出射点,则该光线入射点的光照强度对该光线出射点的光照强度的影响相对较大。基于此,可选的,对于一个光线出射点,在确定照射该目标对象的目标光源的空间位置之后,可以从该光线入射表面中,确定出与该光线出射点以及照射该目标对象的目标光源处于同一直线上的光线入射点,为了便于区分,将确定出的该光线入射点称为直接光线入射点;在将该直接光线入射点也作为采样出的目标光线入射点的同时,还可以以该直接光线入射点为中心,从该光线入射表面中未被采样的光线入射点中,再采样出指定数量个目标光线入射点。

其中,以该直接光线入射点为中心进行采样的好处是使得采样出的目标光线入射点均匀分布到该直接光线入射点的周围,从而有利于从光线入射面中采集到对光线出射点的光照强度影响较大的光线入射点,有利于提高后续计算出的该光线出射点的光照强度的精准度。

S304,对于该光线出射点对应的每个该目标光线入射点,基于该目标光线入射点与该光线出射点之间的目标距离,对该目标光线入射点的光照强度进行指数衰减,得到经过衰减的光照强度。

其中,光线的光照强度随着距离的增大而呈指数衰减。

为了便于区分,将目标光线入射点与该光线出射点之间的距离称为目标距离。其中,该目标距离可以依据该目标光线入射点的空间坐标以及该光线出射点的空间坐标来确定。

在确定出该目标距离之后,基于该距离对目标光线入射点处的光照强度进行指数衰减,可以得到出该光线从该目标光线入射点传播到该目标光线出射点时,从该目标光线入射点入射的光线传播到该光线出射点处的光照强度。

S305,对于每个光线出射点,将该光线出射点对应的多个经过衰减的光照强度进行加和,得到该光线出射点的光照强度。

其中,光线出射点对应的每一个目标光线入射点均对应一个经过衰减的光照强度,从而使得每个光线出射点对应着多个经过衰减的光照强度。

如,假设针对一个光线出射点,采样出三个光线入射点,光线射入到三个光线入射点处的光照强度分别为M1、M2和M3,而这三个光线射入点射入的光线在目标对象中传播到达该光线出射点之后,这三个光线入射点射入的光线的光照强度分别从M1、M2以及M3衰减为I1、I2和I3,则该光线出射点出的光照强度I=I1+I2+I3。

可见,光线出射点的光照强度实际上是综合了光线入射表面中多个光线入射点经过衰减后到达该光线出射点的光照强度,如图6a所示,一个光线出射点601对应着多个光线入射点602,该光线出射点综合了经过多个光线入射点射入到该光线出射点的光线集合,而该光线出射点的光照强度为该光线集合中所有光线在该光线出射点处的光照强度的总和。

S306,依据该光线出射面上各个该光线出射点的光照强度,渲染该目标对象的次表面散射效果。

如,可以将计算出的光线出射点的光照强度投射到目标对象上,并经过渲染处理,可以在该目标对象上呈现出次表面散射效果。

可见,在本申请实施例中,在确定光线出射点的光照强度时,并非在假设光线在目标对象中以直线传播的前提下,仅仅依据一个某一个光线入射点的光照强度来确定光线出射点的光照强度;而是充分考虑到光线在目标对象中的漫反射现象,而综合考虑到目标对象的光线入射表面中多个光线入射点对该光线出射点的光照强度的影响,从而综合确定出该光线出射点的光照强度,使得光线出射点的光照强度更为贴近真实性,进而使得依据该光线出射点渲染出的次表面散射效果更佳符合真实的物理效果,提高了次表面散射的精准性和真实性。

同时,本申请实施例采用实时计算目标对象中光线出射点的光照强度,并实时渲染目标对象的次表面散射效果,从而无需预先离线计算用于渲染表面散射效果所需的相关参数,避免了预先存储大量的预计算数据而导致占用大量的存储空间。

可以理解的是,从一个目标光线入射点射入的光线经过散射到达该目标对象的一个光线出射点的同时,该目标光线入射点射入的光线也会经过直线传播到达其他光线出射点,使得目标光线入射点的光照强度存在损耗,因此,对于一个光线出射点而言,如果直接根据目标光线入射点与该光线出射点之间的目标距离,对该目标光线入射点的光照强度进行指数衰减,那么得到的经过衰减后的光照强度无法精准的反映出该目标光线入射点处的光线到达该光线出射点处的光照强度。

为了准确计算出,光线从该目标光线入射点到达该光线出射点处的光照强度,在步骤S304之前,还需要对目标光线入射点的光照强度进行修正,以得到目标光线入射点的光照强度经过折射损耗后的光照强度(以下称为修正光照强度),如参见图7,其示出了本申请确定目标光线入射点的光照强度经过折射损耗后的修正光照强度的实现流程示意图。

在S701部分,确定三维场景中照射该目标对象的目标光源的空间位置。

其中,该S701为可选步骤,如果在执行图3所示流程的过程中,已经确定出该目标光源的空间位置,则无需重复执行该步骤S701。

在S702中,依据该目标光源的空间位置,以及目标光线入射点的位置,从该目标对象的光线出射面中,确定出与该目标光线入射点以及该目标光源处于同一直线上的直接光线出射点。

为了便于区分,将与目标光线入射点以及该目标光源处于同一直线上的光线出射点称为直接光线出射点。

如图6b,可以看出,对于光线出射点A对应的一个光线入射点B而言,该光线入射点B射入的光线经直线传播到达光线出射点C,因此,光线出射点C为光线入射点B对应的直接光线出射点。同时,由图6b可以看出,由于该光线入射点B的射入的光线经过散射到达该光线出射点A的同时,由于射入该光线入射点B的一部分光线传播到光线出射点,使得该光线入射点B射入的光线的光照强度会在向光线出射点C传播的过程中会存在一部分损耗。

在S703部分,基于该直接光线出射点、目标光线入射点以及该光线出射点的位置关系,确定该目标光线入射点的光照强度经过折射损耗后的修正光照强度。

如,可以按照菲涅尔折射公式,并结合直接光线出射点与目标光线入射点的第一直线,与目标光线入射点与光线出射点的第二之间之间的夹角,计算出在存在该直接光线出射点的情况下,目标光线入射点的光照强度中,可以沿着目标光线入射点到该光线出射点的方向进行传播的光照强度,即计算出该目标光线入射点的光照强度经过折射损耗后的修正光照强度。

例如,仍以图6b为例,可以先计算出直线AB与直线CB之间的夹角,然后结合目标光线入射点B处的光照强度以及菲涅尔折射公式,计算出目标光线入射点B处的光线可以传播到直线CB方向上的折射损耗系数,并将该折射损耗系数与该目标光线入射点B处的原始光照强度相乘,就可以得到经过折射损耗后的修正光照强度。

可以理解的是,当光线出射点与该目标光线入射点对应的直接光线出射点重合时,可以认为是一种特殊情况,同样可以采用以上方式进行修正。

在得到该修正光照强度之后,以上实施例中步骤304具体可以为基于该目标光线入射点与光线出射点之间的目标距离,对该目标光线入射点的修正光照强度进行指数衰减,以得到从该目标光线入射点射入的光线传播至该光线出射点处的光照强度。

在本申请以上任意一个实施例中,考虑到计算机设备的数据处理能力,避免同一时刻数据处理量过大,还可以控制每次采样目标光线入射点的数量,从而控制每次需要进行加和计算的经过衰减后的光照强度的数量,同时,为了提高计算出的光线出射点的光照强度的精准度,还可以进行多次采样,以使得采样出的目标光线入射点能够更为全面的反映出光线入射表面的光照纹理,从而使得计算出的光线出射点的光照强度的精准度更高,更符合真实效果。

具体的,可以预先设定采样的预设次数,该预设次数可以结合效率要求和精度要求来设定。这样,在步骤305中将该光线出射点对应的多个经过衰减的光照强度进行加和之后,可以先将加和所得的结果缓存为该光线出射点的待定光照强度;同时,检测对目标光线入射点进行采样的采样次数是否达到预设次数,如果是,则将多次采样后所得到的多个待定光照强度相加,并将多次待定光照强度之和确定为光线出射点的光照强度;如果采样次数未达到该预设次数,则返回重新执行从该光线入射表面中采样多个目标光线入射点,以及计算该采样出的该多个目标光线入射点对应的多个经过衰减的光照强度的加和的操作。

特别的,如果是以直接光线入射点为中心,从光线入射表面采样出指定数量个目标光线入射点时,则判断出采样次数未达到该预设次数,则可以返回执行该以直接光线入射点为中心,从光线入射表面采样出指定数量个目标光线入射点的操作。

为了便于理解结合实例进行介绍,以对游戏画面中的游戏对象进行渲染为例进行介绍,并假设每次采样3*3个目标光线入射点为例,参见图8,其示出了本申请的一种渲染次表面散射效果的方法一种具体实例的流程示意图;本实施例的方法可以应用于前面所提到的计算机设备。本实施例的方法可以包括:

S801,从待渲染的游戏画面所对应的三维场景空间中,确定该游戏画面中待渲染的目标对象的三维模型。

其中,该目标对象可以为游戏画面中的人物、物体或者人体的一部分等。

当然,本实施例是以游戏画面为例,但是对于其他领域中的画面也同样适用于本申请实施例。

S802,确定照射该游戏对象的目标光源的位置以及该目标光源的光照强度。

S803,基于该目标光源的光照强度,通过GPU模拟摄像机在该目标光源的位置处朝向目标对象,并对目标对象中存在入射光线的光入射表面进行光照纹理进行摄像,得到光线入射表面的光照纹理图像。

其中,该光入射表面的光照纹理图像包括该光入射表面中各个像素点的光照强度。也就是说,光照纹理图像中每个像素点具有一个光照强度的值。

通过GPU模拟出该光入射表面的光照纹理图像可以是按照phone光照模型等来确定出光入射表面上各个像素点的光照强度,然后投射到该光照纹理图像中。

S804,通过GPU模拟出该光线入射表面上的纹理坐标图像。

其中,该光线入射表面的纹理坐标图像中包括该光线入射表面中各个像素点在该三维场景空间中的空间坐标。

S805,通过GPU模拟出该目标对象中光线出射表面上的纹理坐标图像。

其中,该光线出射表面的纹理坐标图像中包括该光线出射表面中各个像素点在该三维场景空间中的空间坐标。

为了能够更为直观便捷的分析光线入射表面以及光线出射表面上各个像素点,可以对三维的目标对象的光线入射表面以及光线出射表面进行模拟摄像,以通过二维图像的形式分别标示出这两个表面的像素点以及像素点对应的空间坐标。

S806,对光线出射表面的纹理坐标图像中任意一个目标光线出射点,根据该目标光源的空间位置、该目标光线出射点的空间坐标以及光线入射表面的纹理坐标图像,从光线入射表面的纹理坐标图像中,确定出空间坐标与该目标光线出射点的空间坐标以及目标光源的空间位置处于同一直线上的直接光线入射点。

其中,光线出射表面的纹理坐标图像中的每一个像素点表征该目标对象的光线出射表面上的一个光线出射点,因此,此处的目标光线入射点也可以理解为是为坐标纹理图像中的一个像素点。

S807,将采样次数归零。

由于尚未进行采样,可以设置初始的采样次数为零。

当然,也可以将初始的采样次数设置为1,则首次进行从光线入射表面中进行采样,可以认为是第一次采样,则采样次数为1。

该步骤为可选步骤,其目的是为了后续能够方便的确定出间隔数量。

S808,将采样次数与预设数量的乘积确定为间隔数量。

其中,该预设数量可以根据需要设定,如预设数量可以为3。

其中,间隔数量也可以称为采样间隔,为对目标光线入射点进行采样时,采样出的目标光线入射点之间间隔光线入射点的数量;也可以是每该间隔数量个光线入射点采样一个目标光线入射点,例如,间隔数量为3,则可以每三个光线入射点采样出一个目标光线入射点。

为了使得采样出的目标光线入射点可以全面覆盖该光线入射表面,随着采样次数的增加,采样间隔也逐渐增大。

S809,以该直接光线入射点为中心,按照间隔数量,从该光线入射表面中采样出包含该直接光线入射点在内的9个目标光线入射点,并将采样次数加一。

可以理解的是,由于首次采样时采样次数为零,则间隔数量也为零,因此,可以是从该光线入射表面中采样出包含该直接光线入射点在内且相互紧邻的9个目标光线入射点。

如,图9a中示出了首次从目标对象的光线入射表面中采样出的目标光线入射点与目标光线出射点的平面关系示意图;由图9a可见,加粗的表面为光线入射表面,光线入射表面上具有多个光线入射点(即光线入射表面上的小圆圈),对于一个目标光线出射点901而言,首次采样出的目标光线入射点为以直接光线入射点902为中心且紧邻该直接光线入射点的光线入射点,如图9a中通过箭头指向该目标光线出射点901的光线入射点为目标光线入射点。同时,参见图9b其在光线入射表面的坐标纹理图像中,标示出的首次采样出的目标光线入射点对应的像素点示意图,图9b中加粗的9个小方框表示采集出的9个目标光线入射点对应的9个像素点,其中,这9个像素点中处于中心的像素点(图中黑色的小方框)为图9a中直接光线入射点对应的像素点。

在第二次采样以及后续采样时,采样次数从一逐渐增加,间隔数量也逐渐增加,则采集到的目标光线入射点之间也间隔有该间隔数量个光线入射点。如,以第二次采样为例,假设预设数量为3,则间隔数量为1*3=3个,则可以每3个光线入射点采样出一个目标光线入射点。如图9c所示,其对于一个目标光线出射点901而言,第二次采样出的目标光线入射点902为以直接光线入射点903为中心,且按照采样间隔为3采样出的光线入射点。同时,参见图9d其在光线入射表面的坐标纹理图像中,标示出的第二次采样出的目标光线入射点对应的像素点示意图,图9d中加粗的9个小方框表示采集出的9个目标光线入射点对应的9个像素点,其中,这9个像素点中处于中心的像素点为图9a中直接光线入射点对应的像素点,由图9d可以看出,任意两个项链的目标光线入射点(包括中直接光线入射点)之间间隔的光线入射点的数量相同。

S810,对于未计算出经过衰减的光照强度的每个目标光线入射点,根据该目标光源的空间位置以及该目标光线入射点的空间坐标,从该光线出射表面的坐标纹理图像中,选取出空间坐标与该目标光线入射点的空间坐标以及该目标光源的空间位置处于同一直线上的直线光线出射点。

可以理解的是,在第一次采样后,由于每个直接光线入射点以及其他目标光线入射点均为计算过对应的经过衰减的光照强度,因此,对于直接光线入射点以及其他8个目标光线入射点均需要执行步骤S810至S814的操作。但是,在第一采样之后,会将第一次采样的九个目标光线入射点对应的经过衰减的光照强度的加和作为该直接光线入射点对应的经过衰减的光照强度,因此,在第二次以及后续采样时,则无需再计算该直接光线入射点对应的经过衰减的光照强度。

S811,依据菲涅尔折射模型,并结合该直线光线出射点的空间坐标、该目标光线出射点的空间坐标、目标光线入射点的空间坐标以及该目标光线入射点的光照强度,确定出该目标光线入射点的光照强度经过折射损耗后的修正光照强度。

S812,基于该目标光线入射点的空间坐标与该目标光线出射点的空间坐标,确定该目标光线入射点与该目标光线出射点之间的目标距离。

S813,依据该目标距离,对该目标光线入射点的修正光照强度进行指数衰减,得到经过衰减的光照强度。

步骤S811至S813可以参见前面实施例的相关介绍,在此不再赘述。

S814,将9个目标光线入射点所对应的9个经过衰减的光照强度进行加和,并将加和所得的结果更新为直接光线入射点对应的经过衰减的光照强度。

在本申请实施例中,由于下一次采样时,仍然会将直接光线入射点采样为目标光线入射点,而将这9个经过衰减的光照强度的加和作为该直接光线入射点对应的经过衰减的光照强度,则无需再重复计算该直接光线入射点对应的经过衰减的光照强度,同时实现了将不同次采样出的目标光线入射点对应的经过衰减的光照强度进行不断叠加。

举例说明,为了便于描述,以每次采样3个目标光线入射点为例,第一次,采集了直接光线入射点N1以及另外两个光线入射点N2和N3作为目标光线入射点,则计算出直接光线入射点N 1对应的经过衰减后的光照强度L1、光线入射点N2对应的经过衰减的光照强度L2以及光线入射点N3对应的经过衰减的光照强度L3之后,可以将直接光线入射点N1对应的经过衰减的光照强度L更新为L=L+L2+L3;而在第二次采样时,将直接光线入射点N1以及光线入射点N3和N4作为目标光线入射点,由于直接光线入射点N1对应的经过衰减的光照强度已知,则只需计算光线入射点N3对应的经过衰减的光照强度L4以及光线入射点N4对应的经过衰减的光照强度L5,则将直接光线入射点N1、光线入射点N3以及N4各自对应的经过衰减的光照强度进行求和,即更新直接光线入射点对应的光照强度为L+L3+L4=L1+L2+L3+L4+L5,后续采样之后的过程依此类推。

S815,判断采样次数是否达到预设次数,如果是,则执行步骤S816,如果否,则返回执行步骤S808。

其中,该预设次数可以根据精度要求以及渲染效率来设定。如预设次数可以为3次或者5次等。

S816,将该直接光线入射点对应的经过衰减的光照强度确定为目标光线出射点的光照强度。

由于步骤S814中直接光线入射点对应的经过衰减的光照强度实际上多次迭代求和所得到的各次采样出的所有目标光线入射点对应的经过衰减的光照强度之和,因此,可以将该直接光线入射点对应的经过衰减的光照强度作为该目标光线出射点最终的光照强度。

可以理解的是,在实际应用中,也可以仅仅在第一次采样时,将直接光线入射点作为目标光线入射点,如,第一次可以采样出包含该直接光线入射点在内的9个目标光线入射点,而后续各次采样时,可以仅仅以该直接光线入射点为中心,从该光线入射表面中采样出8个目标光线入射点,且,每次采样结束后,仅仅将本次采样出的各个目标光线入射点对应的经过衰减的光照强度进行加和,并将加和的结果作为待定光照强度,这样,经过预设次数的采样,可以得到预设次数个待定光照强度,将该预设次数个待定光照强度进行相加,同样可以得到该光线出射点的光照强度。

需要说明的是,如果仅仅在首次采样时,将光线出射点对应的直接光线入射点作为目标光线入射点,那么后续在进行采样时,同样需要保证预设的采样间隔规则,即在目标光线入射点之间具有该直接光线入射点的前提下,任意两个相邻的目标光线入射点之间间隔的光线入射点的间隔数量为采样次数与预设数量的乘积。也就是说,此处所说的相邻是指两个目标光线入射点之间不包含直接光线入射点,如果两个目标光线入射点之间包含直接光线入射点,则可以这两个目标光线入射点不相邻,具体可以参见图9c和图9d,第二行的两个目标光线入射点之间具有直接光线入射点,则不认为这两个目标光线入射点相邻,而只需包含目标光线入射点与该直接光线入射点之间间隔的光线入射点的数量为该间隔数量即可。

当然,在步骤S816之后还可以判断是否存在尚未确定光照强度的目标光线出射点,如果是,则返回步骤S807,直至确定出每个目标光线出射点的光照强度。

S817,将光线出射表面的坐标纹理图像中各个目标光线出射点的光照强度映射到该目标对象的光线出射表面上,渲染该目标对象的次表面散射效果。

在光线出射表面的坐标纹理图像上各个像素点(即光线出射点)的光照强度确定之后,可以将坐标纹理图像中各个像素点的光照强度映射到目标对象的光线出射表面上,并通过渲染,使得该目标对象呈现出次表面散射效果,最终使得用户在游戏画面中看到该目标对象的次表面散射效果。

下面对本发明实施例提供的一种渲染次表面散射效果的装置进行介绍,下文描述的一种渲染次表面散射效果的装置可与上文描述的一种渲染次表面散射效果的方法相互对应参照。

参见图10,其示出了本申请一种渲染次表面散射效果的装置的一个实施例的组成结构示意图,本实施例的装置可以包括:

对象确定单元1001,用于从待渲染画面对应的三维场景空间中,确定待渲染的目标对象;

光强获取单元1002,用于获取所述目标对象中光线入射表面上各个光线入射点的光照强度;

入射点采样单元1003,用于针对所述目标对象中光线出射表面上的每个光线出射点,从所述光线入射表面的光线入射点中,采样出多个目标光线入射点;

光照衰减单元1004,用于对于所述光线出射点对应的每个所述目标光线入射点,基于所述目标光线入射点与所述光线出射点之间的目标距离,对所述目标光线入射点的光照强度进行指数衰减,得到经过衰减的光照强度;

出射光强确定单元1005,用于对于每个所述光线出射点,将所述光线出射点对应的多个经过衰减的光照强度进行加和,得到所述光线出射点的光照强度;

效果渲染单元1006,用于依据所述光线出射面上各个所述光线出射点的光照强度,渲染所述目标对象的次表面散射效果。

可选的,所述装置还可以包括:

光源确定单元,用于在所述入射点采样单元采样出多个目标光线入射点之前,确定所述三维场景空间中照射所述目标对象的目标光源的空间位置;

所述入射点采样单元,包括:

入射中心确定单元,用于根据所述目标光源的空间位置、所述光线出射点的空间坐标以及所述光线入射表面中各个光线入射点的空间坐标,从所述光线入射表面中,确定出与所述光线出射点以及所述目标光源处于同一直线上的直接光线入射点;

中心点采样单元,用于将所述直接光线入射点作为采样出的目标光线入射点;

目标点采样单元,用于以所述直接光线入射点为中心,从所述光线入射表面中未被采样的光线入射点中,采样出指定数量个目标光线入射点。

进一步的,所述装置还可以包括:

光强缓存单元,用于在所述出射光强确定单元将所述光线出射点对应的多个经过衰减的光照强度进行加和之后,将所述多个经过衰减的光照强度进行加和所得的结果缓存为所述光线出射点的待定光照强度;

次数判断单元,用于检测以所述直接光线入射点为中心,从所述光线入射表面中采样所述目标光线入射点的采样次数是否达到预设次数,并所述采样次数未达到所述预设次数时,触发返回执行所述目标点采样单元的操作;

所述出射光强确定单元具体为,用于如果所述次数判断单元判断出所述采样次数达到所述预设次数,则将所述光强缓存单元缓存的,与所述光照出射点对应的预设次数个待定光照强度相加的结果,确定为所述光照出射点的光照强度。

可选的,所述目标点采样单元,具体为,用于以所述直接光线入射点为中心,按照预设的采样间隔规则,从所述光线入射表面中未被采样的光线入射点中,采样出指定数量个目标光线入射点,其中,所述采样间隔规则为在目标光线入射点之间具有所述直接光线入射点的前提下,任意两个相邻的所述目标光线入射点之间间隔的光线入射点的间隔数量为所述采样次数与预设数量的乘积。

可选的,所述装置还包括:

出射中心确定单元,用于在所述光照衰减单元对所述目标光线入射点的光照强度进行指数衰减之前,依据所述三维场景空间中照射所述目标对象的目标光源的空间位置,以及所述目标光线入射点的位置,从所述目标对象的光线出射面中,确定出与所述目标光线入射点以及所述目标光源处于同一直线上的直接光线出射点;

光强修正单元,用于基于所述直接光线出射点、所述目标光线入射点以及所述光线出射点的位置关系,确定所述目标光线入射点的光照强度经过折射损耗后的修正光照强度;

则所述光强衰减单元在执行所述基于所述目标光线入射点与所述光线出射点之间的目标距离,对所述目标光线入射点的光照强度进行指数衰减时,具体为,用于基于所述目标光线入射点与所述光线出射点之间的目标距离,对所述目标光线入射点的修正光照强度进行指数衰减。

可选的,所述光强获取单元包括:

光信息确定单元,用于确定所述三维场景中照射所述目标对象的目标光源的空间位置以及所述目标光源的光照强度;

光强获取子单元,用于按照预设的光照模型,并结合所述目标光源的空间位置和光照强度,获取所述目标对象中光线入射表面的光照纹理图像,所述光照纹理图像中的每个像素点具有一个光照强度,且所述光照纹理图像中的每个像素点分别表征所述光线入射表面中一个光线入射点。

另一方面,本申请实施例还提供了一种计算机设备,该计算机设备的组成可以参见图1所示。其中该计算机设备的存储器中存储的程序具体用于:

从待渲染画面对应的三维场景空间中,确定待渲染的目标对象;

获取所述目标对象中光线入射表面上各个光线入射点的光照强度;

针对所述目标对象中光线出射表面上的每个光线出射点,从所述光线入射表面的光线入射点中,采样出多个目标光线入射点;

对于所述光线出射点对应的每个所述目标光线入射点,基于所述目标光线入射点与所述光线出射点之间的目标距离,对所述目标光线入射点的光照强度进行指数衰减,得到经过衰减的光照强度;

对于每个所述光线出射点,将所述光线出射点对应的多个经过衰减的光照强度进行加和,得到所述光线出射点的光照强度;

依据所述光线出射面上各个所述光线出射点的光照强度,渲染所述目标对象的次表面散射效果。

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

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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