代码之家  ›  专栏  ›  技术社区  ›  synepis

在WPF 3D中旋转360度

  •  5
  • synepis  · 技术社区  · 15 年前

    我有一个立方体的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 回复  |  直到 14 年前
        1
  •  3
  •   Jason Hernandez    15 年前

    我的理解是rotation3danimation使用球形线性插值,因此它总是会找到最短的路径。

    一个解决方法是使用旋转3动画使用关键帧:将关键帧设置为120、240和360,您应该表现良好。

    对不起,现在没有密码,这台机器上没有WPF…

    -杰森

        2
  •  1
  •   Mark    14 年前

    我知道这个问题已经得到了解决,但在寻找更好的解决方法时,我找到了另一种方法:

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