在WPF 3D中旋转360度

时间:2010-01-14 12:04:04

标签: c# wpf animation 3d rotation

我有一个立方体的ModelVisual3D,我想让它围绕它的轴旋转360度。我制作了一个RoationTransform3D,我告诉它旋转360但它根本不旋转,如果你说270度它只旋转90度但反方向旋转。我猜计算机会计算旋转的“最短路径”。我想出的最好的解决方案是让一个动画转180,然后在它完成后再调用180以完成完整的旋转。有没有办法在一个动画中做到这一点?

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);

2 个答案:

答案 0 :(得分:3)

我的理解是Rotation3DAnimation使用球面线性插值,因此总能找到最短路径。

一种解决方法是使用Rotation3DAnimationUsingKeyFrames:在120,240和360处设置关键帧,你应该很好。

对不起,现在没有代码,我这台机器上没有WPF ......

-Jason

答案 1 :(得分:1)

我知道这已经得到了回答,但在我寻找更好的方法时,我发现了这个替代方案:

您可以将旋转值设置为180(或您想要旋转的一半),然后将重复行为设置为重复两次,并将“IsCummulative”设置为true。