【问题标题】:from glRotate() + glTranslate() to gluLookAt()从 glRotate() + glTranslate() 到 gluLookAt()
【发布时间】:2013-05-08 03:00:38
【问题描述】:

我有 3 个按以下顺序进行的转换,并带有以下变量:

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

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

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

【问题讨论】:

    标签: opengl 3d transformation coordinate-transformation


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多