首页 > 代码库 > 说说我对OpenGL坐标变换几个关键点的理解

说说我对OpenGL坐标变换几个关键点的理解

刚接触OpenGL的朋友们,可能对坐标变换不太理解. 本人不才, 接触了三维一段时间后,冒昧说说我的理解, 如有偏差, 请指正.


一:  首先说说什么是世界坐标. 

        每个三维模型都有自己的局部坐标, 这个大家都好理解,  这个称作模型坐标, 坐标原点可以是模型的中心.   但是一个场景中如果有许多个三维模型,  那要想标准其每个位置,

就需要一个统一的坐标来标定,  那么这个坐标就叫世界坐标.  这都好理解对吧,  下面说点难的.


二:  再说说世界坐标怎么转换到摄像机坐标.

        我们知道,  观察三维模型要用一个摄像机.  模型需要在摄像机里成像,  也就需要知道模型在摄像机里映射的位置.  这也就涉及到世界坐标怎么转换到摄像机坐标的问题.

        要想理解这个问题,  得先理解摄像机,  生活中, 摄像机往那一放, 就确定了一个位置; 摄像机的朝向也就决定了要拍摄哪个方向的景物;  并且摄像机可以横着拍, 也可以竖着拍,

这个横竖也决定了景物的在底片上的成像是正的还是倒立的;  好, 我们回头一看, 决定摄像机的有三个量, eye(位置), target(所拍摄景物的方位),  up(在底片上成像的倒正).

        好,  摄像机的三个量能否推出一个摄像机的坐标系呢,  答案是肯定的,  也就是摄像机所在的标架(标架,坐标系推导请自行查看相关书籍吧);  现在摄像机的坐标系有了,  那么, 能否把世界坐标转换摄像机坐标的问题看成是,  世界坐标系到摄像机坐标系的转换呢.  答案是可以的,  分两步走,  先平移, 再旋转.  好, 经过这样两步操作.  两者坐标转换轻松完成了. 


三:  摄像机坐标投影到设备坐标

      最终三维模型要显示在屏幕上, 投影为设备屏幕坐标, 投影主要有两种, 正交投影, 透视投影,  我觉得理解投影的关键点,  在于理解设备屏幕坐标, 所谓的往哪投影.  常听说设备坐标

归一化, 什么是归一化, 说白了就是往简单了整,  设备坐标可以理解成, 中心在原点,  长度为1的立方体.  三维投影就是往这个区域投.  所以知道了投哪, 怎么投那就很好办了, 中学几何知识, 再套上个矩阵, 就出来了.


四: 设备坐标到视口坐标

       视口可以看成是 显示设备屏幕的某一个区域,  并且,  会把图形投影到以视口中心为原点的区域上,  理解这一点,  这个坐标转换就不难理解了. 



说说我对OpenGL坐标变换几个关键点的理解