【问题标题】:LWJGL Rotating one object onlyLWJGL 只旋转一个对象
【发布时间】:2013-03-21 23:07:34
【问题描述】:



我正在尝试仅旋转我在 Java 中使用创建的场景中的两个对象之一 LWJGL。
现在,当我尝试旋转一个对象时,它不会围绕其中心旋转,而是以大圆圈旋转。在 Google 上搜索后,我现在知道它应该像这样工作:

glPushMatrix();
glBegin();

  //Code in here

glEnd();
glRotate();
glPopMatrix();

但这对我不起作用。物体没有旋转。这是我的渲染代码:

    public void render() {

        glPushMatrix();

            glRotatef(rotate, 0, 1.0f, 0);                   

            glBegin(GL_QUADS);

                // Top
                glVertex3f(-centerX + size, centerY + size, -centerZ - size);
                glVertex3f(-centerX - size, centerY + size, -centerZ - size);
                glVertex3f(-centerX - size, centerY + size, -centerZ + size);
                glVertex3f(-centerX + size, centerY + size, -centerZ + size);
                // Bottom
                glVertex3f(-centerX + size, centerY - size, -centerZ + size);
                glVertex3f(-centerX - size, centerY - size, -centerZ + size);
                glVertex3f(-centerX - size, centerY - size, -centerZ - size);
                glVertex3f(-centerX + size, centerY - size, -centerZ - size);
                // One side
                glVertex3f(-centerX + size, centerY + size, -centerZ + size);
                glVertex3f(-centerX - size, centerY + size, -centerZ + size);
                glVertex3f(-centerX - size, centerY - size, -centerZ + size);
                glVertex3f(-centerX + size, centerY - size, -centerZ + size);
                // Moar sides
                glVertex3f(-centerX + size, centerY - size, -centerZ - size);
                glVertex3f(-centerX - size, centerY - size, -centerZ - size);
                glVertex3f(-centerX - size, centerY + size, -centerZ - size);
                glVertex3f(-centerX + size, centerY + size, -centerZ - size);
                // Last side
                glVertex3f(-centerX - size, centerY + size, -centerZ + size);
                glVertex3f(-centerX - size, centerY + size, -centerZ - size);
                glVertex3f(-centerX - size, centerY - size, -centerZ - size);
                glVertex3f(-centerX - size, centerY - size, -centerZ + size);
                // Real last side
                glVertex3f(-centerX + size, centerY + size, -centerZ - size);
                glVertex3f(-centerX + size, centerY + size, -centerZ + size);
                glVertex3f(-centerX + size, centerY - size, -centerZ + size);
                glVertex3f(-centerX + size, centerY - size, -centerZ - size);

            glEnd();

        glPopMatrix();

        rotate++;
}

我现在尝试解决这个问题几个小时,但无法让它工作。

【问题讨论】:

    标签: java matrix 3d rotation lwjgl


    【解决方案1】:

    您应该在绘制四边形之前调用glRotate()glTranslate()

    请记住,转换的顺序很重要。旋转总是关于0,0,0,所以如果你先翻译它会围绕一个圆中的一点“轨道”。如果您希望它围绕自己的轴旋转(您可能会这样做),请先旋转,然后平移。

    本文中有一节是关于转换顺序的。

    http://www.glprogramming.com/red/chapter03.html

    【讨论】:

    • 那不行,我试过了。当我这样做时,立方体不会围绕自己的轴旋转。
    • 已编辑答案。先旋转,再平移。
    • 但即使我只旋转不翻译,它也无济于事。
    最近更新 更多