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.移动或者旋转它,当然了,如果它只是计算机里面的物体,我 ...
随机推荐
- javaIO流(五)--对象序列化
一.序列化概念 几乎只要是我们的java开发,就一定会存在有序列化的概念,而正是有序列化的概念逐步发展,慢慢也有了更多的系列化的标准.--所谓的对象序列化指的是将内存中保存的对象,以二进制数据流的形式 ...
- mongo数据库基本查询语句
D:\MongoDB\Server\3.4\bin>mongo MongoDB shell version v3.-g83c3022fe4 connecting to: mongodb://12 ...
- Spring Cloud 使用Spring Cloud Loadbalancer访问服务地址
获取服务地址 使用的EurekaClient : getNextServerFromEureka() 使用的DiscoveryClient: getInstances() Load Balancer ...
- JS的部分部分疑问和小结
2015/9/1 1.在字符串中没有可以所需要查找的"X"的时候,返回的值 java:lastIndexof -1 js: IndexOf undefined... 2015/ ...
- elasticsearch Mapping使用自定义分词器
创建索引及配置分析器 PUT /my_index { "settings": { "analysis": { "char_filter": ...
- Hdu-3333 Turning Tree (离线树状数组/线段树)
Hdu-3333 Turning Tree 题目大意:先给出n个数字.面对q个询问区间,输出这个区间不同数的和. 题解:这道题有多重解法.我另一篇博客写了分块的解法 HDU-3333 Turing ...
- 五、Redis五种类型 - 字符串类型
1.介绍: 字符串类型是Redis中最基本的数据类型,可以存储任何形式的字符串数据,最大容量是512MB. key 和 value 都是区分大小写的. 2.命令介绍 (1).赋值: set key v ...
- 力扣——candy (分糖果) python实现
题目描述: 中文: 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. ...
- Arthas 开源一周年,GitHub Star 16 K ,我们一直在坚持什么?
缘起 最近看到一个很流行的标题,<开源XX年,star XXX,我是如何坚持的>.看到这样的标题,忽然发觉 Arthas 从 2018 年 9 月开源以来,刚好一年了,正好在这个秋高气爽的 ...
- Python--面向对象的程序设计之继承实现的原理(继承顺序)、封装、property
抽象类补充: import abc class Parent(metaclass= abc.ABCMeta): x=1 @abc.abstractclassmethod def foo(self): ...