2010-01-14 16 views
5

Tengo un ModelVisual3D de un cubo y quiero animarlo para que gire alrededor de su eje en 360 grados. Hago un RoationTransform3D que le digo que gire 360 ​​pero no gira en absoluto, también si dices 270 grados gira solo 90 grados pero en la dirección opuesta. Supongo que la computadora calcula el "camino más corto" de la rotación. La mejor solución que he encontrado es hacer que una animación dé vuelta a 180 y después de que termine llame a otras 180 para completar la rotación completa. ¿Hay alguna forma de hacerlo en una animación?Giro de 360 ​​grados completos en WPF 3D

RotateTransform3D rotateTransform = new RotateTransform3D(); 
myCube.Model.Transform = rotateTransform; 

AxisAngleRotation3D rotateAxis = 
     new AxisAngleRotation3D(new Vector3D(0, 1, 0), 180/*or 360*/); 
Rotation3DAnimation rotateAnimation = 
     new Rotation3DAnimation(rotateAxis, TimeSpan.FromSeconds(2)); 

rotateTransform.BeginAnimation(RotateTransform3D.RotationProperty, 
     rotateAnimation); 

Respuesta

3

Mi entendimiento es que el Rotation3DAnimation utiliza una interpolación lineal esférica, por lo que siempre encontrará el camino más corto.

Una solución consiste en utilizar Rotation3DAnimationUsingKeyFrames: configure un fotograma clave en 120, 240 y 360 y debería estar bien.

En este momento no hay código en este momento, no tengo WPF en esta máquina ...

-Jason

1

Sé que esto ya fue respondida, pero en mi búsqueda de una mejor manera de hacer esto encontró esta alternativa:

Puede establecer el valor de rotación en 180 (o la mitad de lo que desea rotar) y luego establecer el comportamiento de repetición para repetir dos veces y "IsCummulative" en verdadero.

Cuestiones relacionadas