1 / 15
文档名称:

OpenGL光源光照使用范例.docx

格式:docx   大小:325KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

OpenGL光源光照使用范例.docx

上传人:水中望月 2019/2/20 文件大小:325 KB

下载得到文件列表

OpenGL光源光照使用范例.docx

文档介绍

文档介绍:OpenGL光源光照使用范例       环境光——经过多次反射而来的光称为环境光,无法确定其最初的方向,但当特定的光源关闭后,——每个光源都能对场景提供环境光。此外,还有一个环境光,它不来自任何特定的光源,称之为全局环境光。这也就是为什么我们不加任何自定义光源,也能看见绘制的物体的原因。散射光——来自同一方向,照射到物体表面后,将沿各个方向均匀反射,因此,无论从哪个方向观察,表面的亮度都相同. 主要通过设置GLfloatlight_diffuse[]={,,,}来发射绿光镜面反射光——来自特定方向,. 材质发射光——,表面的发射光增加了物体的亮度,它不受光源的影响,另外,发射光不会给整个场景中增加光线.  当光照射到一个物体表面上时,会出现三种情形。首先,光可以通过物体表面向空间反射,产生反射光。其次,对于透明体,光可以穿透该物体并从另一端射出,产生透射光。最后,部分光将被物体表面吸收而转换成热。在上述三部分光中,仅仅是透射光和反射光能够进入人眼产生视觉效果。这里介绍的简单光照模型只考虑被照明物体表面的反射光影响,假定物体表面光滑不透明且由理想材料构成,环境假设为由白光照明。一般来说,反射光可以分成三个分量,即环境反射、漫反射和镜面反射。环境反射分量假定入射光均匀地从周围环境入射至景物表面并等量地向各个方向反射出去,通常物体表面还会受到从周围环境来的反射光(如来自地面、天空、墙壁等的反射光)的照射,这些光常统称为环境光(AmbientLight);漫反射分量表示特定光源在景物表面的反射光中那些向空间各方向均匀反射出去的光,这些光常称为漫射光(DiffuseLight);镜面反射光为朝一定方向的反射光,如一个点光源照射一个金属球时会在球面上形成一块特别亮的区域,呈现所谓“高光(Highlight)”,它是光源在金属球面上产生的镜面反射光(SpecularLight)。对于较光滑物体,其镜面反射光的高光区域小而亮;相反,粗糙表面的镜面反射光呈发散状态,其高光区域大而不亮。 光照模效果的原理OpenGL的光照模型是用来模拟现实生活中的光照的。它根据顶点的法线向量和光源的位置决定顶点的明暗程度,根据顶点的材质和光源中三原色的成分来决定物体将表现出怎样的颜色。值得一提的是材质。OpenGL中的材质并非我们平常所说的组成物体的元素(如木材、金属材质),而是指一个物体对不同颜色的光的反射和吸收程度。比如,在光照系统中,如果一个物体表现为红色,则是因为这个物体吸收了从光源放射出来的绿色和蓝色光,而将绝大多数红色的光反射了出来。正因如此,一旦你开启了光照系统,就要通过指定物体的材质来决定这个物体是什么颜色。既然这样,你可能会想到怎样表现类似金属、玻璃等物质质感,但这些除了要使用光照系统并为它们指定合适的材质外,还要使用纹理贴图来表现质感。    使用OpenGL的光照模型包括以下几个步骤:·   设置光源的种类、位置和方向(对于平行光源)·   为每个图元的每个顶点指定它的法线向量·   。即顶点的高光强度不仅取决于顶点法向量,而且取决于顶点到光源的方向以及顶点到视点的方向。对于无穷远视点,视点到任何顶点的方向都是相同的。而对于局部视点,视点到每个顶点的方向是不同的。所以需要计算视点到每个顶点的方向,因而性能降低了,但效果质量提高了。缺省时,使用的是无穷远视点。 glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_TRUE);//将视点设置为局部视点glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_FALSE);//(包括其正面和背面)进行的。而一般情况下,只设置正面光照条件,而忽略背面。但有时候需要看到物体内侧的光照效果,这就需要用到双面光照。glLightModeli(LIGHT_MODEL_TWO_SIDE,GL_TRUE);//启用双面光照glLightModeli(LIGHT_MODEL_TWO_SIDE,GL_FALSE);//,离光源越远则光强越小。环境光、漫反射光和镜面光的强度都衰减,辐射光和全局环境光的强度不衰减。 方向光源是无穷远光源,因此距离对光强没有影响,所以方向光没有衰减,但位置光则有衰减。OpenGL是通过光源光强乘以衰减系数来计算衰减光照的。衰减系数=1/(Kc+Kl*d+Kq*d*d)d=光源位置到物体顶点的距离