2
我有一個簡單的3D立方體,我可以用下面的代碼旋轉:應用就地轉換到3D模型WPF
void mui3D_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
RotateTransform3D rotation = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), 0), mui.Model.Bounds.Location);
DoubleAnimation rotateAnim = new DoubleAnimation(0, 130d TimeSpan.FromMilliseconds(3000));
rotateAnim.Completed += new EventHandler(rotateAnim_Completed);
mui.Transform = rotation;
rotation.Rotation.BeginAnimation(AxisAngleRotation3D.AngleProperty, rotateAnim);
}
每次執行時,該代碼旋轉,使用圍繞動畫立方體Y軸從0度到130度的角度。
但是我想要「累積地」應用旋轉,以便將任何先前的旋轉考慮在內,並且立方體從它完成前一次旋轉的角度開始每次旋轉。
例如:動畫構造函數不需要角度的「from」和「to」值,只需根據當前旋轉角度旋轉立方體額外的130度即可。
我可以很容易地使用包含當前角度的成員變量,將其傳遞給動畫,然後在動畫完成時更新它。但我想知道是否有一個標準的方法使用WPF來實現這一點。
你知道,用於從transofrm矩陣對象歐拉rotaion的方法?我在3D數學上有點生疏,但它聽起來是我要找的。 (否則看起來我有更多的閱讀要做)。我已經試過你的第二個選項,正如我在問題中所說的那樣。不管怎麼說,還是要謝謝你。 – Ash 2009-02-05 07:28:57