Hi everyone!
I have a problem with rotating models that I can’t solve on my own and I hope you can help me.
I am planning to rotate a moving model so that it points into the direction it is moving to.
I started with the movement into the direction without rotating the model which worked well.
Then I added the possibility to rotate the model into the rendering function and the model is rotating the way it should.
But: When I rotate the model the movement direction is changed back to 0. Since I push the matrix just for the rotation I don’t understand why it is affecting the movement direction of the model.
When I remove the rotation line the movement direction is back to the way it should be.
Here is my rendering function:
public void render(float x, float y, float z, float rY, float scale, Texture t)
{
if(t != null)
t.bind();
else
glBindTexture(GL_TEXTURE_2D, 0);
glPushMatrix();
//This line!
glRotatef((float)Math.toDegrees(rY), 0, 1, 0);
glBegin(GL_TRIANGLES);
for(Face f:faces)
{
Vector3f v1 = verts.get((int) f.verts.x - 1);
Vector3f n1 = norms.get((int) f.norms.x - 1);
Vector3f v2 = verts.get((int) f.verts.y - 1);
Vector3f n2 = norms.get((int) f.norms.y - 1);
Vector3f v3 = verts.get((int) f.verts.z - 1);
Vector3f n3 = norms.get((int) f.norms.z - 1);
glTexCoord2f(0f, 0f);
glNormal3f(scale * n1.x + x, scale * n1.y + y, scale * n1.z + z);
glVertex3f(scale * v1.x + x, scale * v1.y + y, scale * v1.z + z);
glTexCoord2f(1.0f, 0f);
glNormal3f(scale * n2.x + x, scale * n2.y + y, scale * n2.z + z);
glVertex3f(scale * v2.x + x, scale * v2.y + y, scale * v2.z + z);
glTexCoord2f(0.5f, 1.0f);
glNormal3f(scale * n3.x + x, scale * n3.y + y, scale * n3.z + z);
glVertex3f(scale * v3.x + x, scale * v3.y + y, scale * v3.z + z);
}
glEnd();
glPopMatrix();
}
Here is the movement:
public void moveBy(float amt)
{
this.setPosX(this.getPosX() + amt * (float)Math.cos(Math.toRadians(hasDirection)));
this.setPosY(this.getPosY() + amt * (float)Math.sin(Math.toRadians(hasDirection)));
}
I hope you can help me and thank you in advance.
Regards
Smire