《光线跟踪算法》PPT课件.ppt
《《光线跟踪算法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《光线跟踪算法》PPT课件.ppt(38页珍藏版)》请在三一办公上搜索。
1、光线跟踪算法,主要内容:一、实验设计二、静止多光源实现三、材料属性对光照效果的影响四、移动光源的实现,实验设计,问题一、影响光照效果的因素?问题二、OPENGL光线跟踪函数的函数?问题三、光线跟踪实现的基本步骤?,一、OPENGL中影响光照效果的因素?,1、光源光的种类:环境光:light_ambient 散射光:light_diffuse 镜面光:light_specular光源的分类:方向性光源:无限远,所有光线是平行的位置性光源:位置决定场景中的效果区别:GLfloat light_position 中的第四个参数,2、材料属性材料的环境颜色:GL_AMBIENT材料的散射颜色:GL_D
2、IFFUSE材料的镜面颜色:GL_SPECULAR 材料的镜面指数:GL_SHININESS材料的发射颜色:GL_EMISSION,问题二、OPENGL光线跟踪函数的函数?,光源:void glLightif(GLenum light,GLenum pname,TYPEparam);void glLightifv(GLenum light,GLenum pname,TYPE*param);Light:指定光源 pname:光源属性 param:属性值材料属性:void glMaterialif(GLenum face,GLenum pname,TYPEparam);void glMateria
3、lifv(GLenum face,GLenum pname,TYPE*param);Face:那个面受光照 pname:光源属性 param:属性值,问题三、光线跟踪实现的基本步骤?,一、创建光源二、选择光照模型三、定义材料属性有了这些知识,我们就可以进行第一个简单的多光源实验。,静止多光源实现,自己的工作:按照光线跟踪实现的步骤进行。设置光源参数,衰减因子,聚光灯参数,材料属性参数,调用glLightfv,glMaterialfv,glEnable等函数进行设置。已有的:实现静态光源显示void reshape(int w,int h)void display(void),创建光源1、设置光
4、源参数方向性光源,环境光颜色为蓝色GLfloat light_ambient=0.0,0.0,1.0,1.0;GLfloat light_diffuse=1.0,1.0,1.0,1.0;GLfloat light_specular=1.0,1.0,1.0,1.0;GLfloat light_position=1.0,1.0,1.0,0.0;位置性光源,环境光和散射光颜色为红色GLfloat light1_ambient=1.0,0.0,0.0,1.0;GLfloat light1_diffuse=1.0,0.0,0.0,1.0;GLfloat light1_specular=1.0,1.0,1
5、.0,1.0;GLfloat light1_position=0.0,2.0,2.0,1.0;,2、衰减因子定义衰减因子目的:增强真实效果glLightf(GL_LIGHT0,GL_CONSTANT_ATTENUATION,2.0);glLightf(GL_LIGHT0,GL_LINEAR_ATTENUATION,1.0);glLightf(GL_LIGHT0,GL_QUADRATIC_ATTENUATION,0.5);glLightf(GL_LIGHT1,GL_CONSTANT_ATTENUATION,1.5);glLightf(GL_LIGHT1,GL_LINEAR_ATTENUATION
6、,0.5);glLightf(GL_LIGHT1,GL_QUADRATIC_ATTENUATION,0.2);三个参数的默认值为1,0,0,3,聚光灯参数光源LIGHT1GLfloat spot_direction=1.0,-1.0,-1.0;glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,spot_direction);glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,45.0);/默认值180glLightf(GL_LIGHT1,GL_SPOT_EXPONENT,5.0);/用于控制光的集中度,越高强度越集中,4,glLightfv的调用 gl
7、Lightfv(GL_LIGHT0,GL_AMBIENT,light_ambient);glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular);glLightfv(GL_LIGHT0,GL_POSITION,light_position);glLightfv(GL_LIGHT1,GL_AMBIENT,light1_ambient);glLightfv(GL_LIGHT1,GL_DIFFUSE,light1_diffuse);glLightfv(GL_LIGHT1,
8、GL_SPECULAR,light1_specular);glLightfv(GL_LIGHT1,GL_POSITION,light1_position);,5,glEnable的调用作用:启用光源 glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_LIGHT1);,6,光源保持静止,void reshape(int w,int h)glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if(w=h)glOrtho(-1.5,
9、1.5,1.5*(GLfloat)h/(GLfloat)w,1.5*(GLfloat)h/(GLfloat)w,-10.0,10.0);else glOrtho(-1.5*(GLfloat)w/(GLfloat)h,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5,-10.0,10.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();首先确定视口和投影矩阵,接着在模型视图矩阵中加载单位矩阵,然后再设置光源。由于使用单位阵,乘模型视图矩阵之后原来制定的光源位置并没有发生变化。,选择光照模型,静态多光源实现过程中使用默认设置:即观察者位
10、于无穷远且只有一面接受光照 glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_FALSE);,定义材料属性,材料属性值设置GLfloat mat_specular=1.0,1.0,1.0,1.0;GLfloat mat_shininess=50.0;glMaterialfv的调用glMaterialfv(GL_FRONT,GL_SPECULAR,mat_spec
11、ular);glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);,display()函数void display(void)glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);/清空缓冲区 glutSolidSphere(1.0,20,16);/画圆,半径为1.0 glFlush();/保证绘图命令被实际执行,效果展示,屏蔽位置性光源只有方向性光源,屏蔽方向性光源只有位置性光源,静止多光源,材料属性对光照效果的影响,遇到的问题:如何将不同的材料属性赋予不同的球体?,如何将不同的材料属性赋予不同的球体?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 光线跟踪算法 光线 跟踪 算法 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5628407.html