Вращение полных 360 градусов в 3D WPF

У меня есть 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);
5
задан Stu Thompson 14 January 2010 в 12:05
поделиться

2 ответа

Первое, что я бы попробовал, это перепрофилировать ваши единичные тесты, чтобы поделиться настроенным кодом между тестами с помощью рефакторинга на метод, который настраивает макеты и ожидания. Параметризуйте метод так, чтобы ваши ожидания были настраиваемыми. Может потребоваться один или, возможно, несколько из этих методов набора в зависимости от того, насколько аналогична набор от теста к тесту.

-121--1918204-

Тесты слишком сложны.

Вы должны проверить аспекты вашего класса, а не писать unittest для каждого члена вашего класса. Неразборчивость не должна охватывать всю функциональность члена.

-121--1918208-

Насколько я понимаю, Rotation3DAnimation использует сферическую линейную интерполяцию, поэтому он всегда найдет кратчайший путь.

Одним из обходных путей является использование Rotation3DAnimationUsingKeyFrames: установите ключевой кадр на 120, 240 и 360, и вы должны быть хороши.

Извините, что сейчас нет кода, у меня нет WPF на этой машине...

- Джасон

3
ответ дан 15 December 2019 в 01:02
поделиться

Я знаю, что на этот вопрос уже был дан ответ, но в поисках лучшего способа сделать это я нашел такую ​​альтернативу:

Вы можете установить значение поворота на 180 (или половину того, что вы хотите повернуть), а затем установите для поведения повторения значение повторения дважды и для параметра IsCummulative значение true.

1
ответ дан 15 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: