首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将动画应用于故事板中的ModelVisual3D

将动画应用于故事板中的ModelVisual3D
EN

Stack Overflow用户
提问于 2019-04-23 16:40:02
回答 2查看 230关注 0票数 0

我有一个ModelVisual3D。我想把它在Viewport3D中的位置动画化。我已经让代码与BoxVisual3D一起工作(来自HelixToolkit),但是这些代码不适用于我的ModelVisual3D。ModelVisual3D应该沿着X轴进行转换,但是它只是静止不动。

实际上,我已经将BoxVisual3D的工作代码复制到了ModelVisual3D中。现在,我只是在做OffsetX属性,但稍后我需要在多个ModelVisual3Ds上一次动画化多个属性,这就是故事板。

这是不起作用的代码:

代码语言:javascript
运行
复制
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();

下面是一些可以工作的代码,但是还不够,因为我需要同时与故事板同步许多动画:

代码语言:javascript
运行
复制
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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-25 13:31:49

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

下面是我的工作代码集。

代码语言:javascript
运行
复制
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的任何类型的对象。

票数 0
EN

Stack Overflow用户

发布于 2022-06-11 17:37:09

我很抱歉在这里提出一个问题。我真的想知道为什么代码会出现一些错误,例如:无法键入“System.Windows.Media.Media3D. MatrixTransform3D”对象类型“System.Windows.media. Media3D. Transform3DGroup”。

代码语言:javascript
运行
复制
Transform3DGroup modelTransformGroup = (Transform3DGroup)_myModel.Transform;
TranslateTransform3D curTransform (TranslateTransform3D)modelTransformGroup.Children[1];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55815841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档