   Model rotation.
  Hi guys, so I have been working on my planes movement in a game I am creating and I have come to a snag, well its not really a snag but I was wondering if there is a common solution.Basically I have my plane rotating round the Y axis and I have the planes forward vector rotating round the Y axis as well. But my plane model rotates around the Y axis far faster than the forward vector rotates. So it makes it look very unrealistic. I was wondering if there is a common work around, which will align the models rotation with the models forward vector rotation.If this didn't make one bit of sense to you - which is quite probable - then here is the source code. Programmed in C# and XNA :) protected override void Update(GameTime gameTime)   {  float deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds;  Vector3 moveVector = Vector3.Zero;  float cameraPitchValue = 0.0f ;  float cameraYawValue = 0.0f;  float planeYawValue = 0.0f;  // Allows the game to exit  if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit();  KeyboardState kState = Keyboard.GetState();  MouseState mState = Mouse.GetState();  if (kState.IsKeyDown(Keys.Escape))  { this.Exit();  }  if (kState.IsKeyDown(Keys.Space))  { plane.position.Z += 3.0f * deltaTime;  }  if (kState.IsKeyDown(Keys.W))  { moveVector.Z += 3.0f * deltaTime; plane.position.Z  += 3.0f * deltaTime;  }  if (kState.IsKeyDown(Keys.S))  { moveVector.Z -= 3.0f * deltaTime;  }  if (kState.IsKeyDown(Keys.A))  { moveVector.X += 3.0f * deltaTime;  }  if (kState.IsKeyDown(Keys.D))  { moveVector.X -= 3.0f * deltaTime;  }  if (kState.IsKeyDown(Keys.Left))  {  planeYawValue = -1; plane.rotation.Y += -1;  }  if (kState.IsKeyDown(Keys.Right))  { planeYawValue = 1; plane.rotation.Y += 1;  }  if (kState.IsKeyDown(Keys.Up))  { cameraPitchValue = 1;  }  if (kState.IsKeyDown(Keys.Down))  { cameraPitchValue = -1;  }    /*  float mouseX = mState.X - mStateCashe.X;  float mouseY = mState.Y - mStateCashe.Y;  */  // TODO: Add your update logic here  planeYaw -= (planeYawValue * 0.4f) * deltaTime;  cameraPitch += (cameraPitchValue * 0.4f) * deltaTime;  cameraYaw -= (cameraYawValue * 0.4f) * deltaTime;  cameraPitch = MathHelper.Clamp(cameraPitch, MathHelper.ToRadians(-89.9f), MathHelper.ToRadians(89.9f));  Mouse.SetPosition(graphics.GraphicsDevice.Viewport.Width / 2, graphics.GraphicsDevice.Viewport.Height / 2);  Matrix cameraViewRotationMatrix = Matrix.CreateRotationX(cameraPitch) * Matrix.CreateRotationY(cameraYaw);  Matrix cameraMoveRotationMatrix = Matrix.CreateRotationY(cameraYaw);  Vector3 transformedCameraReference = Vector3.Transform(cameraReference, cameraViewRotationMatrix);  Matrix planeMoveRotationMatrix = Matrix.CreateRotationY(planeYaw);  Vector3 transformerPlaneReference = Vector3.Transform(planeReference, planeMoveRotationMatrix);    cameraPosition += Vector3.Transform(moveVector, cameraMoveRotationMatrix);  plane.position += Vector3.Transform(moveVector, planeMoveRotationMatrix);  cameraTarget = transformedCameraReference + cameraPosition;  base.Update(gameTime);   }Thanks for any help!   
  Why use position += Vector3.Transform()?Why not store the world Matrix and rotate your modle.Vector3 Position;Vector3 Scale;Vector3 Rotation;public Matrix WorldMatrix{get{return Matrix.CreateScale(v3_ScaleVect)*Matrix.CreateRotationX(v3_RotationVect.X) *Matrix.CreateRotationY(v3_RotationVect.Y) *Matrix.CreateRotationZ(v3_RotationVect.Z)*   Matrix.CreateTranslation(v3_TranslationVect);}}can easily set the Rotation this way toRotation.Y += 0.003f;this will rotate it slowly around the AxisWhen drawing your Model you have to pass a WorldMatrix, just pass that.   ;  its fine I fixed it :) I thought I had deleted this threadthanks though! :)   