I have just started a simple flight simulator and have implemented Roll and pitch. In the beginning, testing went very well; however, after about 15-20 seconds of constantly moving the thumbsticks in a random or circular motion, my model's scale begins to grow. At first I thought the model was moving closer to the camera, but i set break points when it was happening and can confirm the translation of my orientation matrix remains 0,0,0. Is this a result of Gimbal Lock?
Does anyone see an obvious error in my code below?
public override void Draw( Matrix view, Matrix projection )
{
Matrix[] transforms = new Matrix[Model.Bones.Count];
Model.CopyAbsoluteBoneTransformsTo( transforms );
Matrix translateMatrix = Matrix.Identity
* Matrix.CreateFromAxisAngle( _orientation.Right, MathHelper.ToRadians( pitch ) )
* Matrix.CreateFromAxisAngle( _orientation.Down, MathHelper.ToRadians( roll ) );
_orientation *= translateMatrix;
foreach ( ModelMesh mesh in Model.Meshes )
{
foreach ( BasicEffect effect in mesh.Effects )
{
effect.World = _orientation * transforms[mesh.ParentBone.Index];
effect.View = view;
effect.Projection = projection;
effect.EnableDefaultLighting();
}
mesh.Draw();
}
}
public void Update( GamePadState gpState )
{
roll = 5 * gpState.ThumbSticks.Left.X;
pitch = 5 * gpState.ThumbSticks.Left.Y;
}