计算机图形学笔记(四)

笔记补充

3.2.4视点变换和模型变换

在OpenGL中,视点变换和模型变换被当做一种变换来看待。改变视点的位置和改变模型的位置是一个相对的过程,例如将物体从(0.0, 0.0, 0.0)移至(0.0, 0.0, -1.0)相当于将相机从(0.0, 0.0, 0.0)移至(0.0, 0.0, 1.0)。视点变换、模型变换将被合并,形成模型视点矩阵。

可以使用函数glMatrixMode(GL_MODELVIEW)来指定当前矩阵模式为模型视点变换。在代码中,视点变换在模型变换之前指定,但投影变换和视口变换可以在绘图之前的任意时候指定。

一些建议:

(1)视点变换采用gluLookAt来改变相机的位置,朝向以及向上方向。

(2)模型变换使用glTranslate, glRotate, glScale来进行平移,旋转,缩放反射,从而改变物体在场景中位置。

3.2.5全局变换和局部变换

1.Global transformation (全局坐标系变换模式,固定坐标系模式,图形模式)

①全局变换主要是在全局坐标系,也叫世界坐标系中进行变换,基本是定死的,如下图的第一行变换就是全局变换,正方形在xyz坐标系中,先想(10,0,0)方向平移10,再绕z轴旋转45°

②局部变换主要是在局部坐标系,也叫模型坐标系,就是字面意思模型自己的坐标,如下图第二行,第三行变换,当我们以局部坐标系对正方形进行先平移,后旋转的操作时,会发现和全局变换的结果有区别,但是当我们反过来,先旋转,再平移变换,所达到的结果和全局变换的效果一致

2.Local transformation (局部坐标系变换模式,活动坐标系模式,空间模式

为什么需要局部变换?

全局变换适用于整个模型的变换,当我们涉及到模型的部分组件变换的时候,以模型坐标系作为变换的计算更为便捷。例如:但我们场景中有一个机器人时,机器人整体的行走,跑动等位移,我们可以用全局变换,去看机器人跑动了多远。但是当机器人跑动的时候,手臂,脚的摆动角度,高度这些,我们如果用全局变换去计算会变得非常麻烦,但是当我们以模型坐标系去定位,机器人手脚的位置,这样的计算就相对来说会变得简单不少

OpenGL中实现的是局部变换还是全局变换?

OpenGL中采用的是列矩阵,所以其新矩阵总是乘在原矩阵的左边

表面上是先旋转后平移,实际上最终的效果是局部变换

要点总结

 

几何变换都是用矩阵实现的

对连续的几何变换的理解

glPushMatrix,glPopMatrix的使用,堆栈的原理

模型变换与视点变换

全局变换与局部变换

OpenGL中的变换语句顺序与实际矩阵相乘顺序相反

投影函数的参数理解

为什么物体会变形

OpenGL三位空间的坐标系、单位、原点

几个有用的函数:

Get current modelview matrix

float mat[16];

glGetFloatv(GL_MODELVIEW_MATRIX,mat);

glMultiMatrixf(mat);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值