我按以下顺序进行了3次转换,并使用以下变量:
glTranslate(dirX, dirY, dirZ);
glRotate(angleX, 1, 0, 0);
glRotate(angleY, 0, 1, 0);
通过这些,我能够在3D中转换我的ModelView,实现多种效果(围绕空间平移对象,围绕其中心旋转对象,从原点放大和缩小)。
使用相同的变量,并使用gluLookAt()
,我想实现最后2(围绕对象旋转,从原点缩放)
答案 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...
上面的代码创建了一个“相机”,它正在观察物体中心并可以旋转(使用球形坐标)。