初识OpenGL (-)坐标系统(Coordinate System)
1. 5个不同的坐标系统
- 局部空间(Local Space,或者称为物体空间(Object Space))
- 世界空间(World Space)
- 观察空间(View Space,或者称为视觉空间(Eye Space))
- 裁剪空间(Clip Space)
- 屏幕空间(Screen Space)
1.1 5种坐标
- 局部坐标(Local Coordinate)
顶点坐标起始于局部空间(Local Space),局部坐标对象相对于局部原点的坐标,也是物体起始的坐标。
- 世界坐标(World Coordinate)
处于一个更大的空间范围。这些坐标相对于世界的全局原点,它们会和其它物体一起相对于世界的原点进行摆放。
- 观察坐标(View Coordinate)
又称摄像机(Camera)、摄像机空间(Camera Space)、视觉空间(Eye Space)
观察矩阵(View Matrix),用来将世界坐标变换到观察空间,一系列的位移和旋转的组合来完成,平移/旋转场景从而使得特定的对象被变换到摄像机的前方
- 裁剪坐标(Clip Coordinate)
- 屏幕坐标(Screen Coordinate)
2. 步骤
step1. local->world
模型矩阵(Model)
step2. 世界坐标变换为观察空间坐标,使得每个坐标都是从摄像机或者说观察者的角度进行观察的。
观察矩阵(View)
step3. 投影到裁剪坐标。裁剪坐标会被处理至-1.0到1.0的范围内,并判断哪些顶点将会出现在屏幕上。
投影矩阵(Projection)
将顶点坐标从观察变换到裁剪空间,它指定了一个范围的坐标,比如在每个维度上的-1000到1000。观察箱(Viewing Box)
由投影矩阵创建,又称为平截头体(Frustum),每个出现在平截头体范围内的坐标都会最终出现在用户的屏幕上。将特定范围内的坐标转化到标准化设备坐标系的过程(而且它很容易被映射到2D观察空间坐标)被称之为投影(Projection),因为使用投影矩阵能将3D坐标投影(Project)到很容易映射到2D的标准化设备坐标系中。
- 两种形式
正射投影矩阵(Orthographic Projection Matrix)、透视投影矩阵(Perspective Projection Matrix)。
step4. 裁剪坐标变换为屏幕坐标
使用一个叫做视口变换(Viewport Transform)的过程。视口变换将位于-1.0到1.0范围的坐标变换到由glViewport函数所定义的坐标范围内。
- 透视除法(Perspective Division)
将位置向量的x,y,z分量分别除以向量的齐次w分量;透视除法是将4D裁剪空间坐标变换为3D标准化设备坐标的过程。
(这一步会在每一个顶点着色器运行的最后被自动执行)
step5. 最坐标将会送到光栅器,将其转化为片段
被映射到屏幕空间中------使用glViewport中的设定,并被变换成片段
初识OpenGL (-)坐标系统(Coordinate System)相关推荐
- OpenGL 坐标系统(Perspective)
一.坐标系统概述 本文类容见LearnOpenGL CN.直接copy过来留个存档. OpenGL希望每次顶点着色后,我们的可见顶点都为标准化设备坐标(Normalized Device Coordi ...
- 【Modern OpenGL】坐标系统 Coordinate Systems
说明:跟着learnopengl的内容学习,不是纯翻译,只是自己整理记录. 强烈推荐原文,无论是内容还是排版. 原文链接 本文地址: http://blog.csdn.net/aganlengzi/a ...
- 14.图像透视——介绍,坐标系统(Coordinate System),建模投影(Modelling Projection)_1
目录 介绍 坐标系 建模投影 学前基本概念: 投影( projection):光学上是指在光线的照射下,物体的影子投射到一个面上.数学上是指将图形的形状投射到一个面或一条线上.第二种解释:投射在一个面 ...
- QT之OpenGL坐标系统
QT之OpenGL坐标系统 0. 写在前面的话 1. 概述 2. 各个空间简要 2.1 局部空间 2.2 世界空间 2.3 观察空间 2.4 裁剪空间 2.4.1 正射投影 2.4.2 透视投影 3. ...
- Geographic coordinate system和projected coordinate system
Geographic coordinate system和projected coordinate system 经常碰到这两个概念:Geographic coordinate system和proj ...
- Geographic coordinate system和projected coordinate system的区别(转)
http://hi.baidu.com/moonstream/blog/item/987d9a52835be0040df3e36a.htmlGeographic 要明确两个概念:Geographic ...
- 笛卡尔坐标系 (Cartesian coordinate system)
笛卡尔坐标系 (Cartesian coordinate system) 人工智能 - 深度学习 - 知识体系 在数学中,笛卡尔坐标系 (Cartesian coordinate system) 是一 ...
- ECEF rectangular coordinate system(ECEF直角坐标系)
只有当有定位的需要时,才发现当年自己地理学的不太好,经纬度什么的都不是太清晰,麻烦了.今日以ECEF position为契机,参考维基百科以及一些叫不上名字的文章来简单地总结一番. 参考地址: htt ...
- OpenGL Texture Coordinate Wrapping纹理坐标包装的实例
OpenGL Texture Coordinate Wrapping纹理坐标包装 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <verm ...
最新文章
- 软件测试:黑盒白盒与动态静态之间有必然联系吗
- EL:谁说N素含量高就不固氮了
- #圆的周长和面积面向对象_数学实验 | 圆的面积公式推导
- 震惊!评审专家将论文拒稿后修改发表
- Cocos2D v2.0至v3.x简洁转换指南(一)
- python认识if语句_python初认识、基础数据类型以及 if 流程控制
- 四川大学计算机学硕分数线,川大计算机考研分数线
- 阿里云ECS服务器 Centos7.2 使用 yum 安装 ansible 报错
- JavaScript数组中新增元素(2)
- 串口通讯(DMA模式)
- 2021年4月自考04741计算机网络原理试卷
- deepin回收站无法清空
- 批量ping检测主机状态
- 已解决 vmware 虚拟机安装后没有虚拟网卡问题
- 【主题词——蓝色妖姬】
- 利用MOG背景分割器实现物体追踪
- 【Pytest:Python 单元测试工具学习】
- 组合测试术语:Pairwise/All-Pairs、OATS(Orthogonal Array Testing Strategy)
- c语言字符集改为多字节,多字节与Unicode
- python协程实现一万并发_python进阶:服务端实现并发的八种方式