2010-01-14 7 views
5

J'ai un ModelVisual3D d'un cube et je veux l'animer pour tourner autour de son axe sur 360 degrés. Je fais un RoationTransform3D que je dis tourner 360 mais il ne tourne pas du tout, même si vous dites 270 degrés il ne tourne que de 90 degrés mais dans le sens inverse. Je suppose que l'ordinateur calcule le "plus court chemin" de la rotation. La meilleure solution que j'ai trouvée est de faire un tour d'animation 180 et après il finit d'en appeler 180 autres pour compléter la rotation complète. Y a-t-il un moyen de le faire en une seule animation?Rotation d'un 360 degrés complet dans 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); 

Répondre

3

Ma compréhension est que le Rotation3DAnimation utilise une interpolation linéaire sphérique, donc il trouvera toujours le chemin le plus court. Une solution de contournement consiste à utiliser Rotation3DAnimationUsingKeyFrames: configurer une image clé à 120, 240 et 360 et vous devriez être bon.

Désolé pas de code en ce moment, je n'ai pas WPF sur cette machine ...

-Jason

1

Je sais que cela a été déjà répondu, mais dans ma recherche d'une meilleure façon de le faire, je trouvé cette alternative:

Vous pouvez définir la valeur de rotation à 180 (ou la moitié de ce que vous voulez faire pivoter), puis réglez le comportement de répétition à répéter deux fois et "IsCumulative" à true.