710 likes | 932 Views
课程内容进展. 综述. ‘ 图形学’和‘图形系统’. 建模 观察 显示. 曲线曲面 实体造型. 坐标系统. 基本图元. 观察流水线 裁剪. 几何变换. 可见面判别 光照 面绘制. 其它. UI 动画 ……. 第九讲 光照模型与面绘制算法. 基本概念. 光照模型 Illumination Model 计算表面上点的光强度的模型(方法) 表面绘制算法 Surface Rendering 对场景中所有表面的投影位置的象素点,根据光照模型计算光强度的过程
E N D
课程内容进展 综述 ‘图形学’和‘图形系统’ • 建模 • 观察 • 显示 曲线曲面 实体造型 坐标系统 基本图元 观察流水线 裁剪 几何变换 可见面判别 光照 面绘制 • 其它 UI 动画 ……
基本概念 • 光照模型 Illumination Model • 计算表面上点的光强度的模型(方法) • 表面绘制算法 Surface Rendering • 对场景中所有表面的投影位置的象素点,根据光照模型计算光强度的过程 • 真实感成像(前提首先是建立几何模型、透视投影、消除隐藏面) • 表面特性的精确表示 • 场景中光照效果的物理描述:反射、透明度、纹理、阴影
光的度量 光源一般会向不同方向以不同强度发出光通量—— • 光通量:光能,单位时间传递的辐射能总量 • 单位:瓦特(焦耳/秒) 或者 流明 lm 要获得场景中表面上的光照效果—— • 辐射度B :单位面积上离开表面的光通量。 • 单位:瓦特/米2 • 光强度:特定方向上单位立体角放出的光辐射度 • 单位:cd(坎德拉) 或者 瓦特/(米2·球面度)
光源 • 白色光 等能量的各种波长可见光的组合 • 彩色光 • 单色光 光的颜色 发光光源 光的来源 反射光源 点光源 方向光源 发光特性 扩展光源 无穷远光源
光源(续) 背景光(环境光) 镜面反射 影响物体的方式 反射光 漫反射 点光源发射光 漫反射 镜面反射 背景光+反射光
本章主要内容 七、半色调处理 八、表面绘制(明暗) 九、光线跟踪 十、辐射度光照模型 纹理映射 OpenGL实现光照和表面绘制 一、基本光照模型 二、RGB颜色 三、基本透明模型 四、雾气 五、阴影 六、光强度显示
一、基本光照模型 • 各表面为理想漫反射体:假设入射光在各个方向以相同强度发散而与观察位置无关 • 环境光引起的全局漫反射 • 点光源引起的漫反射 • 点光源引起的镜面反射 • 多个点光源引起的反射 • 表面光发射 • 辐射强度衰减 • 角强度衰减
环境光 • 特点 • 场景的一般亮度 • 对所有表面的统一照明 • 反射强度依赖于表面材质属性 • 环境光全局漫反射计算 Iambdiff=KdIa 0 Kd 1 每个表面设定漫反射系数Kd 环境光强度Ia
点光源漫反射 • 特点: • 光线照射到物体表面后,向各个方向均匀发出 • 点光源漫反射计算 IL,diff=KdILcos=KdIL(N.L) IL光源强度 Kd表面的漫反射系数 入射光与表面法线夹角 N L
(1)环境光+点光源 KaIa+ KdIL(N.L) N.L>0 KaIa N.L0 • Ka环境光漫反射系数(为每一表面指定,用来调节环境光的最终光照效果) • Kd表面漫反射系数 • Ia环境光强度 • IL 点光源L的光强度 Idiff=
点光源镜面反射 注意:L,N,R,V均为单位向量 • 特点 • 镜面反射角=入射角 • 在镜面反射角的一个会聚区域内入射光的全部或大部分成为反射光 光亮表面,大ns 黯淡表面,小ns • Phong镜面反射模型 • ns:镜面反射参数 • Ks:恒定的镜面反射系数(本来应该和材质、透明度、入射光角度、颜色等有关)
Ks ns 对于不同的镜面参数值计算单个点光源场景中球面的镜面反射效果
注意:L,N,R,V均为单位向量 • H:L和V间的半角向量 • 给定的光源和视点,H是观察方向上产生最大镜面反射(最大亮度)的表面朝向 对于非平面,具有更高效率 简化的Phong模型: 用NH替代 VR
(2)phong照明模型 (与漫反射合并) 环境光,单个点光源的漫反射+镜面反射 Ka 环境光漫反射系数 Kd 表面漫反射系数 Ia 环境光强度 IL 光源L的强度 Ks 镜面反射系数 ns镜面反射参数 N 表面法线单位矢量 L 指向光源方向单位矢量 H 理想镜面反射方向单位矢量 环境光,多个点光源的漫反射+镜面反射
(a) (b) (c) (d) 环境光,不同表面颜色 场景的线框图; 单点光源,环境光、漫反射和镜面反射 单个点光源,(ks=0)环境光和漫反射;
表面光发射 • 例子:吸顶灯,招牌 • 点光源+光锥 • 用扩展光源逼近:点光源网格 • 更强的真实感:辐射度模型 • 简单的计算:加入发射项Isurfemission
(3)考虑表面发射项和强度衰减 点光源 辐射强度衰减 无穷远光源 点光源与表面距离为dl Vobj 方向光源 角强度衰减 光源不是方向光源 Vlight 对象位于投射圆锥外 其它 al :衰减指数 O
对象后面的光源 其它 对象后面的光源 其它
光照模型 (光强的计算) 颜色 透明度 其它效果 强度等级的划分 强度的显示
二、RGB颜色 • 为Ka,Kd,Ks各自定义RGB分量,例如 • 以蓝色为例,点光源漫反射计算修改为: • 漫反射和镜面反射颜色向量(K为单值常数) • 漫反射颜色向量 • 镜面反射颜色向量 • 以蓝色为例,点光源漫反射计算修改为:
入射材料折射率 折射材料折射率 三、基本透明模型 • 折射 • Snell定律 • 简化的透明模型计算方法 I=(1-Kt)Iref1+KtItrans Kt 透明系数,Iref1反射强度,Itrans透射强度 • 深度排序、深度缓存算法、A缓存算法
四、雾气 ρ:雾气的正密度 ρ越大,雾气越稠 密,表面越柔和 • fatmo(d):雾气衰减函数 • Iobj:对象表面光强度 • Iatmo:模拟雾气光强度(也可同时考虑颜色) • d:观察位置到对象的距离
五、阴影 • 视点置于光源位置,不可见的表面即为阴影 • 计算出来的阴影可以当作表面图案存储
参数 和 取决于显示设备属性 六、光强度显示 • (0.0-1.0)系统分配的有限强度等级 • 人对声音、光强的感觉按对数等级变化 • 均匀的强度等级:相邻强度之比相同 • Gamma校正 • 显示设备亮度变化非线性, 象素光强值线性变化 • 视频查找表调整线性象素值 V为电子枪电压,I为显示强度
现状: 电压=0.5 时,强度=0.2 电压=0.8 时,强度=0.5 电压=1 时,强度=1 问题: 。。。。。。 所需像素强度=0.5,应该使用多大电压? 所需像素强度=1,应该使用多大电压? 规范化的电子枪电压 强 度 强度 规范化的电子枪电压
2个强度等级 4个强度等级 连续色调图象 至少32个强度等级 8个强度等级
七、半色调处理(halftoning) • 基本思想:显示设备提供的光强等级数目较少时,将多个象素单元组合起来表示一种强度值。 2级系统 2x2象素网格 5种强度等级 2级系统 3x3象素网格 10种强度等级
光照模型 (光强的计算) 应用在 应用在 全局光照效果 表面绘制 (每个点的光强计算) 光线跟踪方法 辐射度方法
八、多边形(表面)绘制算法 • 恒定强度表面绘制(平面绘制) • 一个多边形对应一个光强度 • 适合于情况: • 多面体 • 光源足够远N.L 及衰减函数为常数 • 视点也足够远V.R 为常数 • Gouraud明暗处理 • Phong明暗处理
Gouraud明暗处理: 强度插值 • 由共享顶点的面的法向量平均值求顶点法向量 • 计算顶点光强度 • 多边形表面上将强度线性插值 缺点:高光处理不好,会有马赫带效应(多边形交界处,光强的一阶导数不连续,从而得到过亮或过暗条纹)
Phong明暗处理:法向量插值 • 求顶点法向量 • 法向量在表面上插值 • 每点计算强度 • 更精确 • 但是计算量大
九、光线跟踪方法(ray tracing) • 正向效果:光源(环境光)发出无数光线,在可以直接到达的表面上产生反射、折射;反/折射光进一步到达其它表面……直到部分光线最终到达投影平面上的像素位置。 • 逆向模拟 • 以像素为起点 • 像空间
投影参考点Pprp 投影平面上的象素网格 光线跟踪流程 • 跟踪象素光线:对每一象素,反向跟踪由它到场景的光线(Pprp到像素中心连线),求出与第一个物体的交点。 • 从交点出发再反向跟踪从属光线:反射和折射。 • 满足以下条件之一时,停止跟踪: • 该光线不和任一表面相交 • 该光线与一个光源相交且该 光源不是反射面 • 该树达到最大深度(存储极限) • 跟踪结果: • 生成二叉光线跟踪树
二叉光线跟踪树 (1)求交计算 (2)光照效果计算 (2A)像素光强 (2B)聚焦效果
(1)光线与物体表面的求交计算 • 由光线方程和表面方程联立解出交点 • 光线方程: (s:P0和P的距离) • 光线和球面求交 • 光线和多面体求交 • 提高效率? s P
求交例:光线和球面/多面体 • 直接求交 • 根的正负性判断 • 用较小s代入 得到交点 • 包围球测试 • 找到前向面 • 各个前向面:求交,内外测试 • 找到最近交点 球面 多面体
反射光方向 折射光方向
求交效率的提高方法 • 物体包围球排除法 • 单个对象包围球 • 多个对象(或包围球)的包围球 • 空间分割方法 • 逐次将空间分割为若干子立方体 • 直至每个子立方体包含的物体表面或面片数目小于预定值 • 八叉树是一种均匀分割的选择
(2A)每个像素光强值计算 • 光线跟踪本质上是个递归算法,每个象素的光强度必须综合各级递归计算的结果才能获得。 • 对每次计算——一部分是光源直接照射表面点产生的光照效果(基本光照模型);另一部分是从属光(由周围物体反射折射得到)照射表面点产生。 • 即:每次计算采用整体光照模型公式I=Il +Ig • Il —根据基本光照模型计算 • Ig =KRIR+KTIT • 考虑了反射系数KR,折射系数KT • 这些‘系数’均为和表面材质有关的常数
递归过程 • 从叶结点开始 • 由底向上遍历二叉树 • 在树的每一个结点处,递归地调用整体光照模型公式(每上升一层,光强部分衰减) • 累计光强度贡献直到二叉树根结点。
(2B)模拟照相机聚焦效果 • 投影平面前假想安置薄透镜 • 指定聚焦长度( f=透镜中心到聚焦点F之间的距离)等参数 • 薄透镜公式 • 如果 投影点不聚焦到投影平面