标准化设备坐标:(Normalized Device Coodinate,NDC)就是说每个顶点(x,y,z)都在【-1,1】之间。
2D笛卡尔坐标系
3D笛卡尔坐标系
视口
投影到窗口的一部分
OpenGL 摄像机坐标系
摄像机(照相机)坐标系:在坐标系的范畴里,摄像机坐标系和照相机坐标系都是一样的意义,照相机坐标和观察者密切相关的坐标系,照相机坐标系和屏幕坐标系相似,差别在于照相机坐标系处于3D空间中,而屏幕坐标系在2D平面里。
OpenGL 世界坐标系 惯性坐标系 物体坐标系
世界坐标系:世界坐标系是系统的绝对坐标系,在没有建立用户坐标系之前画面上所有的点的坐标都可以在该坐标系的原点来确定各自的位置,世界坐标系始终是固定不变的。
物体坐标系:每个物体都有他们独立的坐标系,当物体移动或者改变方向时,该物体相关联的坐标将随之移动或改变方向。
惯性坐标系:世界坐标系到物体坐标系的经过,惯性坐标系的原点和物体坐标系原点重合,且惯性坐标系的轴平行与世界坐标系的轴。
OpenGL 坐标变换全局图
因为OpenGL最终的渲染设备是2D的,我们需要将3D表示的场景转换为最终的2D形式,前面使用模型视图变换将物体坐标转换到照相机坐标系后,需要进行投影变换,将坐标从相机->裁剪坐标系,经过透视除法后,变换到规范化设备坐标系(NDC),最后进行视口变换后,3D坐标才变换到屏幕的2D坐标。
图中右边的两个步骤,包括透视除法,视口变换,这两个步骤是OpenGL自动执行的,在顶点着色器处理后的阶段完成。
坐标转换计算
视变换
视变换:为了方便观察场景中物体而设立的坐标系,在这个坐标系中相机是个假想的概念,是为了便于计算而引入的,相机坐标系中的坐标,就是从相机的角度来解释世界坐标系中的位置。