原文地址;http://blog.csdn.net/kasteluo/article/details/73559166
三维场景中,模型会经过一系列的变换(流水线处理),最终显示到屏幕上,
Local Space 本地坐标系
即模型的建模坐标系,如在3dmax中,模型建模时,模型中心可以位于坐标原点(0,0,0),也可以偏移一定位置,此处的原点就是模型坐标系的原点。
World Space 世界坐标系
即模型在3d场景中所处的位置,整个场景属于同一个坐标系统。场景中的模型,都是通过模型变换(缩放、旋转、平移等刚体变换),放置在世界坐标系中的,
一般要控制三维场景中模型的运动,都是通过模型变换矩阵来完成。
Eye Space 相机坐标系
即观察整个场景,虚拟相机的位置(对于OpenGL坐标系,相机坐标系+x:向右,+y:向上,+z:向屏幕内部),场景中的模型要被看到,必须通过视图变换矩阵,
经过变换,才能看到。
世界坐标系相机坐标系
Clip Space 裁剪坐标系(也叫投影坐标系)
相机是确定观察范围的一个坐标系统,它会将物体空间按照不同的方式显示到屏幕
相机坐标系到裁剪坐标系,是通过投影来完成,投影又分为透视投影和平行投影。
透视投影的投影线相交于一点,一次投影结果与原物实际大小并不一致,到会导致近大远小,这种方式更接近真实世界的效果。
平行投影的投影线互相平行,投影的结果与原物大小一致,广泛应用于工业制图方面。正交投影是平行投影的一种特殊情况。
正交投影的投影直线平行于观察平面(例如有轴承图,就是投影直线和观察平面成45度角的平行投影)
正交投影
透视投影
NDC Space 规范化坐标系
它是设备的归一化坐标系,投影坐标系经过透视除法,消去深度信息,投影到二维的NDC坐标
Screen Space 屏幕坐标系
最后一步,需要将归一化的坐标进行映射,映射到实际设备所支持的分辨率大小,整个三维场景就显示出来了。
平时,三维程序中,用的最多的就是MVP: Model View Project 坐标系变换的三个矩阵