【问题标题】:WPF animation of multiple 3D objects doing multiple transforms each多个 3D 对象的 WPF 动画,每个对象执行多个变换
【发布时间】:2009-07-29 20:51:19
【问题描述】:

我正在开发一个 WPF 3D 项目,我可以在其中通过动画在场景中移动多个(1 - 20'ish)ModelVisual3D 对象。每个 ModelVisual3D 在每次移动时都应用了 RotateTransform3D 和 TranslateTransform3D。并且每个 ModelVisual3D 对象相互独立移动。

所以现在为了做到这一点,每次我想移动对象时,我都会旋转每个 ModelVisual3D 并为其旋转和平移变换运动设置双重动画。然后在两个变换(对于每个对象)上调用 BeginAnimation()。

也就是说,如果我有 20 个 ModelVisual3D 对象,我最终会在 40 个不同的变换对象上调用 BeginAnimation()...每次我需要移动它们时。

这表现不错,但似乎应该有更好的方法。有什么方法可以将多个 ModelVisual3D 对象的多个变换组合在一起,形成一个“变换组”对象,然后调用 Begin 吗?

另外,我研究了使用故事板对象,但我都是在 C# 中完成的(这里很少使用静态 xaml,大部分 UI 都是动态创建的)。故事板对象似乎只能用于单个 ModelVisual3D 对象。所以最好的情况是,我会减少到 20 个故事板对象,我称之为 BeginAnimation。

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

【问题讨论】:

    标签: wpf animation 3d transform


    【解决方案1】:

    您可以将 RotateTransform3D 和 TranslateTransform3D 存储在 Transform3DGroup 中。这应该会将您减少到 20'ish BeiginAnimation 调用。

    【讨论】:

    • 这真的行不通,因为 Transform3DGroup.BeginAnimation() 调用需要一个 DependencyProperty。我正在对 OffsetX 属性进行平移变换,并对 Angle 属性进行旋转变换。所以它仍然是两个电话
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 2012-03-15
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多