在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来进行平移,旋转,缩放反射,从而改变物体在场景中位置。
void glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z )
angle的方向与向量v(x,y,z)符合右手法则,如下图(一个三棱锥围绕y轴旋转90°):