Открылась Компьютерная Ярмарка Expo-com.ru на Тульской 
6000 кв.м, 20 000 покупателей в день.
Удачное расположение (м. "Тульская"), большой ассортимент, автостоянка, лифты, кафе, туалеты, телефонная связь, интернет. 
Арендаторам: 1 месяц бесплатно
Режим работы и проезд см. здесь >>
реклама у нас
***

Свежемороженая скорость

Алексей САЛО

В этой статье я бы хотел вам рассказать о motion blur — эффекте, придающем играм, анимации, да и просто рисункам больше реальности. Помните, на фотографиях быстро движущиеся объекты кажутся смазанными (размытыми)? Вот эта размытость в движении и называется на языке дизайна motion blur.Теоретически, эффект motion blur очень прост. Вы просто-напросто рисуете несколько кадров, а затем смешиваете их в одно изображение. Итак, давайте начнем с теории.

Теория

Как уже говорилось, Motion blur возникает, когда мы пытаемся сделать снимок с помощью фотоаппарата объекта, который движется с большой скоростью. Так как затвор (или шторка) фотообъектива открывается на период времени, больший, чем 0, то наш фотоаппарат «видит» изображение чуть в разных позициях. В результате мы получаем на снимке один объект в разных позициях, и этот объект выглядит смазано (размыто). Взгляните на Рис. 1 и 2. На первом рисунке у нас изображен падающий вниз шарик без использования эффекта (не очень-то и заметно, что он вообще падает). На втором рисунке у нас опять падает шарик, но уже с эффектом motion blur (согласитесь, это выглядит намного понятней и реалистичнее). Теперь поговорим о том, как этот эффект реализовать в играх.

Рис. 1.   Рис. 2.

Реализация

Наиболее очевидное решение — нарисовать несколько сцен в различный период времени (начало падения шарика, его состояние через 5 мс, потом через 10 мс после падения). Затем следует «склеить» все кадры воедино.

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

Теперь о том, как мы будем смешивать эти кадры. Можно просто наложить один на другой. А можно отрисовать каждый кадр, используя при этом альфа-канал. В качестве альфа-величины (величины прозрачности) для каждого кадра будем использовать 1/кадр. То есть, первый кадр у нас будет полностью непрозрачным (1/1=1 :-)). Второй кадр будет иметь прозрачность 1/2, и так далее.

Альфа-метод более гибок. Во-первых, мы можем менять количество кадров, которые хотим смешать. Во-вторых, мы можем размыть только движущиеся объекты. То есть, если мы имеем сложный статический фон, нам не нужно прорисовывать его по несколько раз в одном один кадре. Вместо этого мы один раз прорисовываем фон, а затем рисуем с альфа-каналом размытые объекты (тем самым экономим время и не теряем качество — неплохая оптимизация). Например, у нас есть игра, скажем, гонки на автомобилях. Мы сидим в салоне машины. Салон для нас — это статический фон, и размывать его при движении руля не обязательно :-). Теперь мы можем не беспокоиться о салоне и размывать только окружающую среду (деревья, линию дорожной разметки и т.д.) Если бы мы использовали первый метод, то пришлось бы рисовать по 4 варианта каждого кадра, как для окружающей среды, так и для салона автомобиля. Разумеется, хороших fps (frame per second) нам при этом не видать.

Что ж, на этом можно закончить. Написание кода — это уже не так сложно, если вы представляете себе задачу. Но будьте осторожны: при перепрорисовке сложных объектов происходит серьезная потеря скорости. Вот некоторые советы, чтобы хоть как-то решить эту проблему:

  • перепрорисовывайте только движущиеся объекты;
  • отключайте motion blur полностью, когда этот эффект не нужен;
  • предоставьте возможность пользователю отключить motion blur, если он этого хочет.

Кстати, вы некогда не задумывались над тем, почему в знаменитой NFS (Need For Speed) эта технология не использована? Не думаю, что с motion blur эта игра выглядела бы хуже…

Источник: http://www.mycomp.com.ua/
 

  Рекомендуем:

Лучший Анти-СПАМ

Рекомендуем!

Знакомое ощущение, когда утром во время сладкого сна раздается пронзительный звон будильника, и Вы готовы разбить его кувалдой (если она была бы рядом :), не так ли? К синонимам данного ощущения можно отнести чувство раздражения, когда, проверив свой почтовый ящик, Вы обнаруживаете кучу мусора (по-другому и назвать нельзя), которую какой-то добрый дядя назвал мягким словом СПАМ. 
Читать далее >>>

***

***

Copyright © "Internet Zone"info@izcity.com. Условия использования материалов