1.模型变换(Model transformation)---- 视点不变,变物体
在OpenGL中,我们使用glMatrixMode(GL_MODELVIEW)来处理模型变换,我们知道OpenGL使用堆栈管理矩阵,所以我们有不同的堆栈进行管理,有模型变换矩阵堆栈,视点变换矩阵堆栈,还有纹理变换矩阵堆栈等等,这句话就是告诉OpenGL,我们要处理模型变换。
2.视点变换(View transformation)---- 物体不变,变视点
OpenGL成像主要是采用虚拟相机模型,在场景中我们通过模型变换,将物体放在场景中不同的位置,最终哪些部分需要显示在屏幕上,主要是由视点变换、投影变换等决定。视点变换阶段,我们通过假想的相机来处理矩阵计算。,所谓的视点空间,视点坐标系都是为了方便处理,引入的坐标空间。
在OpenGL中,我们主要使用
gluLookAt(eyex,eyey,eyez,centerx,centery,centerz,upx,upy,upz)
来达到模拟物体不动,变换视点的效果
总结
其实两者本质上是一样的,gluLookAt()还是只是计算出了一个变换矩阵
3.全局变换和局部变换
大致先解释一下:
①全局变换主要是在全局坐标系,也叫世界坐标系中进行变换,基本是定死的,如下图的第一行变换就是全局变换,正方形在xyz坐标系中,先想(10,0,0)方向平移10,再绕z轴旋转45°
②局部变换主要是在局部坐标系,也叫模型坐标系,就是字面意思模型自己的坐标,如下图第二行,第三行变换,当我们以局部坐标系对正方形进行先平移,后旋转的操作时,会发现和全局变换的结果有区别,但是当我们反过来,先旋转,再平移