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