Я работаю с 3D-объектами в C#, и я застреваю, пытаясь оживить куб, чтобы вращаться на собственной оси. Кроме того, мне нужно иметь возможность контролировать направление вращения и иметь возможность приостанавливать анимацию.Использование раскадровки для анимации 3D-объекта
My current aproach - это создание раскадровки и попытка получить доступ к объекту «куб», определенному на 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.
При компиляции этой arrises ошибки на myStoryboard.Begin() строка: 'Не можете анимировать '(0)' на экземпляре неизменяемого объекта. Я также попытался анимировать поворот с помощью AxisAngleRotation3D и литья .BeginAnimation(); на этом объекте, но я не мог обработать изменения в ротации изящно (и правильно, анимация вернулась в исходное положение при остановке .BeginAnimation). – rdlf
Я думаю, что проблема исходит от 'Storyboard.SetTarget (myRotationAnimation, cube.Transform);' Проверьте эту ссылку, это может помочь вам: [Как повернуть куб] (http://www.codegod.com/wpf -3D-анимация и-текстура-AID439.aspx) – BenFradet