【问题标题】:openGL - Rotating above and below an object using gluLookAtopenGL - 使用 gluLookAt 在对象上方和下方旋转
【发布时间】:2015-11-19 22:51:04
【问题描述】:

我在 open GL 中有一个立方体。我通过乘以旋转矩阵来旋转立方体。我还使用 gluLookAt 让相机在 x 轴上围绕立方体旋转,如下所示。

    case 'j':
        eyeX = 10*cos(angle);
        eyeZ = 10*sin(angle);
        centerX = -cos(angle);
        centerZ = -sin(angle);
        angle -= 0.1;
        break;
    case'l':
        eyeX = 10*cos(angle);
        eyeZ = 10*sin(angle);
        centerX = -cos(angle);
        centerZ = -sin(angle);
        angle += 0.1;
        break;

在哪里

gluLookAt( eyeX, eyeY, eyeZ, centerX, centerY, centerZ, 0.0, 1.0, 0.0);

我正在努力让相机在 y 轴上环绕它的立方体上方和下方旋转。

【问题讨论】:

    标签: c++ opengl math rotation glulookat


    【解决方案1】:

    为了使凸轮围绕一个物体运行

    • 减去对象的世界位置。来自凸轮世界的位置,

      cam_pos_os = cam_pos_ws - object_pos_ws

    • 像在代码中的世界空间中那样旋转指向 cam_pos_os 的向量

    • 添加对象的世界位置。再次到凸轮位置。在对象空间中,

      cam_pos_ws = cam_pos_os + object_pos_ws

    【讨论】:

    • 谢谢。我完全理解你的意思我只是在理解 openGL 和 C++ 方面有困难。您是否再次推荐 glTranslate glRotate 和 glTranslate ?我如何获得世界位置和相机位置?
    • 世界坐标中的凸轮位置是您在 gluLookAt 中输入的 eyeX,Y,Z。您可以通过任何您想要的方式旋转和翻译(给出正确性);但我可以建议您跳过已弃用的“glTranform/Rotate/Scale”内容,转而使用基于现代 Shader/Buffer/Uniform 的 GL,并将 glm 用于剩余的 CPU 端代数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    相关资源
    最近更新 更多