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. five hundred miles

  2. Groovy学习:第二章 Groovy语言的关键特征

    1. 断言Assertion断言:用于判断预期的条件是否为真.例子:def list = [1,2,'x']assert list.size()==32. AST转换期使用的注释AST转换的注释:Gr ...

  3. WPF的Effect效果

    一.阴影效果(DropShadowEffect) <TextBlock Text="> <TextBlock.Effect> <DropShadowEffect ...

  4. elasticsearch 分析器 分词器

    参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenizers.html 在全文搜索(Fu ...

  5. 利用Navicat Premium连接Oracle数据库

    利用Navicat Premium连接Oracle数据库 Navicat premium是一款数据库管理工具,支持多种数据库,也非常轻量: 安装包准备:Navicat Premium_11.1.8简体 ...

  6. 2019HDU多校第一场 String 贪心

    题意:给你一个字符串,问是否存在一个长度为m的子序列,子序列中对应字符的数目必须在一个范围内,问是否存在这样的字符串?如果存在,输出字典序最小的那个. 思路:贪心,先构造一个序列自动机,序列自动机指向 ...

  7. 六、Redis五种类型 - hash(散列)类型

    1.介绍 (1).hash也是一种字典结构,存储了字段(field)和字段值(value)的映射,字段值只能是字符串,不支持其他类型.(2).适合存储对象,对象列表和ID构成键名,字段表示对象的属性, ...

  8. linux 出现 -bash-4.2# 问题的解决方法

    1.在根目录创建 /root 目录 mkdir /root 2. 复制 .bashrc  以及 .bash_profile俩个文件到root目录下 cp /etc/skel/.bashrc /root ...

  9. 【串线篇】SpringMvc视图解析

    一. 请求处理方法执行完成后,最终返回一个 ModelAndView 对象.对于那些返回 String,View 或 ModeMap 等类型的处理方法,Spring MVC 也会在内部将它们装配成一个 ...

  10. Android Studio 打包生成正式apk(XXX-release.apk)的两种方式

    { 方式一:使用Android Studio生成1.点击Build->Generate Signed apk,首次点击可能会提示输入操作系统密码2.弹出如下对话框,还没有生成过keystore ...