OpenGL中的空间变换

         在使用OpenGL的三维虚拟程序中。当我们指定了模型的顶点之后。在屏幕上显示它们之前,一共会发生3种类型的变换:视图变换、模型变换、投影变换。

         视图变换:指定观察者(摄像机)的位置;

         模型变换:在场景中移动物体;

         投影变换:改变可视区域的大小;

         视口变换:这是一种伪变换,它对窗体上的终于输出进行缩放。

 

视觉坐标

         它表示一种虚拟的固定坐标系统,通常作为一种參考系使用。它是依据观察者(摄像机)的角度而言的,与可能发生的变换无关。

我们接下来所讨论的全部变换都是依据它们相对于视觉坐标的效果进行描写叙述的。

         用OpenGL在3D空间中进行画图时。使用的是笛卡尔坐标系统。

在不进行不论什么变换的情况下,这个坐标系统与视觉坐标系同样。

 

视图变换

         这是场景中所应用的第一个变换。它用于确定场景的观察点(拍摄点)。视图变换同意把观察点放在自己所希望的不论什么位置(观察点的位置随意)。并同意在不论什么方向上观察场景(观察点的朝向随意)。

确定视图变换就像在场景中放置照相机并让它指向某个方向。

         作为整体原则,在进行不论什么其他变换之前必须先指定视图变换。

由于视图变换的效果相当于依据视觉坐标系统来移动当前所使用的坐标系统。然后,依据最新改动的坐标系统,进行其他全部的兴许变换。

 

模型变换

         它能够移动物体。对它们进行旋转、平移或者缩放。

而且,缩放能够是非一致的(物体的各个方向依据不同的数值进行伸缩)。

         场景或物体的终于外观非常大程度上取决于模型变换的应用顺序。由于每次变换都是在上次变换运行的基础上进行的。

 

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSGFvaGFuX01lbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

 

投影变换

         它是在模型视图变换之后应用于物体的顶点之上的。它实际上定义了可视区域,并建立了裁剪平面。当中。投影又有两种不同的类型:正投影(平行投影)和透视投影。

正投影通经常使用于2D画图,此时你所须要的是像素和画图单位之间的准确相应。

透视投影则用于渲染那些包括了须要应用透视缩短的物体的场景。

而且在大多数情况下,3D图形所使用的都是透视投影。

 

 

视口变换

         终于。场景的二维投影将被映射到屏幕上的某个窗体。这样的到物理窗体坐标的映射是最后一个完毕的变换,称为视口变换。

        

         OpenGL中的空间变换。

OpenGL中的空间变换的更多相关文章

  1. 3D游戏中各种空间变换到底是怎么回事

    每一个游戏可以呈现炫丽效果的背后,需要进行一系列的复杂计算,同时也伴随着各种各样的顶点空间变换.渲染游戏的过程可以理解成是把一个个顶点经过层层处理最终转化到屏幕上的过程,本文就旨在说明,顶点是经过了哪 ...

  2. 详解OpenGL中的各种变换(投影变换,模型变换,视图变换)(完)——法线变换

    前面两节内容已经说完了所有的三种变换.也就是说我们现在程序里面既不需要glLookAt(),也不需要gluPerspective(),这些矩阵我们都可以自己写.然后,再用glMultMatrix()来 ...

  3. 【opengl】OpenGL中三维物体显示在二维屏幕上显示的变换过程

    转自:http://blog.sina.com.cn/s/blog_957b9fdb0100zesv.html 为了说明在三维物体到二维图象之间,需要经过什么样的变换,我们引入了相机(Camera)模 ...

  4. OpenGL中坐标系的理解(一)

    在OpenGL中,存在着至少存在着三种矩阵,对应着函数glMatrixMode()的三个参数:GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE. 以下主要描述GL_MODEL ...

  5. OpenGL 的空间变换(上):矩阵在空间几何中的应用

    在使用 OpenGL 的应用程序中,当我们指定了模型的顶点后,顶点依次会变换到不同的 OpenGL 空间中,最后才会被显示到屏幕上.在变换的过程中,通过使用矩阵,我们更高效地来完成这些变换工作. 本篇 ...

  6. OpenGL 的空间变换(下):空间变换

    通过本文的上篇 OpenGL 的空间变换(上):矩阵在空间几何中的应用 ,我们了解到矩阵的基础概念.并且掌握了矩阵在空间几何中的应用.接下来,我们将结合矩阵来了解 OpenGL 的空间变换. 在使用 ...

  7. OpenGL入门学习 教程 (五)三维的空间变换

    http://oulehui.blog.163.com/blog/static/796146982011924428755/ 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从 ...

  8. (转)思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,...

    转自:http://www.cnblogs.com/soroman/archive/2008/03/21/1115571.html 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用1. ...

  9. opengl中场景变换|2D与3D互转换(转)

    opengl中场景变换|2D与3D互转换 我们生活在一个三维的世界——如果要观察一个物体,我们可以: 1.从不同的位置去观察它.(视图变换) 2.移动或者旋转它,当然了,如果它只是计算机里面的物体,我 ...

随机推荐

  1. 常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)

    缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去. 常见类型包括LFU.LRU.ARC.FIFO.MRU. 最不经常使用算法(LFU): 这个缓存算法使用一个计数器来记录条目被访问的频 ...

  2. C# .NET 和.NET Framework区别

    一,C#简介 1>C#是一种面向对象的.运行于.NET Framework之上的高级程序设计语言. 2>C# 是一种简洁.类型安全的面向对象的语言,开发人员可以使用它来构建在 .NET F ...

  3. Mybatis+Springmvc+Spring整合常用的配置文件

    1.创建web项目 2.导入mabatis spring springnvc 需要的jar包 3.创建mybatis,spring,springmvc的配置文件 (1)web.xml配置文件 < ...

  4. elasticsearch Java Client用户指南

    这里使用的Java客户端版本是5.1.2,Elasticsearch的版本号也要是5.1.2,否则一些功能可能不支持. 之前介绍过Spring Data Elasticsearch,那里也是使用了本文 ...

  5. win10下安装Ubuntu后,启动时没有win10选项解决方法

    通过在ubuntu里修改启动引导,解决. 1.进入Ubuntu系统,Ctrl+alt+t进入终端,输入以下命令即可 sudo gedit /etc/default/grub 2.在打开的gedit编辑 ...

  6. Linux系统测试端口连通性的方法

    Linux系统测试端口连通性的方法 有四种常用方法:1. telnet 方法2. wget 方法3. ssh 方法4. curl 方法 下面一一介绍. 1. telnet用法: telnet ip p ...

  7. OpenCV常用基本处理函数(8)图像变换

    傅里叶变换 傅里叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅里叶变换就表示f的频谱. 图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度.如:大面积的沙 ...

  8. 【Flutter学习】页面布局之列表和表格处理

    一,概述 Flutter中拥有30多种预定义的布局widget,常用的有Container.Padding.Center.Flex.Row.Colum.ListView.GridView.按照< ...

  9. 函数————swap

    swap(vec[i],vec[j]); 交换两个元素.

  10. [CSP-S模拟测试]:计划(前缀和)

    题目传送门(内部题32) 输入格式 第一行,三个正整数$n,m,q$.第二行,$n$个正整数$a_i$,保证$1\leqslant a_i\leqslant n$.接下来$q$行,每行两个正整数$k, ...