OpenGL的glOrthoglFrustum直观解释.doc_第1页
OpenGL的glOrthoglFrustum直观解释.doc_第2页
OpenGL的glOrthoglFrustum直观解释.doc_第3页
OpenGL的glOrthoglFrustum直观解释.doc_第4页
OpenGL的glOrthoglFrustum直观解释.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OpenGL的glOrtho glFrustum直观解释2011-04-20 06:48:51|分类:默认分类|标签:glfrustumopengl|字号订阅glOrtho :正交投影,摄像机可以位于裁剪体内,所以near和far可以取两个正值或者一正一负glFrustum :透视投影,摄像机不可以位于裁剪体内,所以near和far都必须去正值,它的参数矩阵定义了才简体以及投影的类型,但是未定义摄像机的方位。GL 中的摄像机位于原点,并指向了Z轴的负方向。函数glFrustum只是修改了摄像机的 透镜,并非位置,为了改变位置或者朝向可以借助于模型视图矩阵相对于摄像机移动场景中的对象,或者通过GL变换,或者用函数gluLookAt().以为glFrustum对参数far和near非常敏感,修改near和far则远景可能就影响很大,所以常用于观察近景。 glPerspective:也是用于透视投影,功能和glFrustum非常相似,参数不一样。相对于glFrustum来说不常用。 void glPerspective(GLdouble fov, GLdouble aspect, GLdouble near, GLdouble far) fov是依据y方向的视角,aspect是近裁剪面的纵横比,当然远裁剪面也取这个值,near和far的意义和上面的一样。 透视投影的一个问题就是深度精度的损失,在显示设备中该问题很明显。问题出在深度缓存中深度的限制以及由透视投影引起的非线性比例变换。当近裁剪面非常靠近投影中心的时候,误差就非常大。OpenGL 关于视景台gluPerpective,glFrustum的理解作者:华文广 -感谢高手花时间给我们讲解!很多刚学OpenGL的朋友,都会对视景台的定义有很大的迷惑,这里以我的经验来解释一下,希望对大家有所帮助,void glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);在这个函数中,有六下参数,这六个参数,都不是真实的世界坐标(虽然有些书上说它们是坐标),而指的是到眼睛的平面距离,left,right分别指的是左右截面到眼睛(在XY平面上)的距离,这两个数不必一定要对称,甚至两个都可以大于或小于0; 对称|-| eye|-| left(-1.0) right(1.0)= 不对称|-|eye|-| left(1.0) right(2.0)视景体默认情况下,眼睛位置是在坐标原点(0.0f,0.0f,0.0f)处,视线指向Z轴的负向。如果是这种情况,上图中的left,right的值,就刚好是与它们的世界坐标一一对应的。top和bottom也同样理解。一种理解方式是这样:眼睛是位于坐标原点,是逆着Z轴向屏幕里看的;gluPerpective,glFrustum函数的zNear, zFar都是相对眼睛的距离,其各自的负值为相对于坐标系原点的坐标值;每个画的物体,其中心最开始都是位于坐标系的原点的,通过glTranslate, glRotate函数,把物体移动到视景中,这样物体才可以被看得见;但是事实上,眼睛可以是任何位置,视线也可以不平行于Z轴,这种情况情下,left,right,top,bottom,near,far,它们指的就只是到眼睛的平面距离,与坐标没有一一对应的关系。好像越说越复杂了。呵呵。=你可以这样想:在眼睛前面有一个视景台,这个台体并不是固定的,而是随着你视线的转动而转动,也就是说,视景台的正面和底面始终与视线垂直。那么,当你的眼睛是在(0,0,0)处,视线是指向Z的负向时,视景台的近面(0.3)和远面(0.7)所对应的坐标,就是(-0.3,-0.7)code|Y (0.3) (0.7)| |0.0 | -0.3 |-0.7*eye-|-|- -Z| | | |/code再举个例子,如下图,眼睛在0.1处,视线指向X轴正向,那么视景台也在X轴正向上,近面对应的坐标是0.4,远面对应的坐标是0.8code|Y (0.3) (0.7)| |0.0 0.1 | 0.4 |0.8-eye *-|-|-X| | | |/code另外一种理解方式是这样的:物体在空间中者有着其固定的位置。物体不被移动,我们可以通过调整眼睛的位置,和视线的方向,来观看空间中的所有物体。=其实这是一个非常主观性的问题,主要是看你如何去看待。也就是说,我们可以设想眼睛不动,只移动空间中的物体。但是我们也可以设想坐标系中的物体不动,我们只移动眼睛,动作是相对的,但效果是一样的对于3DMAX这样的绘图软件就是一种眼睛不动的做法。但对于游戏,地形漫游之类的软件,则是采用,物体不动,只移动眼睛位置的方法。来模拟一个人在地形上走动=前面我们说过,视景台是可以不对称的(这个特性有一些高级应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论