Создание хороших анимаций с низкой частотой кадров - PullRequest
0 голосов
/ 25 февраля 2009

Хорошо, это может звучать глупо, но я хочу знать, есть ли какие-либо рекомендации о том, как анимировать объекты максимально плавно и быстро, когда вы знаете, что у вас будет низкая частота кадров.

Моя анимация состоит в том, что я перемещаю приблизительно 10 2-мерных прямоугольников (содержащих по каждой текстуре) примерно на 500 пикселей по x и y, и я также уменьшаю их до, возможно, 30% с 1000 * 1000 пикселей. Я хочу, чтобы анимация завершилась примерно за 200 мс. Я оцениваю частоту кадров, может быть, 20-30 кадров в секунду.

Я пробовал разные тайминги и скорости движения, но все они выглядят как дерьмо. Если у вас высокая скорость, вы едва видите анимацию, а если у вас медленная скорость, она выглядит плавной, но это занимает много времени.

Было ли проведено какое-либо исследование о том, как сделать быструю анимацию, которая по-прежнему выглядит плавной. Я думал, что у вас, возможно, может быть ускорение, которое идет медленным в начале, а затем скачет в конце, или, может быть, наоборот? Все мои собственные эксперименты выглядят как нервными, так и медленными: P

Должен быть некоторый предел в пикселях / кадре, который, по нашему мнению, выглядит хорошо. Где я могу найти такие рекомендации?


Почему я хочу это знать?

Я сделал приложение с переключением окон, которое делает отличные анимации, но проблема в том, что когда я не запускаю какое-либо графически интенсивное приложение, моя графическая карта переходит в какой-то режим с низким энергопотреблением. Это приводит к тому, что мое приложение, которое не работает более 3 сек за один раз, работает очень плохо, потому что gfx-карта никогда не успевает ускориться.

(Возможно, вы можете попробовать это сами, если у вас есть ноутбук и Vista: нажмите win + tab, и вы увидите, что анимация немного прерывистая, затем запустите фильм и снова нажмите win + tab, на этот раз анимация гораздо более плавный).

Ответы [ 2 ]

1 голос
/ 25 февраля 2009

Вы должны быть в состоянии получить разумно выглядящую анимацию на скорости около 15 кадров в секунду, если движения небольшие. Поймите, что существует ограничение на размещение высокополосной графической информации (много движения и изменение формы / цвета) в среде с низкой пропускной способностью (низкий кадр / с), но такие методы, как размытие движения, помогут.

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

0 голосов
/ 25 февраля 2009

Если ваша анимация является чисто двумерной (например, жесткие сдвиги содержимого окна), то вы можете улучшить их плавность, привязав пиксель к видеокадру. Движение ровно N пикселей на кадр выглядит плавным даже при очень низкой частоте кадров, тогда как если у вас есть некоторая оставшаяся доля пикселя, вы получаете псевдонимы из выборки пикселей, которые могут быть заметны.

Смазывание в теории - это способ придать движению плавный вид, но правильное размытие движения стоит дорого, поэтому, если у вас уже есть проблемы с частотой кадров, тогда размытие движения, вероятно, только ухудшит ситуацию. Но может быть какой-то способ снизить стоимость, например, если движение в постоянном направлении и скорости, тогда вы можете визуализировать одно размытое изображение и использовать его. Или, возможно, несколько раз перерисовать частично прозрачные копии движущегося изображения, чтобы получить «след».

...