【问题标题】:OpenGL rotating object around global axis, pitch and roll围绕全局轴、俯仰和滚动的 OpenGL 旋转对象
【发布时间】:2015-12-15 12:04:24
【问题描述】:

我对这个 openGL 代码有疑问:

        make3D();
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
        GL11.glClearColor(0.5f, 0.55f, 0.55f, 1.0f);
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
        GLU.gluLookAt(camX, camY, camZ, centerX, centerY, centerZ, upX, upY, upZ);

        // THE PROBLEM IS SOMEWHERE HERE
        // Rotate and render vehicle
        GL11.glPushMatrix();
        GL11.glTranslatef(0.0f, 0f, 0.0f);
        GL11.glRotatef(vehicleRoll, 0.0f, 0.0f, 1.0f);
        GL11.glRotatef(vehiclePitch, 1.0f, 0.0f, 0.0f);
        GL11.glTranslatef(-0.0f, -0f, -0.0f);
        scene.render(ObjectType.VEHICLE);
        GL11.glPopMatrix();

        // Render floor
        GL11.glPushMatrix();
        GL11.glRotatef(vehicleCourse, 0.0f, 1.0f, 0.0f);
        GL11.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
        scene.render(ObjectType.ENVIROMENT_FLOOR);
        GL11.glPopMatrix();

        // Draw lights
        setUpLighting();

滚动旋转似乎没问题,对象旋转到它的一侧(只是滚动),但俯仰旋转没有按预期工作。如果我先将我的对象滚动 30 度,然后将俯仰旋转 30 度,我希望它被滚动并朝下 30 度,但它通过这两个向量旋转我的对象,最后它看起来像15 度俯仰和 15 度横滚,并改变其航向。

tl;dr 这段代码确实通过它自己的轴移动我的对象,我需要它围绕原点旋转,改变俯仰和滚动而不改变它的方向

除了第二个对象(地板)之外,它可以旋转到给定的路线,它工作正常。问题是车辆。

我已经尝试过不调用 translateF,或者调用旋转和平移 f,然后用负值再次调用它们,似乎没有任何效果。

编辑:添加了可视化我的问题的 youtube 视频,或者更确切地说是我试图达到的效果 https://www.youtube.com/watch?v=zc8b2Jo7mno&feature=youtu.be&t=111

【问题讨论】:

    标签: opengl rotation lwjgl euler-angles


    【解决方案1】:

    在花了几个小时阅读欧拉角和四元数之后,当我几乎要放弃时,我突然顿悟了。为了让事情在我的情况下正常工作,交换两行代码就足够了:

    那个:

     GL11.glRotatef(vehicleRoll, 0.0f, 0.0f, 1.0f);
     GL11.glRotatef(vehiclePitch, 1.0f, 0.0f, 0.0f);
    

    到那个:

     GL11.glRotatef(vehiclePitch, 1.0f, 0.0f, 0.0f);
     GL11.glRotatef(vehicleRoll, 0.0f, 0.0f, 1.0f);
    

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 1970-01-01
      • 2014-11-29
      • 2021-10-17
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多