【问题标题】:center of rotation of multiple objects opengl多个对象opengl的旋转中心
【发布时间】:2013-05-07 10:07:51
【问题描述】:

我在沿着自己的轴而不是任意位置旋转立方体时遇到问题。该多维数据集是其他 27 个多维数据集的集合,我成功地设法旋转了这组多维数据集,但方式不正确。我的意思是当我在 x 轴上旋转立方体时,它围绕输入 (0,0,0) 而不是在它自己的轴上形成一个轨道。如何让立方体绕自己的轴旋转?

public void onDrawFrame(GL10 gl) 
{
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();
    gl.glScalef(0.8f, 0.8f, 0.8f);  
    int k=0;

    gl.glPushMatrix();
    gl.glRotatef(cubeRotX, 0.0f, 0.0f , 1.0f);
    gl.glRotatef(cubeRotY, 0.0f, 1.0f , 0.0f);
    for(int l=0; l<3; l++)
    {
        if(l == 2)  //To rotate only the first front polygon in 1.7f angle
        {
            gl.glPushMatrix();
            gl.glRotatef(rot, 0.0f, 0.0f, 1.0f);
        }
        for(int i=0; i<3; i++)
        {               
            for(int j=0; j<3; j++)
            {
                gl.glPushMatrix();
                gl.glTranslatef(-2.1f+(2.1f*i), -2.1f+(2.1f*j), -23.1f+(2.1f*l));
                cube[k++].draw(gl);
                gl.glPopMatrix();
            }

        }
        if(l ==2)
        {
            gl.glPopMatrix();
            if(rot >= 90.0f)
                rot = 90.0f;
            else
                rot += 4.0f;  
        }
    }
    gl.glPopMatrix();
    cubeRotX -= 5.0f;
    cubeRotY -= 5.0f;
}

【问题讨论】:

标签: java android opengl-es


【解决方案1】:

要旋转每个单独的立方体,请在内部 glPushMatrix 内应用旋转。

编辑:我误会了你。询问更多信息。

在您澄清之后:

  • 加载标识
  • 对所有对象应用一般变换
  • 推矩阵
  • 对围绕太阳和太阳本身的所有子立方体应用旋转(对围绕太阳的所有立方体进行一般旋转,根据您要归档的内容,这可能根本不旋转)
  • 推矩阵
  • 为您的“太阳”应用革命。
  • 画太阳
  • 流行矩阵
  • 对于每个内部/子立方体:
    • 推矩阵
    • 应用腐烂
    • 绘制立方体
    • 弹出矩阵
  • 流行矩阵

【讨论】:

  • 我不是想旋转单个立方体,而是将所有立方体作为一个整体围绕它自己的轴旋转。我在第一个glPushMatrix(适用于整个立方体)之后遇到问题,其中有2个旋转,即通过X和通过Y。我无法围绕它自己的轴旋转它。它形成一个轨道。
  • 你说:“我的意思是当我在 x 轴上旋转立方体时,它围绕输入 (0,0,0) 而不是在它自己的轴上做一个轨道”。什么应该是它自己的轴?我不知道您要归档什么。但可能您需要在函数请求时进行一些调整。
  • 让我们这样说吧:我们的地球既绕太阳公转,也绕地球自转。我想要实现的方式只是整个立方体的旋转而不是旋转。在这里,如果我们将 (0,0,0) 作为太阳,那么立方体实际上是围绕它旋转的。我不希望这样。怎么办?
  • 您需要在函数内部绘制立方体(太阳),而不是在渲染所有(子)对象之后。当我找到 10 分钟的时间时,我会尝试给你一个例子。
  • 非常感谢您抽出宝贵时间,但我并不是要建立一个太阳系。我实际上是在尝试制作一个魔方及其在 opengl 中的倡议。我尝试实现它的方式是构建所有 27 个立方体并使用 Push/PopMatrices 对较小的立方体进行分组。我所有的内部立方体都工作得很好。在您建议的第四步,我在旋转部分遇到问题。旋转实际上导致整个立方体围绕轨道旋转,输入 (0,0,0)。那是我唯一的问题。再次感谢您宝贵的时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 2016-07-22
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多