视图、模型、投影、视口变换
来源:互联网 发布:ubuntu 修改时间 编辑:程序博客网 时间:2024/05/17 09:29
1、(1)视图变换:对象是照相机
glLookAt()函数指定视图变换,即设置视点
gluLookAt(GLdoble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);
它共接受三对坐标,
分别为eye,center,up
故名思义,eye表示我们眼睛在"世界坐标系"中的位置(即观察点),
center表示眼睛"看"的那个点的坐标,
最后那个up坐标表示观察者本身的方向,如果将观察点比喻成我们的眼睛,那么这个up则表示我们是正立还是倒立异或某一个角度在看,所看的影像大不相同,故此时需要指明我们现在正立,那么X,Z轴为0,Y轴为正即可,通常将其设置为1,只要表示一个向上的向量(方向)即可
默认情况下:glLookAt(0,0,0,0,0,-1,0,1,0)
1、(2)模型变换:对象是所绘制的物体
设置模型位置和方向,包括glTranslate*(),glRotate*(),glScale*()等
通常把模型变换和试图变换组合成模型视图矩阵,二者结合起来考虑
使用前先指定模型视图矩阵为当前矩阵:glMatrixMode(GL_MODELVIEW)
2、(1)投影变换:对象是场景,设置物体如何映射到计算机屏幕
为相机选择镜头,目的是确定视野(视景体),进而确定哪些物体位于视野之内以及他们能够被看到的程度;
与视口变换共同决定场景是如何被映射到计算机屏幕的;
透视投影:
创建沿视线方向同时对称于x,y轴的平截头体:glPerspective(yz平面上视野的角度,平截头体的纵横比:w/h,观察点与近侧面的距离,观察点距远侧面的距离)
正投影:
创建正交平行的视景体:glOrtho(left,right,bottom,top,near,far)(near和far的设置与观察点的位置有关)(观察点是由glLookAt()设置的)
若没有其他变换,投影的方向与z轴平行,观察点方向朝向z轴负向
二维图像投影:glOrtho(left,right,bottom,top)
2、(2)视口变换:对象是场景,设定相片的大小,是变换的最后一步
默认视口占据整个窗口的像素矩形,可以通过设置对窗口进行分割
glViewport(x,y,width,height)
窗口大小变化并不会自动影响视口的大小,所以要根据窗口变化手动设置视口变化
一般情况下这几个变换的调用顺序为:
先对物体进行设置,即视图变换(LookAt)和模型变换(translate/scale...)结合
然后对场景显示进行设置,即投影变换(glPerspective/glOrtho)和视口变换(glViewport)结合
- 视图、模型、投影、视口变换
- 关于OpenGL中模型视图投影视口变换的理解
- 视图变换和模型变换/投影变换/视口变换
- 3D变换:模型,视图,投影与Viewport[Matrix]
- 3D变换:模型,视图,投影与Viewport
- OpenGL 入门教程 模型视图投影矩阵 变换光线
- OpenGL模型视图变换,投影变换及视口变换
- OpenGL模型视图变换、投影变换、视口变换
- OpenGL模型视图变换、投影变换、视口变换
- OpenGL模型视图变换、投影变换、视口变换
- OpenGL模型视图变换、投影变换、视口变换
- OpenGL 模型视图变换、投影变换、视口变换
- OpenGL模型视图变换、投影变换、视口变换
- OpenGL模型视图变换、投影变换、视口变换总结
- OpenGL--3D世界(视图变换,模型变换,投影变换,视口变换)
- OpenGl学习笔记3之模型变换、视图变换、投影变换、视口变换介绍
- OpenGL中glMatrixMode()函数以及视图变换,模型变换,投影变换,视口变换的理解
- 5.OpenGL--3D世界(视图变换,模型变换,投影变换,视口变换)
- http://poj.org/problem?id=3370
- 纪念
- 给MATLAB初学者的建议
- [转]爆笑程序员的笑话集锦
- 【Java EE】get和post请求的编码过程
- 视图、模型、投影、视口变换
- 美化ListView的尝试
- git命令快速参考
- 新时尚Windows8开发(22):ListBox与ComboBox
- PyQt QTableView嵌入QCheckBox
- Android 最新源码下载具体步骤
- 19个Web开发者必务速查表
- Linux shell脚本编写基础
- 软件工程师所需掌握的“终极技术”是什么?