将矩阵变换应用于BoundingBox

时间:2012-12-28 23:39:03

标签: java android opengl-es collision-detection libgdx

我有一个模型矩阵,我正在跟踪网格在我的世界中的位置。每次拨打glRotate()glTranslate(),我都会对modelMatrix.rotate()modelMatrix.translate()进行相应的调用,这似乎正常。

现在我需要更新与每个模型关联的边界框。我在libGDX框架和BoundingBoxfound here中工作,有一个方法mul()应该允许我将矩阵应用到边界框但是值不是正确更新,我认为这可能是我试图应用它的方式。有什么想法吗?

以下是我的相关代码:

gl.glPushMatrix();

// Set the model matrix to the identity matrix
modelMatrix.idt();

// Update the orbit value of this model
orbit = (orbit + ORBIT_SPEED * delta) % 360;
gl.glRotatef(orbit, 1.0f, 1.0f, 0);

// Update the model matrix rotation
modelMatrix.rotate(1.0f, 1.0f, 0, orbit);

// Move the model to it's specified radius
gl.glTranslatef(0, 0, -ORBIT_DISTANCE);

// Update the model matrix translation
modelMatrix.translate(0, 0, -ORBIT_DISTANCE);

// Update the bounding box
boundingBox.mul(modelMatrix);

if (GameState.DEBUG)
{
    renderBoundingBox(gl, delta);
}

// Bind the texture and draw
texture.bind();
mesh.render(GL10.GL_TRIANGLES);

gl.glPopMatrix();

1 个答案:

答案 0 :(得分:0)

计算矩阵乘法的顺序很重要。你能做ModelMatrix * Box吗?我认为这就是问题所在。