OpenGL中的坐标系和变换

坐标系

模型坐标

模型坐标是以物体某一点为原点而建立的坐标系,该坐标系仅对该物体适用,用来简化对物体各部分坐标的描述。物体放到场景中时,各部分经历的坐标变换相同,相对位置不变,所以可视为一个整体,与人类的思维习惯一致。

世界坐标

世界坐标系以屏幕中心为原点(0,0,0)。你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴。长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1)。

相机坐标

相机坐标以视点为原点,以视线的方向为Z+轴正方向的坐标系中的方向。OpenGL管道会将世界坐标先变换到眼坐标,然后进行裁剪,只有在视线范围(视见体)之内的场景才会进入下一阶段的计算。

投影坐标

OpenGL的重要功能之一就是将三维的世界坐标经过变换、投影等计算,最终算出它在显示设备上对应的位置,这个位置就称为设备坐标。在屏幕、打印机等设备上的坐标是二维坐标。OpenGL可以只使用设备的一部分进行绘制,这个部分称为视区或视口(viewport)。投影得到的是视区内的坐标就是投影坐标,从投影坐标到设备坐标的计算过程就是设备变换了。

屏幕坐标

显示设备屏幕的坐标,坐标角为远点。

变换

从模型坐标到屏幕大致要经过如下流程:

Created with Raphaël 2.1.0 世界坐标 观察变换 [模型变换] 相机坐标 投影变换 投影坐标 视口变换 屏幕坐标 yes yes yes yes

观察变换

用来定位和瞄准相机的位置和方向。默认情况下相机的位置为(0, 0, 0),指向z-。
可以平移和旋转,必须在模型变换之前。

模型变换

模型自身的变换,支持如下三种:
移动: 使模型沿一个指定的向量进行移动;
旋转: 使模型沿一个指定的向量进行旋转;
缩放: 通过指定的向量来放大或者缩小模型尺寸。

模型变换的顺序会影响变换的结果。

投影变换

确定需要显示的区域,在观察变换和模型变换之后执行,有两类:
透视投影:近大远小,于真实世界中看到的一样;
正交投影:显示物体的真实尺寸。

视口变换

根据视口和屏幕大小来确定最终图像的缩放。

相关函数:
平移:glTranslate
旋转:glRotate
缩放:glScale

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值