Вращение на 360 градусов в WPF 3D
У меня есть ModelVisual3D куба, и я хочу анимировать его, чтобы он вращался вокруг своей оси на 360 градусов. Я делаю RoationTransform3D, который я говорю, чтобы повернуть на 360, но он не вращается вообще, даже если вы скажете 270 градусов, он поворачивается только на 90 градусов, но в противоположном направлении. Я предполагаю, что компьютер вычисляет "кратчайший путь" вращения. Лучшее решение, которое я придумала, - сделать один анимационный поворот на 180, а после его завершения вызвать еще 180, чтобы завершить полный оборот. Есть ли способ сделать это в одной анимации?
RotateTransform3D rotateTransform = new RotateTransform3D();
myCube.Model.Transform = rotateTransform;
AxisAngleRotation3D rotateAxis =
new AxisAngleRotation3D(new Vector3D(0, 1, 0), 180/*or 360*/);
Rotation3DAnimation rotateAnimation =
new Rotation3DAnimation(rotateAxis, TimeSpan.FromSeconds(2));
rotateTransform.BeginAnimation(RotateTransform3D.RotationProperty,
rotateAnimation);
2 ответа
Насколько я понимаю, Rotation3DAnimation использует сферическую линейную интерполяцию, поэтому она всегда найдет кратчайший путь.
Одним из обходных путей является использование Rotation3DAnimationUsingKeyFrames: установите ключевой кадр на 120, 240 и 360, и все будет хорошо.
Извините, сейчас нет кода, у меня нет WPF на этой машине...
Джейсон
Я знаю, что на это уже ответили, но в поисках лучшего способа сделать это я нашел эту альтернативу:
Вы можете установить значение поворота на 180 (или половину того, что вы хотите повернуть), а затем установить поведение повтора, чтобы повторять дважды, а "IsCummulative" - true.