在storyboard中将动画应用于ModelVisual3D

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在storyboard中将动画应用于ModelVisual3D相关的知识,希望对你有一定的参考价值。

我有一个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。

答案

我在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的任何类型的对象。

以上是关于在storyboard中将动画应用于ModelVisual3D的主要内容,如果未能解决你的问题,请参考以下文章

在 SWIFT 语言的 Storyboard 中将值从一个 ViewController 传递到另一个 ViewController

在 Xcode 13 中将标签/按钮从 StoryBoard 连接到 ContentView

在 Xcode 6 中将 .storyboard 文件转换为原始 swift 代码

在 StoryBoard iOS 中将 UIContainerveiw 添加到 SlideViewNavigation 的问题

Expression Blend实例中文教程 - 动画设计快速入门StoryBoard

WPF - 无法停止动画 StoryBoard,IsControllable 不起作用?