void gluPerspective( GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar ) near 和 far 决定了投影参考点与裁剪窗口的距离,fovy决定了裁剪窗口的高度,还有个参数 aspect 确定了裁剪窗口的长宽比例. 所以fovy越大,裁剪窗口越大,相对的裁剪窗口中的物体就越小. void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdoub…
函数原型void gluLookAt(GLdoble eyex, GLdouble eyey, GLdouble eyez,  GLdouble centerx, GLdouble centery,  GLdouble centerz,  GLdouble upx, GLdouble upy, GLdouble upz); void gluPerspective(GLdouble fovy, GLdouble aspect,   GLdouble zNear, GLdouble zFar) 看了…
glOrtho是创建一个正交平行的视景体. 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况.比如,常用的工程中的制图等.需要比较精确的显示. 而作为它的对立情况, glFrustum则产生一个透视投影.这是一种模拟真是生活中,人们视野观测物体的真实情况.例如:观察两条平行的火车到,在过了很远之后,这两条铁轨是会相交于一处的.还有,离眼睛近的物体看起来大一些,远的物体看起来小一些. glOrtho(left, right, bottom, top, near, far), left表示视景…
视图变换在opengl中,视图变换的输入是:(1)眼睛位置(或者说相机位置)eys:(2)眼睛朝向的中心center,(就是眼睛朝哪里看);(3)头的方向up.任何一点经过视图变换后都会转化到眼睛坐标系下.具体地说,眼睛坐标系的三个轴分别是:(1)z轴: F=center-eye;(要归一化)(2)x轴: S=cross(F,up);(这里是叉乘,也要归一化)(3)y轴: U=cross(S,F).此时,eye的位置就是原点了.那么对于任意一点P(px,py,pz),在新坐标下的三个点分别是:p…
函数原型void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) 首先得设置gluPerspective,来看看它的参数都表示什么意思fovy, 这个最难理解,我的理解是,眼睛睁开的角度,即,视角的大小,如果设置为0,相当你闭上眼睛了,所以什么也看不到,如果为180,那么可以认为你的视界很广阔,aspect, 这个好理解,就是实际窗口的纵横比,即x/yzNear, 这个呢,表示你近处,的裁…
产生目标场景的过程类似于用照相机进行拍照: (1) 把照相机固定在三角架上,并让他对准场景从不同位置观察场景(视图变换) gluLookAt (2) 对场景进行安排,使各个物体在照片中的位置是我们所希望的 移动,旋转或者放大缩小场景中的物体(模型变换) glTranslate* ,glRotate* ,glScale* (3) 选择照相机镜头,并调整放大倍数(调焦) 显示物体时,可以选择物体是如何投影到屏幕上(投影变换) glFrustum , gluPerspective , glOrtho…
OpenGl And 视图 标签(空格分隔): game 简介 本文主要介绍坐标系的观念, 以及在openGL中的视图及其相关的变换. 大纲 视图.模型.投影变换概念 Opengl中对各种变换的支持 视图变换 在一个三维坐标系中, 一个模型的展示并不只有一个视图就可以了.而是存在视图变换,投影变换,模型变换的过程. 顶点坐标--->(模型视图矩阵)---->视觉坐标--->(投影矩阵)---->裁剪坐标---->(透视坐标)---->规范化设备坐标---->视口变…
前面两节内容已经说完了所有的三种变换.也就是说我们现在程序里面既不需要glLookAt(),也不需要gluPerspective(),这些矩阵我们都可以自己写.然后,再用glMultMatrix()来调用这些矩阵,注意一点就是OpenGL是左乘,前面给出的矩阵都是右乘矩阵,所以调用的时候需要转置,摆放的位置也要注意.当然,如果用shader的话,这些函数也就用不到了,矩阵顺序也可以自己定义.这里所有的变换都是作用在顶点(Vertex)上的,但是还有一类数据需要进行变换,那就是顶点法线.我们在计算…
把物体从世界坐标系转化到视点坐标系的矩阵称为视图矩阵. 下面我们先看下opengl视图矩阵的推导过程: 假设视点或camera的局部坐标系为UVN,UVN分别指向右方.上方和后方从而构成右手坐标系,视点则处于局部坐标系的原点位置. 就如opengl的函数OpenGL的gluLookAt(eyex, eyey, eyez, lookatx, lookaty, lookatz, upx, upy, upz)一样,给定视点.观察点.以及up向量,现在我们来求得视图矩阵. 1.首先我们来求得N = ey…
参考文章 GL学习笔记(2) - 终于搞明白gluPerspective和gluLookAt的关系了(zz) gluPerspective的具体含义 解密--神秘的gluPerspective 函数原型 gluLookAt(GLdoble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz); gluPe…