一种光线照射效果的计算方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机图形学领域,特别是涉及一种光线照射效果的计算方法,以及,一种光线照射效果的计算装置。
【背景技术】
[0002]在现有的虚拟场景中,场景中物体的照射一般由场景中的光源直接完成,计算机图形学领域有不少模拟场景下直接光照效果的计算方法。例如,对于游戏模拟界面中的阴影,一般采用的是阴影图的方式,这种绘制方式的对于阴影场景的渲染需要两个步骤来完成。
[0003]第一步是产生阴影图本身,即从光源的观察位置来对场景进行深度的渲染,这些深度记录了光源所照射到的点到光源的距离;第二步是将阴影图应用到场景中,即从玩家的观察位置来对场景进行渲染。对于玩家所看见的每一个像素,在着色器中计算这个点到光源的距离to,并从上一步生成的纹理中查询记录下的光源在这个方向上观察的距离tl。
[0004]进一步,如果tl = t0,则这个点同时被玩家视角和光源观察的视线所及,即这个看见的点被光源照亮;如果ti〈to,则这个点能够被玩家看到,但是它不能被光源照射到,这个点在光源不能照射到的影子中,从而找出场景中的阴影区域和照亮区域,进一步完成直接照射效果的渲染。
[0005]而实际的情况中,光源照射到场景中的物体会发生反射,反射的光线照射到周围的其他物体上,起到间接照射效果,因此上述方案仅仅计算光源的直接照射效果,忽略了场景中光的反射效果,对光源对物体的照射关系过于简化,因此,该方案对虚拟场景的光线效果仿真程度并不高,并且,该方案也无法用于虚拟场景中反射光线的计算。
[0006]目前,需要对这种间接照射效果进行计算时,由于其计算极为复杂,计算量庞大,一般虚拟场景中其计算都是通过离线计算完成,无法实时生成反射光线的间接照射效果。
【发明内容】
[0007]本发明提供了一种光线照射效果的计算方法和装置,以实时生成反射光线的间接照射效果。
[0008]本发明提供了一种光线照射效果的计算方法,包括:
[0009]记录第一光源直射到虚拟场景中第一目标对象的第一照射点的照射属性;
[0010]以每个第一照射点作为所述虚拟场景中的一个第二光源,根据所述第一照射点的照射属性计算所述第二光源进行光线反射的光源属性,并将各个第二光源分别划分到所述虚拟场景的多个子区域中;
[0011]根据所述第二光源的光源属性,计算所述第二光源在各个子区域中依次进行光线传播后、照射到所述虚拟场景中第二目标对象的第二照射点的照射属性;
[0012]由所述第二照射点的照射属性,计算所述第二光源对所述目标对象的直接照射效果,作为所述第一光源对所述第二目标对象的间接照射效果。
[0013]优选地,所述第一照射点的照射属性包括所述第一光源的位置信息、所述第一光源的照射方向、所述第一照射点的照射深度、所述第一照射点的法线方向以及所述第一目标对象在所述第一照射点位置的材质颜色和材质对光线的衰减参数;
[0014]所述第二光源的光源属性包括所述第一照射点在所述虚拟场景中的位置信息、所述第二光源的照射方向以及所述第二光源的光线颜色与光线强度。
[0015]优选地,所述根据第一照射点的照射属性计算第二光源进行光线反射的光源属性的步骤包括:
[0016]计算所述第一光源的位置信息与所述第一照射点的照射深度之和,作为所述第一照射点在所述虚拟场景中的位置信息;
[0017]根据所述第一光源的照射方向与所述第一照射点的法线方向确定所述第二光源的照射方向;
[0018]由所述第一照射点的照射深度计算所述第一照射点在照射过程中衰减后的光线强度,将所述光线强度乘以所述第一目标对象在所述第一照射点位置的材质颜色,得到所述第二光源的光线颜色,将所述光线强度乘以所述第一目标对象在所述第一照射点位置的材质对光线的衰减参数,得到所述第二光源的光线强度。
[0019]优选地,所述方法还包括:
[0020]将所述虚拟场景划分为多个子区域,进一步包括:
[0021]从以观察所述虚拟场景的观察位置为中心的世界坐标或以所述第一光源所在位置为中心的世界坐标上,按照轴对齐包围盒的方式将所述虚拟场景划分为预设个数的大小均匀的多个子区域;
[0022]或,按照八叉树或k_维二叉树的方式将所述虚拟场景划分为预设个数的大小不均匀的多个子区域;
[0023]或,根据所述第二光源的密度自适应变更所述子区域的密度,并根据调整后的所述子区域的密度将所述虚拟场景划分为预设个数的大小不均匀的多个子区域。
[0024]优选地,所述第二光源采用三维纹理中所述第二光源的照射属性作为参数的球面谐波函数表示。
[0025]优选地,所述根据第二光源的光源属性,计算第二光源在各个子区域中依次进行光线传播后、照射到虚拟场景中第二目标对象的第二照射点的照射属性包括:
[0026]通过迭代计算各个子区域中第二光源及其相邻六个方向的第二光源的球面谐波函数,获得所述第二光源在各个子区域中的光线传播后、照射到虚拟场景中第二目标对象的第二照射点的照射属性;
[0027]其中,所述迭代计算隔帧进行或所述迭代次数小于预设迭代次数。
[0028]本发明还提供了一种光线照射效果的计算装置,包括:
[0029]照射属性记录模块,用于记录第一光源直射到虚拟场景中第一目标对象的第一照射点的照射属性;
[0030]光源属性计算模块,用于以每个第一照射点作为所述虚拟场景中的一个第二光源,根据所述第一照射点的照射属性计算所述第二光源进行光线反射的光源属性;
[0031]光源划分模块,用于将各个第二光源分别划分到所述虚拟场景的多个子区域中;
[0032]照射属性计算模块,用于根据所述第二光源的光源属性,计算所述第二光源在各个子区域中依次进行光线传播后、照射到所述虚拟场景中第二目标对象的第二照射点的照射属性;
[0033]照射效果计算模块,用于由所述第二照射点的照射属性,计算所述第二光源对所述目标对象的直接照射效果,作为所述第一光源对所述第二目标对象的间接照射效果。
[0034]优选地,所述第一照射点的照射属性包括所述第一光源的位置信息、所述第一光源的照射方向、所述第一照射点的照射深度、所述第一照射点的法线方向以及所述第一目标对象在所述第一照射点位置的材质颜色和材质对光线的衰减参数;
[0035]所述第二光源的光源属性包括所述第一照射点在所述虚拟场景中的位置信息、所述第二光源的照射方向以及所述第二光源的光线颜色与光线强度。
[0036]优选地,所述光源属性计算模块包括:
[0037]位置信息计算子模块,用于计算所述第一光源的位置信息与所述第一照射点的照射深度之和,作为所述第一照射点在所述虚拟场景中的位置信息;
[0038]照射方向计算子模块,用于根据所述第一光源的照射方向与所述第一照射点的法线方向确定所述第二光源的照射方向;
[0039]第一光线强度计算子模块,用于由所述第一照射点的照射深度计算所述第一照射点在照射过程中衰减后的光线强度;
[0040]光线颜色计算子模块,用于将所述光线强度乘以所述第一目标对象在所述第一照射点位置的材质颜色,得到所述第二光源的光线颜色;
[0041]第二光线强度计算子模块,用于将所述光线强度乘以所述第一目标对象在所述第一照射点位置的材质对光线的衰减参数,得到所述第二光源的光线强度。
[0042]优选地,所述装置还包括:
[0043]区域划分模块,用于将所述虚拟场景划分为多个子区域,进一步包括:
[0044]第一划分子模块,用于从以观察所述虚拟场景的观察位置为中心的世界坐标或以所述第一光源所在位置为中心的世界坐标上,按照轴对齐包围盒的方式将所述虚拟场景划分为预设个数的大小均匀的多个子区域;
[0045]或,第二划分子模块,用于按照八叉树或k_维二叉树的方式将所述虚拟场景划分为预设个数的大小不均匀的多个子区域;
[0046]或,第三划分子模块,用于根据所述第二光源的密度自适应变更所述子区域的密度,并根据调整后的所述子区域的密度将所述虚拟场景划分为预设个数的大小不均匀的多个子区域。
[0047]优选地,所述第二光源采用三维纹理中所述第二光源的照射属性作为参数的球面谐波函数表示。
[0048]优选地,所述照射属性计算模块包括:
[0049]迭代子模块,用于通过迭代计算各个子区域中第二光源及其相邻六个方向的第二光源的球面谐波函数,获得所述第二光源在各个子区域中的光线传播后、照射到虚拟场景中第二目标对象的第二照射点的照射属性;
[0050]其中,所述迭代计算隔帧进行或所述迭代次数小于预设迭代次数。
[0051]与【背景技术】相比,本发明包括以下优点:
[0052]通过本发明实施例,以第一光源直射到虚拟场景中第一目标对象的第一照射点作为第二光源,用于临时表现反射光线的间接照明情况,根据第一照射点的照射属性计算第二光源进行光线反射的光源属性,根据各个第二光源的光源属性迭代计算光线在各个子区域的传播,得到第二光源对第二目标对象的第二照