使用故事板为3D对象制作动画

本文关键字:对象 动画 3D 故事 | 更新日期: 2023-09-27 18:04:41

我在c#中使用3D对象,我试图让一个立方体在自己的轴上旋转。此外,我需要能够控制旋转的方向,并能够暂停动画。

我目前的方法是创建一个故事板,并尝试访问在XAML上定义的"立方体"对象,但无济于事。谁能指出我做错了什么吗?

    this.RegisterName("cube", cube);    
    myStoryboard = new Storyboard(); 
    RotateTransform3D myRotateTransform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), 0));
    Rotation3DAnimation myRotationAnimation =  new Rotation3DAnimation(Rotation,AnimationSpeed);
    myRotationAnimation.RepeatBehavior = RepeatBehavior.Forever;
    myRotateTransform.Rotation.BeginAnimation(AxisAngleRotation3D.AxisProperty, myVectorAnimation);
    myStoryboard.Children.Add(myRotationAnimation);
    Storyboard.SetTargetName(myRotationAnimation, "cube");
    Storyboard.SetTarget(myRotationAnimation,cube.Transform);
    myStoryboard.Begin();

此代码产生的错误是:

Cannot animate '(0)' on an immutable object instance.

使用故事板为3D对象制作动画

当你说无济于事时,你现在处于什么情况?如果您目前在程序开始时遇到异常,我的猜测是尝试在xaml中定义您的Storyboard,或者反过来在c#中定义您的cube,并调用FrameworkElementRegisterName方法。如果没有,请详细说明

我倾向于在XAML中声明StoryBoard(因为你可以很容易地在Blend中创建你想要的,或者在XAML中创建它,然后在c#中调整它,节省了在代码中创建所有它(这是一个噩梦))。

这是一个XAML中的立方体

我在这里做一个旋转的3d立方体:http://www.codeproject.com/Articles/30078/WPF-A-3D-screensaver-written-in-WPF