OpenGL超级宝典(第7版)笔记17 位移、旋转、缩放、观察、透视矩阵,三维空间的观察移动

OpenGL超级宝典(第7版)笔记17 位移、旋转、缩放、观察、透视矩阵 实现3维观察移动


前言

我们上次介绍了坐标系,向量,矩阵,介绍了他们的一些基础计算。我们下面开始就要开始逐渐涉及这些计算来实现3D效果,我们接下来会介绍物体的变换矩阵(缩放,旋转,位移),介绍透视矩阵、观察矩阵。如果篇幅允许,我们将在代码上进行实现,最终实现一个空间中的三角形面片(我们可以自由移动视角观察这个三角形)
在这里插入图片描述

我们把一个对象坐标系下的模型(这里为长方体)变到我们看到的图像,需要以上一些步骤(这些步骤的顺序不要变换)。
1,模型在对象坐标系下进行缩放(为了放到世界坐标系时为正确大小)
2,进行旋转(这里图画的有点不对,这个有点点类似透视图了)
3,位移(放到世界坐标系下的正确位置,这里是把其向右移动了一点)
4,观察(之前的三步是把物品摆放到了世界坐标系下正确的位置和姿态,而这一步是根据摄像机的位置计算图像的样子,这里之前在矩阵乘法的时候提到过)
5,透视(不论之前怎么算,得到的都是正交投影,我们怎么也看不到正方体的侧面,但是增加了透视之后,由于视线在正方体的中心偏左,所以我们就可以看到侧面了)

下面是透视和正交投影的区别:
在这里插入图片描述
左图:在透视下红色都被黑色挡住了,而正交投影下红色露出来了。
右图:透视下红色的顶部露出来了,底部被遮挡。正交投影下红色顶部被遮挡,底部露出来了。

1 物体的变换矩阵

1.1 位移矩阵

之前的3*3矩阵
还记得咱们之前在矩阵乘法中提到的坐标系变换吗(见上图),你会注意到这里的矩阵是33的,如果我们想实现把物体的位置进行改变仅仅通过这里的33矩阵并不能实现,我们要对其进行扩充,来看看我们怎样巧妙的对它进行改进。
在这里插入图片描述
我们并没有做很多复杂的计算,只是在矩阵中加了一行和一列,并对应在向量上多了一个分量(该分量如果为1,表示该坐标为一个点的坐标。如果为0,表示该坐标为一个向量的坐标。我们这里把竖着写的一列矩阵都称为向量,虽然这里它最后一个分量是1,但是我们仍叫它向量,只是叫的顺口,这并不意外着它带有方向)。
在添加了一行和一列之后,你会发现ABC的值被加到了结果的XYZ分量中去&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值