第十章 真实感图形绘制 基本概念 简单光照模型 基于简单光照模型的多边形绘制.

Slides:



Advertisements
Similar presentations
加強輔導課程家長簡介會 時間: 9 月 30 日(二) 晚上 : 6:45 至 8 : 00 地點:禮堂.
Advertisements

知道什么是遗传 能够分辨什么是相对性状 知道基因、 DNA 和染色体之间的关系 掌握基因的传递过程 课堂总结与课后延伸.
老人茶帶來的新時尚 9A2D0024 黃秀雯 9A2D0036 莊承憲 9A2D0041 蘇意婷 9A2D0045 盧家淑 9A2D0050 王宥棋 9A21C017 吳雅芝.
案例 某日,小强的妈妈带着 7 岁的小强去医院。妈妈说老 师多次反映小强容易发脾气,注意力难以集中、学习 成绩不好。妈妈说他从小就好动,容易分神。她同时 说最近小强经常感到肚子痛和便秘。她曾经买药给他 吃,但没有效果。 小强和姐姐、妈妈住在郊区外公外婆家。他爸爸是公 司司机。妈妈和外公都在一家蓄电池厂工作,小强和.
—— 以洞庭湖区为例. 河 流河 流 沼 泽 沼 泽 滩 涂滩 涂 湖泊 这些美丽的风景图片反映的是什么景观?
波斯希腊 波斯钱币 ( 绵羊 ) 马其顿钱币 ( 山羊 ). 波斯希腊 波斯希腊 亚历山大击败波斯王大利乌三世 (333BC)
龙泉护嗓5班 优秀作业展.
2013届高考复习方案(第一轮) 专题课件.
专题二 文学类文本·小说阅读(选考) ——把握人事,洞察百态 补上一课 如何读懂小说 第1讲 情节 第2讲 人物 第3讲 环境 
桃園國際機場 通行證規定教育訓練簡報.
《临床医学研究方法》第二章第五节 病例对照研究习题解 (供研究生、七年制使用) 临床流行病学与循证医学教研室.
第一部分 微专题强化练.
第五单元 社会生活的变迁 第1课时 衡量变化的尺子 ——— 时间和纪年 新围初中 王济洪.
欧洲西部 要点·疑点·考点 欧洲西部 1. 自然环境 位置:欧洲西半部,北临北冰洋,西临大西洋,南临地中海
服务热线: 菏泽教师招聘考试统考Q群: 菏泽教师统考教育基础模拟题解析.
耐人尋味的耶穌基督.
第4章 真实感图形学 真实感图形学研究什么? 早期,计算机的速度,使人们满足于线框图 1967年, Wylie开始了用计算机生成真实感
第一章 运动的描述  .
第23课 美术的辉煌 米勒:《拾穗者》(法国).
第三章 帝國體制與天下秩序 第一節 大一統帝國的出現與皇帝制度的確立
2011年广西高考政治质量分析 广西师范大学附属外国语学校 蒋 楠.
第一单元 生活与消费 目 录 课时1 神奇的货币  课时2 多变的价格 课时3 多彩的消费.
用问题激发学生的思维 \.
知识回顾 1、通过仔细观察酒精灯的火焰,你可以发现火焰可以分为 、 、 。 外焰 内焰 焰心 外焰 2、温度最高的是 。
2016届高三期初调研 分析 徐国民
限时综合强化训练 限时综合强化训练.
洋流(大规模的海水运动).
企业税收筹划与税务风险管理 暨南大学财税系 沈肇章.
会计学 第九章 财务会计报告.
第一课 神奇的货币 第二框 信用工具和外汇 1-2 信用工具和外汇.
第20讲 农业生产和区位选择 [考纲要求] 掌握农业的主要区位因素极其影响; 学习农业区位选择的方法
了解太平天国运动的主要史实,认识农民起义在民主革命时期的作用与局限性。
目 錄 壹、緣由 貳、問題解析 參、問題歸納 肆、因應對策 伍、評鑑獎勵 陸、追蹤考核 1.
第2讲 从汉至元政治制度的演变 和明清君主专制的加强 基础落实 一、从汉至元政治制度的演变 1.中央集权的发展
(一) 第一单元 (45分钟 100分).
第五章 电流和电路 制作人 魏海军
B F C D G E B E A 下图是沿20°经线所作的地形剖面示意图
淺談中國繪畫藝術 美術科教學媒體製作: 陳美滿 老師.
发展心理学 王 荣 山.
地图历史与文化 古代测绘.
第十课 创新意识与社会进步 1.辩证的否定观:辩证否定、形而上学的否定观
Chapter 3. Visual Appearance 视觉外观
第一章 地理环境与区域发展 1.区域的含义。 2.不同区域自然环境、人类活动的差异。 3.不同发展阶段地理环境对人类生产和生活方式的影响。
政治第二轮专题复习专题七 辩 证 法.
Texture Mapping 靜宜大學資工系 蔡奇偉 副教授 2006.
第十章 真实感图形绘制 基本概念 简单光照模型 基于简单光照模型的多边形绘制.
狂賀!妝品系同學美容乙級通過 妝品系三甲 學號 姓名 AB 陳柔諺 AB 陳思妤 AB 張蔡婷安
第七章 财务报告 主讲老师:王琼 上周知识回顾.
经济法基础习题课 第7讲 主讲老师:赵钢.
第六章 三维真实感物体显示技术 虚拟现实(Virtual Reality,简称VR)技术是一种逼真的模拟人在自然环境中视觉、听觉、运动等行为的人机界面技术。其目的是:不仅能够在多维空间仿真建模,而且能够帮助人们获取知识和形成新的概念,Mark Green给出了一个简明的虚拟现实应用系统模型,如图6.1所示。
OpenGL (7) 靜宜大學資工系 蔡奇偉 副教授
第八章 Illumination and Shading
纹理映射.
Introduction to OpenGL (2)
ICG 2018 Fall Homework1 Guidance
第二节 时间 位移.
Illumination Model and Surface Rendering Method
《2015考试说明》新增考点:“江苏省地级市名称”简析
第八章 真实感图形生成技术 用计算机生成三维形体的真实感图形,是计算机图形学研究的重要内容之一。真实感图形生成技术在仿真模拟、几何造型、计算机动画制作、影视广告、科学计算可视化、自然景物模拟、医学、气象学、地质学等领域都有广泛应用。近几年来随着多色彩高分辨率光栅图形设备的普及,真实感图形生成技术发展迅速。
第八章 真实感图形的绘制 第一 用数学方法建立所构造三 维场景的几何描述,并将 它们输入至计算机。 第二 将三维几何描述转换为二 维透视图。
乘法公式 (1) 乘法分配律 (2) 和的平方公式 (3) 差的平方公式 (4) 平方差公式.
变 阻 器 常州市北郊初级中学 陆 俊.
第五章 相交线与平行线 三线八角.
计算机图形学 Computer Graphics 高级图形绘制方法 —纹理及纹理映射.
埃及永生之旅 報告者:陳菱霙.
緒論:印度佛學源流略講 第一節:原始佛教概論 一、佛陀生平 二、原始佛學 第二節:佛教的發展與傳播 一、部派佛教略說 二、大乘佛教的發展
分配律 ~ 觀念 15 × 15 × + 15 × 乘法公式 蘇德宙 老師 台灣數位學習科技股份有限公司
序偶及直角坐標系統.
光照模型 计算机科学与技术系.
平面的基本性质 江苏省泰州中学 数学组 姜莹. 平面的基本性质 江苏省泰州中学 数学组 姜莹.
Presentation transcript:

第十章 真实感图形绘制 基本概念 简单光照模型 基于简单光照模型的多边形绘制

基本概念 真实感图形绘制:通过综合利用数学、物理学、计算机以及心理学等知识在计算机图形输出设备上绘制出能够以假乱真的美丽景象。 光强(度):描述物体表面朝某方向辐射光的颜色,它既能表示光能大小又能表示其色彩组成的物理量。可以正确描述光在物体表面的反射、透射和吸收现象,据此计算出物体表面在空间给定方向上的光的颜色。

基本概念 光照模型(Illumination model),也称明暗模型,主要用于物体表面某点处的光强度计算。 简单的光照模型:假定物体表面是光滑的且由理想材料构成,所生成的图形可以模拟出不透明物体表面的明暗过渡,具有一定的真实感效果 复杂的光照模型:除了反射光,还需考虑环境光、物体表面的透明度、阴影处理、物体表面的细节纹理、光源的位置和个数等(整体光照模型)

基本概念 真实感图形绘制步骤 在计算机中进行场景造型; 进行取景变换和透视变换; 进行消隐处理; 进行真实感图形绘制。

基本概念 真实感图形绘制过程 根据假定的光照条件和景物外观因素,依据一定的光照模型,计算可见面投射到观察者眼中的光强度大小,并将它转换成适合图形设备的颜色值,生成投影画面上每一个象素的光强度,使观察者产生身临其境的感觉。

10.1 简单光照模型 简单光照模型 环境光 漫反射光 镜面反射光 光强衰减 颜色处理

简单光照模型 简单光照模型中只考虑反射光的作用。假定光源是点光源,物体是非透明物体且表面光滑,透射光和散射光近似于0 反射光由环境光、漫反射光和镜面反射光三部分组成。

环境光(Background Light) 特点:照射在物体上的光来自周围各个方向,又均匀地向各个方向反射。 P点对环境光的反射强度为 图1 环境光的反射

漫反射光(Diffuse Reflection) 一个粗糙的、无光泽的表面呈现为漫反射。 特点:光源来自一个方向,反射光均匀地射向各个方向。 由郎伯余弦定理可 得点P处漫反射光的强度为: 图2 漫反射

漫反射光(Diffuse Reflection) 若L和N都已规格化为单位矢量,则有 漫反射的光强只与入射角有关,而与反射角无关,即与视点的位置无关,视点在任何地方,观察到的漫反射光强都相等 图2 漫反射

漫反射光(Diffuse Reflection) 对于彩色 光照方程的计算必须在用户坐标系或者观察坐标系中进行错切和透视变换之前完成 对于多个漫反射光源

镜面反射光 镜面反射遵循反射定律,入射光和反射光分别位于表面法矢的两侧。 如果观察者正好处在P点的镜面反射方向上,就会看到一个比周围 亮得多的高光点。 高光点或镜面光斑 图3 镜面反射

镜面反射光 镜面反射情况由Phong模型给出: 若R和V已规格化为单 位矢量,则: 镜面反射产生的颜色只是光源的颜色,Ks与物体的颜色无关 图3 镜面反射

物体表面光强计算 从视点观察到物体上任一点P处的光强度I应为环境光反射光强度Ie、漫反射光强度Id以及镜面反射光的光强度Is的总和:

H

光强衰减 光在传播的过程中,其能量会发生衰减。光照模型中必须考虑光强衰减,否则会影响生成图形的真实效果。 光强的衰减可以采用常数衰减、一次函数衰减和二次函数衰减等。

光强衰减 常用的二次衰减函数

颜色 选择颜色模型(color model) 面向硬件的颜色模型:RGB、CYM 面向视觉感知的颜色模型:HIS(Hue,Saturation,Intensity)色调、饱和度、密度、HSV( Hue,Saturation,Intensity )色调、饱和度和值 为颜色分量指定光照模型

颜色 以RGB颜色模型为例 环境光强度: 入射光强度: 环境光反射系数: 漫反射系数: 镜面反射系数:

颜色 光强计算公式: 材质属性,就是物体表面对环境光、漫反射和镜面光的反射属性,每类反射属性包括了对红、绿蓝三原色的反射率

10.2 基于简单光照模型的多边形绘制 恒定光强 Gouraud明暗处理 Phong明暗处理

马赫带效应 恒定光强 只用一种颜色绘制整个多边形 光源在无穷远处,则多边形上所有点的L·N为常数,衰减函数也是一个常数。 视点在无穷远处,则多边形上所有点的V·R为常数。 多边形是景物表面的精确表示,即不是一个含曲线面景物的近似表示。 马赫带效应

Gouraud明暗处理 Gouraud明暗处理方法,又称为亮度插值明暗处理,它通过对多边形顶点颜色进行线性插值来绘制其内部各点,其步骤为: 计算每个多边形顶点处的平均单位法矢量; 对每个顶点根据简单光照模型来计算其光强; 在多边形表面上将顶点强度进行线性插值。

Gouraud明暗处理 双线性插值方法 图4 Gouraud 明暗处理的双线性插值 a b 亮度双线性插值 y 4 3 1 p 扫描线 2 x 2 3 1 y p a b 4 图4 Gouraud 明暗处理的双线性插值

Phong明暗处理 Phong明暗处理方法,又称为法矢量插值明暗处理,它对多边形顶点的法矢量进行插值以产生中间各点的法矢量,其步骤为: 计算每个多边形顶点处的平均单位法矢量; 用双线性插值方法求得多边形内部各点的法矢量。 最后按光照模型确定多边形内部各点的光强。

Phong明暗处理 矢量双线性插值方法 绘制的图形比Gouraud方法更真实 26

10.3 透明处理 图6 透明表面的光强包括反射光和折射光

透明处理 图7 简单的透明处理

透明处理 图8 光的折射

10.4 产生阴影 阴影是由于物体截断了光线而产生的,所以如果光源位于物体一侧的话,阴影总是位于物体的另一侧,也就是与光源相反的一侧。 从理论上来说,从视点以及从光源看过去都是可见的面不会落在阴影中,只有那些从视点看过去是可见的,而从光源看过去是不可见的面,肯定落在阴影之内。

产生阴影 产生具有阴影的图形绘制算法 将视点移到光源位置,用多边形区域排序消隐算法,将多边形分成两大类:向光多边形和背光多边形。 将视点移到原来的观察位置,对向光多边形和背光多边形进行消隐,并选用一种光照模型计算多边形的亮度,就可得到有阴影效果的图形。

10.5 模拟景物表面细节 颜色纹理:通过颜色色彩或明暗度的变化体现出来的表面细节。 几何纹理:由于不规则的细小凹凸造成的。 颜色纹理取决于物体表面的光学属性,而几何纹理由物体表面的微观几何形状决定。

10.5 模拟景物表面细节 用多边形模拟表面细节 纹理的定义和映射 凹凸映射

多边形模拟表面细节 简单地模拟景物表面细节的方法是用多边形,称为表面图案多边形,来模拟纹理的结构和模式。 处理时,首先根据待生成的颜色纹理构造表面图案多边形,然后将表面图案多边形覆盖到物体的表面上。 不参与消隐计算,但参与表面光强计算

纹理映射和定义 生成颜色纹理的一般方法,是预先定义纹理模式,然后建立物体表面的点与纹理模式的点之间的对应。当物体表面的可见点确定之后,以纹理模式的对应点参与光照模型进行计算,就可把纹理模式附到物体表面上。这种方法称为纹理映射(Texture Mapping)。

纹理映射和定义 图9 纹理映射中纹理空间、物体空间和像素空间的变换

纹理映射和定义 图10 由像素空间向纹理空间的映射

凹凸映射 1978年,Blinn提出了一种无需修改表面几何模型,即能模拟表面凹凸不平效果的有效方法——凹凸映射技术(Bump Mapping)。 Bump texture Normal Multi-

10.6 整体光照模型与光线跟踪 整体光照模型 Whitted光照模型 光线跟踪算法

整体光照模型 一个完整的光照明模型应该包括由光源和环境引起的漫反射分量、镜面反射分量、规则透射分量以及漫透射分量等。 仅考虑由光源引起的漫反射分量和镜面反射分量,而环境反射分量则简单地用一常数来代替,这类光照模型称为局部光照模型。 能同时模拟光源和环境照明效果的光照模型称为整体光照模型。包括辐射度模型和Whitted模型

Global scene illumination 整体光照模型 The inter-reflections and shadows cast by objects on each other. 整体光照模型能够处理对象之间的相互反射和阴影效果,从而可以产生具有照片真实感的场景

整体光照模型 整体光照模型中采用的一种方法是模拟对象的辐射度。该方法认为场景中的每个对象(包括虚拟光源)都以光的形式散发一定的能量流。对象在单位时间内单位表面积上辐射出的能量总和决定了该对象的辐射度。划分场景为大小相等的块,计算每块的顶点颜色,再细分,多次迭代

Radiosity illumination Results in a more realistic looking scene Without radiosity With radiosity

Whitted光照模型 Whitted在简单光照模型中增加了环境镜面反射光和环境规则透射光,以模拟周围环境的光投射在景物表面上产生的理想镜面反射和规则透射现象。 图11 物体表面的镜面反射和投射

光线跟踪算法 光线跟踪(Ray Tracing)方法基于几何光学的原理,通过模拟光的传播路径来确定反射、折射和阴影等。 图12 光线跟踪算法

光线跟踪算法步骤 从视点出发,确定穿过每个像素中心的光线路径,然后,沿这束光线累计光强,并将最终值赋给相应像素。 对于每一像素光线,对场景中的所有物体表面进行测试以确定其是否与该光线相交,并计算出交点的深度,深度最大(z值)的交点即为该像素对应的可见点。然后,继续考察通过该可见点的从属光线(Secondary Rays)(包括反射光线和折射光线)。

光线跟踪算法步骤 对每条从属光线重复过程:与场景中的所有物体求交。然后递归地在沿从属光线方向最近的物体表面上生成下一折射和反射光线。当由每个像素出发的光线在场景中被反射和折射时,逐个将相交物体表面加入到一个二叉光线跟踪树中。当树中的一束光线到达预定的最大深度或到达某光源时,就停止跟踪。

光线跟踪算法步骤 图13 光线跟踪及光线跟踪树

光线跟踪算法步骤 可以从光线跟踪树的叶结点开始,累计光强贡献以确定某像素处的光强大小。树中每个结点的光强由树中的子结点处继承而来,但光强大小随距离而衰减。像素光强是光线树根结点处的衰减光强的总和。

光线跟踪反走样 将光线跟踪算法与过采样方式结合起来,可归纳如下: (1)对每一像素的角点计算光线跟踪的光强。 (2)比较像素4个角点的光强,确定要进行细分的像素。 (3)对细分后新增的角点计算光线跟踪的光强。然后,重复(2)和(3),直到各角点的光强比较接近为止。 (4)加权平均求出投影平面上各像素点的光强。

10.7 OpenGL中的光照处理 点光源 全局光照 表面材质 透明处理

点光源 在OpenGL场景描述中可以包含多个点光源,光源的各种属性设置使用下面的函数指定。 void glLight{if} (GLenum light, GLenum pname, TYPE param); void glLight{if}v (GLenum light, GLenum pname, TYPE *param);

点光源 pname取值 默认值 含义 GL_AMBIENT (0.0, 0.0, 0.0, 1.0) 光源中环境光分量 GL_DIFFUSE (1.0, 1.0, 1.0, 1.0) 或(0.0, 0.0, 0.0, 1.0) 光源中漫反射光分量 GL_SPECULAR 光源中镜面光分量 GL_POSITION (0.0, 0.0, 1.0, 0.0) 光源的坐标位置 GL_SPOT_DIRECTION (0.0, 0.0, -1.0) 光源聚光灯方向矢量 GL_SPOT_EXPONENT (0.0) 聚光指数 GL_SPOT_CUTOFF 180.0 聚光截止角 GL_CONSTANT_ATTENUATION 1.0 固定衰减因子 GL_LINEAR_ATTENUATION 0.0 线性衰减因子 GL_QUADRATIC_ATTENUATION 二次衰减因子

点光源 点光源的颜色 点光源的位置和类型 聚光灯 光强度衰减

glEnable(GL_LIGHTING); 点光源 在OpenGL中,必须明确启用或禁用光照。默认情况下,不启用光照,此时使用当前颜色绘制图形,不进行法线矢量、光源、光照模型、材质属性的相关的计算。要启用光照,可以使用函数: glEnable(GL_LIGHTING); 指定了光源的参数后,需要使用函数启用light指定的光源: glEnable(light);

OpenGL全局光照 在OpenGL中,下面的函数用于指定全局光照 void glLightMode{if} (GLenum pname,TYPE param); void glLightMode{if}v (GLenum pname,TYPE *param); pname取值 默认值 含义 GL_LIGHT_MODEL_AMBIENT (0.2, 0.2, 0.2, 1.0) 整个场景的环境光成分 GL_LIGHT_MODEL_LOCAL_VIEWER GL_FALSE 如何计算镜面反射角 GL_LIGHT_MODEL_TWO_SIDE 单面光照还是双面光照 GL_LIGHT_MODEL_COLOR_CONTROL GL_SINGLE_COLOR 镜面反射颜色是否独立于环境颜色、散射颜色

OpenGL材质属性 在OpenGL中,下面的函数用于指定材质属性 void glMaterial{if} (GLenum face, GLenum pname, TYPE param); void glMaterial{if}v (GLenum face, GLenum pname, TYPE *param); pname取值 默认值 含义 GL_AMBIENT (0.2, 0.2, 0.2, 1.0) 材质对环境光的反射系数 GL_DIFFUSE (0.8, 0.8, 0.8, 1.0) 材质对漫射光的反射系数 GL_AMBIENT_AND_DIFFUSE 材质对环境光和漫射光的反射系数 GL_SPECULAR (0.0, 0.0, 0.0, 1.0) 材质对镜面光的反射系统 GL_SHININESS 0.0 镜面反射指数 GL_EMISSION (0.0, 0.0, 0.1, 1.0) 材质的发射光颜色 GL_COLOR_INDEXS (0, 1, 1) 环境颜色索引、漫反射颜色索引和镜面反射颜色索引

OpenGL材质属性 OpenGL提供颜色材质模式: glEnable(GL_COLOR_MATERIAL); void glColorMaterial (GLenum face, GLenum mode); 颜色材质模式中,可以通过glColor函数来指定物体表面的颜色,而相应的材质属性将通过颜色值和光源的RGB值计算出来。

透明处理 OpenGL中使用混合实现透明处理。 混合操作是指将输入对象(源)的颜色值与当前存储在帧缓存中的像素(目标)颜色值合并的过程。

透明处理 开启混合操作 指定计算源因子和目标因子的计算方式 glEnable(GL_BLEND); void glBlendFunc(GLenum srcfactor, GLenum destfactor);

透明处理 常量 RGB混合因子 alpha混合因子 GL _ZERO (0, 0, 0) GL_ONE (1, 1, 1) 1 GL_ONE (1, 1, 1) 1 GL_SRC_COLOR (Rs, Gs, Bs) As GL_ONE_MINUS_SRC_COLOR (1, 1, 1)- (Rs, Gs, Bs) 1-As GL_DST_COLOR (Rd, Gd, Bd) Ad GL_ONE_MINUS_DST_COLOR (1, 1, 1)- (Rd, Gd, Bd) 1-Ad GL _SRC_ALPHA (As, As, As) GL_ONE_MINUS_SRC_ALPHA (1, 1, 1)- (As, As, As) GL_DST_ALPHA (Ad, Ad, Ad) GL_ONE_MINUS_DST_ALPHA (1, 1, 1)- (Ad, Ad, Ad) GL_CONSTANT_COLOR (Rc, Gc, Bc) Ac GL_ONE_MINUS_CONSTANT_COLOR (1, 1, 1)- (Rc, Gc, Bc) 1-Ac GL_CONSTANT_ALPHA (Ac, Ac, Ac) GL_ONE_MINUS_CONSTANT_ALPHA (1, 1, 1)- (Ac, Ac, Ac) GL_SRC_ALPHA_SATURATE (f, f, f); f=min(As, 1-Ad)

透明处理 进行混合计算 假定计算出的源和目标混合因子分别为(Sr,Sg,Sb,Sa)和(Dr,Dg,Db,Da),并且分别使用下标s和d区分表示源和目标的RGBA值,则混合后的RGBA值如下: (RsSr+ RdDr,GsSg+Gd Dg,BsSb +BdDb,AsSa +AdDa)

10.8 OpenGL中的纹理映射 void glTexImage1D(GLenum target, GLint level, GLint components, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *texels); void glTexImage2D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *texels); void glTexImage3D(GLenum target, GLint level, GLint components, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *texels);

纹理映射 启用纹理 glEnable(GL_TEXTURE_1D); glEnable(GL_TEXTURE_2D);

纹理映射 在启用纹理之后,需要建立物体表面上的点与纹理空间的对应关系。 在绘制基本图元时,在glVertex函数调用之间调用glTexCoord函数明确指定当前顶点所对应的纹理坐标。 让OpenGL自动生成纹理坐标。