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

文档序号:8340278阅读:452来源:国知局
多光源下的全局光照绘制方法及装置的制造方法
【技术领域】
[0001] 本发明涉及光照绘制领域,尤其涉及一种多光源下的全局光照绘制方法及装置。
【背景技术】
[0002] 全局光照是常用的渲染技术,用于生成软影、间接折射等光照效果,以加强渲染效 果的真实感。基于大量点光源(Many Point Lights)的方法是生成全局光照效果的技术之 一,其原理是在场景中生成大量虚拟点光源(Virtual Point Light, VPL),通过分别计算各 视角采样点(Sample)被这些虚拟点光源照亮的程度,来获得全局光照效果。Wald等人发明 了基于大量点光源框架的光割(Lightcuts)方法,根据虚拟点光源建立层次结构树并使用 层次结构树的一个割集代表所有虚拟点光源,以减少运算量和加快运算速度。随着光割方 法的不断完善,大量点光源框架在实现全局光照方法中效率较高。但是由于现有的光割技 术是一种全局方法,需要把所有点光源构建起统一的光树,并在上面进行光割的选取。在求 取光割的过程中,每次计算割中节点的误差,还需要使用全局的几何数据进行求交运算。当 进行大规模、高精度的场景绘制时,大量的虚拟点光源及几何数据都有可能超过了内存或 者显存的限制,因而无法应用于外存(Out-of-core)复杂场景的绘制,无法构建全局的光 树,以及进行全局求交运算。

【发明内容】

[0003] 抟术问是页
[0004] 有鉴于此,本发明要解决的技术问题是,如何对包含若干个物体的大规模的场景 进行全局光照绘制。
[0005] 解决方案
[0006] 为了解决上述技术问题,根据本发明的一实施例,第一方面,提供了一种多光源下 的全局光照绘制方法,用于对包含若干个物体的场景进行全局光照绘制,所述物体由几何 面片来描述,所述方法由具有内存并耦接至外存的系统来执行,所述方法包括:
[0007] 对所述场景中的几何面片和虚拟点光源分别基于位置信息进行处理,得到第一数 量的几何块以及第二数量的光源块;
[0008] 以所述场景中的所有采样点为行坐标,以所有虚拟点光源为列坐标建立光传递矩 阵;
[0009] 将所述光传递矩阵划分为所述第二数量的列,每一列对应一个所述光源块,将所 述光传递矩阵划分为第三数量的行,每一行与每一列相交构成为一个子矩阵,所述第三数 量为所述采样点的聚类数量;
[0010] 将所述子矩阵和几何块从所述外存调入到所述内存中,根据所述虚拟点光源的材 质属性、衰减属性、可见性以及光强度,计算对应子矩阵中的虚拟点光源对采样点的亮度贡 献值;
[0011] 将可见性为可见的所述虚拟点光源对采样点的亮度贡献值累加到对应的采样点 上,并输出所述采样点的总亮度。
[0012] 结合第一方面,在第一种可能的实现方式中,所述对所述场景中的几何面片和虚 拟点光源分别基于位置信息进行处理,得到第一数量的几何块以及第二数量的光源块,包 括:
[0013] 分别计算所述几何面片的重心和所述虚拟点光源的重心在X轴、y轴和Z轴上的 位置码,所述几何面片的重心构成所述几何面片的位置信息,所述虚拟点光源的重心构成 所述虚拟点光源的位置信息;
[0014] 根据所述几何面片重心的位置码计算第一莫顿码,根据所述虚拟点光源重心的位 置码计算第二莫顿码;
[0015] 根据所述第一莫顿码对所述几何面片进行排序和划分,得到第一顺序和第一数量 的几何块,根据所述第二莫顿码对所述虚拟点光源进行排序和划分,得到第二顺序和第二 数量的光源块。
[0016] 结合第一方面,在第二种可能的实现方式中,所述将所述光传递矩阵划分为所述 第二数量的列,每一列对应一个所述光源块,将所述光传递矩阵划分为第三数量的行,每一 行与每一列相交构成为一个子矩阵之后,还包括:
[0017] 将所述子矩阵中的所有所述虚拟点光源和采样点的连线包含在第一空间包围盒 中,每一个子矩阵对应一个第一空间包围盒,
[0018] 其中,所述第一空间包围盒包括两个球体及连接所述两个球体的侧面,一个球体 为包含所述子矩阵中所有采样点的最小球体,另一个球体为包含所述子矩阵中所有虚拟点 光源的最小球体,通过在所述两个球体上分别截取过球心并与所述两个球体的球心连线垂 直的切面,将所得到的两个切面与所述两个球体相交的边分别连接构成所述侧面。
[0019] 结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将所 述光传递矩阵划分为所述第二数量的列,每一列对应一个所述光源块,将所述光传递矩阵 划分为第三数量的行,每一行与每一列相交构成为一个子矩阵之后,还包括:
[0020] 将所述几何块的所有几何面片包含在第二空间包围盒中,每一个几何块对应一个 第二空间包围盒,
[0021] 其中,所述第二空间包围盒由包含所述几何块中所有几何面片的最小轴对齐长方 体构成。
[0022] 结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述将所 述子矩阵和几何块从所述外存调入到所述内存中之前,还包括:
[0023] 判断所述第一空间包围盒的中轴到所述第二空间包围盒的最短距离是否不大于 所述第一空间包围盒中较大球体的半径,是则判断为对应的子矩阵和几何块需要进行可见 性测试,否则判断为对应的子矩阵和几何块不需要进行可见性测试,并将所述子矩阵中的 虚拟点光源标记为对采样点可见。
[0024] 结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述将所 述子矩阵和几何块从所述外存调入到所述内存中,根据所述虚拟点光源的材质属性、衰减 属性、可见性以及光强度,计算对应子矩阵中的虚拟点光源对采样点的亮度贡献值,包括:
[0025] 将判断为需要进行可见性测试的子矩阵及几何块从所述外存调入到所述内存 中;
[0026] 对调入的所述子矩阵和几何块进行可见性测试;
[0027] 根据所述子矩阵中虚拟点光源的材质属性、衰减属性、可见性以及光强度,计算所 述子矩阵中可见性为可见的虚拟点光源对采样点亮度贡献值,所述可见性为可见的虚拟点 光源包括所述可见性测试的结果为可见的虚拟点光源以及所述标记为可见的虚拟点光源。
[0028] 结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述对调 入的所述子矩阵和几何块进行可见性测试,包括:
[0029] 对于所述子矩阵中的每条虚拟点光源和采样点的连线,分别与所述几何块中的几 何面片进行求交运算,如果运算结果为相交,则判断为所述虚拟点光源对采样点不可见;如 果运算结果为不相交,则判断为所述虚拟点光源对采样点可见。
[0030] 结合第一方面的第五种可能的实现方式,在第七种可能的实现方式中,所述将所 述子矩阵和几何块从所述外存调入到所述内存中,包括:
[0031] 根据所述几何块的所述第一顺序,将判断为需要进行可见性测试的子矩阵对应的 几何块从所述外存调入到所述内存中。
[0032] 结合第一方面的第五种可能的实现方式,在第八种可能的实现方式中,所述将所 述子矩阵和几何块从所述外存调入到所述内存中,包括:
[0033] 将所有子矩阵分别与对应的需要进行可见性测试的几何块组合为节点,以由一个 节点到另一个节点需要进行的数据读写量作为连接所述两个节点的边的权值,将所有节点 连接构成一张图,计算能够遍历所述图中所有节点,并且所述遍历所通过的边的总权值最 小的路径,选择所述路径,并根据所述路径上各节点的遍历顺序将对应的子矩阵及几何块 从所述外存调入到所述内存中。
[0034] 为了解决上述技术问题,根据本发明的另一实施例,第二方面,提供了一种多光源 下的全局光照绘制装置,用于对包含若干个物体的场景进行全局光照绘制,所述物体由几 何面片来描述,所述方法由具有内存并耦接至外存的系统来执行,所述装置包括:
[0035] 块处理模块,用于对所述场景中的几何面片和虚拟点光源分别基于位置信息进行 处理,得到第一数量的几何块以及第二数量的光源块;
[0036] 光传递矩阵建立模块,用于以所述场景中的所有采样点为行坐标,以所有虚拟点 光源为列坐标建立光传递矩阵;
[0037] 子矩阵划分模块,用于并将所述光传递矩阵划分为所述第二数量的列,每一列对 应一个所述光源块,将所述光传递矩阵划分为第三数量的行,每一行与每一列相交构成为 一个子矩阵,所述第三数量为所述采样点的聚类数量;
[0038] 亮度贡献值计算模块,用于将所述子矩阵和几何块从所述外存调入到所述内存 中,根据所述虚拟点光源的材质属性、衰减属性、可见性以及光强度,计算对应子矩阵中的 虚拟点光源对采样点的亮度贡献值;
[0039] 输出模块,将可见性为可见的所述虚拟点光源对采样点的亮度贡献值累加到对应 的采样点上,并输出所述采样点的总亮度。
[0040] 结合第二方面,在第一种可能的实现方式中,所述块处理模块被配置为:
[0041] 分别计算所述几何面片的重心和所述虚拟点光源的重心在X轴、y轴和Z轴上的 位置码,所述几何面片的重心构成所述几何面片的位置信息,所述虚拟点光源的重心构成 所述虚拟点光源的位置信息;
[0042] 根据所述几何面片重心的位置码计算第一莫顿码,根据所述虚拟点光源重心的位 置码计算第二莫顿码;
[0043] 根据所述第一莫顿码对所述几何面片进行排序和划分,得到第一顺序和第一数量 的几何块,根据所述第二莫顿码对所述虚拟点光源进行排序和划分,得到第二顺序和第二 数量的光源块。
[0044] 结合第二方面,在第二种可能的实现方式中,还包括:
[0045] 空间包围盒建立模块,用于建立第一空间包围盒,将所述子矩阵中的所有所述虚 拟点光源和采样点的连线包含在第一空间包围盒中,每一个子矩阵对应一个第一空间包围 盒,
[0046] 其中,所述第一空间包围盒包括两个球体及连接所述两个球体的侧面,一个球体 为包含所述子矩阵中所有采样点的最小球体,另一个球体为包含所述子矩阵中所有虚拟点 光源的最小球体,通过在所述两个球体上分别截取过球心并与所述两个球体
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1