




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、光照模型主讲:史广顺主要参考书:OpenGL编程指南 机械工业出版社主要内容材料颜色和光照模型相关的概念(1)创建、定位和启用光源(2)选择光照模型(4)为场景中的物体定义材料属性创建光源(1)颜色(2)光的位置和衰减(3)聚光灯(4)多光源(5)控制光源的位置和方向材料颜色OpenGL的光照模型根据材料反射的红、绿和蓝光的比例来模拟它的颜色。例如一个纯红的球体,它会反射所有的红色光线吸收所有的蓝色和绿色光线。所以,如果给红色的球体仅仅投上绿色的光线,那么它看起来就是黑色的和光一样,材料也具有不同的环境、散射和镜面颜色,它们决定了材料对红、绿和蓝光的反射率。材料的环境反射属性,散射反射属性,镜
2、面反射属性和分别和对应的每种入射光的相应颜色值进行组合。注:镜面反射属性通常是白色或灰色的,因此镜面亮点的颜色也就是光源的镜面光的颜色。光照条件下的不同材料属性的小球光和材料的RGB值光线的颜色成分与材料的颜色成分的含义并不相同。对于光照而言,颜色成分的数量对应于每种颜色的完全强度百分比。比如说,如果一束光线的RGB为(0.5,0.5,0.5),那么它理论上应该是白色的,但是强度只有一半,因此看上去却像是灰色的。对于材料而言,它的RGB值和它对颜色的反射比例相对应。如果值为(1,0.5,0),那么它将反射所有的红光,一半的绿光,不反射蓝光。在忽略其它所有的反射效果情况下,如果一束OpenGL光
3、线的成分是(LR,LG,LB),一种材料具有相应的成分(MR,MG,MB),那么进入眼睛的颜色值就是(LR*MR,LG*MG,LB*MB)类似的,如果两束光进入人眼,它的成分分别是(R1,G1,B1)和(R2,G2,B2),那么,叠加在一起的光颜色就是:(R1+R2,G1+G2,B1+B2),当值超过1的,它会被自动截取为1在OpenGL中使用颜色设置绘制的颜色,我们要回顾一下函数: void glColor*(red,green,blue,alpha);函数的名字会随着参数的类型和数目有相应的少许变化。但是三个基本参数就是红、绿、蓝。当我们的参数为四个元素时,alpha表征颜色的透明度。函数
4、中的b、d、f、i、s、ui、us,分别代表着字节型、双精度型、浮点型、整型、短整型、无符号字节型和无符号短整型。设置明暗处理glColor可以设置当前的颜色,在函数之后绘制的所有顶点都使用该颜色。如果是一个顶点,指定给定顶点的颜色就是该点最终的颜色,而对于线来说,它有两个端点,可以设置成不同颜色。线的颜色取决于明暗处理的模型。所谓的明暗处理实际上是一种颜色到另外一种颜色的平滑过渡。明暗处理的数学方法是先找到三维RGB空间中连接两点的直线方程,再从线的一端循环到另一端,沿线检索每点的坐标,给屏幕上的每个像素供点的颜色。设置明暗处理的模型OpenGL会默认进行光滑明暗处理的明暗处理模型,也是我们
5、讨论的模型。设置模型为GL_SMOOTH。另外一种处理模式为GL_FLAT,它用来实现平直明暗处理。平直明暗处理意味着图元的内部不做明暗处理计算。一般的来说,平直明暗处理模型下,一个图元的内部的颜色就是最后一个顶点的颜色。唯一例外的一个情况:GL_POLYGON图元,它采用的是第一个顶点的颜色现实世界中的颜色OpenGL根据光照条件创造出类似现实环境中的模型来。除了物体本身发光以外,还可以有三种类型的光照:环境光,散射光和镜面光。不同光源混合在现实场景中,没有一种光源完全是由一种光组成,它总是由不同的几种光进行组合构成。例如:红色的激光几乎都是由红色的镜面光成分组成,然而由于环境的灰尘进行散射
6、,所以显示效果很明显也会受到影响。一种光源一般可以由如上介绍的三种模型进行模拟例如现实中红色激光的光色分布图:红红绿绿蓝蓝alphaalpha镜面光0.990.00.01.0散射光0.100.00.01.0环境光0.050.00.01.0现实世界中的材质光只是综合因素的一部分,在现实世界中,材质本身拥有自己的颜色。这样,材质的颜色是由它所反射的光的波长决定的。举个例子:黄色光照射蓝色的球体,当没有其它光源时候,球体所见到的颜色应该是黑色的。材质属性:当我们描述一个物体时候,总是说它由具有某些反射属性的材质组成,而不说它具有特殊的颜色。不说某些多边形是红色的,而说它由某种主要反射红光的材质组成。
7、给材质加入光线绘制某个物体时,OpenGL决定物体的每个像素所使用的颜色。物体有反射的“颜色”,而光源也有自己的“颜色”。在具体的OpenGL中,图元的每个顶点都被赋予了一个RGB值,该值是根据环境、散射和镜面反射三种光照值与材质对该三种光的发射率相乘之后的值。通过点和点之间的光滑明暗处理,照明灯视觉效果就实现了。计算环境光效果假设,某个环境中的光源的红绿蓝光的亮度都为一半的话,那么它的RGB值就为(0.5,0.5,0.5).如果它去照射一个物体,而该物体对环境的反射属性的RGB值为(0.5,1.0,0.5),那么物体从环境光到最终的颜色成分就是:(0.50.5,0.51.0,0.50.5)这
8、样的结果正好实现了材质的颜色成分决定了反射光与入射光的百分比。散射光和镜面光散射光也具有与环境光一样的与材质属性相互作用的RGB亮度。但是,散射光有方向性,而且物体表面的亮度随着物体表面与光源之间的角度、物体到光源的距离和衰减因子等等的不同而变化。对应的镜面光源和亮度也是如此。RGB值表征的净效果跟环境光的计算方法相同,即光源的亮度乘以材质的反射率。最后,三项RGB值叠加就形成了物体最终的颜色。最后,将三项RGB值进行叠加形成了最终的颜色。如果有一种颜色的成分值大于1.0,那么就按照1.0进行计算。简单实用光源使光源生效:OpenGL通过函数glEnable启用光源,它的参数为GL_LIGHT
9、ING注:该函数只是设置OpenGL利用材质属性和光照参数来决定场景中的每个物体的颜色,但是,如果没有指定材质属性和光照参数的话,物体仍然会暗淡无光。没有加入材质属性情况下正常情况下设置光照模型:在允许光照计算之后,首先就要设置光照模型。影响光照模型的三个参数是在glLightModel函数中设置的。设置全局环境光:GL_LIGHT_MODEL_AMBIENT,设置它可以实现从各边均匀照射所有的物体。设置材质属性:有了全局环境光源之后,现在需要设置材质属性使多边形能反射光,让多边形去反射光线,这样我们才可以去看到物体。通常我们有两种方法设置材料属性,第一种是在指定每个多边形或者多边形集合之前使
10、用glMaterial函数。例如:glMaterialfv( GL_FRONT,GL_AMBIENT_AND_DIFFUSE,color );第一个参数指定材质的前面、背面的材质属性,第二个参数告诉要设置哪种属性,最后的参数是个数组,包含了构成这些属性的RGBA值。一旦设置了之后,后续的绘制都会以当前设置的属性进行渲染。设置光照和简单材质给一个简单的立方体设置材质和光照属性,得到不同的显示效果。第二种设置材质属性的方法:颜色跟踪法通过颜色跟踪法,我们只需要通过调用glColor就可以设置材料属性。要使得颜色跟踪方法开启,首先必须通过glEnable函数通过参数GL_COLOR_MATERIAL
11、开启状态。接着,glColorMaterial函数就可以根据glColor函数设置的值来指定材质的参数。例如,为了跟踪glColor函数设置的颜色,我们通过调用glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE)来设置多边形前面的环境和散射属性。利用第二种方法,当我们渲染的物体数目增加的时候,执行的效率会更快。第二种显示方式使用颜色跟踪法得到的渲染效果几个涉及到主要函数介绍(1) 设置允许材质的颜色跟踪glColor函数设置当前的颜色 void glColorMaterial(Glenum face ,Glenum mode );参数:face指定为前后面或者两面:GL_FRONT,GL_BACK,GL_FRONT_AND_BACK参数:mode:指定哪个颜色属性能够遵循当前的颜色,有可选值如下:GL_EMISSION,GL_AMBIENT,GL_DIFFUSE,GL_SPECULAR,GL_AMBIENT_AND_DIFFUSE(2)为光照模型设置材质参数 void glMaterial(Glenum face,Glenum pname,Glenum pname,Glfloat param)利用该函数设置
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024福建福州市可持续发展城市有限公司招聘3人笔试参考题库附带答案详解
- 浙江国企招聘2025中移铁通嘉兴海盐分公司招聘10人笔试参考题库附带答案详解
- MySQL教程(新体系-综合应用实例视频)(第4版) 第05章-答案
- 2025年度智能机器人产业员工聘用合同
- 二零二五农村宅基地买卖与农村土地流转收益分配与管理合同
- 2025年度购物中心店铺转租及品牌入驻合作协议
- 二零二五年度商业街区月停车位车库租赁合同样本
- 2025年度航空航天投资战略合作框架协议书
- 2025年度电商平台返点积分兑换协议书
- 二零二五年度智能电网建设工期调整补充协议
- 高标准农田建设项目验收技术方案
- 2024年甘肃天水麦积山石窟艺术研究所招聘工作人员考试真题
- 人效的指标体系及其“落地双引擎”
- 2025年山东省荣成市属事业单位招聘岗位及历年高频重点模拟试卷提升(共500题附带答案详解)
- 《教育强国建设规划纲要(2024-2035年)》解读讲座
- 《义务教育语文课程标准》2022年修订版原版
- 天耀中华合唱简谱大剧院版
- 《成本会计学》习题集及答案
- 荧光绿送货单样本excel模板
- 科技馆解说词
- 二年级下册万以内数的认识复习公开课(课堂PPT)
评论
0/150
提交评论