真实感图形 授课教师: 单位:.

Slides:



Advertisements
Similar presentations
办公室保健指南. 减少辐射篇 ❤显示器散发出的辐射多数不是来自它的正面,而是侧面和后面。因此,不要 把自己显示器的后面对着同事的后脑或者身体的侧面。 ❤常喝绿茶。茶叶中含有的茶多酚等活性物质,有助吸收放射性物质。 ❤尽量使用液晶显示器。
Advertisements

魏 饴. 处级干部培训班讲座 一、卓越干部的德行素质  常修为政之德、常思贪欲之害、常怀律己之心!  孔老夫子有个观点 “ 为政以德,譬如北辰居其所而众星拱之。 ”  司马光《资治通鉴》 “ 才者,德之资也;德者,才之帅也。 ” “ 德 ” 胜 “ 才 ” 谓之 “ 君子 ” , “ 才 ”
一、真愛密碼 二、尋求真愛 三、有自尊的愛. 。如果雙方對愛情產生 質疑、困惑時,則表示 彼此之間的愛情關係仍 有 待加強或釐清,千萬別 急著為自己的人生大事 下決定。 我是一個 16 歲的未婚媽媽,發現自 己懷孕時,已經五個月大了,我知 道自己沒能力照顧孩子,在驚訝之 於,大人們只好坦然接受,幫我找.
大地遊戲王 課程實錄.
公務員申領小額款項專案法紀宣導 法務部廉政署 編製
两汉文学及汉代诗歌.
近现代文学概说.
加強水銀體溫計稽查管制及回收 回收作業須知及緊急應變措施
唐代文学概说 与初唐诗坛.
第4章 分錄及日記簿 4-1 借貸法則 4-2 日記簿的格式及記錄方法 4-3 分錄的意義及記錄方法 4-4 常見分錄題型分析
Introduction 基本概念 授課老師:蕭志明
校园信息管理系统 河北科技大学网络中心 2000/4/10.
第十三屆 Step.1 我們的目標 Step.2 我們的角色 Step.4 權利與義務 義務 權利 年繳會費五百元整
四資二甲 第三週作業 物件導向程式設計.
财务管理.
個人投資理財分析 財務狀況匯總表 銀行存款 共同基金 外幣基金 股票投資 保險價值 黃金投資 支出預算 房貸計算 不動產價值 資源變化資料庫
徵收苗栗市福全段147、1588及文心段10、11地號等4筆土地之
讲 义 大家好!根据局领导的指示,在局会计科和各业务科室的安排下,我给各位简要介绍支付中心的工作职能和集中支付的业务流程。这样使我们之间沟通更融洽,便于我们为预算单位提供更优质的服务。 下面我主要从三方面介绍集中支付业务,一是网上支付系统,二是集中支付业务流程及规定等,
植物保护 课程整体设计 汇报 申报省级精品资源共享课建设 植物保护课程组.
揭秘 庄家 股市中的 为什么你的股票一买就跌,一卖就涨? 为什么出了利好,股价反而下跌? 为什么有的股票一直涨停?
第三章 鏈結串列 Linked List.
中国人民公安大学经费管理办法(试行) 第一章总则 第四条:“一支笔” “一支笔”--仅指单位主要负责人。负责对本 单位的经费进行审核审批。
政府扶持资金通览 技术改造篇.
乳猪断奶后拉稀,掉膘与教槽料.
契約 課程:文書實務與應用 教師:黃湃翔老師.
友信不銹鋼工程有限公司 台北市康定路4號 工廠:台北縣三重市竹圍仔街22-3號
Texture Mapping 靜宜大學資工系 蔡奇偉 副教授 2006.
六入處誦(II).
本科生医保资料的提交.
C语言程序设计 第十二章 位运算.
程式設計 博碩文化出版發行.
OpenGL (7) 靜宜大學資工系 蔡奇偉 副教授
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
統計圖表的製作.
第12章 樹狀搜尋結構 (Search Trees)
3D PACMAN! Student: Chia-Wei Yao ID:
第4章 字串及資料的輸入/輸出格式.
摩擦力.
奢侈稅成效分析與房市未來發展 吳中書 中華經濟研究院 第十九屆亞太財務經濟會計及管理會議 ~07.09.
纹理映射.
Introduction to OpenGL (2)
HTML & CSS.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
小太陽兒童人文藝術學院兒童畫展 地點:住院大樓9F、11F外走道( )
《结构力学认知实验》(授课形式)的上课时间改为: 5月5日(周二)晚上18:00~19:30和19:30~21:00,
《结构力学认知实验》(授课形式)的上课时间改为: 5月7日(周四)晚上18:30~20:00和20:00~21:30,
Module - pyopengl 應用於2d,3d圖形繪製.
團體衛生教育護理創意競賽 報告者:護理科 計畫主持人邱馨誼講師
畢業資格審查系統 操作步驟說明.
计算机图形学 Computer Graphics 高级图形绘制方法 —纹理及纹理映射.
微信商城系统操作说明 色卡会智能门店.
新制退休實務計算說明- 現職人員退休範例說明
第二章 类型、对象、运算符和表达式.
累堆排序法 (Heap Sort).
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
第二章 基本数据类型 ——数据的表示.
本节内容 指针类型.
本节内容 算术运算符 视频提供:昆山爱达人信息技术有限公司.
Introduction to the C Programming Language
106 學年度新生入學說明會 國立臺灣海洋大學 教務處簡介
學士學位畢業論文說明 逢 學 大 甲 土 理 管 地 2009/10/05.
第十二章 位运算.
高雄市97年度國民小學閱讀計畫創新教學-教案達人創新教學方案
大綱 一.受試者之禮券/禮品所得稅規範 二.範例介紹 三.自主管理 四.財務室提醒.
PROGRAM 1 Simple E. Angel, Interactive Computer Graphics A Top-Down Approach with OpenGL, Third Edition Addison-Wesley Longman, 2003.
纹理映射.
自由曲线与曲面(II) 计算机科学与技术.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
士師記.
Presentation transcript:

真实感图形 授课教师: 单位:

主要内容 引言 光照明模型 多边形物体的明暗处理 光线跟踪算法 纹理映射 辐射度方法 实时绘制技术 非真实感图形绘制技术

纹理映射 纹理(texture)通常指物体的表面细节

纹理映射 纹理映射技术给出了定义表面上任意点属性的一种方式 漫反射率 镜面反射率 透明度 折射率 …

纹理映射 两类最常使用的纹理 颜色纹理 几何纹理

颜色纹理 确定表面上颜色纹理的两种方法 预先建立表面的纹理模型 纹理映射:建立表面上的每一点和一已知图像上的点的对应关系,取图像上相应点的颜色值作为表面上各点的颜色值

纹理映射 采用景物表面的参数化表示来确立表面的纹理映射坐标,即可实现纹理图像在景物表面的映射 景物表面的参数化表示为f(u,v) 纹理图像表示为T(s,t) 建立景物表面参数空间(u,v)和纹理图像参数空间(s,t)之间的一一对应关系

纹理映射 示例

几何纹理 凹凸映射(bump mapping) 法向映射(normal mapping) 在不改变物体宏观几何的前提下,模拟物体表面粗糙的、褶皱的、凹凸不平的光照效果 法向映射(normal mapping) 利用法向纹理保证高质量的表面细节复现 位移映射(displacement mapping) 利用纹理改变物体表面上点的几何位置,获得很强的深度感和细节

几何纹理 法向映射(Normal mapping) 借助低精度模型和一个法向纹理,获得高精度模型的绘制效果 先计算高精度模型的法向,将其保存在法向纹理中,再将法向纹理映射到低精度模型上进行光照计算

几何纹理 位移映射(displacement mapping) 依据与表面上点所对应的纹理值,沿表面法向偏移该点的几何位置 能产生很强的深度感 自遮挡 自阴影 轮廓 计算代价大 与凹凸映射、法向映射相比

凹凸映射 思想 方法 在应用光照明模型计算景物表面光亮度时,对景物表面法向进行微小的扰动 物体表面S由参数方程S=S(u,v) 表示 S上的任意一点(u,v)的法向n=Su×Sv 沿着表面S的法线方向叠加一个微小的扰动量P(u,v)定义了一张新的表面S’

凹凸映射 方法(cont.) 新表面的法向可用 n’=Su’×Sv’ 计算 在计算表面S的光亮度时,取新表面的法向量n’取代原光滑表面法向量n,生成物体表面的凹凸效果 扰动函数P(u,v)既可解析定义,也可通过二维图像定义

凹凸映射 示例

凹凸映射 示例

纹理反走样 纹理走样示例

纹理反走样 纹理走样原因

纹理反走样 常用纹理反走样方法 前置滤波方法 超采样方法 Mipmap方法

纹理反走样 前置滤波方法 确定屏幕像素P上可见的景物表面区域A 将区域A直接映射到纹理空间区域T 取区域T内的所有纹理像素颜色值的平均作为景物表面区域A的平均纹理颜色 代入光照明模型,计算出 像素P应显示的光亮度值 前置滤波

纹理反走样 前置滤波效果 走样 前置滤波

纹理反走样 超采样方法 将屏幕像素P的四个角点分别映射到纹理空间,得到四个纹理像素值

纹理反走样 超采样方法效果 走样 超采样

纹理反走样 Mipmap方法 MIP来源于 拉丁语“multum in parvo”,意为“many things in a small place” 目前应用最广的纹理反走样算法之一 通过预先计算并存贮原始 纹理图像的一组多分辨率 版本,能显著地节省纹理 反走样的计算量

Mipmap方法 预处理:生成一个由不同分辨率图像构成的纹理图像序列 从原始纹理图像出发,生成一个其分辨率为原始图像1/4的新的纹理图像版本 新版本中的每一个像素值取为原始图像中相对应的四个像素颜色值的平均 类似地基于所得到的新纹理图像版本生成一个更低分辨率的、尺寸更小的纹理图像版本 这一过程一直持续到最后生成的纹理图像仅包含一个像素为止

Mipmap方法 预处理

Mipmap方法 映射阶段 屏幕上的每一像素内的可见表面区域被映射到原始纹理图像上的一块区域 估计该区域所覆盖的原始纹理图像中像素的个数并以此作为选取适当分辨度的纹理图像版本的一种测度

Mipmap方法 映射阶段(cont.) 从预先构造的纹理图像序列中找出其压缩率最接近当前纹理像素与屏幕像素比率的两个纹理图像 在相邻分辨率的两纹理图像上计算当前屏幕像素映射点的纹理颜色值 根据两纹理图像对原始图像的压缩率在所得到的两个纹理颜色值间取加权平均,作为当前屏幕像素可见表面区域的颜色值

Mipmap方法 映射阶段(cont.)

Mipmap效果 无Mipmap 有Mipmap

纹理反走样效果对比

纹理映射实例程序 利用OpenGL实现纹理映射的三个主要步骤 生成纹理数据 将纹理数据载入纹理内存 将纹理数据映射到物体表面

纹理映射实例程序 讲解光盘中所附的程序 DEMO

纹理映射实例程序 Step1:生成纹理数据 void glInit (void) { … if (!loadTGA ("texture.tga", 13)) printf ("texture.tga not found!\n"); } int loadTGA (char *name, int id) unsigned char *imageData = NULL; …. imageData = (unsigned char*)getData (s, size, imageBits); /* no image data */ if (imageData == NULL) returnError (s, TGA_BAD_DATA);

纹理映射实例程序 Step2:将纹理数据载入纹理内存 int loadTGA (char *name, int id) { … glBindTexture (GL_TEXTURE_2D, id); glPixelStorei (GL_UNPACK_ALIGNMENT, 1); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); glTexImage2D (GL_TEXTURE_2D, 0, texFormat, imageWidth, imageHeight, 0, texFormat, GL_UNSIGNED_BYTE, imageData); ... }

纹理映射实例程序 Step3:将纹理数据映射到物体表面 void drawFace (void) { glEnable (GL_TEXTURE_2D); /* enable texture mapping */ glBindTexture (GL_TEXTURE_2D, 13); /* bind to our texture, has id of 13 */ … glBegin (GL_QUADS); glTexCoord2f (0.2f,0.2f); /* lower left corner of image */ glVertex3f (-10.0f, -10.0f, 0.0f); glTexCoord2f (0.6f, 0.2f); /* lower right corner of image */ glVertex3f (10.0f, -10.0f, 0.0f); glTexCoord2f (0.6f, 0.6f); /* upper right corner of image */ glVertex3f (10.0f, 10.0f, 0.0f); glTexCoord2f (0.2f, 0.6f); /* upper left corner of image */ glVertex3f (-10.0f, 10.0f, 0.0f); glEnd (); glDisable (GL_TEXTURE_2D); /* disable texture mapping */ }

纹理映射实例程序 结果