【问题标题】:Apply animation to ModelVisual3D in storyboard将动画应用于情节提要中的 ModelVisual3D
【发布时间】:2019-09-12 21:53:17
【问题描述】:

我有一个 ModelVisual3D。我想在 Viewport3D 中为其位置设置动画。我已经获得了使用 BoxVisual3D(来自 HelixToolkit)的代码,但该代码不适用于我的 ModelVisual3D。 ModelVisual3D 应该沿 X 轴平移,但它只是静止不动。

我基本上已经将 BoxVisual3D 的工作代码复制到了 ModelVisual3D 中。目前,我只是在做 OffsetX 属性,但稍后我将需要在多个 ModelVisual3D 上同时设置多个属性,因此是故事板。

这是不起作用的代码:

Transform3DGroup modelTransformGroup = (Transform3DGroup)_myModel.Transform;
TranslateTransform3D curTransform = (TranslateTransform3D)modelTransformGroup.Children[1];
var moveX = new DoubleAnimation(0, 1000, TimeSpan.FromSeconds(5));
Storyboard.SetTarget(moveX, curTransform);
Storyboard.SetTargetProperty(moveX, new PropertyPath(TranslateTransform3D.OffsetXProperty));
var sb = new Storyboard();
sb.Children.Add(moveX);
sb.Begin();

这里有一些有效的代码,但还不够,因为我需要一次将许多动画与情节提要同步:

Transform3DGroup modelTransformGroup = (Transform3DGroup)_myModel.Transform;
TranslateTransform3D curTransform = (TranslateTransform3D)modelTransformGroup.Children[1];
var moveX = new DoubleAnimation(0, 1000, TimeSpan.FromSeconds(5));
curTransform.BeginAnimation(TranslateTransform3D.OffsetXProperty, moveX);

感谢您的帮助!

编辑:我想在代码前面添加 _myModel.Transform 设置为 Transform3DGroup,第一个孩子是 RotationTransform3D,第二个孩子是 TranslateTransform3D。

【问题讨论】:

    标签: c# wpf animation storyboard


    【解决方案1】:

    我在this post 中找到了答案,它也指向了this post。事实证明,您必须为您的转换注册一个名称并设置目标名称而不是目标。这是因为转换不是 FrameworkElement 的一部分。

    以下是我的工作代码集。

    Transform3DGroup modelTransformGroup = (Transform3DGroup)_myModel.Transform;
    TranslateTransform3D curTransform = (TranslateTransform3D)modelTransformGroup.Children[1];
    var moveX = new DoubleAnimation(0, 1000, TimeSpan.FromSeconds(5));
    RegisterName("Translate", translate);
    Storyboard.SetTargetName(moveX, "Translate");
    Storyboard.SetTargetProperty(moveX, new PropertyPath(TranslateTransform3D.OffsetXProperty));
    var sb = new Storyboard();
    sb.Children.Add(moveX);
    sb.Begin(this);
    

    我测试了几种不同的模型类型。这似乎适用于任何类型的继承 Visual3D 的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      相关资源
      最近更新 更多