实验六凹凸纹理映射技术样本
凹凸映射
![凹凸映射](https://img.taocdn.com/s3/m/15e356305727a5e9856a61bb.png)
二.实现原理
:
在凹凸纹理映射中,只有法线向量进行了扰动,而几 何体本身没有扰动,这样的结果就是粗糙质感的改变只出现 在物体的轮廓上,而物体本身仍然是原来的光滑物体。凹凸
映射只是让表面看起来好像受到了偏移的作用,物体的光滑
表面结构没有被偏移,是凹凸纹理帖图被偏移。
三.应用
做任何你想做的物体!
请批评指正!
凹凸映射(Bump Map)
牛晓 14050019
一.定义
目录页
二.实现原理
contents
三.应用
2
一.定义
凹凸映射是纹理映射的一种,它不用修改物体模型就使
物体表面具有凹凸不平粗糙的外表,外表受光源的位置影响
,其显示的明暗和颜色会发生变化。这种具有微细节特性的 表面更加丰富、细致,更加接近物体在自然界本身的模样。
一.定义
凹凸映射和纹理映射非常相似。然而,纹理映射是把颜 色加到多边形上,而凹凸映射是把粗糙信息加到多边形上。 添加一点信息到本来需要使用大量多边形的物体上,就可以
使平的物体看起来是粗糙不平的。凹凸映射和纹理映射的不
同之处就在于——凹凸映射是一种负责光方向的纹理映射。
二.实现原理
凹凸映射的实现原理是使用纹理图像中的数据修改光照 方程中的法线向量。
被改变,这个向量用来计算该点的亮度。当你加入了凹凸映
射,法线向量会略微地改变,怎么改变则基于凹凸图。改变 法线向量就会改变多边形的点的颜色值。 :
二.实现原理
有很多计算向量的方法,不同的方法精确度不同,但是选择什么方 法要取决于你所要求的精确度是个什么层次。最通常的方法是分别计算 每个点上X和Y的倾斜度: x_gradient = pixel(x-1, y) - pixel(x+1, y) y_gradient = pixel(x, y-1) - pixel(x, y+1) New_Normal = Normal + (U * x_gradient) + (V * y_gradient)
多重纹理与凹凸映射技术的设计与实现
![多重纹理与凹凸映射技术的设计与实现](https://img.taocdn.com/s3/m/0abc0c50be23482fb4da4c6a.png)
摘
要
多重 纹 理 ( lt tr) 时 拥 有 多 种纹 理 的特 性 , 凸纹 理 映 射 (u p igN 以 表 现 物 体 表 面 凹 凸 细节 , 们 都 可 Mute ue 同 ix 凹 B pMapn) 它
也 从 C + aa + 和Jv 以及 早 期 的绘 制 语 言 如 R n eMa edr n ad te Safr h dn a g ae 吸 取 了 一 些 思 n h t od sa igln u g 中 n
想。 同时C 的设计 考 虑 了G U的体 系结 构 , 可编 程 g P 如 多 处理 器 单元 ( 顶点 处 理 器 、 素处 理 器 、 加 不 可 像 外 编程 单元 ) g 言允许 分 别 为顶点 和像 素 写程 序 。 。C 语 C P 引 入 了po l 的概 念 以处 理 顶 点 和 像 素 编 gA I r e s 程 .一个po l就 定义 了一 整套 C 语 言 的子 集 以适 rfe i g 应 不 同的硬 件平 台和A I具 有很 强 的通用 性 这 样 P. 可 以很 容 易 地 将 一 个 C 像 素 程 序 和 手 写 的 顶 点 程 g 序结 合起 来 . 或者 采 用O e G 或 者D rcXN点流 水 pn L i t] e
线。
光滑 的物体 表 面附上 粗糙 纹理 的方 法
O eG p n L已被 认 为 是 三 维 图 形 和 交 互 式 视 景 处
理 的开发标 准 。在建 模 、 换 、 变 光线处 理 、 色彩 处 理 、
动画、 如纹 理 映射等 有相 当优 异 的性 能 能实 现逼 真 的 三维渲 染效 果 、 建立 交 互 的三 维景 观 O e G 作 pn L 为 图形 与硬 件 的接 V , 硬件 、 V 、 作 系统 方 面 I在 I 窗 I操 I 是相互 独立 的 , 其应 用程 序具 有广泛 的 移植性 的 它 三维 物体模 型 的绘制 方式 有 : 1 网格线 绘 图 :2 深 () ()
图形学实验报告
![图形学实验报告](https://img.taocdn.com/s3/m/ff3dbdf268dc5022aaea998fcc22bcd127ff4258.png)
图形学实验报告图形学实验报告概述:在本次图形学实验中,我们将探索和学习计算机图形学的基本概念和技术。
通过实验,我们深入了解了图形学的原理和应用,以及如何使用计算机生成和处理图像。
实验一:像素和颜色在这个实验中,我们学习了图像是由像素组成的,每个像素都有自己的颜色值。
我们使用了Python编程语言和PIL库来创建一个简单的图像,并设置了不同的像素颜色。
通过改变像素的颜色值,我们可以创建出各种各样的图像效果。
实验二:坐标系统和变换在这个实验中,我们学习了坐标系统和图形变换。
我们使用OpenGL库来创建一个简单的二维图形,并通过平移、旋转和缩放等变换操作来改变图形的位置和形状。
这些变换操作使我们能够在屏幕上创建出各种不同的图案和效果。
实验三:线段和多边形在这个实验中,我们学习了如何使用线段和多边形来绘制图形。
我们使用了Bresenham算法来绘制直线,并学习了如何使用多边形填充算法来填充图形。
通过这些技术,我们可以创建出更加复杂和精细的图像。
实验四:光照和阴影在这个实验中,我们学习了光照和阴影的原理和应用。
我们使用了光照模型来模拟光线的传播和反射,以及计算物体的明暗效果。
通过调整光照参数和材质属性,我们可以创建出逼真的光照和阴影效果。
实验五:纹理映射和渲染在这个实验中,我们学习了纹理映射和渲染的概念和技术。
我们使用了纹理映射来将图像贴到三维物体表面,以增加物体的细节和真实感。
通过渲染技术,我们可以模拟光线的折射和反射,以及创建出逼真的材质效果。
实验六:三维建模和动画在这个实验中,我们学习了三维建模和动画的基本原理和方法。
我们使用了三维建模工具来创建三维模型,并学习了如何使用关键帧动画来实现物体的运动和变形。
通过这些技术,我们可以创建出逼真的三维场景和动画效果。
总结:通过这次图形学实验,我们深入了解了计算机图形学的原理和应用。
我们学习了像素和颜色、坐标系统和变换、线段和多边形、光照和阴影、纹理映射和渲染,以及三维建模和动画等技术。
基于Phong光照模型的凹凸纹理模拟
![基于Phong光照模型的凹凸纹理模拟](https://img.taocdn.com/s3/m/9b644b5ca517866fb84ae45c3b3567ec102ddc23.png)
基于Phong光照模型的凹凸纹理模拟
张洁;钮王杰
【期刊名称】《机床与液压》
【年(卷),期】2009(0)8
【摘要】基于Phong光照模型,讨论并研究了凹凸纹理映射技术的原理及实现方法,并在此基础上,通过设定偏移函数,给出了基于Phong光照模型下凹凸纹理的实现结果。
该方法实现原理简单,速度较快。
【总页数】3页(P401-402)
【关键词】纹理映射;几何凹凸纹理;Phong光照模型;法向量
【作者】张洁;钮王杰
【作者单位】山西运城学院机电系
【正文语种】中文
【中图分类】TP391.41
【相关文献】
1.基于纹理映射与Phong光照模型的体绘制加速算法 [J], 张尤赛;陈福民
2.基于冷暖光照模型的矢量场稀疏纹理绘制 [J], 蔡勋;岳凯;徐华勋
3.一种基于Phong物体光照模型的阴影检测算法 [J], 吴亮;周东翔;梁华;蔡宣平
4.基于辐射度与Phong模型的高级光照模型及光线跟踪实现 [J], 周纬杰;王辉
5.基于Phong简单光照模型的成像效果研究 [J], 陈超
因版权原因,仅展示原文概要,查看原文内容请购买。
OpenGL高级课题与纹理映射技术讲述
![OpenGL高级课题与纹理映射技术讲述](https://img.taocdn.com/s3/m/a66b41750029bd64793e2c95.png)
高级成像
成像子集
◦ 只有当GL_ARB_imaging有定义时才有效
颜色矩阵 卷积 颜色表 直方图 MinMax 高级混合
立即模式、显示列表和保留模 式
立即模式(immediate mode)
◦ 图元直接发送到绘制流水线并显示 ◦ 不需要显卡内存
显示列表(display list)
◦ 图元保存在显示列表中、显示列表保存在 显卡中
保留模式(retained mode)
◦ 所有数据预先置入显存
立即模式与显示列表
立即模式
多项式 求值器
顶点操作 和
图元组装
显示
CPU
列表
列出显示
象素 操作
光栅化
纹理 内存
象素 操作
帧 缓冲
显示列表
创建显示列表
GLuint id;
void init( void ) {
在缩放过程中进行插值和滤波
设定纹理的其他方法
将帧缓冲器的内容设定为纹理图像的来源 ◦ glCopyTexImage1D(...) ◦ glCopyTexImage2D(...)
设置某个纹理的一部分 ◦ glTexSubImage1D(...) ◦ glTexSubImage2D(...) ◦ glTexSubImage3D(...)
创建模板
glInitDisplayMode( …|GLUT_STENCIL|… ); glEnable( GL_STENCIL_TEST ); glClearStencil( 0x0 );
glStencilFunc( GL_ALWAYS, 0x1, 0x1 ); glStencilOp( GL_REPLACE, GL_REPLACE,
包围盒外的象素被裁剪掉
凹凸配实验报告
![凹凸配实验报告](https://img.taocdn.com/s3/m/f0c82342fd4ffe4733687e21af45b307e971f950.png)
一、实验目的1. 了解凹凸配的基本原理和特点。
2. 通过实验验证凹凸配的原理,加深对凹凸配概念的理解。
3. 培养学生的动手操作能力和实验设计能力。
二、实验仪器1. 凹凸形状的塑料模具若干2. 塑料颗粒(如塑料珠、塑料粒等)3. 热熔胶枪4. 热熔胶棒5. 粘合剂(如胶水、胶带等)6. 刀片7. 尺子8. 记录本三、实验步骤1. 准备工作(1)将凹凸模具和塑料颗粒准备好,确保模具清洁无杂质。
(2)准备好热熔胶枪和热熔胶棒,确保热熔胶枪处于正常工作状态。
(3)在记录本上记录实验数据。
2. 实验过程(1)将凹模具放在平整的桌面上,用刀片将塑料颗粒按照模具的凹凸形状进行切割。
(2)将切割好的塑料颗粒放入凹模具中,用粘合剂将颗粒固定在模具上。
(3)将凸模具放在另一块平整的桌面上,用热熔胶枪将热熔胶棒熔化,均匀涂在凸模具的表面上。
(4)将固定好的凹模具放置在凸模具上,确保凹凸部分对齐。
(5)等待热熔胶冷却固化,使凹凸模具结合在一起。
(6)用刀片将结合后的凹凸模具从模具中取出,观察实验结果。
3. 实验数据记录(1)记录凹模具和凸模具的尺寸、形状等基本信息。
(2)记录实验过程中使用的塑料颗粒种类、数量等。
(3)记录实验过程中使用的粘合剂种类、用量等。
(4)记录实验结果,包括结合后的凹凸模具的尺寸、形状、稳定性等。
四、实验结论1. 通过本次实验,验证了凹凸配的基本原理,即凹模具和凸模具的形状相对应,可以形成紧密的连接。
2. 实验结果表明,凹凸模具的尺寸、形状和塑料颗粒的种类、数量等因素都会影响实验结果。
3. 粘合剂的选择和用量对实验结果也有一定影响,合适的粘合剂和用量可以保证凹凸模具的稳定性和连接强度。
五、反思体会1. 通过本次实验,加深了对凹凸配概念的理解,认识到凹凸模具在工业生产和日常生活中具有广泛的应用。
2. 实验过程中,锻炼了动手操作能力和实验设计能力,提高了对实验仪器的熟练程度。
3. 在实验过程中,遇到了一些问题,如模具的尺寸、形状不匹配,塑料颗粒的切割不准确等,通过不断尝试和调整,最终成功完成了实验。
凹凸件实训报告
![凹凸件实训报告](https://img.taocdn.com/s3/m/76a8cf34773231126edb6f1aff00bed5b9f373f3.png)
凹凸件实训报告导言:作为机械工程学院的学生,实训是非常重要的一部分。
在此次实训中,我们进行了凹凸件的制作与加工,通过实际操作和实践,提高了我们的技能和知识水平。
以下是我对此次实训的总结和个人体会。
一、实训目的与介绍凹凸件的制作与加工是机械制造的关键环节之一。
在这个实训中,我们学习了凹凸件的设计和制造工艺,了解了其应用范围和作用,培养了我们的实际操作能力和团队合作精神。
二、实训过程与任务本次实训的任务是制作一种特定形状的凹凸件,要求精度高、加工复杂度适中。
首先,我们在老师的指导下学习了凹凸件的设计原理和加工工艺。
然后,我们根据实际要求进行凹凸件的三维绘制和设计。
接着,我们使用数控机床和加工工具进行凹凸件的加工和制造。
在加工过程中,我们需要注意材料的选择、切削参数的调整以及质量控制等方面。
最后,我们对加工后的凹凸件进行检测和测试,确保其质量合格。
三、实训中的问题与解决在实训中,我们遇到了一些问题,如加工难度、刀具选择和切削力控制等。
为了解决这些问题,我们积极与老师和同学讨论,参考相关资料,进行反复试验和调整。
通过集思广益和共同努力,我们最终克服了这些问题,并成功地完成了凹凸件的加工任务。
四、实训成果与体会通过本次实训,我深刻认识到了凹凸件制造的重要性和难度。
凹凸件在各个领域都有广泛的应用,如汽车、航空航天、机械设备等。
它们不仅需要具备高精度和高强度,还需要满足工程要求和实际使用条件。
通过亲自参与实际操作和实践,我对凹凸件的设计原理、加工工艺和质量控制等方面有了更深入的理解和掌握。
同时,我也进一步培养了对团队合作的重视和沟通协作能力。
五、对未来的展望此次凹凸件实训为我们的未来发展奠定了坚实的基础。
在今后的学习和实践中,我将继续提升自己的专业素养和工作能力,不断拓展自己的技能和知识面。
我相信,通过不断地努力和实践,我能够在机械制造领域取得更大的进步和成就。
六、总结通过本次凹凸件实训,我不仅提高了自己的技能和知识水平,还培养了自己的实际操作能力和团队合作精神。
基于凹凸纹理映射技术的视差纹理映射技术改进
![基于凹凸纹理映射技术的视差纹理映射技术改进](https://img.taocdn.com/s3/m/041b2364a36925c52cc58bd63186bceb19e8edef.png)
基于凹凸纹理映射技术的视差纹理映射技术改进
贺敏;谭珂;潘新华
【期刊名称】《科技信息(学术版)》
【年(卷),期】2011(000)017
【摘要】凹凸纹理映射技术是三维图形学中近年来研究的一个热点,它被使用来
绘制物体表面的细节,使物体表面看起来具有粗糙感,增加绘制场景的真实程度。
视差纹理映射技术是新近提出的实现物体表面粗糙感的一种凹凸映射技术,它是对目前因计算量过大而无法应用于实时渲染系统中的传统凹凸纹理映射技术的改进,这种技术不是对物体表面的顶点进行偏移,而是借助于高度图对纹理坐标进行偏移,从而近似达到位移映射技术的效果。
本文从对高度值的调整和偏移值的校正两方面着手,对视差纹理映射技术加以改进,使绘制后的物体表面真实感更强,且所增加的计算量不大,
【总页数】2页(PI0038-I0039)
【作者】贺敏;谭珂;潘新华
【作者单位】中国人民解放军国防科技大学计算机学院计算机系,湖南长沙410073;中国人民解放军总医院,中国北京100853;中国人民解放军总医院,中国北
京100853
【正文语种】中文
【中图分类】TP391.41
【相关文献】
1.基于LOD纹理映射的三维场景实时渲染技术 [J], 张敏;刘用姜
2.基于点云数据的建筑物立面纹理映射技术研究 [J], 袁浩攀;侯岳;方乐道
3.一种基于多重纹理映射的倾斜摄影模型单体化技术 [J], 陈杭
4.基于图形学算法的纹理映射技术的研究与实现 [J], 吴发辉;张玲;余文森
5.基于两步法纹理映射的曲面零件激光打标技术研究 [J], 彭川来
因版权原因,仅展示原文概要,查看原文内容请购买。
实验六:凹凸纹理映射技术
![实验六:凹凸纹理映射技术](https://img.taocdn.com/s3/m/f0b21d14b7360b4c2e3f6456.png)
实验六:凹凸纹理映射技术一、实验目的掌握凹凸纹理映射的原理,熟悉Ogre中纹理映射的使用方法。
二、实验仪器pc、vs2005三、实验原理及过程1、网上检索凹凸纹理映射相关技术凹凸纹理映射是一种纹理混合方法,它可以创建三维物体复杂的纹理外观表面。
普通的纹理映射只能模拟比较平滑的三维物体表面,难以显示表面高低起伏、凹凸不平的效果。
凹凸纹理映射能够通过一张表示物体表面凹凸程度的高度图(称为凹凸纹理),对另一张表示物体表面环境映射的纹理图的纹理坐标进行相应的干扰,经过干扰的纹理坐标将应用于环境映射,从而产生凹凸不平的显示效果。
凹凸纹理映射通常由三张纹理映射图组成,第一张纹理图表示物体表面原始纹理颜色,第二张凹凸纹理图表示物体表面凹凸的高度起伏值,用来对下一张环境纹理图坐标进行干扰,第三张纹理图表示周围镜面反射或漫反射光照的环境光照映射图。
让我们来看看一个粗糙的表面。
从远处看,你判断这个物体是粗糙的的唯一证据是在它表面上下的亮度有改变。
你的大脑能够获得这些亮暗不一的图案信息,然后判断出它们是表面中有凹凸的部位。
左边的一幅图就说明了这一点。
你可以发现它是一个浮雕式的表面。
一些矩型和字母被印入表面,但是它们摸上去就像是一个隐藏的监控器的玻璃。
如果这个图像是在适当的位置上,那么它除了改变亮度,不需要再做任何其他的工作。
那么你也许会问:我是怎么知道哪些点要亮,哪些点要暗呢?这不难。
绝大多数人生活在这样一种环境下——这个环境的大多数光源来自上方(译者注:比如白天主要的光来自太阳,夜晚主要的光来自天花板上的日光灯)。
所以向上倾的地方就会更亮,而向下倾的地方就会更暗。
所以这种现象使你的眼睛看到一个物体上亮暗区域时,可以判断出它的凹凸情况。
相对亮的块被判断是面向上的,相对暗的块被判断是面向下的。
所以我只需要给物体上的线条简单得上色。
如果你想要更多的证据,这里还有一幅几乎相同的图,不同于前的是它旋转了180度。
所以它是前一幅图倒转的图像。
三维图形引擎中多重纹理与凹凸映射技术研究的开题报告
![三维图形引擎中多重纹理与凹凸映射技术研究的开题报告](https://img.taocdn.com/s3/m/cfe2a3c705a1b0717fd5360cba1aa81144318f19.png)
三维图形引擎中多重纹理与凹凸映射技术研究的开题报告一、研究背景和意义随着电脑图形技术的不断发展和应用普及,三维图形引擎在游戏、影视等领域得到了广泛的应用。
如今,为了提高三维场景的真实感和细节表现,多重纹理和凹凸映射技术已经成为了必不可少的基础技术之一。
多重纹理技术可以用多张贴图来表达一个物体的不同材质表面,从而达到更真实的效果。
而凹凸映射技术则可以通过在物体表面上增加凹凸的细节,使得物体表面的纹理更有质感,更真实。
因此,本次研究的目的是在三维图形引擎中实现多重纹理和凹凸映射技术,以提高三维场景的真实感和细节表现,同时扩展三维图形引擎的功能和应用领域。
二、研究内容和方法1. 多重纹理技术研究在多重纹理技术研究中,需要分析多重纹理的实现原理和应用方法,探讨多重纹理在三维场景中的应用效果。
具体的研究内容包括:(1)多重纹理的原理和实现方法。
(2)常用的多重纹理应用场景和实现效果分析。
(3)相应的算法和数据结构的设计和实现。
2. 凹凸映射技术研究在凹凸映射技术研究中,需要分析凹凸映射的实现原理和应用方法,探讨凹凸映射在三维场景中的应用效果。
具体的研究内容包括:(1)凹凸映射的原理和实现方法。
(2)常用的凹凸映射应用场景和实现效果分析。
(3)相应的算法和数据结构的设计和实现。
3. 多重纹理和凹凸映射技术的综合研究在多重纹理和凹凸映射技术的综合研究中,需要探讨两者的结合应用方式,并对三维场景中的表现效果进行分析。
具体的研究内容包括:(1)多重纹理和凹凸映射的结合应用方式研究。
(2)综合应用效果的分析和评估。
(3)算法和数据结构的优化和升级。
三、预期结果和成果1. 实现三维图形引擎中多重纹理技术和凹凸映射技术。
2. 探讨多重纹理和凹凸映射在三维场景中的应用方法和效果,对应用场景进行综合分析和评估。
3. 提出相关算法和数据结构的优化和升级方案。
四、论文框架第一章绪论1.1 研究背景和意义1.2 国内外研究现状及发展趋势1.3 研究内容和方法1.4 论文结构第二章多重纹理技术研究2.1 多重纹理的基本概念和原理2.2 多重纹理的实现方法2.3 多重纹理在三维场景中的应用效果分析2.4 算法和数据结构的设计和实现第三章凹凸映射技术研究3.1 凹凸映射的基本概念和原理3.2 凹凸映射的实现方法3.3 凹凸映射在三维场景中的应用效果分析3.4 算法和数据结构的设计和实现第四章多重纹理和凹凸映射技术的综合研究4.1 多重纹理和凹凸映射的结合应用方式研究4.2 综合应用效果的分析和评估4.3 算法和数据结构的优化和升级方案第五章结论和展望5.1 研究结论总结5.2 研究展望及未来工作五、参考文献六、研究进度安排第一阶段:文献调研和技术分析(2周)第二阶段:多重纹理技术研究和实现(4周)第三阶段:凹凸映射技术研究和实现(4周)第四阶段:多重纹理和凹凸映射的综合研究和算法优化(4周)第五阶段:论文撰写和完善(4周)。
AE中的纹理映射技巧与创意应用实例
![AE中的纹理映射技巧与创意应用实例](https://img.taocdn.com/s3/m/e4f2bcfb0d22590102020740be1e650e53eacf7b.png)
AE中的纹理映射技巧与创意应用实例纹理映射是Adobe After Effects(AE)软件中常用的一种技术,它可以将纹理应用于图像或视频,为画面增添丰富的层次感和视觉效果。
本文将介绍几种常用的纹理映射技巧,并给出一些创意应用实例,希望对AE软件的用户有所帮助。
1. 纹理映射技巧:(1)使用纹理图像:在AE中,可以使用各种各样的纹理图像,如木纹、石纹、纸张等来增强画面的质感。
将纹理图像导入到AE中后,可以将其应用于不同的图层或合成,通过调整透明度、融合模式或颜色效果,来达到想要的效果。
(2)使用AE自带的纹理效果:AE软件提供了丰富的纹理效果,如柏林噪声、云彩等。
通过在合成中添加这些效果,并根据需要调整其参数,可以实现各种纹理映射效果。
(3)混合模式与蒙版:利用混合模式和蒙版功能,可以更加灵活地控制纹理的映射效果。
通过调整不同的混合模式,可以改变纹理与原图层的融合效果,而蒙版则可以精确地控制纹理的映射区域。
2. 创意应用实例:(1)文字纹理映射:将纹理应用于文字效果可以使文字更加生动有趣。
例如,可以将木纹应用于文字,使其看起来仿佛由木材制成;或者将纸张纹理映射到文字上,使其看起来像是印刷在纸上的效果。
(2)运动图形纹理映射:在运动图形中添加纹理映射效果,可以使其更具立体感和质感。
例如,在一个循环动画中,可以将云彩纹理映射到背景形状上,使其看起来像是云层在缓慢流动。
(3)视觉特效纹理映射:纹理映射也可以用于创造各种视觉特效。
例如,在一个火焰特效的合成中,利用纹理映射可以让火焰看起来更加真实,增加其燃烧的质感。
3. 注意事项:(1)使用合适的纹理图像:选择适合场景和效果的纹理图像非常重要。
不同的纹理图像可以产生完全不同的效果,所以要根据需求选择合适的纹理图像。
(2)运用掩模技巧:在纹理映射时,可以使用掩模技巧来限制纹理的映射区域,以避免纹理过度混合或覆盖其他元素。
(3)调整纹理参数:通过调整纹理的透明度、缩放等参数,可以进一步细化纹理映射效果,使其更符合设计需求。
实验五纹理映射实验
![实验五纹理映射实验](https://img.taocdn.com/s3/m/5d7172b1f424ccbff121dd36a32d7375a417c6d1.png)
实验五纹理映射实验实验项目性质:设计性实验所属课程名称:3D游戏图形学实验计划学时:3学时一、实验目的和要求掌握纹理映射的基本原理,利用VC++ OpenGL实现纹理映射技术。
二、实验原理纹理映射是真实感图形制作的一个重要部分,运用纹理映射可以方面地制作真实感图形,而不必花更多的时间去考虑物体的表面纹理。
如一张木制桌子其表面的木纹是不规范的,看上去又是那么自然,如果在图形制作中不用纹理映射,那么只是这张桌面纹理的设计,就要花费很大精力,而且设计结果也未必能像现实中那么自然。
如果运用纹理映射就非常方便,可以用扫描仪将这样的一张桌子扫成一个位图。
然后的具体的操作中,只需把桌面形状用多边形画出来,把桌面纹理贴上去就可以了。
另外,纹理映射能够在多边形进行变换时仍保证纹理的图案与多边形保持一致性。
例如,以透视投影方式观察墙面时,远端的砖会变小,而近处的砖就会大一些。
此外,纹理映射也可以用于其他方面。
例如,使用一大片植被的图像映射到一些连续的多边形上,以模拟地貌,或者以大理石、木纹等自然物质的图像作为纹理映射到相应的多边形上,作为物体的真实表面。
在OpenGL中提供了一系列完整的纹理操作函数,用户可以用它们构造理想的物体表面,可以对光照物体进行处理,使其映射出所处环境的景象,可以用不同方式应用到曲面上,而且可以随几何物体的几何属性变换而变化,从而使制作的三维场景和三维物体更真实更自然。
在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);其中,参数target取值一般为GL_TEXTURE_1D, GL_TEXTURE_2D和GL_TEXTURE_3D,分别与一维、二维和三维的纹理相对应。
计算机图形学报告
![计算机图形学报告](https://img.taocdn.com/s3/m/ef5cc164cc17552706220801.png)
. . . . .. . 优质资料 .. 计算机图形学 (2017年秋季学期)实验 报 告系别:计算机科学与技术 班级: : 学号:实验名称:2-真实感图形绘制2020-11-132/3《计算机图形学》实验报告实验名称真实感图形绘制 实验序号 2实验日期 2017.12.13 实验人 一、实验目的、要求与环境1.目的:通过实验,学生应掌握通过计算机程序进行真实感图形绘制的基本原理,特别是对三维显示对象进行纹理映射的基本方法,将理论和实际应用切实结合起来。
2.要求:对一个三维立方体进行旋转,对其6个不同的面进行6个不同图像的纹理映射,并进行投影变换与显示,分析增强后的视觉效果,提交实验报告。
3.环境:Windows 7操作系统Microsoft Visual Studio 2005OpenGL 函数库4. 自带位图文件(换成你自己的图像文件):总成绩:评语:日期:2020-11-1311/12二、实验容与步骤1. 准备相关图像文件。
2. 进行立方体各面图像与旋转速度的大体设计。
3.在Windows 7 操作系统上,打开Microsoft Visual Studio 2005,编写相关程序,完成程序主体框架结构。
4.编写六面体显示相关的程序代码。
5.编写六面体旋转相关的程序代码。
6.编写深度检测相关的程序代码。
7. 编写纹理载入功能的相关程序代码。
8. 编写纹理参数定义功能的相关程序代码。
9. 编写纹理映射功能的相关程序代码。
10.对程序进行相关调试,修改程序,去除其中的BUG 。
11. 观察纹理映射后的六面体的旋转显示,与预想的结果进行对比,修改相关程序参数。
12.截屏,保留实验结果,进行实验结果分析,并撰写实验报告。
2020-11-13 2/32020-11-13 11/12四、编译过程截图五、实验结果与分析(下面是一个例子,换上你自己的图)实验结果:实验分析程序通过glBindTexture(GL_TEXTURE_2D, lastTextureID);语句,完成了恢复之2020-11-13 2/32020-11-13 11/122020-11-13 2/32020-11-13 11/122020-11-13 2/3。
chpt7_纹理映射
![chpt7_纹理映射](https://img.taocdn.com/s3/m/fe6782707fd5360cba1adbcd.png)
纹理映射
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
设置纹理图像数据。我们一般从一个图像文件 中读入纹理图像数据,比如从一个BMP文件或 者JPG文件等,读入到内存中的一个二维数组 中 接着调用glTexImage2D函数,把纹理从系统内 存(System Memory)传输到显卡中的显存中 (Video Memory)
示例:计算机生成纹理
纹理映射
纹理映射
OpenGL中的纹理映射:
使用纹理映射的第四步:在绘制代码里面,对 每个顶点指定纹理坐标。 OpenGL里面,纹理空间和对象空间的映射关 系留给了程序员来作 对于简单的三维物体(如平面、球、圆柱体、 参数曲面等),我们可以比较容易地来指定每 个顶点的纹理坐标 对于复杂的任意三维物体,一般需要使用建模 软件,来得到纹理坐标
typeIn Specifies the data type for dataIn.
GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, GL_FLOAT.
凹凸配合实训报告
![凹凸配合实训报告](https://img.taocdn.com/s3/m/770dc97fbdd126fff705cc1755270722192e598e.png)
一、实训目的本次凹凸配合实训旨在通过实际操作,加深对凹凸配合原理的理解,提高对机械加工过程中零件配合关系的掌握,培养实际操作技能和解决问题的能力。
通过实训,期望达到以下目标:1. 理解凹凸配合的基本概念、分类和作用。
2. 掌握凹凸配合的测量方法和精度要求。
3. 学会使用相关工具和设备进行凹凸配合的加工和检验。
4. 培养团队协作和沟通能力,提高实际操作中的问题解决能力。
二、实训环境实训地点:机械加工实验室实训设备:铣床、磨床、量具(游标卡尺、千分尺、百分表等)、材料(钢、铝等)实训时间:2023年X月X日至2023年X月X日三、实训原理凹凸配合是指利用零件表面凹凸形状的相互嵌合,以达到连接、定位或导向等目的的配合方式。
根据配合精度和用途的不同,凹凸配合可分为以下几种类型:1. 粗配合:主要用于零件间的连接,精度要求不高。
2. 中等配合:用于零件间的定位和导向,精度要求较高。
3. 精配合:用于高精度零件的配合,如轴承内外圈的配合。
凹凸配合的加工方法主要包括:1. 铣削:适用于平面和简单的曲面配合。
2. 磨削:适用于高精度配合,可获得较好的表面质量和尺寸精度。
四、实训过程1. 理论学习:首先,对凹凸配合的基本原理、分类、加工方法进行理论学习,了解各种配合的特点和适用范围。
2. 实操练习:在导师的指导下,进行以下实操练习:a. 使用铣床加工平面配合件,学习铣削的基本操作和注意事项。
b. 使用磨床加工曲面配合件,学习磨削的基本操作和注意事项。
c. 使用量具进行配合件的测量,了解测量方法和精度要求。
3. 团队协作:在实训过程中,与团队成员共同完成任务,培养团队协作和沟通能力。
4. 问题解决:在实操过程中,遇到问题时,与团队成员共同分析原因,寻找解决方案。
五、实训结果1. 成功完成平面配合件和曲面配合件的加工,达到设计要求。
2. 掌握了铣削和磨削的基本操作,能够独立完成配合件的加工。
3. 学会了使用量具进行配合件的测量,了解测量方法和精度要求。
凹凸组织实验报告
![凹凸组织实验报告](https://img.taocdn.com/s3/m/2213b35177c66137ee06eff9aef8941ea66e4b6f.png)
一、实验目的1. 了解凹凸组织的概念和特点;2. 掌握凹凸组织实验的操作方法;3. 分析凹凸组织实验的结果,得出结论。
二、实验原理凹凸组织是植物细胞壁的一种结构,由纤维素、半纤维素、果胶等物质组成。
凹凸组织具有增加植物细胞壁厚度、提高植物抗逆性等作用。
本实验通过观察植物细胞壁的凹凸结构,了解其特点,为后续研究植物抗逆性提供理论依据。
三、实验材料1. 植物材料:小麦、玉米、大豆等;2. 试剂:1%的KOH溶液、1%的碘液;3. 仪器:显微镜、载玻片、盖玻片、滴管等。
四、实验步骤1. 取植物叶片,用刀片切成薄片;2. 将切片置于载玻片上,滴加1%的KOH溶液,用盖玻片覆盖;3. 将载玻片放入酒精灯上加热,使叶片透明;4. 取出载玻片,用滴管滴加1%的碘液,染色;5. 将载玻片置于显微镜下观察,记录凹凸组织的特点。
五、实验结果与分析1. 观察小麦叶片细胞壁,可见明显的凹凸结构,凹凸部分厚度较大,凸起部分较薄;2. 观察玉米叶片细胞壁,凹凸结构不明显,细胞壁厚度较均匀;3. 观察大豆叶片细胞壁,凹凸结构明显,凹凸部分厚度较大,凸起部分较薄。
通过观察不同植物叶片细胞壁的凹凸结构,可以得出以下结论:1. 凹凸组织在植物细胞壁中普遍存在,具有增加细胞壁厚度、提高植物抗逆性的作用;2. 不同植物的凹凸组织结构存在差异,可能与植物的生长环境、生理特性等因素有关;3. 凹凸组织在植物抗逆性研究中具有重要意义,为后续研究植物抗逆性提供理论依据。
六、实验讨论1. 实验过程中,加热叶片切片时,要注意控制温度,避免过度加热导致叶片变形;2. 染色过程中,要注意控制碘液的浓度和滴加量,以免影响观察效果;3. 本实验仅观察了植物叶片细胞壁的凹凸结构,未涉及其他植物器官,今后可以进一步研究植物不同器官的凹凸组织结构。
七、实验结论凹凸组织是植物细胞壁的一种重要结构,具有增加细胞壁厚度、提高植物抗逆性的作用。
本实验通过对小麦、玉米、大豆叶片细胞壁的观察,验证了凹凸组织的存在,为后续研究植物抗逆性提供了理论依据。
凹凸贴图
![凹凸贴图](https://img.taocdn.com/s3/m/a03c965bbe23482fb4da4ce0.png)
电子科技大学计算机学院标准实验报告(实验)课程名称三维渲染技术电子科技大学教务处制表实验报告学生姓名:杨端学号:2723101030指导教师:白忠建实验地点:实验楼506实验时间:2010.12.12一、实验室名称:实验楼506二、实验项目名称:凹凸贴图的实现三、实验学时:4学时四、实验原理:1、凹凸贴图这是一种在3D场景中模拟粗糙表面的技术,将带有深度变化的凹凸材质贴图赋予3D物体,经过光线渲染处理后,这个物体的表面就会呈现出凹凸不平的感觉,而无需改变物体的几何结构或增加额外的点面。
例如,把一张碎石的贴图赋予一个平面,经过处理后这个平面就会变成一片铺满碎石、高低不平的荒原。
当然,使用凹凸贴图产生的凹凸效果其光影的方向角度是不会改变的,而且不可能产生物理上的起伏效果。
2、浮雕贴图这种处理方式不用lighting models,而直接使用贴图明暗度来产生凸凹效果.玩过photoshop的都知道可以使用alpha通道对RGB图像进行混合,这种透明度直接混合出来的明暗看起来象平的,为了使用图像随灯光看起来有立体感的明暗度,一种简单的办法就是使用Emboss bumpmapping.实现如下:就是将原alpha通道值一分为二,一个是原alpha通道的亮度减半, 另一个是反转alpha通道并将uv偏移灯光一点点,最后将两个alpha通道加起来再与原RGB图像进行混合,这样看起来明暗度偏离灯光使看起来立体感较强.另外这样的处理方式还可混合顶点色.五、实验目的:1、理解凹凸映射是把粗糙信息加到多边形上。
这在多边形的视觉上会产生很吸引人的效果。
2、了解并掌握凹凸贴图的实现方法。
3、加深对三维渲染的认识。
六、实验内容:1、利用OpenGL绘制一个立方体。
2、在立方体的表面上使用浮雕贴图的原理实现凹凸贴图。
七、实验器材(设备、元器件):PC八、实验步骤:1、立方体绘制:oid doCube (void) {int i;glBegin(GL_QUADS);// Front FaceglNormal3f( 0.0f, 0.0f, +1.0f);for (i=0; i<4; i++) {glTexCoord2f(data[5*i],data[5*i+1]);glV ertex3f(data[5*i+2],data[5*i+3],data[5*i+4]);}// Back FaceglNormal3f( 0.0f, 0.0f,-1.0f);for (i=4; i<8; i++) {glTexCoord2f(data[5*i],data[5*i+1]);glV ertex3f(data[5*i+2],data[5*i+3],data[5*i+4]);}// Top FaceglNormal3f( 0.0f, 1.0f, 0.0f);for (i=8; i<12; i++) {glTexCoord2f(data[5*i],data[5*i+1]);glV ertex3f(data[5*i+2],data[5*i+3],data[5*i+4]);}// Bottom FaceglNormal3f( 0.0f,-1.0f, 0.0f);for (i=12; i<16; i++) {glTexCoord2f(data[5*i],data[5*i+1]);glV ertex3f(data[5*i+2],data[5*i+3],data[5*i+4]);}// Right faceglNormal3f( 1.0f, 0.0f, 0.0f);for (i=16; i<20; i++) {glTexCoord2f(data[5*i],data[5*i+1]);glV ertex3f(data[5*i+2],data[5*i+3],data[5*i+4]);}// Left FaceglNormal3f(-1.0f, 0.0f, 0.0f);for (i=20; i<24; i++) {glTexCoord2f(data[5*i],data[5*i+1]);glV ertex3f(data[5*i+2],data[5*i+3],data[5*i+4]);}glEnd();}2、初始化灯光void initLights(void) {glLightfv( GL_LIGHT1, GL_AMBIENT, LightAmbient); // Load Light-Parameters Into GL_LIGHT1glLightfv( GL_LIGHT1, GL_DIFFUSE, LightDiffuse);glLightfv( GL_LIGHT1, GL_POSITION, LightPosition);glEnable(GL_LIGHT1);}3、加载许多纹理int LoadGLTextures(){ // Load Bitmaps And Convert To Texturesbool status=true; // Status IndicatorAUX_RGBImageRec *Image=NULL; // Create Storage Space For The Texturechar *alpha=NULL;// Load The Tile-Bitmap For Base-Textureif (Image=auxDIBImageLoad("Data/Base.bmp")) {glGenTextures(3, texture); // Create Three Textures// Create Nearest Filtered TextureglBindTexture(GL_TEXTURE_2D, texture[0]);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FIL TER,GL_NEAREST);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, Image->sizeX, Image->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, Image->data);// ========// Use GL_RGB8 Instead Of "3" In glTexImage2D. Also Defined By GL: GL_RGBA8 Etc.// NEW: Now Creating GL_RGBA8 Textures, Alpha Is 1.0f Where Not Specified By Format.// Create Linear Filtered TextureglBindTexture(GL_TEXTURE_2D, texture[1]);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FIL TER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, Image->sizeX, Image->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, Image->data);// Create MipMapped TextureglBindTexture(GL_TEXTURE_2D, texture[2]);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FIL TER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB8, Image->sizeX, Image->sizeY, GL_RGB, GL_UNSIGNED_BYTE, Image->data);}else status=false;if (Image) { // If Texture Exists if (Image->data) delete Image->data; // If Texture Image Existsdelete Image;Image=NULL;}4、加载凹凸映射纹理,反转凹凸贴图数据,创建三个反转的凹凸贴图纹理,实现凹凸贴图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六: 凹凸纹理映射技术一、实验目的掌握凹凸纹理映射的原理, 熟悉Ogre中纹理映射的使用方法。
二、实验仪器pc、 vs三、实验原理及过程1、网上检索凹凸纹理映射相关技术凹凸纹理映射是一种纹理混合方法, 它能够创立三维物体复杂的纹理外观表面。
普通的纹理映射只能模拟比较平滑的三维物体表面, 难以显示表面高低起伏、凹凸不平的效果。
凹凸纹理映射能够经过一张表示物体表面凹凸程度的高度图( 称为凹凸纹理) , 对另一张表示物体表面环境映射的纹理图的纹理坐标进行相应的干扰, 经过干扰的纹理坐标将应用于环境映射,从而产生凹凸不平的显示效果。
凹凸纹理映射一般由三张纹理映射图组成, 第一张纹理图表示物体表面原始纹理颜色, 第二张凹凸纹理图表示物体表面凹凸的高度起伏值, 用来对下一张环境纹理图坐标进行干扰, 第三张纹理图表示周围镜面反射或漫反射光照的环境光照映射图。
让我们来看看一个粗糙的表面。
从远处看, 你判断这个物体是粗糙的的唯一证据是在它表面上下的亮度有改变。
你的大脑能够获得这些亮暗不一的图案信息, 然后判断出它们是表面中有凹凸的部位。
左边的一幅图就说明了这一点。
你能够发现它是一个浮雕式的表面。
一些矩型和字母被印入表面, 可是它们摸上去就像是一个隐藏的监控器的玻璃。
如果这个图像是在适当的位置上, 那么它除了改变亮度, 不需要再做任何其它的工作。
那么你可能会问: 我是怎么知道哪些点要亮, 哪些点要暗呢? 这不难。
绝大多数人生活在这样一种环境下——这个环境的大多数光源来自上方( 译者注: 比如白天主要的光来自太阳, 夜晚主要的光来自天花板上的日光灯) 。
因此向上倾的地方就会更亮, 而向下倾的地方就会更暗。
因此这种现象使你的眼睛看到一个物体上亮暗区域时, 能够判断出它的凹凸情况。
相对亮的块被判断是面向上的, 相对暗的块被判断是面向下的。
因此我只需要给物体上的线条简单得上色。
如果你想要更多的证据, 这里还有一幅几乎相同的图, 不同于前的是它旋转了180度。
因此它是前一幅图倒转的图像。
那些先前看起来是凹进去的区域, 现在看起来是凸出来的了。
凹凸映射(凹凸纹理)Bump Mapping这个时候你的大脑并没有被完全欺骗, 你脑中存留的视觉印象使你依然有能力判断出这是前一幅图, 只是它的光源变了, 是从小往上照的你的大脑可能强迫性地判断出它是第一幅图。
事实上, 你只要始终盯着它, 而且努力地想像着光是从右下方向照射的, 你就会理解它是凹的( 译者注: 因为日常生活的习惯, 你会很容易把这些图形判断成凸出的图形, 可是因为有了上一幅对照图的印象, 你可能才会特别注意到这些图块其实还是凹入的, 只是判断方法不符合我们日常生活习惯, 因为这时大多数光不是从上方照射, 而是从下往上照射) 。
凹凸纹理映射技术能够用来模拟粗糙物体表面凹凸不平的细节, 如: 橘子、草莓、树皮等。
凹凸纹理映射最早只能用于离线绘制系统, 随着图形硬件的发展, 她已经成为游戏引擎中不可缺少的部分。
最早的凹凸纹理映射使用一个高度图和曲面参数( 一般是纹理坐标) 的偏导数计算扰动后的法向。
这个偏导数表明了物体表面改变的尺度。
理论上, 凹凸映射中涉及的法向操作实在像素层次上的。
凹凸纹理映射的步骤如下:( 1) 计算每个顶点处的T、 B、 N, 并计算切平面坐标的矩阵。
( 2) 根据该矩阵将光源变换到切平面空间, 变换后光源的x、 y即顶点的相邻点。
( 3) 从凹凸纹理中取出顶点和相邻点处的高度, 根据两者的法向量计算出顶点的新法向,再根据新法向量进行光照明计算。
2、利用Ogre实现凹凸纹理映射描述程序实现时的思路包括对每个调用的API进行详细说明1) 顶点渲染主函数: VS_OUTPUT VS(float4 Pos : POSITION, float2 Tex : TEXCOORD, float3 Normal : NORMAL, float3 Tangent : TANGENT){ ……}2) 像素渲染器主函数: PS_OUTPUT PS(float2 Tex: TEXCOORD0, float3 Light : TEXCOORD1, float3 View : TEXCOORD2, float3 Att : TEXCOORD3){ ……}四、实验结果五、实验心得本次实验主要掌握凹凸纹理映射的原理, 熟悉Ogre中纹理映射的使用方法; 凹凸纹理映射是一种纹理混合方法, 它能够实现三维物体复杂的纹理表面, 普通的纹理映射只能模拟比较平滑的三维物体表面, 而凹凸纹理映射经相应的技术能够产生凹凸不平的显示效果, 凹凸纹理映射技术能够用来模拟粗糙物体表面凹凸不平的细节; 凹凸映射和纹理映射非常相似。
然而, 纹理映射是把颜色加到多边形上, 而凹凸映射是把粗糙信息加到多边形上。
这在多边形的视觉上会产生很吸引人的效果。
我们只需要添加一点信息到原来需要使用大量多边形的物体上。
需要注意的是这个物体是平的, 可是它看起来却是粗糙不平的。
让我们来看看左边的那个立方体。
如果你很近地观察它时, 你会发现它上面的很多细节。
它看起来仿佛是由成千上万个多边形构成的, 其实它只是由6个矩形构成。
经过本次实验了解凹凸纹理映射的原理, 学会在ogre中对三维物体使用纹理映射的方法, 对ogre 的了解更进一步, 收获颇多。
六、主要代码Dot3Bump.h#ifndef __Dot3Bump_H__#define __Dot3Bump_H__#include"SdkSample.h"using namespace Ogre;using namespace OgreBites;class _OgreSampleClassExport Sample_Dot3Bump : public SdkSample{public:Sample_Dot3Bump(): mMoveLights (true){mInfo["Title"] = "Bump Mapping";mInfo["Description"] = "Shows how to use the dot product blending operation and normalization cube map ""to achieve a bump mapping effect. Tangent space computations made through the guide of the tutorial ""on bump mapping from ~univ1234 by .";mInfo["Thumbnail"] = "thumb_bump.png";mInfo["Category"] = "Lighting";mInfo["Help"] = "Left click and drag anywhere in the scene to look around. Let go again to show ""cursor and access widgets. Use WASD keys to move.";}StringVector getRequiredPlugins(){StringVector names;names.push_back("Cg Program Manager");return names;}void testCapabilities(const RenderSystemCapabilities* caps){if (!caps->hasCapability(RSC_VERTEX_PROGRAM)|| !(caps->hasCapability(RSC_FRAGMENT_PROGRAM))){OGRE_EXCEPT(Exception::ERR_NOT_IMPLEMENTED, "Your graphics card does not support vertex and fragment programs, ""so you cannot run this sample. Sorry!","Dot3BumpSample::testCapabilities");}if (!GpuProgramManager::getSingleton().isSyntaxSupported("arbfp1") && !GpuProgramManager::getSingleton().isSyntaxSupported("ps_2_0")) {OGRE_EXCEPT(Exception::ERR_NOT_IMPLEMENTED, "Your card does not support shader model 2, ""so you cannot run this sample. Sorry!","Dot3BumpSample::testCapabilities");}}bool frameRenderingQueued(const FrameEvent& evt){if (mMoveLights){// rotate the light pivotsmLightPivot1->roll(Degree(evt.timeSinceLastFrame * 30));mLightPivot2->roll(Degree(evt.timeSinceLastFrame * 10));}return SdkSample::frameRenderingQueued(evt); // don't forget the parentclass updates!}void itemSelected(SelectMenu* menu){if (menu == mMeshMenu){// change to the selected entitymObjectNode->detachAllObjects();mObjectNode->attachObject(mSceneMgr->getEntity(mMeshMenu->getSelectedItem()) );// remember which material is currently selectedint index = std::max<int>(0, mMaterialMenu->getSelectionIndex());// update the material menu's optionsmMaterialMenu->setItems(mPossibilities[mMeshMenu->getSelectedItem()]);mMaterialMenu->selectItem(index); // select the material with the saved index}else{// set the selected material for the active mesh((Entity*)mObjectNode->getAttachedObject(0))->setMaterialName(menu->getSelec tedItem());。