多光源下的全局光照绘制方法及装置制造方法及图纸

技术编号:11507127 阅读:103 留言:0更新日期:2015-05-27 08:44
本发明专利技术涉及一种多光源下的全局光照绘制方法及装置,用于对包含若干个物体的场景进行全局光照绘制,所述方法由具有内存并耦接至外存的系统来执行,所述方法包括:对场景中的几何面片和虚拟点光源分别进行处理,得到第一数量的几何块以及第二数量的光源块;以场景中的所有采样点为行坐标,以所有虚拟点光源为列坐标建立光传递矩阵;将光传递矩阵划分为第二数量的列,将光传递矩阵划分为第三数量的行;将子矩阵和几何块从所述外存调入到内存中,计算对应子矩阵中的虚拟点光源对采样点的亮度贡献值;将亮度贡献值累加到对应的采样点上,并输出采样点的总亮度。本发明专利技术实施例能够有效提高全局光照绘制速度和效率,适用于对大规模的外存场景进行绘制。

【技术实现步骤摘要】
多光源下的全局光照绘制方法及装置
本专利技术涉及光照绘制领域,尤其涉及一种多光源下的全局光照绘制方法及装置。
技术介绍
全局光照是常用的渲染技术,用于生成软影、间接折射等光照效果,以加强渲染效果的真实感。基于大量点光源(ManyPointLights)的方法是生成全局光照效果的技术之一,其原理是在场景中生成大量虚拟点光源(VirtualPointLight,VPL),通过分别计算各视角采样点(Sample)被这些虚拟点光源照亮的程度,来获得全局光照效果。Wald等人专利技术了基于大量点光源框架的光割(Lightcuts)方法,根据虚拟点光源建立层次结构树并使用层次结构树的一个割集代表所有虚拟点光源,以减少运算量和加快运算速度。随着光割方法的不断完善,大量点光源框架在实现全局光照方法中效率较高。但是由于现有的光割技术是一种全局方法,需要把所有点光源构建起统一的光树,并在上面进行光割的选取。在求取光割的过程中,每次计算割中节点的误差,还需要使用全局的几何数据进行求交运算。当进行大规模、高精度的场景绘制时,大量的虚拟点光源及几何数据都有可能超过了内存或者显存的限制,因而无法应用于外存(Out-of-core)复杂场景的绘制,无法构建全局的光树,以及进行全局求交运算。
技术实现思路
技术问题有鉴于此,本专利技术要解决的技术问题是,如何对包含若干个物体的大规模的场景进行全局光照绘制。解决方案为了解决上述技术问题,根据本专利技术的一实施例,第一方面,提供了一种多光源下的全局光照绘制方法,用于对包含若干个物体的场景进行全局光照绘制,所述物体由几何面片来描述,所述方法由具有内存并耦接至外存的系统来执行,所述方法包括:对所述场景中的几何面片和虚拟点光源分别基于位置信息进行处理,得到第一数量的几何块以及第二数量的光源块;以所述场景中的所有采样点为行坐标,以所有虚拟点光源为列坐标建立光传递矩阵;将所述光传递矩阵划分为所述第二数量的列,每一列对应一个所述光源块,将所述光传递矩阵划分为第三数量的行,每一行与每一列相交构成为一个子矩阵,所述第三数量为所述采样点的聚类数量;将所述子矩阵和几何块从所述外存调入到所述内存中,根据所述虚拟点光源的材质属性、衰减属性、可见性以及光强度,计算对应子矩阵中的虚拟点光源对采样点的亮度贡献值;将可见性为可见的所述虚拟点光源对采样点的亮度贡献值累加到对应的采样点上,并输出所述采样点的总亮度。结合第一方面,在第一种可能的实现方式中,所述对所述场景中的几何面片和虚拟点光源分别基于位置信息进行处理,得到第一数量的几何块以及第二数量的光源块,包括:分别计算所述几何面片的重心和所述虚拟点光源的重心在x轴、y轴和z轴上的位置码,所述几何面片的重心构成所述几何面片的位置信息,所述虚拟点光源的重心构成所述虚拟点光源的位置信息;根据所述几何面片重心的位置码计算第一莫顿码,根据所述虚拟点光源重心的位置码计算第二莫顿码;根据所述第一莫顿码对所述几何面片进行排序和划分,得到第一顺序和第一数量的几何块,根据所述第二莫顿码对所述虚拟点光源进行排序和划分,得到第二顺序和第二数量的光源块。结合第一方面,在第二种可能的实现方式中,所述将所述光传递矩阵划分为所述第二数量的列,每一列对应一个所述光源块,将所述光传递矩阵划分为第三数量的行,每一行与每一列相交构成为一个子矩阵之后,还包括:将所述子矩阵中的所有所述虚拟点光源和采样点的连线包含在第一空间包围盒中,每一个子矩阵对应一个第一空间包围盒,其中,所述第一空间包围盒包括两个球体及连接所述两个球体的侧面,一个球体为包含所述子矩阵中所有采样点的最小球体,另一个球体为包含所述子矩阵中所有虚拟点光源的最小球体,通过在所述两个球体上分别截取过球心并与所述两个球体的球心连线垂直的切面,将所得到的两个切面与所述两个球体相交的边分别连接构成所述侧面。结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将所述光传递矩阵划分为所述第二数量的列,每一列对应一个所述光源块,将所述光传递矩阵划分为第三数量的行,每一行与每一列相交构成为一个子矩阵之后,还包括:将所述几何块的所有几何面片包含在第二空间包围盒中,每一个几何块对应一个第二空间包围盒,其中,所述第二空间包围盒由包含所述几何块中所有几何面片的最小轴对齐长方体构成。结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述将所述子矩阵和几何块从所述外存调入到所述内存中之前,还包括:判断所述第一空间包围盒的中轴到所述第二空间包围盒的最短距离是否不大于所述第一空间包围盒中较大球体的半径,是则判断为对应的子矩阵和几何块需要进行可见性测试,否则判断为对应的子矩阵和几何块不需要进行可见性测试,并将所述子矩阵中的虚拟点光源标记为对采样点可见。结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述将所述子矩阵和几何块从所述外存调入到所述内存中,根据所述虚拟点光源的材质属性、衰减属性、可见性以及光强度,计算对应子矩阵中的虚拟点光源对采样点的亮度贡献值,包括:将判断为需要进行可见性测试的子矩阵及几何块从所述外存调入到所述内存中;对调入的所述子矩阵和几何块进行可见性测试;根据所述子矩阵中虚拟点光源的材质属性、衰减属性、可见性以及光强度,计算所述子矩阵中可见性为可见的虚拟点光源对采样点亮度贡献值,所述可见性为可见的虚拟点光源包括所述可见性测试的结果为可见的虚拟点光源以及所述标记为可见的虚拟点光源。结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述对调入的所述子矩阵和几何块进行可见性测试,包括:对于所述子矩阵中的每条虚拟点光源和采样点的连线,分别与所述几何块中的几何面片进行求交运算,如果运算结果为相交,则判断为所述虚拟点光源对采样点不可见;如果运算结果为不相交,则判断为所述虚拟点光源对采样点可见。结合第一方面的第五种可能的实现方式,在第七种可能的实现方式中,所述将所述子矩阵和几何块从所述外存调入到所述内存中,包括:根据所述几何块的所述第一顺序,将判断为需要进行可见性测试的子矩阵对应的几何块从所述外存调入到所述内存中。结合第一方面的第五种可能的实现方式,在第八种可能的实现方式中,所述将所述子矩阵和几何块从所述外存调入到所述内存中,包括:将所有子矩阵分别与对应的需要进行可见性测试的几何块组合为节点,以由一个节点到另一个节点需要进行的数据读写量作为连接所述两个节点的边的权值,将所有节点连接构成一张图,计算能够遍历所述图中所有节点,并且所述遍历所通过的边的总权值最小的路径,选择所述路径,并根据所述路径上各节点的遍历顺序将对应的子矩阵及几何块从所述外存调入到所述内存中。为了解决上述技术问题,根据本专利技术的另一实施例,第二方面,提供了一种多光源下的全局光照绘制装置,用于对包含若干个物体的场景进行全局光照绘制,所述物体由几何面片来描述,所述方法由具有内存并耦接至外存的系统来执行,所述装置包括:块处理模块,用于对所述场景中的几何面片和虚拟点光源分别基于位置信息进行处理,得到第一数量的几何块以及第二数量的光源块;光传递矩阵建立模块,用于以所述场景中的所有采样点为行坐标,以所有虚拟点光源为列坐标建立光传递矩阵;子矩阵划分模块,用于并将所述光传递矩阵划分为所述第二本文档来自技高网...
多光源下的全局光照绘制方法及装置

【技术保护点】
一种多光源下的全局光照绘制方法,其特征在于,用于对包含若干个物体的场景进行全局光照绘制,所述物体由几何面片来描述,所述方法由具有内存并耦接至外存的系统来执行,所述方法包括:对所述场景中的几何面片和虚拟点光源分别基于位置信息进行处理,得到第一数量的几何块以及第二数量的光源块;以所述场景中的所有采样点为行坐标,以所有虚拟点光源为列坐标建立光传递矩阵;将所述光传递矩阵划分为所述第二数量的列,每一列对应一个所述光源块,将所述光传递矩阵划分为第三数量的行,每一行与每一列相交构成为一个子矩阵,所述第三数量为所述采样点的聚类数量;将所述子矩阵和几何块从所述外存调入到所述内存中,根据所述虚拟点光源的材质属性、衰减属性、可见性以及光强度,计算对应子矩阵中的虚拟点光源对采样点的亮度贡献值;将可见性为可见的所述虚拟点光源对采样点的亮度贡献值累加到对应的采样点上,并输出所述采样点的总亮度。

【技术特征摘要】
2013.11.18 CN 20131057704311.一种多光源下的全局光照绘制方法,其特征在于,用于对包含若干个物体的场景进行全局光照绘制,所述物体由几何面片来描述,所述方法由具有内存并耦接至外存的系统来执行,所述方法包括:对所述场景中的几何面片和虚拟点光源分别基于位置信息进行处理,得到第一数量的几何块以及第二数量的光源块;以所述场景中的所有采样点为行坐标,以所有虚拟点光源为列坐标建立光传递矩阵;将所述光传递矩阵划分为所述第二数量的列,每一列对应一个所述光源块,将所述光传递矩阵划分为第三数量的行,每一行与每一列相交构成为一个子矩阵,所述第三数量为所述采样点的聚类数量;将所述子矩阵和几何块从所述外存调入到所述内存中,根据所述虚拟点光源的材质属性、衰减属性、可见性以及光强度,计算对应子矩阵中的虚拟点光源对采样点的亮度贡献值;将可见性为可见的所述虚拟点光源对采样点的亮度贡献值累加到对应的采样点上,并输出所述采样点的总亮度。2.根据权利要求1所述的多光源下的全局光照绘制方法,其特征在于,所述对所述场景中的几何面片和虚拟点光源分别基于位置信息进行处理,得到第一数量的几何块以及第二数量的光源块,包括:分别计算所述几何面片的重心和所述虚拟点光源的重心在x轴、y轴和z轴上的位置码,所述几何面片的重心构成所述几何面片的位置信息,所述虚拟点光源的重心构成所述虚拟点光源的位置信息;根据所述几何面片的重心的位置码计算第一莫顿码,根据所述虚拟点光源的重心的位置码计算第二莫顿码,所述几何面片的重心的位置码为根据所述几何面片的重心在x轴、y轴和z轴上的坐标所获得的标记,所述虚拟点光源的重心的位置码为根据所述虚拟点光源的重心在x轴、y轴和z轴上的坐标所获得的标记;根据所述第一莫顿码对所述几何面片进行排序和划分,得到第一顺序和第一数量的几何块,根据所述第二莫顿码对所述虚拟点光源进行排序和划分,得到第二顺序和第二数量的光源块。3.根据权利要求1所述的多光源下的全局光照绘制方法,其特征在于,所述将所述光传递矩阵划分为所述第二数量的列,每一列对应一个所述光源块,将所述光传递矩阵划分为第三数量的行,每一行与每一列相交构成为一个子矩阵之后,还包括:将所述子矩阵中的所有虚拟点光源和采样点的连线包含在第一空间包围盒中,每一个子矩阵对应一个第一空间包围盒,其中,所述第一空间包围盒包括两个球体及连接所述两个球体的侧面,一个球体为包含所述子矩阵中所有采样点的最小球体,另一个球体为包含所述子矩阵中所有虚拟点光源的最小球体,通过在所述两个球体上分别截取过球心并与所述两个球体的球心连线垂直的切面,将所得到的两个切面与所述两个球体相交的边分别连接构成所述侧面。4.根据权利要求3所述的多光源下的全局光照绘制方法,其特征在于,所述将所述光传递矩阵划分为所述第二数量的列,每一列对应一个所述光源块,将所述光传递矩阵划分为第三数量的行,每一行与每一列相交构成为一个子矩阵之后,还包括:将所述几何块的所有几何面片包含在第二空间包围盒中,每一个几何块对应一个第二空间包围盒,其中,所述第二空间包围盒由包含所述几何块中所有几何面片的最小轴对齐长方体构成。5.根据权利要求4所述的多光源下的全局光照绘制方法,其特征在于,所述将所述子矩阵和几何块从所述外存调入到所述内存中之前,还包括:判断所述第一空间包围盒的中轴到所述第二空间包围盒的最短距离是否不大于所述第一空间包围盒中较大球体的半径,是则判断为对应的子矩阵和几何块需要进行可见性测试,否则判断为对应的子矩阵和几何块不需要进行可见性测试,并将所述子矩阵中的虚拟点光源标记为对采样点可见。6.根据权利要求5所述的多光源下的全局光照绘制方法,其特征在于,所述将所述子矩阵和几何块从所述外存调入到所述内存中,根据所述虚拟点光源的材质属性、衰减属性、可见性以及光强度,计算对应子矩阵中的虚拟点光源对采样点的亮度贡献值,包括:将判断为需要进行可见性测试的子矩阵及几何块从所述外存调入到所述内存中;对调入的所述子矩阵和几何块进行可见性测试;根据所述子矩阵中虚拟点光源的材质属性、衰减属性、可见性以及光强度,计算所述子矩阵中可见性为可见的虚拟点光源对采样点亮度贡献值,所述可见性为可见的虚拟点光源包括所述可见性测试的结果为可见的虚拟点光源以及所述标记为可见的虚拟点光源。7.根据权利要求6所述的多光源下的全局光照绘制方法,其特征在于,所述对调入的所述子矩阵和几何块进行可见性测试,包括:对于所述子矩阵中的每条虚拟点光源和采样点的连线,分别与所述几何块中的几何面片进行求交运算,如果运算结果为相交,则判断为所述虚拟点光源对采样点不可见;如果运算结果为不相交,则判断为所述虚拟点光源对采样点可见。8.根据权利要求6所述的多光源下的全局光照绘制方法,其特征在于,所述对所述场景中的几何面片和虚拟点光源分别基于位置信息进行处理,得到第一数量的几何块以及第二数量的光源块,包括:分别计算所述几何面片的重心和所述虚拟点光源的重心在x轴、y轴和z轴上的位置码,所述几何面片的重心构成所述几何面片的位置信息,所述虚拟点光源的重心构成所述虚拟点光源的位置信息;根据所述几何面片的重心的位置码计算第一莫顿码,根据所述虚拟点光源的重心的位置码计算第二莫顿码,所述几何面片的重心的位置码为根据所述几何面片的重心在x轴、y轴和z轴上的坐标所获得的标记,所述虚拟点光源的重心的位置码为根据所述虚拟点光源的重心在x轴、y轴和z轴上的坐标所获得的标记;根据所述第一莫顿码对所述几何面片进行排序和划分,得到第一顺序和第一数量的几何块,根据所述第二莫顿码对所述虚拟点光源进行排序和划分,得到第二顺序和第二数量的光源块;所述将所述子矩阵和几何块从所述外存调入到所述内存中,包括:根据所述几何块的第一顺序,将判断为需要进行可见性测试的子矩阵对应的几何块从所述外存调入到所述内存中。9.根据权利要求6所述的多光源下的全局光照绘制方法,其特征在于,所述将所述子矩阵和几何块从所述外存调入到所述内存中,包括:将所有子矩阵分别与对应的需要进行可见性测试的几何块组...

【专利技术属性】
技术研发人员:王锐鲍虎军霍宇驰周炯
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1