2010-01-14 29 views
5

我有一個立方體的ModelVisual3D,我想爲它製作動畫以圍繞它的軸旋轉360度。我製作了一個RoationTransform3D,我告訴它可以旋轉360度,但它根本不旋轉,如果你說270度,它只旋轉90度,但方向相反。我想他的電腦會計算出旋轉的「最短路徑」。我提出的最佳解決方案是讓一個動畫旋轉180度,在完成後再調用180個動畫以完成全部旋轉。有沒有辦法在一個動畫中做到這一點?在WPF中旋轉完整的360度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); 

回答

3

我的理解是,Rotation3DAnimation使用球形線性插值,所以它總是會找到最短路徑。

一種解決方法是使用Rotation3DAnimationUsingKeyFrames:在120,240和360上設置關鍵幀,你應該很好。

對不起,現在沒有代碼,我沒有WPF這臺機器上...

-Jason

1

我知道這已經回答了,但我在尋找一個更好的方式來做到這一點我發現此替代方法:

您可以將旋轉值設置爲180(或者您想要旋轉的一半),然後將重複行爲設置爲重複兩次,並將「IsCummulative」設置爲true。