2009-07-29 97 views
1

我正在制作一个WPF 3D项目,我可以通过动画在场景中移动多个(1至20个)ModelVisual3D对象。每个ModelVisual3D都有一个RotateTransform3D和一个TranslateTransform3D应用于它的每个移动。并且每个ModelVisual3D对象彼此独立移动。多个3D对象进行多个变换的WPF动画

所以现在为了做到这一点,每当我想要移动物体时,我都会旋转每个ModelVisual3D并为其旋转和其转换转换运动设置双重动画。然后在两个变换(每个对象)上调用BeginAnimation()。所以这意味着,如果我有20个ModelVisual3D对象,我最终会在40个不同的变换对象上调用BeginAnimation()...每次我需要移动它们。

这表现好,但好像应该有更好的方法。有什么地方可以将多个ModelVisual3D对象的多个变换组合到一个“变换组”对象中,然后调用Begin?另外,我看了一下使用故事板对象,但我在C#中完成了这一切(很少有静态xaml在这里进行,大部分UI都是动态创建的)。故事板对象似乎只能用于单个ModelVisual3D对象。所以最好的情况下,我会下降到20个我称之为BeginAnimation的故事板对象。

或者是我正在做的最好的事情?

回答

0

您可以将RotateTransform3D和TranslateTransform3D存储在Transform3DGroup中。这应该会把你降到20个BeiginAnimation呼叫。

+0

这真的不起作用,因为Transform3DGroup.BeginAnimation()调用需要一个DependencyProperty。我正在对OffsetX属性进行平移变换,并对Angle属性进行旋转变换。所以它仍然是两个电话 – Turbo 2009-07-30 21:52:39