我有一个ModelVisual3D。我想把它在Viewport3D中的位置动画化。我已经让代码与BoxVisual3D一起工作(来自HelixToolkit),但是这些代码不适用于我的ModelVisual3D。ModelVisual3D应该沿着X轴进行转换,但是它只是静止不动。
实际上,我已经将BoxVisual3D的工作代码复制到了ModelVisual3D中。现在,我只是在做OffsetX属性,但稍后我需要在多个ModelVisual3Ds上一次动画化多个属性,这就是故事板。
这是不起作用的代码:
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。
发布于 2019-04-25 13:31:49
我在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的任何类型的对象。
发布于 2022-06-11 17:37:09
我很抱歉在这里提出一个问题。我真的想知道为什么代码会出现一些错误,例如:无法键入“System.Windows.Media.Media3D. MatrixTransform3D”对象类型“System.Windows.media. Media3D. Transform3DGroup”。
Transform3DGroup modelTransformGroup = (Transform3DGroup)_myModel.Transform;
TranslateTransform3D curTransform (TranslateTransform3D)modelTransformGroup.Children[1];
https://stackoverflow.com/questions/55815841
复制相似问题