<div id="5pdmo"></div>
    <center id="5pdmo"></center>
      <wbr id="5pdmo"><legend id="5pdmo"></legend></wbr><dd id="5pdmo"><address id="5pdmo"></address></dd>
          <dd id="5pdmo"><address id="5pdmo"><div id="5pdmo"></div></address></dd>
              <nav id="5pdmo"><table id="5pdmo"></table></nav>
              <nav id="5pdmo"><optgroup id="5pdmo"></optgroup></nav>

              光照渲染方法、装置、计算机设备和存储介质与流程

              文档序号:29869935发布日期:2022-04-30 18:17来源:国知局
              光照渲染方法、装置、计算机设备和存储介质与流程

              1.本技术涉及图像处理技术领域,特别是涉及一种光照渲染方法、装置、计算机设备和存储介质。


              背景技术:

              2.随着互联网技术的发展、个人终端的普及以及流量成本的降低,光照渲染技术的应用越来越多,可以利用光照渲染技术渲染出多种多样的虚拟场景,例如可以利用光照渲染技术渲染出游戏中的画面。
              3.传统的光照渲染方法中,在对虚拟场景中的物体进行光照渲染时,会使用该物体周围小范围内的光照来对其进行光照渲染。由于仅依赖在周围较小范围内的光照,所以存在一定的局限性,导致在边界过渡处会产生光照跳变的现象,渲染效果较差。


              技术实现要素:

              4.基于此,有必要针对上述技术问题,提供一种能够增强渲染效果的光照渲染方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
              5.一方面,本技术提供了一种光照渲染方法。所述方法包括:获取虚拟场景的多个光照区域对所述虚拟场景中的目标对象表面的光照影响信息;对于所述目标对象表面上的像素点,基于所述光照影响信息确定每个所述光照区域对所述像素点的光照影响程度;基于每个所述光照区域对所述像素点的光照影响程度,确定针对所述像素点的光照渲染信息;基于所述像素点的光照渲染信息进行光照渲染。
              6.另一方面,本技术还提供了一种光照渲染装置。所述装置包括:信息获取???,用于获取虚拟场景的多个光照区域对所述虚拟场景中的目标对象表面的光照影响信息;程度确定???,用于对于所述目标对象表面上的像素点,基于所述光照影响信息确定每个所述光照区域对所述像素点的光照影响程度;信息确定???,用于基于每个所述光照区域对所述像素点的光照影响程度,确定针对所述像素点的光照渲染信息;光照渲染???,用于基于所述像素点的光照渲染信息进行光照渲染。
              7.在一些实施例中,所述信息获取??榛褂糜冢憾杂谒瞿勘甓韵蟮谋砻娴?,确定以所述表面点为起点的多条射线分别命中的光照区域;统计命中每个所述光照区域的射线数量,得到每个所述光照区域对所述表面点的光照影响程度;基于每个所述光照区域分别对所述目标对象的多个表面点的光照影响程度,得到所述目标对象表面的光照影响信息。
              8.在一些实施例中,所述信息获取??榛褂糜冢赫攵砸运霰砻娴阄鸬愕拿刻跎湎?,在所述射线与所述多个光照区域中的虚拟对象存在相交的情况下,确定交点;将所述交点所属的光照区域确定为所述射线命中的光照区域。
              9.在一些实施例中,所述多个光照区域包括室外区域,所述光照渲染装置还用于:在所述射线与所述多个光照区域中的所有虚拟对象皆不相交的情况下,确定所述室外区域为所述射线命中的光照区域。
              10.在一些实施例中,每个所述光照区域设置有区域掩码,所述信息获取??榛褂糜冢憾杂诿扛鏊霰砻娴?,将每个所述光照区域的区域掩码与所述光照区域对所述表面点的光照影响程度之间建立对应关系,得到所述表面点的区域影响程度信息;基于各个所述表面点的区域影响程度信息,得到所述目标对象表面的光照影响信息。
              11.在一些实施例中,所述程度确定??榛褂糜冢夯谒鱿袼氐阌胨霰砻娴阒涞木嗬?,从各个所述表面点中选取距离小于预设距离的表面点,得到所述像素点对应的匹配点;从所述光照影响信息中获取每个所述光照区域对所述匹配点的光照影响程度;基于获取的光照影响程度,确定每个所述光照区域对所述像素点的光照影响程度。
              12.在一些实施例中,所述信息确定??榛褂糜冢捍痈鞲鏊龉庹涨蛑腥范ǔ龉庹沼跋斐潭却笥谟跋斐潭茹兄档墓庹涨?,得到所述像素点对应的目标光照区域;基于各个所述目标光照区域对所述像素点的光照影响程度和每个所述目标光照区域的光照信息,确定所述像素点的光照渲染信息。
              13.在一些实施例中,每个所述光照区域设置有区域掩码,所述虚拟场景中设置有多个光照探针,所述目标光照区域包括多个子区域;所述目标光照区域的光照信息包括子区域的光照信息;所述信息获取??榛褂糜冢喝范扛鏊龉庹仗秸胨ヅ涞那蜓诼?;对于所述目标光照区域中的子区域,基于所述光照探针所匹配的区域掩码,从与所述子区域具有重叠关系的光照探针中选取所匹配的区域掩码与所述目标光照区域的区域掩码一致的光照探针,得到所述子区域对应的目标光照探针;基于所述子区域对应的目标光照探针的光照转换信息,得到所述子区域的光照信息。
              14.在一些实施例中,所述目标光照探针的光照转换信息,表征所述目标光照探针的光照参数信息与环境光的光照参数信息之间的转换关系;所述信息获取??榛褂糜冢赫攵运鲎忧蚨杂Φ哪勘旯庹仗秸?,基于所述环境光的光照参数信息以及所述目标光照探针的光照转换信息,计算得到所述目标光照探针的光照参数信息;基于所述子区域对应的各个目标光照探针的光照参数信息,得到所述子区域对应的光照信息。
              15.在一些实施例中,所述信息获取??榛褂糜冢憾杂谒鲎忧虻拿扛瞿勘旯庹仗秸?,基于所述目标光照探针与所述子区域之间的距离确定所述目标光照探针的权重;利用每个所述目标光照探针的权重,对各个所述目标光照探针的光照参数信息进行加权计算,得到所述子区域对应的光照信息。
              16.在一些实施例中,所述信息确定??榛褂糜冢憾杂诿扛鏊瞿勘旯庹涨?,基于所述像素点与所述目标光照区域中的子区域之间的距离,从所述目标光照区域的各个子区域中确定满足距离接近条件的子区域,得到目标子区域;基于各个所述目标光照区域对所述像素点的光照影响程度和每个所述目标光照区域中的目标子区域的光照信息,确定所述像素点的光照渲染信息。
              17.另一方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述光照渲染方法中的步骤。
              18.另一方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述光照渲染方法中的步骤。
              19.另一方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述光照渲染方法中的步骤。
              20.上述光照渲染方法、装置、计算机设备、存储介质和计算机程序产品,获取虚拟场景的多个光照区域对虚拟场景中的目标对象表面的光照影响信息,对于目标对象表面上的像素点,基于光照影响信息确定每个光照区域对像素点的光照影响程度,基于每个光照区域对像素点的光照影响程度,确定针对像素点的光照渲染信息,基于像素点的光照渲染信息进行光照渲染。由于像素点的光照渲染信息是基于每个光照区域对该像素点的光照影响程度确定的,从而光照渲染信息充分的考虑了各个光照区域对该像素点的光照影响,使得光照渲染信息更加的合理,从而提高了基于像素点的光照渲染信息进行光照渲染所达到的渲染效果。
              附图说明
              21.图1为一些实施例中光照渲染方法的应用环境图;图2为一些实施例中光照渲染方法的流程示意图;图3为一些实施例中光照区域示意图;图4为一些实施例中光照跳变的示意图;图5为一些实施例中确定光照信息的原理图;图6为一些实施例中生成的光照探针的示意图;图7为一些实施例中确定光照转换信息的原理图;图8为一些实施例中确定光照信息的原理图;图9为一些实施例中渲染效果对比图;图10为一些实施例中光照渲染方法的流程示意图;图11为一些实施例中光照渲染方法的架构图;图12为一些实施例中渲染效果对比图;图13为一些实施例中光照渲染装置的结构框图;图14为一些实施例中计算机设备的内部结构图;图15为一些实施例中计算机设备的内部结构图。
              具体实施方式
              22.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
              23.本技术实施例提供的光照渲染方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。
              24.具体地,终端102可以从服务器104获取虚拟场景对应的场景数据,场景数据中可以包括光源以及虚拟对象。终端102在展示虚拟场景或运行包括虚拟场景的应用程序的过程中,获取虚拟场景的多个光照区域对虚拟场景中的目标对象表面的光照影响信息,对于目标对象表面上的像素点,基于光照影响信息确定每个光照区域对像素点的光照影响程
              度,基于每个光照区域对像素点的光照影响程度,确定针对像素点的光照渲染信息,基于像素点的光照渲染信息进行光照渲染。
              25.其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
              26.在一些实施例中,如图2所示,提供了一种光照渲染方法,该方法可以由终端或服务器执行,还可以由终端和服务器共同执行,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:步骤202,获取虚拟场景的多个光照区域对虚拟场景中的目标对象表面的光照影响信息。
              27.其中,虚拟场景,是指计算机通过数字通讯技术勾勒出的数字化场景,虚拟场景包括但不限于是二维虚拟场景或三维虚拟场景中的至少一种。虚拟场景例如可以是游戏中的场景、vr(virtual reality,vr)中的场景或动漫中的场景。
              28.虚拟场景中可以包括多个光照区域,每个光照区域为虚拟场景中的一个空间区域。通过各个光照区域中的光照信息,可以确定虚拟场景中的虚拟对象的光照情况,即基于光照区域中的光照信息,可以确定虚拟对象的表面上的像素点的光照情况,从而确定渲染该像素点所需要的信息。当光照区域包括多个子区域时,光照区域的光照信息包括各个子区域的光照信息。光照区域可以是预先在虚拟场景中标出的。在虚拟场景中标记光照区域的方式可以是灵活的,例如可以按照虚拟场景中的房间标记光照区域,例如可以将一个房间所在的区域标记为一个光照区域,还可以将房间外的区域标记为光照区域。光照区域可以包括室内区域和室外区域,室内区域例如可以是对房间所在的区域标记出的光照区域,室外区域例如可以是对房间外的区域标记为的光照区域??梢晕扛龉庹涨蛏柚们蜓诼?,区域掩码用于唯一识别光照区域,例如,有4个光照区域,3个室内区域和一个室外区域,这4个光照区域的区域掩码分别为0,1,2,3,室外区域的区域掩码为0??⑷嗽笨梢栽诒嗉髦胁捎每墒踊姆绞缴柚妹扛龉庹涨?,比如通过使用长方体标记出不同的房间,则每个长方体代表一个光照区域,并且可以设置光照区域所属的通道,一个区域掩码对应一个通道,光照区域所属的通道用于唯一标识光照区域,不同的光照区域对应不同的通道。如图3所示,(a)展示了虚拟场景中的多个房间,(b)展示了划分出的光照区域。光照区域也可以称为室内区域包围体(interior volume),室内区域包围体为一种用于将虚拟场景中房间的室内区域范围标记出来的3d(三维)的几何体,几何体包括但不限于是长方体、三角锥、梯形体、圆锥、圆柱体或球体等中的至少一种。
              29.目标对象为虚拟场景中的虚拟对象,虚拟对象是指虚拟场景中的事物,虚拟对象包括但不限于是虚拟的人物、动物、家具或建筑物等中的至少一种,当然,虚拟对象也可以是家具或建筑物中的一部分,例如可以是桌子的桌面。目标对象可以为室内区域中的虚拟对象,也可以为室外区域中的虚拟对象。
              30.目标对象表面的光照影响信息包括目标对象的多个表面点分别对应的区域影响程度信息,表面点是指目标对象的表面上的点。表面点对应的区域影响程度信息中包括各个光照区域分别对该表面点的光照影响程度。区域影响程度信息中可以包括区域掩码与光
              照影响程度之间的对应关系,光照区域对表面点的光照影响程度用于反映该光照区域对表面点的光照亮度的贡献度,光照影响程度越大,则对表面点的光照亮度的贡献越大。例如,该多个光照区域为四个光照区域,这四个光照区域的区域掩码分别为s0、s1、s2以及s3,目标对象的表面点a的区域影响程度信息为(s0=0,s1=0,s2=0.4,s3=0.6),则表示光照区域s3对表面点a的光照亮度的贡献最大,即表面点a的光照亮度主要是由光照区域s3的光线的照射所形成的。
              31.光照区域对表面点的光照影响程度可以是根据从该表面点出发的多条射线中进入光照区域的射线的数量确定的,光照区域对表面点的光照影响程度与进入光照区域的射线的数量成正相关关系,进入光照区域的射线的数量越多,则光照区域对表面点的光照影响程度越大。正相关关系指的是:在其他条件不变的情况下,两个变量变动方向相同,一个变量由大到小变化时,另一个变量也由大到小变化??梢岳斫獾氖?,这里的正相关关系是指变化的方向是一致的,但并不是要求当一个变量有一点变化,另一个变量就必须也变化。例如,可以设置当变量a为10至20时,变量b为100,当变量a为20至30时,变量b为120。这样,a与b的变化方向都是当a变大时,b也变大。但在a为10至20的范围内时,b可以是没有变化的。
              32.具体地,终端可以响应于针对虚拟场景的渲染指令,获取虚拟场景中目标对象的表面对应的光照影响信息,基于目标对象表面的光照影响信息对目标对象进行光照渲染,得到渲染出的虚拟场景画面。例如,对目标对象表面上的像素点进行光照渲染。像素点为像素的中心位置。像素是构成图像的基本元素。图像中的像素为图像内的一个小方格形的区域。目标对象表面上的每个像素点分别为待渲染出的虚拟场景画面中的一个像素的中心点。像素点的坐标通过三维坐标表示,例如可以像素点的坐标为(x,y,z),x,y,z分别表示像素点在三维坐标系的x轴、y轴以及z轴上的坐标。在一些实施例中,目标对象表面的光照影响信息可以是由中央处理器(cpu,central processing unit)生成的,目标对象表面的光照影响信息用于对目标对象进行光照渲染,图形处理器(gpu,graphics processing unit)在对目标对象进行光照渲染的过程中,可以基于中央处理器预先生成的目标对象表面的光照影响信息对目标对象进行光照渲染,从而提高了图形处理器的渲染(shading)性能。
              33.在一些实施例中,目标对象表面的光照影响信息为目标对象的表面的光照贴图(light map)。光照贴图是指对虚拟场景中的静态目标物体使用全局光照((global illumination,gi))算法预先生成光照信息的图片,用于表示静态物体的光照视觉效果。全局光照(gi)是将光源照到物体后打散成无数条光线,经过与场景其他物体的反射、折射等一系列反应后,再次照射到物体,如此循环的光能传递。全局光照包括预计算半动态gi(precomputed radiance transfer, prt)。预计算半动态gi是在静态场景中通过预计算出物体表面上的点或者光照探头处光照辐照度的传输函数的系数信息,然后使用动态的光照与预计算传输函数的系数结合计算出全局光照信息。预计算半动态gi可以实现场景的物体不变,但是光照发生变化时产生的全局光光照效果(如昼夜变化时场景全局光照的相应变化)。
              34.步骤204,对于目标对象表面上的像素点,基于光照影响信息确定每个光照区域对像素点的光照影响程度。
              35.其中,目标对象表面上的每个像素点分别为待渲染出的虚拟场景画面中的一个像素的中心点。像素点在三维空间中的坐标可以用(x,y,z)表示,x,y,z分别表示像素点在三
              维坐标系的x轴、y轴以及z轴上的坐标。像素点在二维空间中的坐标可以用(x,y)表示。
              36.具体地,目标对象表面的光照影响信息包括目标对象的多个表面点分别对应的区域影响程度信息,表面点对应的区域影响程度信息中包括各个光照区域分别对该表面点的光照影响程度,即包括区域掩码与光照影响程度之间的对应关系。目标对象表面上的像素点与目标对象的具有光照影响程序集合的表面点可以为同一点,也可以为不同的点。
              37.在一些实施例中,终端可以从目标对象的各个具有区域影响程度信息的表面点中,选取与像素点匹配的表面点,将选取出的表面点确定为像素点对应的匹配点。具体地,终端可以从各个表面点中,选取与像素点之间的距离小于第一距离阈值的表面点,作为该像素点对应的匹配点。第一距离阈值可以预设。像素点对应的匹配点可以为一个或多个,多个是指至少两个。终端可以基于像素点对应的匹配点的区域影响程度信息,确定像素点的区域影响程度信息,区域影响程度信息中包括每个光照区域对像素点的光照影响程度。例如,终端可以对各个匹配点的区域影响程度信息中进行加权计算,得到像素点的区域影响程度信息,加权计算的权重与匹配点与像素点之间的距离成负相关关系,匹配点与像素点之间的距离越小,权重越大。
              38.其中,各个匹配点的区域影响程度信息进行加权计算,是指对各个匹配点的区域影响程度信息中同一光照区域的光照影响程度进行加权计算,例如,像素点对应的匹配点为表面点a和表面点b,假设表面点a到像素点的距离与表面点b到像素点的距离相同,即加权的权重相同,例如均为0.5,表面点a的区域影响程度信息为(s0=0,s1=0.1,s2=0.4,s3=0.5),表面点b的区域影响程度信息为(s0=0,s1=0.1,s2=0.6,s3=0.3),在进行加权计算时,以光照区域为维度进行计算,例如,对于光照区域s2,对0.4和0.6进行均值计算,得到0.5,从而像素点的区域影响程度信息为(s0=0,s1=0.1,s2=0.5,s3=0.4)。0、0.1、0.5、0.4依次为光照区域s0、s1、s2和s3对像素点的光照影响程度。
              39.负相关关系指的是:在其他条件不变的情况下,两个变量变动方向相反,一个变量由大到小变化时,另一个变量由小到大变化??梢岳斫獾氖?,这里的负相关关系是指变化的方向是相反的,但并不是要求当一个变量有一点变化,另一个变量就必须也变化。
              40.在一些实施例中,当表面点包括该像素点时,可以将像素点对应的匹配点确定为该像素点本身,将匹配点的区域影响程度信息确定为像素点的区域影响程度信息。当各个表面点不包括该像素点时,终端可以从各个具有区域影响程度信息的表面点中,选取与像素点之间的距离小于第一距离阈值的表面点,作为该像素点对应的匹配点。
              41.步骤206,基于每个光照区域对像素点的光照影响程度,确定针对像素点的光照渲染信息。
              42.其中,光照渲染信息是对像素点进行光照渲染所需要的信息,光照渲染信息可以包括光照强度。光照区域包括多个子区域,子区域可以表征一个光源,子区域的光照参数信息即为该子区域所表征的光源的参数信息,子区域的光照参数信息用于确定子区域的光照信息。光源可以表示为一个或多个基函数的线性组合,光源的参数信息可以包括一个或多个基函数对应的权重,即子区域的光照参数信息可以包括一个或多个基函数对应的权重,多个是指至少两个,利用各个基函数的权重对各个基函数进行加权计算,可以得到子区域的光照信息,子区域的光照信息用于表示子区域所表征的光源的光照信息。
              43.具体地,终端可以获取每个光照区域的光照信息,光照区域的光照信息包括光照
              区域中各个子区域的光照信息,基于每个光照区域对像素点的光照影响程度以及每个光照区域的光照信息,确定针对像素点的光照渲染信息。例如,终端可以从每个光照区域中选取与像素点匹配的子区域,得到目标子区域。例如,对于每个光照区域,可以将该光照区域中与像素点之间的距离小于第二距离阈值的子区域确定为目标子区域。子区域可以是任意的三维几何形状的,例如可以是球形或立方体等。子区域具有中心位置,像素点与子区域之间的距离可以用像素点与子区域的中心位置之间的距离表示。第二距离阈值可以预设或根据需要设置。
              44.在一些实施例中,终端可以基于目标子区域的光照参数信息以及基函数计算得到目标子区域的光照信息,基于各个目标子区域的光照信息,确定针对像素点的光照渲染信息,子区域的光照信息中可以包括向空间中的多个方向的光照强度,终端可以基于目标子区域的光照信息确定目标子区域射向像素点处的光照强度,得到像素点的光照渲染信息。
              45.在一些实施例中,终端可以基于光照影响程度,从各个光照区域中选取光照影响程度大于影响程度阈值的光照区域,将选取的光照区域确定为目标光照区域,基于目标光照区域对像素点的光照影响程度以及目标光照区域的光照信息,确定针对像素点的光照渲染信息。影响程度阈值可以预设,例如影响程度阈值为0。从而在确定光照渲染信息之前先进行光照区域的筛选,将对像素点没有影响或者影响较小的光照区域过滤掉,从而减少计算量,节省计算机资源,并提高了渲染的效率。对于每个目标光照区域,终端可以将该目标光照区域中与像素点之间的距离小于第二距离阈值的子区域确定为目标子区域?;诟鞲瞿勘曜忧虻墓庹招畔?,确定针对像素点的光照渲染信息,目标子区域的光照信息中可以包括向空间中的多个方向的光照强度,终端可以基于目标子区域的光照信息确定目标子区域射向像素点处的光照强度,得到像素点的光照渲染信息。
              46.步骤208,基于像素点的光照渲染信息进行光照渲染。
              47.其中,光照渲染,是指对待渲染出的虚拟场景画面中的像素点进行渲染过程中的光照计算处理,以使最终的像素点具有光照效果,即确定出点渲染出的虚拟场景画面中的各个像素点的颜色值。
              48.具体地,终端得到像素点的光照渲染信息后,可以基于像素点的光照渲染信息进行光照渲染,即计算像素点的颜色值,例如,像素点的光照渲染信息中可以包括来自于多个目标子区域的入射光线,终端可以基于各个入射光线的光照强度确定像素点的颜色值,基于各个像素点的颜色值生成虚拟场景画面。
              49.上述光照渲染方法中,获取虚拟场景的多个光照区域对虚拟场景中的目标对象表面的光照影响信息,对于目标对象表面上的像素点,基于光照影响信息确定每个光照区域对像素点的光照影响程度,基于每个光照区域对像素点的光照影响程度,确定针对像素点的光照渲染信息,基于像素点的光照渲染信息进行光照渲染。由于像素点的光照渲染信息是基于每个光照区域对该像素点的光照影响程度确定的,从而光照渲染信息充分的考虑了各个光照区域对该像素点的光照影响,使得光照渲染信息更加的合理,从而提高了基于像素点的光照渲染信息进行光照渲染所达到的渲染效果。
              50.目前的光照渲染技术中存在边界过渡处产生不自然的情况,即光照跳变的情况。如图4所示,门上出现了颜色的跳变。而本技术提出的光照渲染方法,充分的考虑了各个光照区域对像素点的光照影响,使得光照渲染信息更加的合理,减少了边界过渡处光照跳变
              的情况,使得渲染出的画面更加自然,提高了渲染效果。
              51.在一些实施例中,获取虚拟场景的多个光照区域对虚拟场景中的目标对象表面的光照影响信息包括:对于目标对象的表面点,确定以表面点为起点的多条射线分别命中的光照区域;统计命中每个光照区域的射线数量,得到每个光照区域对表面点的光照影响程度;基于每个光照区域分别对目标对象表面上的多个表面点的光照影响程度,得到目标对象表面的光照影响信息。
              52.其中,目标对象的表面点为多个,各个表面点可以具有法线。以目标对象的表面点为起点的射线为多个,射线与表面点的法线之间的夹角可以是小于等于预设夹角的,预设夹角例如为90度。以目标对象的表面点为起点的射线可能会与光照空间中的虚拟对象具有交点,也可能与各个光照空间中的所有虚拟对象均没有交点。以目标对象的表面点为起点的每条射线至少命中一个光照空间,例如,每条射线命中且仅命中一个光照空间。
              53.具体地,各个光照区域可以包括室外区域以及至少一个的室内区域。对于以目标对象的表面点为起点的射线,终端可以判断该射线与各个光照空间中的虚拟对象是否相交,当确定该射线与各个光照区域中的虚拟对象均不相交时,则确定该射线命中室外区域。当确定该射线与虚拟对象相交时,确定交点,将交点所属的光照区域确定为该射线命中的光照区域,例如,当交点属于光照区域s1时,则射线命中光照区域s1。需要说明的时,这里的交点只考虑射线方向上与起点最近的交点,即射线首次碰撞到的点,例如,一条射线是无限延伸的,沿着射线的方向,依次与虚拟对象r1、虚拟对象r2相交,由于实际上射线被虚拟对象r1遮挡了,故只考虑虚拟对象r1与射线的交点。
              54.在一些实施例中,对于每个光照区域,以目标对象的表面点为起点的多条射线中命中该光照区域的射线的数量与该光照区域对表面点的光照影响程度成正相关关系,例如终端可以统计命中光照区域的射线的数量,可以将命中该光照区域的射线的数量,确定为该光照区域对表面点的光照影响程度,或者对命中该光照区域的射线的数量进行归一化,归一化的方式可以是将命中光照区域的射线的数量除以射线总数,将归一化的结果确定为该光照区域对该表面点的光照影响程度。对于目标对象的每个表面点,射线总数是指以该表面点为起点的所有射线的总数,例如,目标对象的表面点a,以表面点a为起点的射线有10条,则射线总数为10,若光照区域有4个,分别为s0、s1、s2和s3,这10条射线中有3条命中了s0,有5条命中了s1,有2条命中了s2,有0条命中了s3,则光照区域s1对该点的光照影响程度最大,由于射线总数为10,对3、5、2、0分别进行归一化,得到0.3、0.5、0.2以及0,则可以确定s0、s1、s2和s3对表面点a的光照影响程度分别为0.3、0.5、0.2以及0。
              55.在一些实施例中,光照区域的标识可以称为光照区域的掩码,掩码可以灵活设置,例如可以为0、1、2等数字。目标对象为虚拟环境中的物体,目标对象表面的光照影响信息可以称为物体掩码,物体掩码的计算方法是在物体表面的点向四周发射射线,如果射线命中物体表面,就判断命中点(即交点)所属区域的掩码,并且记录下来,将所有的射线命中点所属区域的掩码记录下来后,统计出每个掩码对应的射线的数量,这个数量在整个射线中的占比就是这个物体表面的点在这个通道的掩码信息。对于没有命中任何物体的射线则归为室外区域。物体掩码会烘焙出其在不同区域的占比情况,比如有处于两个房间的门框的地面,他们同时会都到两个房间光照的影响,可以柔和的解决区域过渡处的接缝问题(即光照跳变问题)。
              56.例如,可以利用以下的伪代码确定物体掩码:for each object //对于每个目标对象,这里的object指的是目标对象;for each surface point //对于目标对象上的每个表面点,surface point指的是表面点;send first ray to scene // scene指的是虚拟场景,ray指的是射线,向虚拟场景中发射一条射线,即向虚拟场景中发射以表面点为起点的射线;if ray hit some object //如果射线击中虚拟对象,some objec指的是虚拟对象,击中虚拟对象是指与虚拟对象有交点;check if hit object point in some region // hit object point指的是交点,region指的是光照区域,检查交点所属于的光照区域;objectmask[mask_channel]++ // objectmask为一个数组,这里的objectmask用于存储命中各个光照区域的射线的数量,mask_channel(掩码通道,即区域掩码)代表一个光照区域,掩码通道例如可以是为光照区域所设置的编号,用于区分不同的光照区域;for each objectmask // 对于每一个objectmaskobjectmask[channel] /= total-ray-num // channel与mask_channel为同一含义,均表示区域掩码,total-ray-num为表面点发射出的射线的总数,将objectmask中的射线的数量进行归一化(即将数量除以射线的总数),归一化后再存储到objectmask中,最终的objectmask指的是区域影响程度信息,用于存储各个光照区域对表面点的光照影响程度,每个表面点具有一个objectmask,各个表面点分别对应的objectmask构成物体掩码。
              [0057]
              在一些实施例中,终端得到每个光照区域分别对目标对象的多个表面点的光照影响程度,基于该多个光照影响程度得到目标对象表面的光照影响信息,例如,对于目标对象表面上的每个表面点,可以将每个光照区域对该表面点的光照影响程度组成该表面点对应的区域影响程度信息,将目标对象表面上的多个表面点对应的区域影响程度信息,组成目标对象表面的光照影响信息,即目标对象表面的光照影响信息,包括目标对象的多个表面点对应的区域影响程度信息。
              [0058]
              在一些实施例中,终端可以确定以表面点为起点的射线的数量,得到射线总数;基于射线总数,对命中每个光照区域的射线数量进行归一化处理,得到每个光照区域对表面点的光照影响程度。具体地,射线总数是指以该表面点为起点的射线的数量。对于每个光照区域,终端可以计算命中该光照区域的射线数量与射线总数的比值,将该比值确定为该光照区域对该表面点的光照影响程度。对命中每个光照区域的射线数量进行归一化处理,从而使得光照影响程度参与的计算量变小,提高了计算效率。
              [0059]
              本实施例中,对于目标对象的表面点,确定以表面点为起点的多条射线分别命中的光照区域,统计命中每个光照区域的射线数量,得到每个光照区域对表面点的光照影响程度,基于每个光照区域分别对目标对象的多个表面点的光照影响程度,得到目标对象表面的光照影响信息,从而通过以目标对象表面上的表面点为起点的射线精准的判断出了关照区域对表面上的表面点的光照影响程度,进一步的提高了目标对象表面的光照影响信息的准确度。
              [0060]
              在一些实施例中,确定以表面点为起点的多条射线分别命中的光照区域包括:针对以表面点为起点的每条射线,在射线与多个光照区域中的虚拟对象相交的情况下,确定
              交点;将交点所属的光照区域确定为射线命中的光照区域。
              [0061]
              具体地,对于以目标对象的表面点为起点的射线,终端可以判断该射线与各个光照空间中的虚拟对象是否相交,当确定该射线与虚拟对象相交时,确定交点,将交点所属的光照区域确定为该射线命中的光照区域,例如,当交点属于光照区域s1时,则射线命中光照区域s1。需要说明的时,这里的交点只考虑射线方向上与起点最近的交点,即射线首次碰撞到的点,例如,一条射线是无限延伸的,沿着射线的方向,依次与虚拟对象r1、虚拟对象r2相交,由于实际上射线被虚拟对象r1遮挡了,故只考虑虚拟对象r1与射线的交点。
              [0062]
              本实施例中,针对以表面点为起点的每条射线,在射线与多个光照区域中的虚拟对象存在相交的情况下,确定交点,将交点所属的光照区域确定为射线命中的光照区域,从而通过射线与虚拟对象之间的交点确定出了射线命中的光照区域,提高了确定射线命中的光照区域的准确度和效率。
              [0063]
              在一些实施例中,多个光照区域包括室外区域,上述光照渲染方法还包括:在射线与多个光照区域中的所有虚拟对象皆不相交的情况下,确定室外区域为射线命中的光照区域。
              [0064]
              其中,射线与各个光照区域中的虚拟对象可以皆不相交,这种情况下,射线进入了室外区域。例如,当目标对象为室内空间中的虚拟对象,目标对象的表面点a上的射线在没有与各个室内空间中的虚拟对象相交的情况下,则是直接进入了室外区域。
              [0065]
              具体地,终端在确定射线与该多个光照区域中的各个光照区域的虚拟对象皆不相交的情况下,确定室外区域为射线命中的光照区域。
              [0066]
              本实施例中,在确定射线与该多个光照区域中的各个光照区域的虚拟对象皆不相交的情况下,确定室外区域为射线命中的光照区域,从而准确的确定出了射线所命中的光照区域。
              [0067]
              在一些实施例中,每个光照区域设置有区域掩码,基于每个光照区域分别对目标对象的多个表面点的光照影响程度,得到目标对象表面的光照影响信息包括:对于每个表面点,将每个光照区域的区域掩码与光照区域对表面点的光照影响程度之间建立对应关系,得到表面点的区域影响程度信息;基于各个表面点的区域影响程度信息,得到目标对象表面的光照影响信息。
              [0068]
              其中,区域掩码用于唯一识别光照区域,例如,有4个光照区域,3个室内区域和一个室外区域,这4个光照区域的区域掩码分别为0,1,2,3,室外区域的区域掩码为0。
              [0069]
              区域影响程度信息中可以包括区域掩码与光照影响程度之间的对应关系。例如,该多个光照区域为四个光照区域,这四个光照区域的区域掩码分别为s0、s1、s2以及s3,目标对象的表面点a的区域影响程度信息为(s0=0,s1=0,s2=0.4,s3=0.6)。目标对象表面的光照影响信息目标对象的多个表面点分别对应的区域影响程度信息。目标对象表面的光照影响信息可以是在渲染之前预先生成的。
              [0070]
              具体地,终端可以将目标对象的多个表面点分别对应的区域影响程度信息统一存储,得到目标对象表面的光照影响信息,例如可以采用光照贴图的形式存储多个表面点分别对应的区域影响程度信息,得到目标对象表面的光照影响信息。
              [0071]
              本实施例中,将每个光照区域的区域掩码与光照区域对表面点的光照影响程度之间建立对应关系,得到表面点的区域影响程度信息,根据掩码区域从区域影响程度信息中
              查找到各个光照区域对表面点的光照影响程度,提高了确定光照影响程度的效率。
              [0072]
              在一些实施例中,基于光照影响信息确定每个光照区域对像素点的光照影响程度包括:基于像素点与表面点之间的距离,从各个表面点中选取距离小于预设距离的表面点,得到像素点对应的匹配点;从光照影响信息中获取每个光照区域对匹配点的光照影响程度;基于获取的光照影响程度,确定每个光照区域对像素点的光照影响程度。
              [0073]
              其中,匹配点是目标对象的各个表面点中与像素点之间的距离小于预设距离的表面点。匹配点可以为一个或多个。
              [0074]
              具体地,光照影响信息中包括各个表面点分别对应的区域影响程度信息,表面点对应的区域影响程度信息中包括各个光照区域分别对该表面点的光照影响程度。终端可以从光照影响信息中,获取匹配点对应的区域影响程度信息,从而得到各个光照区域分别对匹配点的光照影响程度。
              [0075]
              在一些实施例中,当匹配点为一个时,终端可以将各个光照区域分别对匹配点的光照影响程度,确定为每个光照区域对像素点的光照影响程度。当匹配点为多个时,终端可以对各个匹配点的区域影响程度信息中的同一光照区域对应的光照影响程度进行加权计算,得到每个光照区域对像素点的光照影响程度。例如,像素点对应的匹配点为表面点a和表面点b,假设表面点a到像素点的距离与表面点b到像素点的距离相同,即加权的权重相同,例如均为0.5,表面点a的区域影响程度信息为(s0=0,s1=0.1,s2=0.4,s3=0.5),表面点b的区域影响程度信息为(s0=0,s1=0.1,s2=0.6,s3=0.3),在进行加权计算时,以光照区域为维度进行计算,例如,对于光照区域s2,对0.4和0.6进行均值计算,得到0.5,从而像素点的区域影响程度信息为(s0=0,s1=0.1,s2=0.5,s3=0.4)。
              [0076]
              本实施例中,由于匹配点与像素点之间的距离小于预设距离,故匹配点与像素点之间的距离较近,从而匹配点的光照影响程度可以反映像素点对应的光照影响程度,故从光照影响信息中获取每个光照区域对匹配点的光照影响程度,基于获取的光照影响程度,确定每个光照区域对像素点的光照影响程度,可以准确的获取每个光照区域对像素点的光照影响程度。
              [0077]
              在一些实施例中,基于每个光照区域对像素点的光照影响程度,确定针对像素点的光照渲染信息包括:从各个光照区域中确定出光照影响程度大于影响程度阈值的光照区域,得到像素点对应的目标光照区域;基于各个目标光照区域对像素点的光照影响程度和每个目标光照区域的光照信息,确定像素点的光照渲染信息。
              [0078]
              其中,目标光照区域为各个光照区域中光照影响程度大于影响程度阈值的光照区域。影响程度阈值可以预设,例如可以为0。目标光照区域可以为一个或者多个,多个是指至少两个。
              [0079]
              目标光照区域包括多个子区域,目标光照区域的光照信息可以包括目标光照区域中的各个子区域的光照信息。子区域的光照信息基于子区域的光照参数信息确定。子区域可以代表一个光源,子区域的光照参数信息即为该子区域所代表的光源的参数信息,光源可以表示为一个或多个基函数的线性组合,光源的参数信息可以包括一个或多个基函数对应的权重,即子区域的光照参数信息可以包括一个或多个基函数对应的权重,多个是指至少两个,利用各个基函数的权重对各个基函数进行加权计算,可以得到子区域的光照信息(irradiance),子区域的光照信息用于表示子区域所代表的光源的光照信息。其中,基函数
              是指函数空间中特定基底的元素。在函数空间中,每个连续函数可以表示为基函数的线性组合。光照信息可以采用球谐函数(sphere harmonic function)表示,例如可以采用低阶(2、3阶)球谐函数表示光照信息,基函数可以为球谐函数中的球谐基函数。球谐函数是拉普拉斯方程的球坐标系形式解的角度部分。如图5所示,光照信息对应的球谐函数为:。其中,l
              env
              (w)表示光照信息,li是光源在每个球谐基函数上的权重,yi是每个球谐基函数。图5中的i为权重向量,表征各个li的组合??梢岳霉庠吹脑夹畔⒑颓蛐郴扑忝扛銮蛐郴娜ㄖ豯i。例如可以利用公式计算每个li。其中, 为角度,表示光线的方向。
              [0080]
              具体地,终端可以将该目标光照区域中与像素点之间的距离小于第二距离阈值的子区域确定为目标子区域。终端可以基于各个目标子区域的光照信息,确定针对像素点的光照渲染信息,目标子区域的光照信息中可以包括向空间中的多个方向的光照强度,终端可以基于目标子区域的光照信息确定目标子区域射向像素点处的光照强度,得到像素点的光照渲染信息。
              [0081]
              在一些实施例中,对于每一个光照区域,终端可以将该光照区域的各个子空间分别对应的光照参数信息进行统一的存储,例如可以采用一个3d(3维)纹理进行存储,从而每个光照区域对应有一个3d纹理,光照区域对应的3d纹理中存储有该光照区域的各个子空间分别对应的光照参数信息,3d纹理中的每个子空间对应的光照参数信息可以称为3d纹理的纹素。3d纹理还可以称为辐照体(irradiance volume)或光照辐照体。辐照体可以使用3d纹理来存储指定3维区域内的光照探针的光照信息,在对物体进行光照计算时可以直接通过3d插值来获取物体所在位置的8个光照探头的光照信息。其中,中央处理器可以预先生成的光照区域的3d纹理,在进行光照渲染时,终端可以从预先生成的光照区域的3d纹理中获取子空间的光照参数信息,从而进行光照渲染,由于光照区域的3d纹理是预先生成的,从而提高了每个物体在图形处理器的渲染(shading)性能。
              [0082]
              本实施例中,从各个光照区域中确定出光照影响程度大于影响程度阈值的光照区域,得到像素点对应的目标光照区域,从而可以先基于光照影响程度对光照区域进行筛选,从而过滤掉对像素点不产生影响的光照区域(即光照影响程度等于0的光照区域),从而减少计算量,提高渲染效率。
              [0083]
              在一些实施例中,每个光照区域设置有区域掩码,虚拟场景中设置有多个光照探针,目标光照区域包括多个子区域;目标光照区域的光照参数信息包括子区域的光照信息;得到子区域的光照信息的步骤如下:确定每个光照探针所匹配的区域掩码;对于目标光照区域中的子区域,基于光照探针所匹配的区域掩码,从与子区域具有重叠关系的光照探针中选取所匹配的区域掩码与目标光照区域的区域掩码一致的光照探针,得到子区域对应的目标光照探针;基于子区域对应的目标光照探针的光照转换信息,得到子区域的光照信息。
              [0084]
              其中,光照探针(light probe),是预先放置在虚拟场景中的光照探测器,光照探针的形状可以是球体或多边形体等中的至少一种,例如为正方体。光照探针也可以称为光照探头。通过光照探针可以捕获并使用穿过场景空白空间的光线的相关信息。与光照贴图类似,光照探针存储了虚拟场景中的光照的烘焙信息,其中包括预先计算出的光照转换信息。不同之处在于,光照贴图存储的是有关光线照射到虚拟场景中静态物体表面的光照信
              息,而光照探针存储的是有关光线穿过场景中的空白空间的信息。光照探针的位置以及存储的光照转换信息是预先设置好的。
              [0085]
              目标光照区域包括多个子区域,子区域的形状可以是任意的,包括但不限于是四面体、六面体或球形等中的至少一种。子区域对应的光照参数信息基于光照探针的光照转换信息确定。光照转换信息为虚拟场景中的环境光的光照参数信息与光照探针的光照参数信息之间的转换关系,利用光照探针的光照转换信息以及环境光的光照参数信息,可以得到光照探针的光照参数信息。例如,将光照探针的光照转换信息与环境光的光照参数信息相乘,得到光照探针的光照参数信息。
              [0086]
              重叠关系是指两个空间区域包括相同的区域,例如,子区域所表示的空间区域与光照探针所表示的空间区域具有相同的区域,则子区域与光照探针具有重叠关系。
              [0087]
              具体地,对于目标光照区域中的每个子区域,终端可以从各个光照探针中,获取与子区域具有重叠关系、并且属于该目标光照区域的光照探针,得到该子区域对应的目标光照探针,每个子区域对应的目标光照探针可以为一个或多个。
              [0088]
              在一些实施例中,虚拟场景中可以包括环境光,环境光可以表示为多个基函数的线性组合,即环境光对应有光照参数信息,环境光的光照参数信息中包括组成环境光的各个基函数的权重。虚拟场景中设置有多个光照探针,光照探针对应有光照转换信息。光照转换信息为虚拟场景中的环境光的光照参数信息与光照探针的光照参数信息之间的转换关系,利用光照探针的光照转换信息以及环境光的光照参数信息,可以得到光照探针的光照参数信息。
              [0089]
              在一些实施例中,终端可以确定光照探针所匹配的区域掩码,在光照探针于区域掩码之间建立对应关系,例如可以将所匹配的区域掩码存储在光照探针中。具体地,终端可以判断光照探针所处的位置是否属于光照区域,当确定光照探针所处的位置属于光照区域时,则将该光照区域的区域掩码确定为与光照探针所匹配的区域掩码。例如,光照区域有4个,区域掩码分别为s0、s1、s2和s3,光照探针p位于光照区域s1内,则将光照区域s1的区域掩码即s1确定为光照探针p所匹配的区域掩码。光照区域可以称为烘焙区域。例如,可以利用以下的伪代码确定光照探针所匹配的区域掩码:for each probe postion //probe postion指的是光照探针的位置;for each region // region指的是光照区域if postion in region then//如果光照探针的位置属于光照区域probe.mask = region.mask//将光照探针的掩码作为光照探针所匹配的掩码。
              [0090]
              在一些实施例中,对于每个子区域,终端可以获取该子区域对应的目标光照探针的光照转换信息,获取环境光的光照参数信息,将目标光照探针的光照转换信息与环境光的参数信息相乘,得到目标光照探针对应的光照参数信息,得到子区域的各个目标光照探针的光照参数信息后,终端可以基于该子区域的各个目标光照探针的光照参数信息计算得到该子区域的光照参数信息。具体地,终端可以对子区域的各个目标光照探针的光照参数信息进行加权计算,将加权计算的结果确定为该子区域的光照参数信息。其中,加权计算的权重可以是基于目标光照探针与子区域之间的距离确定的,距离越大,权重越小。也就是说,子区域的光照参数信息,是对基于子区域的位置查找出的光照探针的光照参数信息进行插值得到的。
              [0091]
              在一些实施例中,终端可以基于虚拟场景中的虚拟对象的表面点,确定虚拟场景中的各个光照探针的中心位置。具体地,对于虚拟场景中的虚拟对象,确定虚拟对象对应的三维网格模型中的基本几何形状进行光栅化处理,确定基本几何形状中的像素点,确定像素点的法线方向,将像素点的法线方向上与像素点之间的距离为预设距离的位置确定为光照探针的中心位置。三维网格模型(3d mesh)是由一系列几何形状组成的多边形网格,用于模拟虚拟物体的表面。比如,游戏开发过程中,各个虚拟对象的表面都是由一个或多个三维网格模型模拟的。在本技术实施例中,虚拟对象的三维网格模型即为模拟虚拟对象的表面的多边形网格?;炯负涡巫词枪钩扇衲P偷淖钚〉男巫?,基本几何形状例如可以为三角形。例如,可以将物体表面的每个三角形表示(mesh triangles)进行细分,也就是把三角形进行光栅化,光栅化的每个点想法线方向进行一定量的偏移,这样就可以在物体表面生成了很多点,在这些点上进行光照的数据保存,即将这些点作为光照探针的中心位置。如图6所示,展示了虚拟场景中的虚拟的房间,房间中的黑色实心圆表示生成的光照探针。
              [0092]
              在一些实施例中,光照探针的光照转换信息可以基于光线跟踪算法确定。光照转换信息也可以称为光照传输数据或光照传输过程参数。具体地,在确定好每个光照探头的位置后,可以使用光线跟踪算法为每个探头生成光照转换信息。例如,可以从光照探针的中心位置向四周发射射线,射线遇到物体后继续反弹,直到射线无法命中任何物体,此时记录下最后一次反弹的方向和首条射线的方向,记录下来光照探头的位置与最后一次反弹的方向以及首条射线的方向的对应关系,从而得到光照转换信息。
              [0093]
              在一些实施例中,光照探头的光照信息(irradiance)可以采用球谐函数表示。终端可以利用图7中的公式计算光照转换信息。公式中表示光照转换信息,p代表光照探针,表示角度,表示直接或通过任意数量的物体反射到光照探针p的来自于基函数yi的光线。表示光照探针对应的球谐函数中的基函数,也可以理解为环境光的出射方向。yi、y
              i-1
              、y
              i+1
              表示环境光对应的基函数,即环境光的入射方向。
              [0094]
              在一些实施例中,终端可以根据光源(环境光)和光照探头的光照参数信息对光照探针进行实时光照重建。光照探针的光照转换信息可以是根据光线的可见性和光线几何角度投影权重信息计算出的光照传输过程参数。例如可以利用公式计算出光照探针的光照信息。表示出射光照信息,即最终光照重建的结果。表示入射光线(光源信息),表示光照传输函数(光照参数信息),表示各个光照方向的集合,x表示位置,表示入射光照方向,表示出射光照方向。如图8所示,图8中的(d)为(环境光)光源信息,图8中的(c)是光照转换信息。图8中的(d)是最终光照重建的结果。图8中的(a)为光线的可见性,图8中的(b)为光线几何角度投影权重信息。光线的可见性表示点与点之间的可见性函数,是一个二值函数,0表示不可见,1表示可见。光线几何角度投影权重信息表示点处的法线方向与点处的光线方向之间的点积。
              [0095]
              本实施例中,确定每个光照探针所匹配的区域掩码,对于目标光照区域中的子区
              域,基于光照探针所匹配的区域掩码,从确定目标光照区域中的与子区域具有重叠关系的光照探针中选取所匹配的区域掩码与目标光照区域的区域掩码一致的光照探针,得到子区域对应的目标光照探针,基于子区域对应的目标光照探针的光照转换信息 ,得到子区域的光照信息,从而基于光照探针所匹配的区域掩码准确的判断出了属于目标光照区域的光照探针,基于与目标光照区域中的子区域具有重叠关系、并且属于该目标光照区域的光照探针,确定子区域的光照参数信息,使得子区域的光照参数信息并不会受到其他光照区域的影响,减少了漏光的现象,从而渲染出的效果更加的真实。
              [0096]
              其中,漏光是指被遮挡的光线穿过了遮挡物而将被遮挡的区域照亮的现象。如图9所示,图9中的(a)为存在漏光的情况下的渲染效果图,图9中的(b)为不存在漏光的情况下的渲染效果图,从图中可以看出,图9中的(b)相较于图9中的(a)更加真实,图9中的(a)中由于房檐遮挡的光穿过了房檐将房檐下方照亮,从而图9中的(a)中房檐下方相比图9中的(b)中的房檐下方较亮,正常情况下,由于光线被遮挡,房檐下方的亮度应该是较暗的。
              [0097]
              在一些实施例中,目标光照探针的光照转换信息,表征目标光照探针的光照参数信息与环境光的光照参数信息之间的转换关系;基于子区域对应的目标光照探针的光照转换信息,得到子区域的光照信息包括:针对子区域对应的目标光照探针,基于环境光的光照参数信息以及目标光照探针的光照转换信息,计算得到目标光照探针的光照参数信息;基于子区域对应的各个目标光照探针的光照参数信息,得到子区域对应的光照信息。
              [0098]
              其中,虚拟场景的环境光的光照信息为多个基函数的线性组合?;肪彻饫绨ㄌ艄獾??;肪彻獾墓庹詹问畔?,包括环境光的光照信息对应的各个基函数的权重。目标光照探针的光照参数信息,包括目标光照探针的光照信息对应的各个基函数的权重?;肪彻獾墓庹招畔⒍杂Φ母鞲龌肽勘旯庹仗秸氲墓庹招畔⒍杂Φ母鞲龌?,可以相同也可以不同。
              [0099]
              具体地,终端可以将环境光的光照参数信息与目标光照探针的光照转换信息相乘,得到目标光照探针的光照参数信息。
              [0100]
              在一些实施例中,终端可以对子区域对应的各个目标光照探针的光照参数信息进行加权计算,得到子区域对应的光照参数信息,目标光照探针与子区域之间的距离越小,则目标光照探针的照参数信息的权重越大。子区域对应的光照参数信息中包括一个或多个基函数分别对应的权重,多个是指至少两个,终端可以利用子区域的光照参数信息中基函数的权重对基函数进行线性组合,得到子区域的光照信息。
              [0101]
              本实施例中,由于目标光照探针的光照转换信息,表征目标光照探针的光照参数信息与环境光的光照参数信息之间的转换关系,因此可以快速的基于光照转换信息得到目标光照探针的光照参数信息,基于子区域对应的各个目标光照探针的光照参数信息,得到子区域对应的光照信息,提高了得到光照信息的效率。
              [0102]
              在一些实施例中,基于子区域对应的各个目标光照探针的光照参数信息,得到子区域对应的光照信息包括:对于子区域的每个目标光照探针,基于目标光照探针与子区域之间的距离确定目标光照探针的权重;利用每个目标光照探针的权重,对各个目标光照探针的光照参数信息进行加权计算,得到子区域对应的光照信息。
              [0103]
              其中,目标光照探针与子区域之间的距离与目标光照探针的权重成负相关关系。
              [0104]
              具体地,终端可以利用每个目标光照探针的权重,对各个目标光照探针的光照参
              数信息进行加权计算,得到子区域的光照参数信息,子区域的光照参数信息中包括一个或多个基函数分别对应的权重,多个是指至少两个,终端可以利用子区域的光照参数信息中基函数的权重对基函数进行线性组合,得到子区域的光照信息。
              [0105]
              本实施例中,由于距离越近光照情况越相似,故基于目标光照探针与子区域之间的距离确定目标光照探针的权重,利用每个目标光照探针的权重,对各个目标光照探针的光照参数信息进行加权计算,得到子区域对应的光照信息,提高了光照信息的准确度。
              [0106]
              在一些实施例中,基于各个目标光照区域对像素点的光照影响程度和每个目标光照区域的光照信息,确定像素点的光照渲染信息包括:对于每个目标光照区域,基于像素点与目标光照区域中的子区域之间的距离,从目标光照区域的各个子区域中确定满足距离接近条件的子区域,得到目标子区域;基于各个目标光照区域对像素点的光照影响程度和每个目标光照区域中的目标子区域的光照信息,确定像素点的光照渲染信息。
              [0107]
              其中,距离接近条件包括距离小于第二距离阈值。第二距离阈值可以预设或根据需要设置。
              [0108]
              具体地,对于每个目标光照区域,终端可以计算像素点与目标光照区域中的每个子区域之间的距离,当确定距离大于第二距离阈值时,将该子区域确定为目标子区域。从每个目标光照区域中筛选出的目标子区域可以为一个或多个,多个是指至少两个。
              [0109]
              在一些实施例中,终端可以确定各个目标子区域分别在像素点处的照射信息,照射信息包括光照强度,终端可以利用各个目标光照区域对像素点的光照影响程度,对各个目标子区域对像素点的照射信息进行加权计算,确定像素点的光照渲染信息。例如,终端可以将目标光照区域对像素点的光照影响程度确定为该目标光照区域中的目标子区域对应的加权权重,利用各个目标子区域的加权权重,对各个目标子区域在像素点处的照射信息进行加权计算,确定像素点的光照渲染信息。
              [0110]
              本实施例中,由于满足距离接近条件的子区域对像素点的光照影响较大,故对于每个目标光照区域,基于像素点与目标光照区域中的子区域之间的距离,从目标光照区域的各个子区域中确定满足距离接近条件的子区域,得到目标子区域,基于各个目标光照区域对像素点的光照影响程度和每个目标光照区域中的目标子区域的光照信息,确定像素点的光照渲染信息,提高了光照渲染信息的准确度。
              [0111]
              本技术还提供一种图像渲染方法的实施例,具体地,如图10所示,该图像渲染方法包括:步骤1002,对于目标对象的表面点,确定以表面点为起点的多条射线分别命中的光照区域,统计命中每个光照区域的射线数量,得到每个光照区域对表面点的光照影响程度。
              [0112]
              其中,光照区域为虚拟场景中的区域,目标对象为虚拟场景中的对象。光照区域的设置可以是通过使用聚类分析的方法自动生成的。
              [0113]
              步骤1004,对于每个表面点,将每个光照区域的区域掩码与光照区域对表面点的光照影响程度之间建立对应关系,得到表面点的区域影响程度信息,基于各个表面点的区域影响程度信息,得到目标对象表面的光照影响信息。
              [0114]
              步骤1006,光照区域包括多个子区域,确定每个光照探针所匹配的区域掩码,从与子区域具有重叠关系的光照探针中选取所匹配的区域掩码与目标光照区域的区域掩码一
              致的光照探针,得到子区域对应的目标光照探针。
              [0115]
              步骤1008,基于子区域对应的目标光照探针的光照转换信息确定子区域的光照参数信息,基于子区域的光照参数信息确定子区域的光照信息。
              [0116]
              其中,生成光照探针以及确定光照探针的光照转换信息的步骤可以是离线处理阶段的。如图11所示,本技术的光照渲染方案包括离线处理阶段、中央处理器阶段以及图形处理器阶段,离线处理阶段包括放置探针阶段以及烘焙探针阶段,放置探针阶段用于确定光照探针的位置,烘焙探针阶段用于确定光照探针的光照转换信息。子区域的光照参数信息可以是中央处理器在全局体积纹理阶段生成的。光照区域的各个子区域的光照参数信息可以采用3d纹理存储,例如图11中的全局体积纹理阶段生成3d纹理。图11中的光照球谐更新阶段可以包括生成光照探针的光照参数信息的步骤,稀疏探针重新照明阶段可以包括生成光照探针的光照信息的步骤。
              [0117]
              步骤1010,对于目标对象表面上的像素点,基于目标对象表面的光照影响信息确定每个光照区域对像素点的光照影响程度。
              [0118]
              步骤1012,从光照区域的各个子区域中确定满足距离接近条件的子区域,得到目标子区域,基于各光照区域对像素点的光照影响程度和每个光照区域中的目标子区域的光照信息,确定像素点的光照渲染信息。
              [0119]
              其中,确定目标子区域可以是由中央处理器执行的,例如图11中,在物体体积选择阶段确定像素点对应的目标子区域。
              [0120]
              步骤1014,基于像素点的光照渲染信息进行光照渲染。
              [0121]
              其中,如图11所示,光照渲染可以是由图形处理器执行的。
              [0122]
              本文提供了一种通过设置区域和区域掩码的方式,分别为物体和光照探头生产掩码信息来进行光照探头的插值技术,不但会解决光照探针的漏光问题,还能在区域过渡处产生自然的过渡效果,而且还能够在移动平台达到60fps(秒传输帧数,frames per second)的效果性能。本技术提供的光照渲染方法可以应用于半动态gi技术,为游戏工作室提供全局光照解决方案,本技术提供的光照渲染方法可以利用烘焙引擎(baking engine)和渲染引擎(ue prt renderer)实现。
              [0123]
              在一些实施例中,对本技术提出的光照渲染方法的实际效果进行了实验。如图12所示,展示了漏光前后效果对比图,图12中的(a)是未处理漏光时的效果,可以看到右面墙壁上、屏幕中间的墙都有严重的漏光问题。图12中的(b)为利用本技术提供的光照渲染方法解决了漏光问题的情况下所正确显示的光照效果图。从图中可以看出图12中的(b)相比图12中的(a)更加自然。
              [0124]
              本技术提供的光照渲染方法可以应用于任何的需要进行光照渲染的场景中,包括但不限于是游戏场景、动漫场景或虚拟现实场景等场景中的至少一种。本技术提供的光照渲染方法,应用于游戏、动漫或虚拟现实(virtual reality,vr)场景中,可以解决漏光以及光照跳变的问题,使得渲染出的效果更加的自然。
              [0125]
              游戏场景中,本技术提供的光照渲染方法可以用于渲染得到游戏画面。具体地,游戏中包括虚拟场景,虚拟场景包括多个光照区域,每个光照区域设置有区域掩码,区域掩码用于唯一标识光照区域,在虚拟场景中生成光照探针,并确定光照探针所匹配的区域掩码。每个光照区域包括多个子区域,根据子区域周围的光照探针,生成光照区域的光照参数信
              息集合,光照参数信息集合中包括光照区域中各个子区域分别对应的光照参数信息,基于子区域的光照参数信息生成子区域的光照信息。虚拟场景中包括虚拟对象,对于虚拟场景中的待渲染出的目标对象,可以获取虚拟场景的多个光照区域对虚拟场景中的目标对象表面的光照影响信息,对于目标对象表面上的像素点,对于每个光照区域,基于像素点与光照区域中的子区域之间的距离,从光照区域的各个子区域中确定满足距离接近条件的子区域,得到目标子区域,基于各个目标光照区域对像素点的光照影响程度和每个目标光照区域中的目标子区域的光照信息,确定像素点的光照渲染信息,基于像素点的光照渲染信息进行光照渲染,从而渲染出游戏画面。
              [0126]
              动漫场景中,本技术提供的光照渲染方法可以用于渲染得到动漫画面。具体地,动漫中包括虚拟场景,虚拟场景包括多个光照区域,每个光照区域设置有区域掩码,区域掩码用于唯一标识光照区域,在虚拟场景中生成光照探针,并确定光照探针所匹配的区域掩码。每个光照区域包括多个子区域,根据子区域周围的光照探针,生成光照区域的光照参数信息集合,光照参数信息集合中包括光照区域中各个子区域分别对应的光照参数信息,基于子区域的光照参数信息生成子区域的光照信息。虚拟场景中包括虚拟对象,对于虚拟场景中的待渲染出的目标对象,可以获取虚拟场景的多个光照区域对虚拟场景中的目标对象表面的光照影响信息,对于目标对象表面上的像素点,对于每个光照区域,基于像素点与光照区域中的子区域之间的距离,从光照区域的各个子区域中确定满足距离接近条件的子区域,得到目标子区域,基于各个目标光照区域对像素点的光照影响程度和每个目标光照区域中的目标子区域的光照信息,确定像素点的光照渲染信息,基于像素点的光照渲染信息进行光照渲染,从而渲染出动漫画面。
              [0127]
              应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
              [0128]
              基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的光照渲染方法的光照渲染装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个光照渲染装置实施例中的具体限定可以参见上文中对于光照渲染方法的限定,在此不再赘述。
              [0129]
              在一些实施例中,如图13所示,提供了一种光照渲染装置,包括:信息获取???302、程度确定???304、信息确定???306和光照渲染???308,其中:信息获取???302,用于获取虚拟场景的多个光照区域对虚拟场景中的目标对象表面的光照影响信息。
              [0130]
              程度确定???304,用于对于目标对象表面上的像素点,基于光照影响信息确定每个光照区域对像素点的光照影响程度。
              [0131]
              信息确定???306,用于基于每个光照区域对像素点的光照影响程度,确定针对像素点的光照渲染信息。
              [0132]
              光照渲染???308,用于基于像素点的光照渲染信息进行光照渲染。
              [0133]
              在一些实施例中,信息获取??榛褂糜冢憾杂谀勘甓韵蟮谋砻娴?,确定以表面点为起点的多条射线分别命中的光照区域;统计命中每个光照区域的射线数量,得到每个光照区域对表面点的光照影响程度;基于每个光照区域分别对目标对象的多个表面点的光照影响程度,得到目标对象表面的光照影响信息。
              [0134]
              在一些实施例中,信息获取??榛褂糜冢赫攵砸员砻娴阄鸬愕拿刻跎湎?,在射线与多个光照区域中的虚拟对象存在相交的情况下,确定交点;将交点所属的光照区域确定为射线命中的光照区域。
              [0135]
              在一些实施例中,多个光照区域包括室外区域,光照渲染装置还用于:在射线与多个光照区域中的所有虚拟对象皆不相交的情况下,确定室外区域为射线命中的光照区域。
              [0136]
              在一些实施例中,每个光照区域设置有区域掩码,信息获取??榛褂糜冢憾杂诿扛霰砻娴?,将每个光照区域的区域掩码与光照区域对表面点的光照影响程度之间建立对应关系,得到表面点的区域影响程度信息;基于各个表面点的区域影响程度信息,得到目标对象表面的光照影响信息。
              [0137]
              在一些实施例中,程度确定??榛褂糜冢夯谙袼氐阌氡砻娴阒涞木嗬?,从各个表面点中选取距离小于预设距离的表面点,得到像素点对应的匹配点;从光照影响信息中获取每个光照区域对匹配点的光照影响程度;基于获取的光照影响程度,确定每个光照区域对像素点的光照影响程度。
              [0138]
              在一些实施例中,信息确定??榛褂糜冢捍痈鞲龉庹涨蛑腥范ǔ龉庹沼跋斐潭却笥谟跋斐潭茹兄档墓庹涨?,得到像素点对应的目标光照区域;基于各个目标光照区域对像素点的光照影响程度和每个目标光照区域的光照信息,确定像素点的光照渲染信息。
              [0139]
              在一些实施例中,每个光照区域设置有区域掩码,虚拟场景中设置有多个光照探针,目标光照区域包括多个子区域;目标光照区域的光照信息包括子区域的光照信息;信息获取??榛褂糜冢喝范扛龉庹仗秸胨ヅ涞那蜓诼?;对于目标光照区域中的子区域,基于光照探针所匹配的区域掩码,从与子区域具有重叠关系的光照探针中选取所匹配的区域掩码与目标光照区域的区域掩码一致的光照探针,得到子区域对应的目标光照探针;基于子区域对应的目标光照探针的光照转换信息,得到子区域的光照信息。
              [0140]
              在一些实施例中,目标光照探针的光照转换信息,表征目标光照探针的光照参数信息与环境光的光照参数信息之间的转换关系;信息获取??榛褂糜冢赫攵宰忧蚨杂Φ哪勘旯庹仗秸?,基于环境光的光照参数信息以及目标光照探针的光照转换信息,计算得到目标光照探针的光照参数信息;基于子区域对应的各个目标光照探针的光照参数信息,得到子区域对应的光照信息。
              [0141]
              在一些实施例中,信息获取??榛褂糜冢憾杂谧忧虻拿扛瞿勘旯庹仗秸?,基于目标光照探针与子区域之间的距离确定目标光照探针的权重;利用每个目标光照探针的权重,对各个目标光照探针的光照参数信息进行加权计算,得到子区域对应的光照信息。
              [0142]
              在一些实施例中,信息确定??榛褂糜冢憾杂诿扛瞿勘旯庹涨?,基于像素点与目标光照区域中的子区域之间的距离,从目标光照区域的各个子区域中确定满足距离接近条件的子区域,得到目标子区域;基于各个目标光照区域对像素点的光照影响程度和每个目标光照区域中的目标子区域的光照信息,确定像素点的光照渲染信息。
              [0143]
              上述光照渲染装置中的各个??榭扇炕虿糠滞ü砑?、硬件及其组合来实现。上述各??榭梢杂布问侥谇队诨蚨懒⒂诩扑慊璞钢械拇砥髦?,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个??槎杂Φ牟僮?。
              [0144]
              在一些实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图14所示。该计算机设备包括处理器、存储器、输入/输出接口(input/output,简称i/o)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储光照渲染方法中涉及到的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种光照渲染方法。
              [0145]
              在一些实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图15所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、移动蜂窝网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种光照渲染方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
              [0146]
              本领域技术人员可以理解,图14和图15中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
              [0147]
              在一些实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述光照渲染方法中的步骤。
              [0148]
              在一些实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述光照渲染方法中的步骤。
              [0149]
              在一些实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述光照渲染方法中的步骤。
              [0150]
              需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关
              国家和地区的相关法律法规和标准。
              [0151]
              本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
              [0152]
              以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
              [0153]
              以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的?;し段?。因此,本技术的?;し段вσ运饺ɡ笪?。
              当前第1页1 2 
              网友询问留言 已有0条留言
              • 还没有人留言评论。精彩留言会获得点赞!
              1
              彩票快三