计算机图形学CG11精要.ppt

计算机图形学CG11精要

* 11.3 纹理映射 void main(void) { glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB| GLUT_DEPTH); glutInitWindowSize (250, 250); glutInitWindowPosition (300, 300); glutCreateWindow (“TextureMapping); myinit(); glutReshapeFunc (myReshape); glutDisplayFunc(display); glutMainLoop(); } * 第11章 真实感图形的绘制 简单光照模型 多边形绘制方法 纹理映射 阴影 * 11.4 阴影 阴影(Shadow) 光源不能直接照射到的区域 特点 位于阴影区域中的物体表面被位于它和光源间的物体所遮挡 对光源而言,不可见面即是位于阴影中的物体表面 生成算法 与消隐算法本质上一致 * 11.4 阴影 具有阴影效果的光照模型 光源对位于阴影中的点的亮度(颜色)没有贡献 模型 (1)多光源 (2)颜色分量 * 11.4 阴影 Z缓冲器阴影算法 步骤 (1)将图形变换到以光源为原点的 坐标系,利用Z缓冲器消隐算法 按光线方向对图形消隐,把距 光源最近的物体表面上点的深度值保存在Z缓冲器中(称为阴影缓冲器) (2)利用Z缓冲器消隐算法按视线方向对图形消隐,将得到的每个可见点变换到第 i 个光源的坐标系中,若它在光源坐标系中的深度值小于阴影缓冲器中相应单元的值,则该可见点位于阴影中(Si=0),否则( Si =1),再用光照模型计算颜色 特点:算法简单,计算量小,能处理复杂景物; 缺点是每个光源需要1个Z缓冲器,需要的存储空间大 * 小结 光照模型 环境光、漫反射光和镜面反射光 光照模型方程 多边形绘制 颜色插值和法向插值 纹理映射 基本概念及一般曲面映射关系 阴影 基于Z缓冲消隐的实现算法 * 11.1 简单光照模型 void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glTranslated (-3.0, -3.0, 3.0);//光源1位置 glDisable (GL_LIGHTING); glColor3f (1.0, 0.0, 0.0); auxWireCube (0.1);//绘制光源1 glEnable (GL_LIGHTING); glPopMatrix (); auxSolidSphere(2.0); glFlush(); } * 11.1 简单光照模型 void myReshape(GLsizei w, GLsizei h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w = h) glOrtho (-5.5, 5.5, -5.5*(GLfloat)h/(GLfloat)w, 5.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); else glOrtho (-5.5*(GLfloat)w/(GLfloat)h, 5.5*(GLfloat)w/(GLfloat)h, -5.5, 5.5, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void main(void) { glutInitDisplayMode (GLUT_SINGLE GLUT_RGBA); glutInitWindowSize (250, 250); glutInitWindowPosition (300, 300); glutCreateWindow (Multi_lights); myinit(); glutReshapeFunc (myReshape); glutDisplayFunc(display); glutMainLoop(); } * 第11章 真实感图形的绘制 简单光照模型 多边形绘制方法 纹理映射 阴影 * 11.2 多边形绘制方法 11.2.1

文档评论(0)

1亿VIP精品文档

相关文档