I explain my problem, I want to animate Model1 (an aicraft ) and I want an object, Model2 (a sphere), to follow it in translation an rotation, as it is a part of this aircraft.

With the following code ( I use one or two tuto to write it) everything seems good when you just move one  angle at the time = the sphere gently follow the aircraft, if you move more than one angle at the same time, everything goes wrong !!

I wonder if it's not a gimbal pb? but I use Quaternion !! or may be (it's more probable) I havn't understood all the stuff !

See my code below, if you have an idea tell me please

Thanks a lot for help

Jean-gil

    protected override void Update(GameTime gameTime)
        {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();
		
		// Command input to airplane
            float yokeUpDown = 0.0f;
            float yokeRightLeft = 0.0f;
            float RollRotation = 0.01f;

                
          //make quaternion rotation matrix of airplane
            Quaternion additionalAircraftRotation = Quaternion.CreateFromAxisAngle(new Vector3(0, 0, 1), yokeUpDown) * Quaternion.CreateFromAxisAngle(new Vector3(0, 1, 0), yokeRightLeft) *Quaternion.CreateFromAxisAngle(new Vector3(1, 0, 0), RollRotation);

		//increase or decrease aircraft rotation
            spacecraftRotation = spacecraftRotation * additionalAircraftRotation;

		// make vector3 sphere angle rotation
            sphereAngle.X = sphereAngle.X + yokeUpDown;
            sphereAngle.Y = sphereAngle.Y + yokeRightLeft;
            sphereAngle.Z = sphereAngle.Z + RollRotation;
            

		// make rotation quaternion for sphere
            Quaternion additionalSphereRotation = Quaternion.CreateFromAxisAngle(new Vector3(0, 0, 1), sphereAngle.X) * Quaternion.CreateFromAxisAngle(new Vector3(0, 1, 0), sphereAngle.Y) * Quaternion.CreateFromAxisAngle(new Vector3(1,0, 0), sphereAngle.Z);

		//relative position of the sphere to the aircraft
            Vector3 translationSphere = new Vector3(-distance_Aircraft_Sphere, 0,0);


            translationSphere = Vector3.Transform(translationSphere, additionalSphereRotation);


    		
            sphereposition = aircraftposition + translationSphere;


         	// “VectorToAdd” = direction of the airplane
            Vector3 rotatedAircraftVector = Vector3.Transform(vectorToAdd, spacecraftRotation);

            aircraftposition += moveSpeedAircraft * rotatedAircraftVector;

            sphereposition += moveSpeedAircraft * rotatedAircraftVector;


            

	}
    enter code here