真实感图形 授课教师: 单位:
主要内容 引言 光照明模型 多边形物体的明暗处理 光线跟踪算法 纹理映射 辐射度方法 实时绘制技术 非真实感图形绘制技术
辐射度技术概述 从颜色辉映说起
辐射度技术概述 直接照明与辐射度效果对比
辐射度技术概述 直接照明效果 艺术家在此场景中精心放置了三类光源以模拟真实的光照效果: 聚光灯:能产生阴影,放置于 窗外 泛光:缺少泛光,房间内所有可见但未被光源直接照射的表面会是全黑的 点光源:不产生阴影,可减弱泛光产生的“平板”效果
辐射度技术概述 辐射度效果 采用辐射度算法绘制, 光效未经艺术家特别处理。场景中仅包含一个面光源,即放置于窗外的天空。与直接照明效果相比,主要区别在于: 房间有发光效果 地板上软影清晰可见,房间周围可观察到细微的光效 地毯上的红色辉映到灰墙上,产生淡淡的温暖的感觉
辐射度技术概述 原理 前提:针对理想漫射环境 光是一种辐射能,在一个封闭环境中,场景中的光能经过表面之间的反射和透射,最终达到平衡状态 场景中各表面的光亮度实际上是场景中光能分布的反映 前提:针对理想漫射环境
什么是辐射度 单位时间内从物体单位表面积向外辐射的光能 物体作为光源自身向外发出的能量 物体表面接受来自周围场景表面传递给它的能量后,再次反射出去的部分
辐射度系统方程 前提:假设每一小面片的辐射度和漫反射率均为常数 小面片大小可以不一致,一般分解为方形,也有分解为三角形等其他形状的 为求解场景中物体表面的辐射度,将场景中每一物体的表面分解为互不重叠的小面片(patch)Ai(i=1,2,…,n) 前提:假设每一小面片的辐射度和漫反射率均为常数 小面片大小可以不一致,一般分解为方形,也有分解为三角形等其他形状的
辐射度系统方程 场景表面分解示例 由于每块面片辐射度均假设为常数,每一面片采用一个颜色绘制
辐射度系统方程 对于每一小面片Ai,成立: 周围场景面片入射到Ai单位面积上的光能,是周围面片辐射度的函数 自身拥有 辐射度 的辐射度 漫反射率
辐射度系统方程 设面片Aj为一周围场景面片,由辐射度定义,Aj向外辐射的总的光能为BjAj,其中一部分到达Ai 设到达Ai的光能占Aj向外辐射的总光能的比例为Fji(称为Aj到Ai的形状因子),则从周围环境面片入射到Ai的总光能为:
辐射度系统方程 入射到面片Ai单位面积上的光能Hi则为:
辐射度系统方程 由热能工程可知, ,于是 AjFji=AiFij AjFji=AiFij
辐射度系统方程 综上,可得辐射度系统方程: 假设 均已知,此即为关于n个辐射度变量的线性方程组 (i=1,2,…,n)
辐射度系统方程 矩阵形式
辐射度系统方程示例 http://graphics.ucsd.edu/courses/cse168_s06/ucsd/lecture17.pdf
辐射度系统方程示例
辐射度系统方程示例
辐射度系统方程示例
辐射度系统方程示例
辐射度算法 表面分割 将场景表面分割成小面片 形状因子计算 计算小面片间的形状因子 方程求解 求解辐射度系统方程 绘制 依据计算出的辐射度,转换成表面颜色 http://graphics.ucsd.edu/courses/cse168_s06/ucsd/lecture17.pdf
辐射度算法 表面分割 将场景表面分割成小面片 形状因子计算 计算小面片间的形状因子 方程求解 求解辐射度系统方程 绘制 依据计算出的辐射度,转换成表面颜色 http://graphics.ucsd.edu/courses/cse168_s06/ucsd/lecture17.pdf
辐射度算法:表面分割 均匀网格化(uniform meshing) Cohen & Wallace
辐射度算法:表面分割 均匀网格化(uniform meshing) 参照结果 均匀分割绘制结果
辐射度算法:表面分割 均匀网格化(uniform meshing) A: 块状阴影 B: 特征丢失了 C:马赫带 D:着色不连续 E:不连续
辐射度算法:表面分割 均匀网格化 低分辨率网格及绘制结果 高分辨率网格及绘制结果
辐射度算法:表面分割 自适应网格化(adaptive meshing) 绘制结果 自适应网格剖分
辐射度算法 表面分割 将场景表面分割成小面片 形状因子计算 计算小面片间的形状因子 方程求解 求解辐射度系统方程 绘制 依据计算出的辐射度,转换成表面颜色 http://graphics.ucsd.edu/courses/cse168_s06/ucsd/lecture17.pdf
辐射度算法:形状因子计算 计算和确定场景面片之间的形状因子是求解辐射度系统方程的关键 微面元-面片形状因子计算公式 遮挡因子(visibility term):
辐射度算法:形状因子计算 几何解释:在微面元dAi 上建立一个单位半球,则dAi对周围面片Aj的形状因子等于Aj投影到半球面后,其投影区域再次投影到底平面所形成的区域Ap的面积与单位圆的面积的比率
辐射度算法:形状因子计算 面片-面片形状因子计算公式 若两曲面片互不遮挡,可通过斯托克定理把双重面积积分变换成双重曲线积分计算,但对于存在遮挡的情况,极难得到解析解,此时,常采用数值方法求解 半立方体方法 光线采样方法 32 32
辐射度算法:形状因子计算 半立方体方法 在微面元Ai处建立一个半立方体 对于半立方体表面上每一网格,预计算 微面元Ai到该网格的形状因子 面片Aj经消隐后投影到半 立方体表面上 将所有为Aj投影所覆盖的 网格的形状因子相加 半立方体网格 Aj Ai Cohen M, Greenberg D. The hemi-cube: a radiosity solution for complex environments. Computer Graphics, 1985, 19(3):31–40.
辐射度算法:形状因子计算 半立方体方法 半立方体表面网格形状因子的预计算(可做成查找表存贮备用)
辐射度算法:形状因子计算 半立方体方法 示例
辐射度算法 表面分割 将场景表面分割成小面片 计算小面片间的形状因子 形状因子计算 方程求解 求解辐射度系统方程 绘制 依据计算出的辐射度,转换成表面颜色 http://graphics.ucsd.edu/courses/cse168_s06/ucsd/lecture17.pdf
辐射度算法:方程求解 理论上说,辐射度系统方程可采用任何一种线性方程组的求解算法来求解 直接求逆 迭代法 高斯消去法(Gauss elimination) 迭代法 Gauss-Seidel迭代—Gathering Southwell迭代—Shooting
辐射度算法:方程求解 Gathering 对于每一面片,收集场景中其它面片对它辐射的光能,更新该面片的辐射度
辐射度算法:方程求解 Gathering
辐射度算法:方程求解 Shooting 选取辐射源面片(具有最大待辐射光能),将其辐射光能发送到其他面片,更新各面片的辐射度。 选取新的辐射源面片
辐射度技术 逐步求精辐射度算法 通过迭代过程求解辐射度方程 每次迭代相当于一次光能传递过程 每次迭代后,采用场景中各面片的当前辐射度值绘制整个场景 经过多次迭代后,各面片的辐射度值逐渐逼近方程组的解 可用于对场景进行交互预览
辐射度技术 逐步求精辐射度算法 对于迭代过程中的每一步 选取辐射源面片 计算辐射源面片到周围所有面片的形状因子 for each iteration { select a source patch i calculate Fij for all receiving patch j for each patch j { update radiosity of patch j update emission of patch j } update the emission of patch i to zero
辐射度技术 逐步求精辐射度算法:示例 随着迭代过程的进行,可看到光在场景中传递 墙上和地上的每一小面片均为正方形 从左至右分别对应1、2、3、16次迭代的情形
辐射度技术 示例
辐射度技术 示例
辐射度技术 示例