Flash3D学习计划(二)——理解世界,取景,投影变换,并理解投影坐标系
各种坐标系都是有用的,因为某些信息只能在特定场景中才有意义。
一、 世界坐标系
世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架。这就意味着,能够用世界坐标系描述其他坐标系的位置,而不能用更大的、外部的坐标系来描述世界坐标系。
世界坐标系也被广泛的称作为全局坐标系或者宇宙坐标系。
二、 物体坐标系
物体坐标系是和特定的物体相关联的坐标系。每个物体都有它们独立的坐标系。当物体移动或者改变方向的时候,和该物体相关联的坐标系将会随之移动或改变方向。
在某些情况下,物体坐标系也被称作模型坐标系。因为模型顶点的坐标都是在模型坐标系中描述的。有时候它也称作身体坐标系。物体坐标系也是一种局部坐标系。
三、 摄像机坐标系
摄像机坐标系是和观察者密切相关的坐标系。摄像机坐标系和屏幕坐标系相似,差别在于摄像机坐标系处于3D空间中而屏幕坐标系在2D平面里。摄像机坐标系也是一种特殊的物体坐标系。
摄像机朝向的约定(对于初学者很重要):左手坐标系中,常约定摄像机朝向+z,而+x和+y指向右和上方向(透视投影情况下)。这是非常直观的,如图15.5所示。右手坐标则指定-z为摄像机朝向。
摄像机坐标系(eye space:所谓eye space,即以camera(视点或相机)为原点,由视线方向、视角和远近平面,共同组成一个梯形体的三维空间,称之为viewing frustum(视锥),如下图所示,近平面,是梯形体较小的矩形面,作为投影平面,远平面是梯形体较大的矩形,在这个梯形体中的所有顶点数据是可见的,而超出这个梯形体之外的场景数据,会被视点去除(Frustum Culling,也称之为视锥裁剪)。(摘自GPU Programming and Cg language Primer)

计算ModelViewMatrix(模型坐标转换为眼坐标空间)
在GPU管线(pipeline)中, ModelMatrix将模型坐标空间的坐标转换为世界坐标空间,再通过ViewMatrix 转换为眼坐标空间。转换公式为:ModelViewMatrix = ViewMatrix * ModelMatrix
四、 惯性坐标系
惯性坐标系的原点和物体坐标系的原点重合,但惯性坐标系的轴平行于世界坐标系的轴。
惯性坐标系是用于简化从物体坐标系到世界坐标系这一转换过程的中间坐标系。因为从物体坐标系转换到惯性坐标系只需旋转,从惯性坐标系转换到世界坐标系只需要平移。
Flash3D学习计划(二)——理解世界,取景,投影变换,并理解投影坐标系的更多相关文章
- Flash3D学习计划(三)——学习VB,IB相关,理解三角形顶点顺序;在屏幕上显示2D矩形,并实现缩放,平移,旋转
VB:顶点缓冲 IB: 顶点索引缓冲 三角形的顶点顺序决定了三角形是顺时针还是逆时针,从而决定了三角形在背面剔除的过程中是否会被剔除掉. 相关理论知识可以在前面的文章中找到更多的说明. 实现效果 sf ...
- Flash3D学习计划(一)——3D渲染的一般管线流程
一:什么是渲染管线 渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的并行处理单元.一个流水线是一序列可以并行和按照固定顺序进行的阶段.每个阶段都从它的前一阶段接收输入,然后把输出发给随后 ...
- Docker学习计划二:基本配置
来源:http://www.ityouknow.com/docker/2018/03/07/docker-introduction.html Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...
- Flash3D学习计划(四)——学习纹理相关知识,载入一张纹理,并应用于前面的矩形;并学习多层纹理映射相关知识,尝试dark map, glow map
实现效果 主要代码 package { import com.adobe.utils.AGALMiniAssembler; import com.adobe.utils.Perspective ...
- Spring学习(二)——Spring中的AOP的初步理解[转]
[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring. ...
- Spring学习(二)——Spring中的AOP的初步理解
[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...
- 用三维的视角理解二维世界:完美解释meshgrid函数,三维曲面,等高线,看完你就懂了。...
完美解释meshgrid函数,三维曲面,等高线 #用三维的视角理解二维世界 #完美解释meshgrid函数,三维曲面,等高线 import numpy as np import matplotlib. ...
- 寒假关于计算机课程的学习计划(第二次作业<二>)
由于自己刚从紧张的高中学习中解脱出来,进入大学学习意识不够重视,导致学业与别人相差较大,特别是C语言,所以打算寒假主要先补一补C语言.自己在网上查找了很多资料,包括浙江大学翁凯老师在网易云课堂讲的&l ...
- Flash 3D学习计划
1.理解并记住3D渲染的一般管线流程(一天). 2.理解世界,取景,投影变换,并理解投影坐标系(一天). 3.学习VB,IB相关,理解三角形顶点顺序:在屏幕上显示2D矩形,并实现缩放,平移,旋转(三天 ...
随机推荐
- CSU-2110 Keeping Cool
题目链接 http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=2110 题目 Description Kevin has just got ...
- 1064 Complete Binary Search Tree (30 分)(二叉查找树)
中序遍历建树 #include<bits/stdc++.h> using namespace std; ; int s[N]; int n; int tree[N]; int cnt; v ...
- Set(), Get() 真正的目的
在各种面向对象编程中,都有 Set(), Get() 两种方法. 1 常见理解 1 为了保证安全性 2 为了规范代码 其实这些理解都是对的.具体看我们从哪个角度去理解这个内容. 2 个人理解 2.1 ...
- HDU 4750 Count The Pairs (离线并查集)
按边从小到大排序. 对于每条边(from, to, dist),如果from和to在同一个集合中,那么这条边无意义,因为之前肯定有比它更小的边连接了from和to. 如果from和to不属于同一个集合 ...
- Python下安装protobuf
1. 下载安装包 2. 解压缩 tar –xzvf protobuf-2.6.1.tar.gz 3. 安装protoc 在python中使用protocbuf需要Protocal Buffer 编译器 ...
- 重复造轮子系列--dijkstra算法
前年一时脑热(理想很丰满,现实很骨感),写了这个最短路径优先的低效版本,且留着回忆吧. spf.h #ifndef SPF_H_ #define SPF_H_ typedef struct { int ...
- 想了一天的题目QAQ 毛线数列的最值
#include <cstdio> #include <cstring> #include <cmath> #include <iostream> #i ...
- SheetJS & Error: Sheet names cannot exceed 31 chars
SheetJS Error: Sheet names cannot exceed 31 chars title + version https://github.com/SheetJS/js-xlsx ...
- ES6 学习体会
第一部分: 1.初始化项目 npm init -y 2.安装ES6 环境 .babelrc 文件 babel-cli -g babel-ecmascript2015 babel-cli --save- ...
- 【HDU 5961 传递】
Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission ...