从glRotate()+ glTranslate()到gluLookAt()

时间:2013-05-08 03:00:39

标签: opengl 3d transformation coordinate-transformation

我按以下顺序进行了3次转换,并使用以下变量:

glTranslate(dirX, dirY, dirZ);
glRotate(angleX, 1, 0, 0);
glRotate(angleY, 0, 1, 0);

通过这些,我能够在3D中转换我的ModelView,实现多种效果(围绕空间平移对象,围绕其中心旋转对象,从原点放大和缩小)。

使用相同的变量,并使用gluLookAt(),我想实现最后2(围绕对象旋转,从原点缩放

1 个答案:

答案 0 :(得分:1)

target = object_position
pos.x = zoom * sin(phi) * cos(theta);
pos.y = zoom * cos(phi);
pos.z = zoom * sin(phi) * sin(theta);

pos += target;

gluLookAt(pos, target, vec3(0, 1, 0)); // up vector is fixed...

上面的代码创建了一个“相机”,它正在观察物体中心并可以旋转(使用球形坐标)。

http://mathworld.wolfram.com/SphericalCoordinates.html