В статье автор рассказывает о визуальном эффекте Blur, его непосредственной роли при разработке компьютерных игр, а также рассматривает общий случай алгоритма по реализации данного визуального эффекта.
Ключевые слова: визуальные эффекты, blur, компьютерная графика, компьютерные игры.
Визуальные эффекты играют огромную роль в современном «сторителлинге»[1] и применяются не только в постановочных кинофильмах, но и в ТВ передачах, компьютерных играх и даже в парках аттракционов.
Благодаря современным высокопроизводительным центральным и графическим процессорам, методам обработки компьютерной графики и технологиям формирования конечного изображения визуальные эффекты становятся все более реалистичными, однако требования к их качеству и интерактивности сильно разнятся в зависимости от приложений.
В кинофильмах требуется высочайшее качество визуальных эффектов и их детализация, для чего обычно используются очень мощные вычислительные способности компьютеров.
Визуальные эффекты в ТВ передачах и компьютерных играх должны воспроизводиться с частотой не менее 24–60 Гц, что, в настоящее время, без проблем достигается на обычных домашних ПК, игровых приставках и, все более часто, в смартфонах.
С ростом мощностей персональных компьютеров, игровых приставок, а также смартфонов визуальные эффекты очень хорошо зарекомендовали себя в игровой разработке, что позволяет таким играм выделяться на фоне конкурентов и привлекать большую аудиторию.
С ростом мощностей вычислительной техники также растет качество исполнения визуальных эффектов и скорость их обработки.
В компьютерной графике существует огромное множество эффектов, которые значительно меняют визуальную составляющую и привносят заметные улучшения в формируемое изображение.
Из множества таких визуальных эффектов можно выделить один из немногих красивых в визуальном исполнении эффектов — Blur Visual FX.
Под Blur Visual FX (от англ. «пятно», «неясные очертания») понимают визуальный эффект, результатом которого является размытие контента в стиле матового стекла, к которому применяется данный визуальный эффект.
Размытие изображений играет огромную роль в современных областях компьютерной графики. Очень часто размытие изображений бывает направлено на имитацию близорукости, например, в случаях, когда близорукость становится желательной или даже необходимой. Также, размытие отдельных частей изображения часто используют из соображений цензуры. В ряде некоторых случаев размытие является неотъемлемой частью различных техник по коррекции изображений, направленных на устранение их дефектов, например, излишней детализации, дефектов сканирования, царапин, пыли и т. д.
Также известно, что фотомодели и фотографы используют специальные процедуры размытия изображений для достижения эффекта «устранения морщин». Изображения, к которым применен эффект размытия, лучше поддаются сжатию [1].
Различные техники размытия изображения доступны во всех более-менее известных графических редакторах, например, Affinity Photo, Pixelmator, Pixelmator Photo, Photoshop и др.
Одним из наиболее важных алгоритмов размытия изображений является алгоритм размытия по Гауссу.
Что вообще представляет из себя размытие? Если говорить вкратце, то это усреднение соседних пикселей. Таким образом, рассматривая текущий пиксель в какой-либо точке необходимо найти средний цвет всех его соседей в определенном радиусе.
Если просто использовать среднее арифметическое значение, или как его называют иначе — равномерное распределение, то эффект размытия не будет таким красивым, как того хотелось видеть. При таком раскладе эффект лишь будет приближен к исполнению в стиле матового стекла.
Для решения этой проблемы обычно соседей умножают на коэффициенты, значения которых подчиняются нормальному закону распределения. В курсе теории вероятностей закон нормального распределения также называется распределением Гаусса, откуда и происходит название визуального эффекта — размытие по Гауссу.
Уравнение распределения Гаусса в N измерениях имеет вид (формула 1):
, (1)
или, в частном случае, для двух измерений (формула 2):
, (2)
где — радиус размытия (), а — стандартное отклонение распределения Гаусса.
Значение стандартного отклонения распределения Гаусса определяет степень размытия изображения.
Данный визуальный эффект является самым популярным способом размытия изображения при разработке компьютерных игр по многим причинам.
Так, рассматриваемый визуальный эффект имеет главное и решающее свойство в компьютерных вычислениях и, в частности, в компьютерной графике — свойство «линейной сепарабельности», это означает, что его выполнение можно разделить на две части — размытие по координате x и размытие по координате y. Это позволяет сократить использование процессорного времени при вычислениях, достигая при этом нужного результата.
Еще одним достоинством визуального эффекта является то, что данный эффект прост в реализации и достаточно нетребователен к вычислениям по процессорной части.
В алгоритме, реализующем данный эффект, используется свойство линейной сепарабельности, которое было упомянуто выше. Вместо двумерной матрицы преобразования используется симметричный «массив» преобразования, в котором центральный элемент имеет наибольшее значение. Массив последовательно используется сначала при «горизонтальном», а затем при «вертикальном» проходах размытия. В случае при горизонтальном проходе массив используется как «строка», а при вертикальном — как «столбец». Для каждого пикселя изображения, соответствующего «центральному» элементу симметричного массива преобразования, новое значение пикселя, то есть значения его цветовой модели RGB, вычисляется как линейная комбинация самого пикселя и его ближайших «соседей», в соответствии с весовыми коэффициентами симметричного массива преобразования. Такая техника широко известна под названием Sliding Window (от англ. плавающее окно).
Таким образом, с точки зрения реализации, размытие по Гауссу состоит в том, чтобы «усреднить» значение каждого пикселя изображения с соседними пикселями в соответствии с весовыми коэффициентами «плавающего окна». На первом проходе усреднение происходит по «горизонтальным» соседям, а на втором — по «вертикальным».
Данный визуальный эффект может быть исполнен в разных техниках. Он может использоваться как эффект в статическом состоянии — Static Blur, динамическом состоянии — Dynamic Blur, или же использован как эффект «в движении» — Motion Blur.
Blur Visual FX — это отличный способ стилизовать интерфейс таким образом, что сделает его визуальную составляющую гораздо выигрышнее в сравнении с конкурентами.
Литература:
- Закон распределения Пуассона и Гаусса https://tech.wikireading.ru/14522
[1] Данный термин введен Д. Армстронгом в книге «Managing by Storying Around» и означает повествование историй, в русскоязычной литературе используется именно в такой форме