阅读 533

(八)OpenGL 之 坐标系

标准化设备坐标:(Normalized Device Coodinate,NDC)就是说每个顶点(x,y,z)都在【-1,1】之间。

2D笛卡尔坐标系

3D笛卡尔坐标系

视口

投影到窗口的一部分

OpenGL 摄像机坐标系

摄像机(照相机)坐标系:在坐标系的范畴里,摄像机坐标系和照相机坐标系都是一样的意义,照相机坐标和观察者密切相关的坐标系,照相机坐标系和屏幕坐标系相似,差别在于照相机坐标系处于3D空间中,而屏幕坐标系在2D平面里。

OpenGL 世界坐标系 惯性坐标系 物体坐标系

世界坐标系:世界坐标系是系统的绝对坐标系,在没有建立用户坐标系之前画面上所有的点的坐标都可以在该坐标系的原点来确定各自的位置,世界坐标系始终是固定不变的。

物体坐标系:每个物体都有他们独立的坐标系,当物体移动或者改变方向时,该物体相关联的坐标将随之移动或改变方向。

惯性坐标系:世界坐标系到物体坐标系的经过,惯性坐标系的原点和物体坐标系原点重合,且惯性坐标系的轴平行与世界坐标系的轴。

OpenGL 坐标变换全局图

因为OpenGL最终的渲染设备是2D的,我们需要将3D表示的场景转换为最终的2D形式,前面使用模型视图变换将物体坐标转换到照相机坐标系后,需要进行投影变换,将坐标从相机->裁剪坐标系,经过透视除法后,变换到规范化设备坐标系(NDC),最后进行视口变换后,3D坐标才变换到屏幕的2D坐标。

图中左边的过程包括:模型变换,视变换,投影变换,这些是根据需要自行指定,这些内容在顶点着色器中完成。

图中右边的两个步骤,包括透视除法,视口变换,这两个步骤是OpenGL自动执行的,在顶点着色器处理后的阶段完成。

坐标转换计算

视变换

视变换:为了方便观察场景中物体而设立的坐标系,在这个坐标系中相机是个假想的概念,是为了便于计算而引入的,相机坐标系中的坐标,就是从相机的角度来解释世界坐标系中的位置。

文章分类
iOS
文章标签