OpenGL中的纹理映射.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2003-11-5 第8章 纹理映射 解决计算机生成真实感图象缺乏现实物体表面细节的问题 纹理例子 纹理的概述 用简单光照明模型生成真实感图象,由于表面过于光滑单调,反而显得不真实 现实物体表面有各种表面细节-纹理 木材表面的木纹 建筑物墙壁上的装饰图案 桔子皮表面的皱纹 示例 纹理 纹理是物体表面的细小结构 纹理类型 颜色纹理 一维纹理, 二维纹理,物体表面花纹、图案 三维纹理, 几何纹理,基于物体表面的微观几何形状 法向扰动 纹理映射 纹理映射是把纹理图象值映射到三维物体的表面的技术,以便于使用简单的几何图产生丰富逼真的视觉效果图像 纹理映射的问题 纹理定义方法: 图象纹理:将二维纹理图案映射到三维物体表面,绘制物体表面上一点时,采用相应的纹理图案中相应点的颜色值。 函数纹理:用数学函数定义简单的二维纹理图案,如方格地毯。或用数学函数定义随机高度场,生成表面粗糙纹理即几何纹理 进行纹理映射 建立纹理与三维物体之间的对应关系 扰动法向量 纹理空间 纹理定义在单位正方形区域 之上,称为纹理空间 纹理函数是定义在此空间上的函数 纹理空间也可用其他方法定义 用参数曲面的参数域作为纹理空间 2D 用辅助平面、圆柱、球定义纹理空间 2D 用三维直角坐标作为纹理空间 3D 二维纹理映射 二维纹理映射技术:贴墙纸 三个空间 纹理空间:二维图像 景物空间:物体 图像空间:屏幕 两个映射关系 纹理空间与景物空间的映射? 景物空间与图像空间的映射:一旦确定相机参数,即可由取景变换及其逆变换确定 二维纹理映射示意图 参数映射 三维纹理域的映射 二维纹理域,三维图形场景物体,二维纹理映射是一种非线性映射 纹理变形 不能保证纹理连续性 纹理空间定义在三维空间上,与物体空间是同维的,通过物体空间坐标(x,y,z)来计算纹理坐标(u,v,w) 把场景中的物体变换到纹理空间的局部坐标系中去 几何纹理 几何纹理方法-对物体表面几何性质作微小扰动,产生凹凸不平的细节效果,给物体表面图象加上一个粗糙的外观 OpenGL中的纹理映射figure8.3.c 基本步骤如下: 定义纹理;glTexImage2D 控制纹理; glTexParameter{if}[v] 纹理环境;void glTexEnv{if}[v] 绘制场景,给出顶点的纹理坐标和几何坐标。 ?纹理映射只能用于RGBA颜色模式。 OpenGL中的纹理映射-纹理定义 void glTexImage2D (GLenum target,GL_TEXTURE_2D GLint level,只有一种分辨率,则level设为0 GLint components, 3表示选择了R、G、B三个分量 GLsizei width,纹理图像的长度宽度 glsizei height, GLint border,纹理图像的边界宽度,通常为0 GLenum format,纹理映射的格式和数据类型 GLenum type,纹理映射的数据类型 const GLvoid *pixels);纹理图像数据 OpenGL中的纹理映射-纹理控制 void glTexParameter{if}[v] (GLenum target,GLenum pname, TYPE param); ______________________________________________? 参 数 值 ______________________________________________? GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T GL_CLAMP 大于1的纹素值都置为1,小于0的置为0 GL_REPEAT 重复映射 ? GL_TEXTURE_MAG_FILTER 放大滤波方法 ? GL_TEXTURE_MIN_FILTER 缩小滤波方法 GL_NEAREST 最靠近象素中心的纹素 GL_LINEAR 最靠近象素中心的四个象素的加权平均值 ______________________________________________ OpenGL中的纹理映射-纹理环境 void glTexEnv{if}[v](GLenum target,GLenum pname,TYPE param); 可以用纹理中的值Ct来调整多边形(曲面)原来的颜色Cf,或用纹理图像中的颜色与多边形(曲面)原来的颜色进行混合。 GL_DECAL Ct GL_MODULATE Ct Cf GL_

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档