计算机图形学应用基础 课件 第5章 真实感图形3_第1页
计算机图形学应用基础 课件 第5章 真实感图形3_第2页
计算机图形学应用基础 课件 第5章 真实感图形3_第3页
计算机图形学应用基础 课件 第5章 真实感图形3_第4页
计算机图形学应用基础 课件 第5章 真实感图形3_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

真实感图形授课教师:单位:2主要内容引言光照明模型多边形物体的明暗处理光线跟踪算法纹理映射辐射度方法实时绘制技术非真实感图形绘制技术3纹理映射纹理(texture)通常指物体的表面细节

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

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

6颜色纹理确定表面上颜色纹理的两种方法预先建立表面的纹理模型纹理映射:建立表面上的每一点和一已知图像上的点的对应关系,取图像上相应点的颜色值作为表面上各点的颜色值7纹理映射采用景物表面的参数化表示来确立表面的纹理映射坐标,即可实现纹理图像在景物表面的映射景物表面的参数化表示为f(u,v)纹理图像表示为T(s,t)建立景物表面参数空间(u,v)和纹理图像参数空间(s,t)之间的一一对应关系8纹理映射示例9几何纹理凹凸映射(bumpmapping)在不改变物体宏观几何的前提下,模拟物体表面粗糙的、褶皱的、凹凸不平的光照效果法向映射(normalmapping)利用法向纹理保证高质量的表面细节复现位移映射(displacementmapping)利用纹理改变物体表面上点的几何位置,获得很强的深度感和细节

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

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

12凹凸映射思想在应用光照明模型计算景物表面光亮度时,对景物表面法向进行微小的扰动方法物体表面S由参数方程S=S(u,v)表示S上的任意一点(u,v)的法向n=Su×Sv沿着表面S的法线方向叠加一个微小的扰动量P(u,v)定义了一张新的表面S’13凹凸映射方法(cont.)新表面的法向可用n’=Su’×Sv’计算在计算表面S的光亮度时,取新表面的法向量n’取代原光滑表面法向量n,生成物体表面的凹凸效果扰动函数P(u,v)既可解析定义,也可通过二维图像定义14凹凸映射示例15凹凸映射示例16纹理反走样纹理走样示例17纹理反走样纹理走样原因18纹理反走样常用纹理反走样方法前置滤波方法超采样方法Mipmap方法19纹理反走样前置滤波方法确定屏幕像素P上可见的景物表面区域A将区域A直接映射到纹理空间区域T取区域T内的所有纹理像素颜色值的平均作为景物表面区域A的平均纹理颜色代入光照明模型,计算出

像素P应显示的光亮度值前置滤波20纹理反走样前置滤波效果前置滤波走样21纹理反走样超采样方法将屏幕像素P的四个角点分别映射到纹理空间,得到四个纹理像素值将上述四个纹理颜色值取平均作为像素P所对应的可见表面区域的纹理颜色超采样22纹理反走样超采样方法效果超采样走样23纹理反走样Mipmap方法MIP来源于

拉丁语“multuminparvo”,意为“manythingsinasmallplace”目前应用最广的纹理反走样算法之一通过预先计算并存贮原始

纹理图像的一组多分辨率

版本,能显著地节省纹理

反走样的计算量24Mipmap方法预处理:生成一个由不同分辨率图像构成的纹理图像序列从原始纹理图像出发,生成一个其分辨率为原始图像1/4的新的纹理图像版本新版本中的每一个像素值取为原始图像中相对应的四个像素颜色值的平均类似地基于所得到的新纹理图像版本生成一个更低分辨率的、尺寸更小的纹理图像版本这一过程一直持续到最后生成的纹理图像仅包含一个像素为止25Mipmap方法预处理26Mipmap方法映射阶段屏幕上的每一像素内的可见表面区域被映射到原始纹理图像上的一块区域估计该区域所覆盖的原始纹理图像中像素的个数并以此作为选取适当分辨度的纹理图像版本的一种测度27Mipmap方法映射阶段(cont.)从预先构造的纹理图像序列中找出其压缩率最接近当前纹理像素与屏幕像素比率的两个纹理图像在相邻分辨率的两纹理图像上计算当前屏幕像素映射点的纹理颜色值根据两纹理图像对原始图像的压缩率在所得到的两个纹理颜色值间取加权平均,作为当前屏幕像素可见表面区域的颜色值28Mipmap方法映射阶段(cont.)29Mipmap效果无Mipmap有Mipmap30纹理反走样效果对比31纹理映射实例程序利用OpenGL实现纹理映射的三个主要步骤生成纹理数据将纹理数据载入纹理内存将纹理数据映射到物体表面32纹理映射实例程序讲解光盘中所附的程序DEMO33纹理映射实例程序Step1:生成纹理数据voidglInit(void){…if(!loadTGA("texture.tga",13))printf("texture.tganotfound!\n");}intloadTGA(char*name,intid){…unsignedchar*imageData=NULL;….imageData=(unsignedchar*)getData(s,size,imageBits);/*noimagedata*/if(imageData==NULL)returnError(s,TGA_BAD_DATA);….}34纹理映射实例程序Step2:将纹理数据载入纹理内存intloadTGA(char*name,intid){…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);...}35纹理映射实例程序Step3:将纹理数据映射到物体表面voiddrawFace(void){ glEnable(GL_TEXTURE_2D);/*enabletexturemapping*/glBindTexture(GL_TEXTURE_2D,13);/*bindtoourtexture,hasidof13*/…glBegin(GL_QUADS); glTexCoord2f(0.2f,0.2f);/*lowerleftcornerofimage*/ glVertex3f(-10.0f,-10.0f,0.0f); glTexCoord2f(0.6f,0.2f);/*lowerrightcornerofimage*/ glVertex3f(10.0f,-10.0f,0.0f); glTexCoord2f(0.6f,0.6f);/*upperrightcornerofimage*/ glVertex3f(10.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论