在WPF 3D中旋转360度

6
我有一个立方体的ModelVisual3D,想让它绕着自己的轴旋转360度。我创建了一个RotationTransform3D并告诉它旋转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个回答

3
我的理解是,Rotation3DAnimation使用球面线性插值,因此它总是会找到最短的路径。
一种解决方法是使用Rotation3DAnimationUsingKeyFrames:在120、240和360设置关键帧,这样就可以了。
抱歉,我现在没有WPF,所以没有代码...
-Jason

2

我知道这个问题已经有了答案,但在寻找更好的方法时,我找到了另一种选择:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接