opengl光源光照使用范例

opengl光源光照使用范例

ID:9947697

大小:330.75 KB

页数:15页

时间:2018-05-16

opengl光源光照使用范例_第1页
opengl光源光照使用范例_第2页
opengl光源光照使用范例_第3页
opengl光源光照使用范例_第4页
opengl光源光照使用范例_第5页
资源描述:

《opengl光源光照使用范例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、OpenGL光源光照使用范例  1.光照模型     环境光——经过多次反射而来的光称为环境光,无法确定其最初的方向,但当特定的光源关闭后,它们将消失.全局环境光——每个光源都能对场景提供环境光。此外,还有一个环境光,它不来自任何特定的光源,称之为全局环境光。这也就是为什么我们不加任何自定义光源,也能看见绘制的物体的原因。散射光——来自同一方向,照射到物体表面后,将沿各个方向均匀反射,因此,无论从哪个方向观察,表面的亮度都相同. 主要通过设置GLfloatlight_diffuse[]={0.0,1.0,0.0,1.0}来发射绿光镜面反射光——来自特定方向,也被反射到特定方向.镜面反射度与

2、之相关. 材质发射光——用于模拟发光物体.在OpenGL光照模型中,表面的发射光增加了物体的亮度,它不受光源的影响,另外,发射光不会给整个场景中增加光线.  当光照射到一个物体表面上时,会出现三种情形。首先,光可以通过物体表面向空间反射,产生反射光。其次,对于透明体,光可以穿透该物体并从另一端射出,产生透射光。最后,部分光将被物体表面吸收而转换成热。在上述三部分光中,仅仅是透射光和反射光能够进入人眼产生视觉效果。这里介绍的简单光照模型只考虑被照明物体表面的反射光影响,假定物体表面光滑不透明且由理想材料构成,环境假设为由白光照明。一般来说,反射光可以分成三个分量,即环境反射、漫反射和镜面反射

3、。环境反射分量假定入射光均匀地从周围环境入射至景物表面并等量地向各个方向反射出去,通常物体表面还会受到从周围环境来的反射光(如来自地面、天空、墙壁等的反射光)的照射,这些光常统称为环境光(AmbientLight);漫反射分量表示特定光源在景物表面的反射光中那些向空间各方向均匀反射出去的光,这些光常称为漫射光(DiffuseLight);镜面反射光为朝一定方向的反射光,如一个点光源照射一个金属球时会在球面上形成一块特别亮的区域,呈现所谓“高光(Highlight)”,它是光源在金属球面上产生的镜面反射光(SpecularLight)。对于较光滑物体,其镜面反射光的高光区域小而亮;相反,粗糙

4、表面的镜面反射光呈发散状态,其高光区域大而不亮。2.OpenGL 光照模效果的原理OpenGL的光照模型是用来模拟现实生活中的光照的。它根据顶点的法线向量和光源的位置决定顶点的明暗程度,根据顶点的材质和光源中三原色的成分来决定物体将表现出怎样的颜色。值得一提的是材质。OpenGL中的材质并非我们平常所说的组成物体的元素(如木材、金属材质),而是指一个物体对不同颜色的光的反射和吸收程度。比如,在光照系统中,如果一个物体表现为红色,则是因为这个物体吸收了从光源放射出来的绿色和蓝色光,而将绝大多数红色的光反射了出来。正因如此,一旦你开启了光照系统,就要通过指定物体的材质来决定这个物体是什么颜色。

5、既然这样,你可能会想到怎样表现类似金属、玻璃等物质质感,但这些除了要使用光照系统并为它们指定合适的材质外,还要使用纹理贴图来表现质感。    使用OpenGL的光照模型包括以下几个步骤:·   设置光源的种类、位置和方向(对于平行光源)·   为每个图元的每个顶点指定它的法线向量·   为各个图元指定它的材质2.1局部视点和无穷远视点视点位置能影响镜面反射中高光的计算。即顶点的高光强度不仅取决于顶点法向量,而且取决于顶点到光源的方向以及顶点到视点的方向。对于无穷远视点,视点到任何顶点的方向都是相同的。而对于局部视点,视点到每个顶点的方向是不同的。所以需要计算视点到每个顶点的方向,因而性能降

6、低了,但效果质量提高了。缺省时,使用的是无穷远视点。 glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_TRUE);//将视点设置为局部视点glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_FALSE);//将视点设置为无穷远视点2.2双面光照光照计算是对所有多边形(包括其正面和背面)进行的。而一般情况下,只设置正面光照条件,而忽略背面。但有时候需要看到物体内侧的光照效果,这就需要用到双面光照。glLightModeli(LIGHT_MODEL_TWO_SIDE,GL_TRUE);//启用双面光照glLight

7、Modeli(LIGHT_MODEL_TWO_SIDE,GL_FALSE);//禁用双面光照2.3光源衰减真实的光,离光源越远则光强越小。环境光、漫反射光和镜面光的强度都衰减,辐射光和全局环境光的强度不衰减。 方向光源是无穷远光源,因此距离对光强没有影响,所以方向光没有衰减,但位置光则有衰减。OpenGL是通过光源光强乘以衰减系数来计算衰减光照的。衰减系数=1/(Kc+Kl*d+Kq*d*d)d=光源位置到物体顶点的距离

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。