OpenGL的视图变换、模型变换、投影变换、视口变换

产生目标场景的过程类似于用照相机进行拍照:

(1) 把照相机固定在三角架上,并让他对准场景从不同位置观察场景(视图变换)

gluLookAt

(2) 对场景进行安排,使各个物体在照片中的位置是我们所希望的 移动,旋转或者放大缩小场景中的物体(模型变换)

glTranslate* ,glRotate* ,glScale*

(3) 选择照相机镜头,并调整放大倍数(调焦) 显示物体时,可以选择物体是如何投影到屏幕上(投影变换)

glFrustum , gluPerspective , glOrtho

(4) 确定照片的大小,放大照片还是缩小照片 把图形画下来,是要占据整个屏幕还是屏幕的一部分(视口变换)

glViewPort

注意:视图变换必须出现在模型变换之前, 但可以在绘图之前的任何时候执行投影 变换和视口变换,

如果OpenGL中不设置模型,投影,视口,所绘制的几何图形的坐标只能是-1到1(X轴向右,Y轴向上,Z轴垂直屏幕)。

默认为视图模型变化 glMatrixMode(GL_MODELVIEW);

默认投影变换为 glOrtho

时间: 2024-09-29 02:43:11

OpenGL的视图变换、模型变换、投影变换、视口变换的相关文章

OpenGl学习笔记3之模型变换、视图变换、投影变换、视口变换介绍

模型变换.视图变换.投影变换.视口变换介绍 opengl中存在四种变换,分别是模型变换,视图变换,投影变换,视口变换.这四种变换是图形渲染的基本操作,实质上这四种变换都是由矩阵乘法表示(这些操作都是由一个4*4的矩阵来完成的),通过变换,我们可以看到各种通的显示效果,最简单的效果就是让图元沿着某个方向变换(放大,缩小,翻转等)或者对所要显示的图元进行裁剪.接下来我们就详细介绍这四种变换以及相互之间的联系. 我们要在屏幕上显示一个具有三维坐标的物体,大致需要以下步骤: 1.     进行模型,视图

清华版CG 实验5 OpenGL模型视图变换

1.实验目的: 理解掌握OpenGL程序的模型视图变换. 2.实验内容: (1)阅读实验原理,运行示范实验代码,理解掌握OpenGL程序的模型视图变换: (2)根据示范代码,尝试完成实验作业: 3.实验原理: 在OpenGL程序中,视图变换必须出现在模型变换之前,但可以在绘图之前的任何时候执行投影变换和视口变换. 1.在指定的视图变换之前,应该使用glLoadIdentity()函数把当前矩阵设置为单位矩阵. 2.在载入单位矩阵之后,使用gluLookAt()函数指定视图变换.如果程序没有调用g

OpenGL的视图变换与OSG漫游器

在OpenGL固定管线内容中有一个过程是进行视图变换,主要目的是将世界坐标变换到相机坐标空间中,OpenGL的视图变换所处的位置如下图所示: 在OSG中通过重写漫游器的时候需要实现的4个虚函数与这个变换是一致的(详细参考另一篇文章  <osg中漫游器的原理(一)>) 相机视图变换 在OpenGL中初始位置场景的世界坐标与相机坐标是在一起的,视点的方向是Z轴的负方向, 相机位置经过变换之后可以处于世界坐标系中的任何位置,可以通过两个变换:旋转和平移将相机移动到场景中的任意位置,如下图所示: 在O

SharpGL学习笔记(五) 视口变换

视口变换主是将视景体内投影的物体显示到二维的视口平面上. 在计算机图形学中,它的定义是将经过几何变换, 投影变换和裁剪变换后的物体显示于屏幕指定区域内. 前面我们讨论过的透视投影, 正射投影, 它们都会产生一个视景体, 利用Viewport()函数, 就可以把这些视景体内投影的物体显示到屏幕指定的区域内. 默认情况下, 视口就是你用来绘制3D图像的整个矩形区域. Viewport的原型是:  Viewport(int x, int y, int width, int height) 我们来用示意

OpenGl And 视图

OpenGl And 视图 标签(空格分隔): game 简介 本文主要介绍坐标系的观念, 以及在openGL中的视图及其相关的变换. 大纲 视图.模型.投影变换概念 Opengl中对各种变换的支持 视图变换 在一个三维坐标系中, 一个模型的展示并不只有一个视图就可以了.而是存在视图变换,投影变换,模型变换的过程. 顶点坐标--->(模型视图矩阵)---->视觉坐标--->(投影矩阵)---->裁剪坐标---->(透视坐标)---->规范化设备坐标---->视口变

视图和模型变换

视图变换,是指变换照相机的位置,角度. 模型变换,是指变换被照物体的位置,角度. 这两个变换,都会影响最终图形中,物体的位置,角度.而这两个变换,可以达到相同的效果.比如,你想要一个倒着的水杯图形,可以把你自己倒立,这样看到的水杯就是倒立的了.或者把水杯倒立,自己直立,也能看到倒立的水杯. 如图所示,这两种变换,可以看做达到目的的不同途径.甚至可以同时使用视图变换和模型变换,只要最终拿到了我们想要的图像就可以了.至于使用的是视图变换,还是模型变换,看我们理解问题的角度. 3.2.1 对变换进行思

理解离散傅立叶变换(一. 傅立叶变换的由来)

理解离散傅立叶变换(一) ------傅立叶变换的由来 关于傅立叶变换,不管是书本还是在网上可以非常easy找到关于傅立叶变换的描写叙述,可是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人非常难可以从感性上得到理解,近期,我偶尔从网上看到一个关于数字信号处理的电子书籍,是一个叫Steven W. Smith, Ph.D.外国人写的,写得非常浅显,里面有七章由浅入深地专门讲述关于离散信号的傅立叶变换,尽管是英文文档,我还是硬着头皮看完了有关傅立叶变换的有关内容,看了

VC++环境下单文档SDI与OpenGL多视图分割窗口的实现-类似3DMAX的主界面

本文主要讲述如何在VC++环境下实现单文档SDI与OpenGL多视图分割窗口,最终的界面类似3DMAX的主界面.首先给出我实现的效果图: 整个实现过程网络上有很多零散的博文,请各位自行搜索,在基于对话框.单文档或多文档下实现多视图分割窗口的原理是一致的.本文检索了众多相关论文,发现了几篇写的非常细致的论文.在此向相关作者表示感谢.下面给出龚勋的论文原文,大家可以仔细阅读和学习.相信一定能够做出来想要的效果的.但是文中对于全局变量的定义和初始化在VC++2015环境下编译不通过.经过排查,发现这些

【数字图像处理】顶帽变换和底帽变换

文章链接:http://blog.csdn.net/kk55guang2/article/details/78490069 顶帽变换和底帽变换 灰度级图像 f 的顶帽变换(top-hat transformation)定义为f减去其开操作: That(f)=f−(f°b) 类似地,f 的底帽变换(bottom-hat transformation)定义为f的闭操作减去f: Bhat(f)=(f?b)−f   这两个变换的主要应用之一是,用一个结构元通过开操作或闭操作从一副图像中删除物体,而不是拟