GameDev :: Статья 2

Статья 2. Реальность- Motion Blur

Введение
Эффект размытости изображения при движении- это еще один прием созданный для того, чтобы сделать игры более реалистичными. Фактически, с улучшением аппаратного обеспечения, люди ожидают от игр все большей схожести с реальной жизнью. В этом, так называемом "реальном мире", объекты кажутся смазанными (размытыми), когда они движутся с огромными скоростями. Этот эффект общеизвестен, как размытость изображения при движении (РИПД), и он может прибавить огромное количество реализма любому 3-х мерному игровому движку.
Теоретически, РИПД очень простой; вы прорисовываете несколько кадров, а потом смешиваете их все вместе в единое изображение. Итак, давайте начнем с теории.

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

Реализация
Теперь, так как вы знаете, как работает РИПД, возможно вы сможете реализовать его. Наиболее очевидное решение- это прорисовывать несколько сцен за различное время. Это решение является наиболее общепринятым. Следующим шагом в этом процессе является смазывание воедино кадров, используя никоторый тип функции. Теперь встает вопрос о том, что это за функция (другой возможный вопрос- это сколько кадров нужно смешивать). В отношении количества кадров, которые нам нужно прорисовать, я считаю, что 3-4 кадра это нормальное значение. Такое количество кадров позволяет добиться довольно приличной частоты смены кадров (если вам нужна очень быстрая прорисовка, то можно использовать всего 2 кадра). Другой стороной этого метода является то, что когда объекты движутся очень быстро, мы можем получить некоторые артефакты (артефакт- это искажение изображения). К счастью, если объект движется так быстро, большинство людей даже этого не заметят.
Теперь, в отношении того, как мы будем смешивать эти кадры, у нас есть два выбора. Первый метод заключается в том, чтобы просто смешать кадры вместе; второй метод заключается в прорисовке каждого кадра, поверх другого, используя альфа канал для каждого с кадров (используя 1/кадр в качестве альфа величины). Не будем рассматривать первый метод, так как он слишком простой (вы можете разобраться в нем самостоятельно), и не слишком гибкий. Второй метод также является простым, а также он быстрее, так как мы можем пропустить один шаг.
Альфа метод более гибкий по двум причинам. Первая причина- это то, что мы можем изменять количество кадров, которые хотим смешать или сделать один кадр более выразительным. Вторая причина- это то, что мы можем размыть только движущиеся объекты (хорошая маленькая оптимизация). Если у нас есть сложный, статический фон, то нам не нужно прорисовывать его 3 или 4 раза за один кадр. Вместо этого, мы можем прорисовать фон один раз, и затем рисовать с альфа каналом размытые объекты поверх него (фона), мы экономим время и не теряем качества, отличная оптимизация!
Что же, на этом все. РИПД- это очень простое для понятие. Написания кода не намного сложнее, чем знание самой идеи. Еще, РИПД может прибавить огромное количество реализма в игре.
К сожалению, это может быть довольно медленная технология в результате перепрорисовки некоторых объектов. Вот некоторые способы, чтобы избежать проблемы скорости:

  • Перепрорисовывать только движущиеся объекты
  • Отключать РИПД полностью, когда он (этот эффект) не нужен
  • Позволять пользователю отключить РИПД, если он этого хочет.

Alex Salo

Навигация
Назад | Список статей | Вперед
Используются технологии uCoz