OpenGL中的空间变换
OpenGL中的空间变换
在使用OpenGL的三维虚拟程序中。当我们指定了模型的顶点之后。在屏幕上显示它们之前,一共会发生3种类型的变换:视图变换、模型变换、投影变换。
视图变换:指定观察者(摄像机)的位置;
模型变换:在场景中移动物体;
投影变换:改变可视区域的大小;
视口变换:这是一种伪变换,它对窗体上的终于输出进行缩放。
视觉坐标
它表示一种虚拟的固定坐标系统,通常作为一种參考系使用。它是依据观察者(摄像机)的角度而言的,与可能发生的变换无关。
我们接下来所讨论的全部变换都是依据它们相对于视觉坐标的效果进行描写叙述的。
用OpenGL在3D空间中进行画图时。使用的是笛卡尔坐标系统。
在不进行不论什么变换的情况下,这个坐标系统与视觉坐标系同样。
视图变换
这是场景中所应用的第一个变换。它用于确定场景的观察点(拍摄点)。视图变换同意把观察点放在自己所希望的不论什么位置(观察点的位置随意)。并同意在不论什么方向上观察场景(观察点的朝向随意)。
确定视图变换就像在场景中放置照相机并让它指向某个方向。
作为整体原则,在进行不论什么其他变换之前必须先指定视图变换。
由于视图变换的效果相当于依据视觉坐标系统来移动当前所使用的坐标系统。然后,依据最新改动的坐标系统,进行其他全部的兴许变换。
模型变换
它能够移动物体。对它们进行旋转、平移或者缩放。
而且,缩放能够是非一致的(物体的各个方向依据不同的数值进行伸缩)。
场景或物体的终于外观非常大程度上取决于模型变换的应用顺序。由于每次变换都是在上次变换运行的基础上进行的。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSGFvaGFuX01lbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
投影变换
它是在模型视图变换之后应用于物体的顶点之上的。它实际上定义了可视区域,并建立了裁剪平面。当中。投影又有两种不同的类型:正投影(平行投影)和透视投影。
正投影通经常使用于2D画图,此时你所须要的是像素和画图单位之间的准确相应。
透视投影则用于渲染那些包括了须要应用透视缩短的物体的场景。
而且在大多数情况下,3D图形所使用的都是透视投影。
视口变换
终于。场景的二维投影将被映射到屏幕上的某个窗体。这样的到物理窗体坐标的映射是最后一个完毕的变换,称为视口变换。
OpenGL中的空间变换。
OpenGL中的空间变换的更多相关文章
- 3D游戏中各种空间变换到底是怎么回事
每一个游戏可以呈现炫丽效果的背后,需要进行一系列的复杂计算,同时也伴随着各种各样的顶点空间变换.渲染游戏的过程可以理解成是把一个个顶点经过层层处理最终转化到屏幕上的过程,本文就旨在说明,顶点是经过了哪 ...
- 详解OpenGL中的各种变换(投影变换,模型变换,视图变换)(完)——法线变换
前面两节内容已经说完了所有的三种变换.也就是说我们现在程序里面既不需要glLookAt(),也不需要gluPerspective(),这些矩阵我们都可以自己写.然后,再用glMultMatrix()来 ...
- 【opengl】OpenGL中三维物体显示在二维屏幕上显示的变换过程
转自:http://blog.sina.com.cn/s/blog_957b9fdb0100zesv.html 为了说明在三维物体到二维图象之间,需要经过什么样的变换,我们引入了相机(Camera)模 ...
- OpenGL中坐标系的理解(一)
在OpenGL中,存在着至少存在着三种矩阵,对应着函数glMatrixMode()的三个参数:GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE. 以下主要描述GL_MODEL ...
- OpenGL 的空间变换(上):矩阵在空间几何中的应用
在使用 OpenGL 的应用程序中,当我们指定了模型的顶点后,顶点依次会变换到不同的 OpenGL 空间中,最后才会被显示到屏幕上.在变换的过程中,通过使用矩阵,我们更高效地来完成这些变换工作. 本篇 ...
- OpenGL 的空间变换(下):空间变换
通过本文的上篇 OpenGL 的空间变换(上):矩阵在空间几何中的应用 ,我们了解到矩阵的基础概念.并且掌握了矩阵在空间几何中的应用.接下来,我们将结合矩阵来了解 OpenGL 的空间变换. 在使用 ...
- OpenGL入门学习 教程 (五)三维的空间变换
http://oulehui.blog.163.com/blog/static/796146982011924428755/ 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从 ...
- (转)思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,...
转自:http://www.cnblogs.com/soroman/archive/2008/03/21/1115571.html 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用1. ...
- opengl中场景变换|2D与3D互转换(转)
opengl中场景变换|2D与3D互转换 我们生活在一个三维的世界——如果要观察一个物体,我们可以: 1.从不同的位置去观察它.(视图变换) 2.移动或者旋转它,当然了,如果它只是计算机里面的物体,我 ...
随机推荐
- 安装Consul服务中心
安装Consul服务中心 首先下载对应版本的安装程序.点击下载 我下载的是macOS64位版本,下载文件是一个ZIP文件,下载后解压缩到一个你喜欢的位置,以开发模式启动consul服务: #进入con ...
- POJ 2417 Discrete Logging ( Baby step giant step )
Discrete Logging Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3696 Accepted: 1727 ...
- 安装gmpy2
本来只想做个RSA的题,结果环境就搭了好久 首先想用 pip install gmpy2 发现缺东西,要安装gmp,mpfr,mpc 安装: mkdir -p $HOME/src mkdir -p $ ...
- html中代替空格、大于号、小于号等字符编码
数字表示法的不方便之处,在于必须知道每个字符的码点,很难记忆.为了能够快速输入,HTML 为一些特殊字符,规定了容易记忆的名字,允许通过名字来表示它们,这称为实体表示法(entity). 实体的写法是 ...
- 第二章 Kubernetes pod状态问题
一.ImagePullBackOff 当我们创建一个名字为myapp的deployment的时候,它指向的是一个不存在的docker镜像: 最常见的有两个问题: (a)指定了错误的容器镜像 (b)使用 ...
- tomcat manager详解
Tomcat Manager是Tomcat自带的.用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用.Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Mana ...
- paint进阶(转)
转自:https://blog.csdn.net/cquwentao/article/details/51374994 概述 paint的基本绘制方法已经在前面的基本图形绘制中讲解了,这里做的是进阶讲 ...
- java命令-jps
jps命令,查看当前用户所有java进程pid 可进入/tmp/hsperfdata_xxx(登录用户名)路径下,可查看当前用户下所有的Java进程.jps.jconsole.jvisualvm等工具 ...
- Tensorflow中的图(tf.Graph)和会话(tf.Session)详解
Tensorflow中的图(tf.Graph)和会话(tf.Session) Tensorflow编程系统 Tensorflow工具或者说深度学习本身就是一个连贯紧密的系统.一般的系统是一个自治独立的 ...
- sql server 基础语法2
别名,选择,查询,排序,去重,筛选 select * from UserInfo as ui --起别名 select UserName,UserPwd --指定选择的列 from UserInfo ...