05OpenglPrograming-4CG综述.pptxVIP

  • 5
  • 0
  • 约4.17千字
  • 约 44页
  • 2017-04-08 发布于湖北
  • 举报
05OpenglPrograming-4CG综述

OPENGL编程基础-4 主讲人:张慧杰 Email: zhanghj167@nenu.edu.cn 本章内容 模型变换 视点变换 投影变换 视口变换 操纵矩阵堆栈 OpenGL中的变换负责完成图形绘制管线的几何阶段。 各种变换概述 相机类比 各种变换概述 各种变换的效果都是以矩阵的形式存储的 两个矩阵相关的函数 glMatrixMode(…); glLoadIdentity(…); 设置矩阵模式 void glMatrixMode(GLenum mode); 功能: 设置当前矩阵模式 参数: mode:设置矩阵模式 返回值:无 备注: mode可取以下值: GL_MODELVIEW //设置当前矩阵为模型视点矩阵 GL_PROJECTION //设置当前矩阵为投影矩阵 GL_TEXTURE //设置当前矩阵为纹理矩阵 单位化矩阵 void glLoadIdentity(void) 功能: 单位化当前矩阵 参数:无 返回值:无 备注: 一般用作清除所有变换的效果 内容进度 模型变换 视点变换 投影变换 视口变换 操纵矩阵堆栈 模型变换 相当于设置模型的位置和方向 有三个可以进行模型变换的函数 glTranslatef //平移 glRotatef //旋转 glScalef //缩放 进行模型变换前,需要将当前矩阵设置为模型视点矩阵 即,glMatrixMode(GL_MODELVIEW); 平移 物体位置的变化 平移 void glTranslatef(GLfloat x, GLfloat y, GLfloat z) 功能: 场景平移 参数: x: X轴方向平移的距离 y: Y轴方向平移的距离 z: Z轴方向平移的距离 返回值:无 备注:无 旋转 物体姿态的变化 旋转 void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) 功能: 场景旋转 参数: angle: 旋转的角度 x,y,z: 用于指定旋转轴 返回值:无 备注: 绕原点(0,0,0)到(x,y,z)的直线逆时针旋转angle个角度 缩放 物体大小的变化 缩放 void glScalef(GLfloat x, GLfloat y, GLfloat z) 功能: 场景缩放 参数: x: X轴方向的缩放因子 y: Y轴方向的缩放因子 z: Z轴方向的缩放因子 返回值:无 备注:无 模型变换顺序 注意:应该以相反的顺序指定变换矩阵 glTranslatef(…); glRotatef(…); glBegin(…); …… …… glRotatef(…); glTranslatef(…); glBegin(…); …… …… 练习 简单行星模拟(Planet) 内容进度 模型变换 视点变换 投影变换 视口变换 操纵矩阵堆栈 视点变换 相当于改变相机位置和方向 进行视点变换的函数 gluLookAt(…); 进行视点变换前,需要将当前矩阵设置为模型视点矩阵 即,glMatrixMode(GL_MODELVIEW); 视点变换函数 gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz); 功能: 设置相机位置和方向 参数 eyex, eyey, eyez:相机(视点)的位置 centerx, centery, centerz:相机的朝向 upx, upy, upz:相机向上的向量(控制相机姿态) 视点变换函数 返回值:无 备注: 若将upy传入负值,则 会得到颠倒的图像 修改upz的值,通常不会影响到显示效果 内容进度 模型变换 视点变换 投影变换 视口变换 操纵矩阵堆栈 投影变换 相当于设置相机镜头,可以指定视景体 视景体:拍照时相机镜头可见的部分 两种投影方式 平行投影(正交投影,物体离相机的远近不会影响物体的大小) 透视投影(近大远小) 设置视景体的函数 glOrtho(…) //平行投影 gluOrtho2D(…) //平行投影 glFrustum(…) //透视投影 gluPerspective(…) //透视投影 进行投影变换前,需要将当前矩阵设置为投影矩阵 即,glMatrixMode(GL_PROJECTION); 平行投影函数 void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near,

文档评论(0)

1亿VIP精品文档

相关文档