Kd-树与Voronoi图混合的辐射亮度计算方法

文档序号:9397547阅读:471来源:国知局
Kd-树与Voronoi图混合的辐射亮度计算方法
【技术领域】
[0001] 本发明属于计算机图形学技术领域,具体涉及一种Kd-树(Kd-tree)与Voronoi 图混合的精确辐射亮度计算方法。
【背景技术】
[0002] 具有高度真实感的绘制技术是计算机图形学中最震撼人心的研究领域之一,而其 中精确细致的全局光照明模拟尤其重要。光子映射算法(Photon Mapping,简称PM)是一 种基于光子图实现的全局光照明算法(Jensen H.W. :Global illumination using photon maps. In Rendering Techniques 96. Springer, 1996, pp. 21 - 30),由于光子映射相比光线 追踪能够更好的模拟焦散现象和SDS,即经过镜面反射(折射)-漫反射-镜面反射(折射) 所产生的现象,而且光线追踪算法在采样较低的条件下,使用蒙特卡洛采样精确计算初始 的反射时会生成噪声,因此光子映射算法可以得到更加逼真自然的图像。
[0003] 光子映射算法中光子图的生成也需要借助光线追踪的方法,光线追踪算法对镜面 反射光线和透射光线的追踪要优于光子映射算法,在实际场景中往往选取二者的混合算法 解决绘制问题,即使用光线追踪方法计算光源引起的直接光照,而使用光子图计算环境引 起的间接漫反射光照。
[0004] 光子映射算法中核心的辐射亮度估计的精度常常严重依赖于半径非常小的估算 内核以及在估算内核上的光子分布。对于几何特征复杂的绘制场景,光子映射不能保证 在绘制中可以有效地控制偏差和噪声错误的生成。光子映射算法是一个有偏算法,偏差 产生的原因在于福射亮度估算本质上是计算X点处光子密度的过程,由于X点是抽象点 不存在体积和大小,只能近似的使用X点附近区域内的平均光子密度来代替X点的光子 密度,这样做必然会引入不精确的偏差。间接光照计算在光子数目趋近于无穷大是可以 趋近于正确的结果,但是实际上,由于光子映射的整个绘制方法中发射的光子数目不可能 达到无穷大(否则计算机系统无法进行处理),分布在辐射亮度估计区域内的光子通常是 有限甚至是稀疏的,这样就造成了估算内核的半径在有限光子的条件下不能趋近于〇,直 观上,与相交点距离"较远"的光子也会用于计算相交点的辐射亮度,这一部分辐射量是不 精确的。此外,传统的光子映射算法的辐射亮度计算存在两个假设条件:1.估算内核圆盘 所在的局部物体表面是平坦的几何表面,即在相交点X附近的局部表面可以完整地包含 估算内核圆盘;2.所有与相交点X的距离小于r的光子都会对X点产生有效的辐射量贡 南犬(Toshiya T.,Ogaki S., Jensen H. ff. !Progressive photon mapping. ACM Trans. Grap h. 27, 5 (Dec. 2008),130:1 - 130:8)。同时,在光子映射方法中,光子图往往存储在三维空间 Kd-tree (Kd-树)层次组织结构中离散光子,已经完全丢弃了待绘制三维场景的几何信息, 而在进行光子收集阶段由于对点X周围的空间几何信息完全未知,因此估算计算内核对整 个圆盘范围内均有光子分布的假设在实际中也不能满足,即辐射亮度估算方程的分子和分 母都是不精确的,这样导致的错误辐射亮度估算结果为偏差错误。偏差问题所导致的场景 绘制结果的表现为模糊,即丢失了局部细节。

【发明内容】

[0005] 针对上述问题,本发明提出一种Kd-tree与Voronoi图混合的精确福射亮度计算 方法(Radiance Estimate),能够利用局部表面光子分布的几何特征进行更加精确的福射 亮度(Radiance)内核估计。
[0006] 本发明采用的技术方案如下:
[0007] -种Kd-tree与Voronoi图混合的精确福射亮度计算方法,其步骤包括:
[0008] 1)针对待绘制的三维场景,构造场景拓扑结构及其Kd-tree层次组织;
[0009] 2)光源发射光子并生成光子图,以多边形面片为单位存储该光子图,包括存储光 子的基本属性以及存储光子所停留的多边形面片的唯一标识,同时每个多边形都记录落在 其中的光子的唯一标识;
[0010] 3)遍历三维场景表面的每个多边形,针对每个多边形,收集属于该多边形的光子 并组织成二维Kd-tree结构;
[0011] 4)对每个多边形表面构造 Voronoi图划分,并计算划分出的Voronoi单元的福射 通量密度;
[0012] 5)计算从视点发射的射线与场景的相交点X ;
[0013] 6)根据相交点X所属的多边形面片,利用该多边形面片所保存的二维Kd-tree结 构收集临近的光子;
[0014] 7)对收集到的光子,根据Voronoi图划分找到这些光子所覆盖的精确的面积,并 利用福射亮度计算公式计算出X点的福射亮度。
[0015] 进一步地,根据步骤7)计算出的辐射亮度合成出最终的真实感图像。
[0016] 进一步地,步骤1)构造场景拓扑结构的方法是:首先为每个场景中的节点建立邻 域网格结构,通过遍历一次场景中的网格结构,得到从网格的节点到邻域网格集合的对应 关系表;之后为每个网格建立1-邻域网格集合,使用的方法是针对一个网格,遍历它的所 有节点,选取每个节点邻域网格集合的并集作为该网格的1-邻域网格集合;待所有网格的 1-邻域网格集合创建完成之后,递归地创建网格的2-邻域网格集合,依次类推。
[0017] 进一步地,步骤4)构造 Voronoi剖分时,首先利用Voronoi图计算每个采样光子 所在Voronoi单元格的面积大小,然后利用快速邻近查找到以相交点为圆心以内核半径为 半径的圆盘内的所有光子,并获取其有效的辐射度以及Voronoi单元格的面积。
[0018] 进一步地,步骤6)使用栈结构收集临近的光子。
[0019] 进一步地,步骤7)采用如下公式计算辐射亮度:
[0021] 其中,X是视点光线与物体表面相交点;η是相交点X附近用于辐射亮度估计的光 子数目;是出射方向;叫:是光子入射方向;/.(Λ·,《,ω;,)是双向反射分布函数;Δ办(jc為) 是光子P所携带的有效福射通量;Λ Ap是包含光子ρ的Voronoi多边形的面积。
[0022] 本发明提出了一种新的具备几何感知的精确辐射亮度计算方法,能够利用局部表 面光子分布的几何特征进行更加精确的辐射亮度估算;为了实现更精确的内核估算,本发 明提出每个光子占据的局部表面的Voronoi图剖分单元的辐射度概念,利用该辐射度进行 精确的辐射亮度估计计算。与标准的光子映射算法不同,本发明能够绘制中消除由于非精 确估算内核导致的可见偏差。
【附图说明】
[0023] 图1是本发明的辐射亮度计算方法的步骤流程图。
[0024] 图2是全局光子与焦散光子不意图。
[0025] 图3是Kd-tree建树过程示意图。
[0026] 图4是光子及其占据的Voronoi剖分单元的示意图。
[0027] 图5是相交点X的估算内核范围内的Voronoi多边形示意图。
[0028] 图6是传统光子映射方法和本发明方法的绘制效果对比图。
[0029] 图7是本发明绘制的场景的真实感效果图。
【具体实施方式】
[0030] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和 附图,对本发明做进一步说明。
[0031] 本发明提出了一种新的具备几何感知的精确辐射亮度计算方法,采用基于 Kd-tree与Voronoi图混合结构的算法,能够利用局部表面光子分布的几何特征进行更加 精确的辐射亮度内核估计。本发明的整个新的光子映射方法(辐射亮度计算方法)的流程 如图1所示:
[0032] 1)针对待绘制的三维场景,构造场景拓扑结构及其Kd-tree层次组织;
[0033] 2)光子跟踪过程开始:光源发射光子生成光子图,光子图存储以多边形面片为单 位,即每个光子一旦停止跟踪停留在某个场景的表面时,除了存储其光子的基本属性外,还 存储该光子所停留(即所属)多边形面片的唯一标识(ID),同时每个多边形都记录落在其 中的光子的唯一标识(ID);
[0034] 3)遍历三维场景表面的每个多边形,针对每个多边形,收集属于该多边形的光子 并组织成二维Kd-tree结构;
[0035] 4)对每个多边形表面构造 Voronoi图划分,并计算划分出的Voronoi单元的福射 通量密度;
[0036] 5)光线跟踪过程开始:计算从视点发射的射线与场景的相交点X ;
[0037] 6)根据相交点X所属的多边形面片,利用该多边形面片所保存的二维Kd-tree结 构收集临近的光子;
[0038] 7)对收集到的光子,根据Voronoi图划分找到这些光子所覆盖的精确的面积,并 利用福射亮度计算公式计算出X点的福射亮度;
[0039] 8)合成出最终的真实感图像。
[0040] 上述过程中,构造场景拓扑结构和Kd-tree层次组织(步骤1)-光子跟踪一光线 跟踪一合成最终真实感图像(步骤8),这四步基本步骤与现有的光子映射方法流程一致, 不具备创新性,但是光子跟踪过程中的2、3、4三个步骤的方法与以往的光子跟踪方法不 同,光线跟踪过程中的6、7步骤与以往的光线跟踪方法以及辐射亮度计算方法不同,具有 创新性。
[00
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1