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.移动或者旋转它,当然了,如果它只是计算机里面的物体,我 ...
随机推荐
- docker安装中遇到的问题
错误一 提示:Segmentation Fault or Critical Error encountered. Dumping core and aborting. Aborted 解答:安装错误安 ...
- 对python中的__name__的理解
一开始学习python的时候,不理解python中的__name__的用途,一致感觉__name__的返回结果就是__main__ 今天系统的看了一下,才理解过来,__name__真正的用处是用在使用 ...
- tf.add_to_collection,tf.get_collection简介
tf.add_to_collection:把变量放入一个集合,把很多变量变成一个列表 tf.get_collection:从一个结合中取出全部变量,是一个列表 tf.add_n:把一个列表的东西都依次 ...
- 【记录】mysql中建表utf8和utf8mb4区别?timestamp和datetime区别?
mysql中建表utf8和utf8mb4区别? 1:utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 中的基本多文本平面 2:要在 Mysql 中 ...
- 如何解决“ VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/cpuid.c:386 bugNr=1036521”
第一次装虚拟机,装centos7遇到的坑: 1. 出现 “VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/cpuid ...
- CSS 3D 的魅力
作者 | 子慕大诗人 来源 | www.cnblogs.com/1wen/p/9064011.html 前言: 最近玩了玩用css来构建3D效果,写了几个demo,所以博客总结一下. 在阅读 ...
- atcoder 泛做
https://atcoder.jp/contests/arc060/tasks/arc060_b 先考虑一些特殊情况: $$n>s$$ $$n=s$$ $b$小于$sqrt(N)$可以枚举,如 ...
- mybatis generator 生成的example类的使用方法
generator 生成的example类 示例 1. 搜索数据库Id不为空打元组 java代码 @RequestMapping("/test") public String ex ...
- Pythonf反射
Python中,反射有4个方法.分别是:hasattr().getattr().setattr()和delattr(). hasattr() 定义 hasattr()函数用于判断对象是否包含对应的属性 ...
- 字符串操作——C语言实现
代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <asse ...