免费预览已结束,剩余31页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章OpenGL照相机模型及变换 照相机模型模型视变换 Model viewingTransformation 投影变换 ProjectionTransformation 视口变换 ViewportTransformation 矩阵操作 MatrixOperation 矩阵堆栈 MatrixStack 例子 Sample 照相机模型 设置三角架的位置和方向摆放物体调焦或更换镜头按快门洗照片 照相机 模型 视见体 视变换设置三角架的位置和方向模型变换摆放物体投影变换调焦或更换镜头后按快门视口变换洗照片注意 人眼和相机镜头的视见体是圆锥形的 OpenGL中用的是棱台 照相机模型和变换的关系 坐标系和变换 绘制图形的步骤定义几何体 世界或物体坐标系 定义视点的位置 建立视坐标系进行投影变换 得到规范化的窗口坐标映射到视口 得到屏幕坐标每一步都用不同的变换阵 x y 世界坐标系 右手系 z 顶点 模型 视变换阵 投影变换阵 透视规范化 视口变换阵 Modelview Modelview Projection lll object eye clip NormalizedDeviceCoord window 变换流水线 模型 视变换阵 投影变换阵 PerspectiveDivision ViewportT 变换流水线 cont 变换流水线 cont 3D变换 每个顶点都是用齐次坐标表示的列向量v Mvw常取1 0 3D变换 cont 一个顶点和4x4的矩阵相乘完成一次变换矩阵采用后乘方式 相乘后可完成多个变换 M1M2M3OpenGL中的矩阵是按列存储的 指定变换阵的方式 两种方式直接指定矩阵 glLoadMatrix glMultMatrix 指定操作 glRotate glTranslate glOrtho 其他函数 glLoadIdentity glMatrixMode mode GL MODELVIEW GL PROJECTIONetc 指定变换阵 con 载入矩阵glLoadMatrix M 16 以列为主 M 矩阵相乘glMultMatrix M 16 C CM指定旋转阵glRotatef x y z 指定变换阵 con 指定平移阵glTranslatef x y z 指定缩放阵glScalef x y z 例子 voidCALLBACKmyReshape GLsizeiw GLsizeih 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 voidCALLBACKdisplay 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 NMLvglMultMatrixf L glBegin GL POINTS v LMNvglVertex3f v glEnd 和模型 视变换阵有关的函数 glRotatef x y z glTranslatef x y z glScalef x y z gluLookAt eyex eyey eyez aimx aimy aimz upx upy upz 模型 视变换的演示 投影变换 视见体透视投影函数gluPerspective fovy aspect zNear zFar glFrustum left right bottom top zNear zFar 正交平行投影glOrtho left right bottom top zNear zFar gluOrtho2D left right bottom top 正投影 正投影glMatrixMode GL PROJECTION glLoadIdentity glOrtho left right bottom top zNear zFar 透视投影变换 cont glMatrixMode GL PROJECTION glLoadIdentity gluPerspective 65 0 GLfloat w GLfloat h 1 0 20 0 透视投影变换 cont glFrustum left right bottom top zNear zFar t b near far 透视投影变换 cont gluPerspective fovy aspect zNear zFar 2tg 1 h 2 near w h far near 例子 voidresize intw inth 设置视口变换glViewport 0 0 w h 设置投影变换glMatrixMode GL PROJECTION glLoadIdentity gluPerspective 65 0 w h 1 0 100 0 设置模型视变换glMatrixMode GL MODELVIEW glLoadIdentity gluLookAt 0 0 0 0 5 0 0 0 0 0 0 0 0 0 1 0 0 0 glTranslatef 0 0 0 0 5 0 效果gluLookAt 正投影的例子 voidresize intwidth intheight GLdoubleaspect width height GLdoubleleft 2 5 right 2 5 GLdoublebottom 2 5 top 2 5 glViewport 0 0 w h glMatrixMode GL PROJECTION glLoadIdentity continued 正投影的例子 cont if aspect 1 0 left aspect right aspect else bottom aspect top aspect glOrtho left right bottom top near far glMatrixMode GL MODELVIEW glLoadIdentity 投影变换演示 立体显示的原理 视差 Parallax 正视差 负视差 零视差 活动坐标系和固定坐标系 从下往上看代码 采用固定坐标系方式从上往下看代码 采用活动坐标系方式如 画个箭头 然后让箭头先绕Z轴旋转90度 再沿X轴平移10米 glTranslatef 10 0 0 0 0 0 glRotatef 90 0 0 0 1 glBegin GL POLYGON DrawArrow glEnd 矩阵堆栈 组合变换 例1 画汽车例2 太阳系星体的显示例3 级联的物体 如 机械手等 矩阵堆栈 cont 32个4x4模型视变换堆栈2个4x4投影堆栈glPushMatrix 记住原来的位置glPopMatrix 回到原来的位置 例1 画汽车 DrawCarBody glPushMatrix 记住车身的位置glTranslatef 40 0 30 drawFirstWheel 画右前车轮glPopMatrix 回到车身的位置glPushMatrix 记住车身的位置glTranslatef 40 0 30 drawSecondWheel 画右后车轮glPopMatrix 回到车身的位置 例2 太阳系1 auxSolidSphere 0 8 sunglPushMatrix glRotatef GLfloat year 0 0 1 0 0 0 glTranslatef 2 5 0 0 0 0 glRotatef GLfloat day 0 0 1 0 0 0 auxSolidSphere 0 1 earthglPopMatrix glPushMatrix glRotatef GLfloat year 0 0 1 0 0 0 glTranslatef 0 5 0 0 0 0 glRotatef GLfloat day 0 0 1 0 0 0 auxSolidSphere 0 05 MarsglPopMatrix 例2 太阳系2 auxSolidSphere 0 8 sunglPushMatrix glRotatef GLfloat year 0 0 1 0 0 0 glTranslatef 2 5 0 0 0 0 glRotatef GLfloat day 0 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 协作机器人人机协作培训(课件)
- 河流廊道生态修复工程
- 数字媒体的安全加密技术
- 小商品采购合同协议
- 店铺无偿转让协议书
- 法院起草赔偿协议书
- 工程工地股东协议书
- 帕加尼购销合同范本
- 灯具安装劳务协议书
- 广告衫订购合同范本
- 2025重庆水务环境控股集团管网有限公司招聘20人笔试考试参考试题及答案解析
- 七年级上册语文期中常考作文押题+范文
- 膏药的营销方案
- 广东省佛山市三水区2024-2025学年七年级上学期语文期末考试试卷(含答案)
- 2025年古玩艺术品委托拍卖协议
- 2025课堂惩罚 主题班会:马达加斯加企鹅课堂惩罚 课件
- 2025医师定期考核题库中医真题及答案
- 2025年郑州巩义市金桥融资担保有限公司公开招聘3名考试笔试参考题库附答案解析
- 2025甘肃庆阳市林业和草原局招聘专职聘用制护林员92人笔试考试备考题库及答案解析
- 2026年1月云南省普通高中学业水平合格性考试语文仿真模拟卷01(春季高考适用)(考试版)
- 农村经济统计培训
评论
0/150
提交评论