- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 OpenGL照相机模型及变换 照相机模型 模型视变换(Model-viewing Transformation) 投影变换(Projection Transformation) 视口变换( Viewport Transformation) 矩阵操作(Matrix Operation) 矩阵堆栈(Matrix Stack) 例子(Sample) 照相机模型 设置三角架的位置和方向 摆放物体 调焦或更换镜头 按快门 洗照片 照相机模型和变换的关系 视变换 设置三角架的位置和方向 模型变换 摆放物体 投影变换 调焦或更换镜头后按快门 视口变换 洗照片 注意: 人眼和相机镜头的视见体是圆锥形的, OpenGL 中用的是棱台 坐标系和变换 绘制图形的步骤 定义几何体 (世界或物体坐标系) 定义视点的位置,建立视坐标系 进行投影变换 ,得到规范化的窗口坐标 映射到视口,得到屏幕坐标 每一步都用不同的变换阵 变换流水线 变换流水线(cont.) 变换流水线(cont.) 3D 变换 每个顶点都是用齐次坐标表示的列向量 v’= Mv w 常取 1.0 3D 变换(cont.) 一个顶点和4x4的矩阵相乘完成一次变换 矩阵采用后乘方式,相乘后可完成多个变换: M1M2M3 OpenGL中的矩阵是按列存储的 指定变换阵的方式 两种方式 直接指定矩阵 (glLoadMatrix, glMultMatrix) 指定操作 (glRotate,glTranslate, glOrtho) 其他函数: glLoadIdentity() glMatrixMode(mode) GL_MODELVIEW,GL_PROJECTION etc. 指定变换阵(con.) 载入矩阵 glLoadMatrix(M[16]) (以列为主) M= 矩阵相乘 glMultMatrix(M[16]) C= C M 指定旋转阵 glRotatef(θ ,x,y,z) 指定变换阵(con.) 指定平移阵 glTranslatef(x,y,z) 指定缩放阵 glScalef(x,y,z) 例子 void CALLBACK myReshape(GLsizei w, GLsizei h) { glViewport(0, 0, w, h); //指定视口 glMatrixMode(GL_PROJECTION); glLoadIdentity(); //指定一个单位阵 gluPerspective(65.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0); //指定透视投影变换阵 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //指定一个单位阵 glTranslatef (0.0, 0.0, -15.0); //指定模型视变换阵 } 例子(cont.) void CALLBACK display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0, 1.0, 1.0); (GLfloat) shoulder=9.0; glPushMatrix(); glTranslatef (-0.5, 0.0, 0.0); glRotatef (shoulder, 1.0, 1.0, 1.0); glTranslatef (1.0, 0.0, 0.0); auxWireBox(2.0, 0.2, 0.5); glPopMatrix(); glFlush();} 模型-视变换阵 模型变换和视变换可达到同样的效果. 固定物体、移动相机 固定相机、移动物体 OpenGL 采用模型-视变换阵 模型-视变换阵(cont.) 变换阵的顺序非常重要,不能颠倒 glMatrixMode(GL_MODELVIEW); glLoadIdentitiy(); glMultMatrixf(N); glMultMatrixf(M); v’=NMLv glMultMatrixf(L); glBegin(GL_POINTS); v’=LMNv glVertex3f(v); glEnd(); 和模型-视变换阵有关的函数 glRota
文档评论(0)