Как сделать ambient occlusion в photoshop

Обновлено: 02.07.2024

Скитаясь по интернету в поисках алгоритмом освещения, которые бы удовлетворили мои потребности, я наткнулся на весьма новый алгоритм, разработанный компанией NVIDIA, название которого AOV (Ambient Occlusion Volumes). Имея в своём распоряжении тёмные осенние ночи и несколько чашек горячего кофе, я решился изучить данный алгоритм, следствием чего является данная статья. Прежде чем я начну, хотелось бы отметить своё удивление по поводу того, что данный алгоритм имеет незаслуженно малую популярность в кругах разработчиков игр, в отличии от всеми знакомого нам SSAO. Содержание данной статьи будет, по большей мере, состоять из теории.

Введение

В июне 2010 года Morgan McGuire, исследователь и разработчик компании NVIDIA, разработал алгоритм освещения, который носит название Ambient Occlusion Volumes. При разработке данного алгоритма, M. McGuire, ставил себе в цель добиться более высокой производительности и качества освещения. Производительность алгоритма, по словам разработчика, во многом независима от сложности моделей, а по качеству освещения не уступает Ray Tracing'у.

Немного об Ambient Occlusion


AO(Ambient Occlusion) является приближённым к GI(Global Illumination) алгоритмом, призванным к затенению пространств, на которых, фактически, не падают лучи света по причине того, что данные пространства условно перекрываются другими объектами, делая недоступным попадания лучей света к этому пространству. Сам алгоритм работает путём вычисления лучей, исходящих из точки, затенение которой мы проверяем, с последующей проверкой на пересечение объекта лучом. Если луч проходит без препятствий, то данная точка освещена, иначе — затенена.

Но при расчете таким алгоритмом возникают некие трудности. Через некоторое время на замену старому алгоритму пришёл SSAO(Screen Space Ambient Occlusion) от разработчиков компании Crytek. Сам алгоритм работал по такому принципу, что определяется некая сфера и в диапазоне этой сферы случайно отбираются точки после чего идёт проверка глубин(прежде записанных в буффер глубин) этих точек с той, для которой мы вычисляем затенение. Если глубина последней больше за глубину случайной точки, то она — затенена, а иначе, соответственно, освещена. Выполняется несколько таких проверок, после чего их результаты суммируются и вычисляется коэффициент затенения. Выглядит оно, примерно, так:

Благодаря своей простоте и, сравнительно, маленькой нагрузке, этот алгоритм стал излюбленный у многих разработчиков игр. Однако, он имеет кучу недостатков. Основная проблема этого алгоритма заключается в том, что при проверке глубины, выбранная точка может оказаться за гранью объекта который перекрывает проверяемую точку. Это приводит к тому, что точка будет считаться освещённой.

Далее мне бы хотелось рассмотреть еще одну немаловажную тему перед тем как будет описан AOV метод.

Radiosity

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

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

Метод radiosity, так же известный как метод излучательности, является одним из методов GI, который опирается на расчёт форм-факторов(form-factors), которые, в свою очередь, описывают обмен энергией между парами плоскостей в окружающей среде.

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


Вычисляется форм-фактор таким образом:


где θi,j — угол между нормалью плоскости и Ri,j,, dA1,2 — дифференциальная область плоскости, Ri,j — вектор расстояния между dA1,2. В данном уравнении HID равно единице, если dA1,2 видимы друг для друга и ноль, если наоборот.

На расцвете данного метода использовались два подхода: Full Matrix Radiosity и Progressive Refinement Radiosity.

Full Matrix Radiosity

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

Интенсивность света, который излучает плоскость вычисляем таким способом:


где pi -коэффициент отражения плоскости i; Fij — форм-фактор из плоскости i к плоскости j; Ii — raidosity плоскости i; Iei — интенсивность излучения плоскости i; N — количество плоскостей которые находятся в окружении.

Данный подход был неплох, но не позволял добиться детального и точного изображения. К тому же, он становился очень дорогим, когда на сцене присутствовало большое количество плоскостей.
Позже, этот метод был усовершенствован путём разбиения плоскостей на патчи(фрагменты), а в свою очередь каждый патч разбивался на элементы. Таким образом, мы получали более детальное изображение.

Форм-фактор от патча к патчу вычисляется так:


где Ei — количество элементов в патче, Fej — форм-фактор от элемента e к патчу j, Ai,e — области патча и элемента.

Progressive Refinement Radiosity

Данный подход основан на предыдущем. Особенность данного подхода состоит в том, что после каждой итерации происходит перерасчёт, а именно инкремент значения излучательности плоскости. Рассчитывается оно таким образом:


где Ii — уже просчитанное значение излучательности.

Проблемой данных подходов является сложность расчётов даже при простых формах объектов. Чтобы вычислить форм-фактор плоскости нам нужно произвести два раза интегрирование, не говоря уже об лишних расчётах. На решение этой проблемы пришёл Hemi-Cube Radiosity.

Hemi-Cube Radiosity

HC имеет схожесть с алгоритмом Nussalt Analog. Суть его была в том, что вокруг точки на плоскости размещается так называемая проекционная полусфера с единичным радиусом. Другая плоскость проецируется на эту полусферу и размещается на базе полусферы. Таким образом форм-фактор будет равен отношению области спроецированной плоскости в базе полусферы к области самой базы полусферы. Алгоритм HC в своей реализации использует, как вы уже могли догадаться, полукуб.

Стороны полукуба разбиваются на набор небольших дискретизированных плоскостей(hemi-cube pixels), каждая из которых имеет свой предрассчитанный форм-фактор. Когда вторая плоскость проецируется на полукуб, сумма форм-факторов дискретных областей на которых была спроецированна плоскость будет равна значению форм-фактора от точки на первой плоскости до второй плоскости.


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

Ambient Occlusion Volume

Во время разработки метода radiosity, Baum D.R. предложил такой метод вычисления форм-фактора:


где Gi — набор граней плоскости, Nj — нормаль дифференциальной плоскости j, Гg — величина равная углу гамма и направлению полученного при векторном произведении Rg и R(g+1), как показано на рисунку снизу:


M. McGuire вдохновился данным подходом и на основе последнего придумал AO алгоритм. Описывал он его так:

Пусть X будет очень маленьким патчем гладкого многообразия. Центроид X будет в точке, которая является началом нормали n. Полигоном P будет полигон с вершинами , который полностью расположен на позитивной части плоскости, при условии p*n > 0. Таким образом, преграждение лучей света, создаваемое полигоном P, будет равно форм-фактору излучательной способности между P и X.


где j = (i+1) mod k.

Реализация AOV's

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

Рассмотрим выпуклый полигон P с вершинами , которые при любой комбинации из 3-х вершин не создают коллинеарности. Сперва, нам нужно рассчитать затухающую функцию, которая нам понадобиться чтобы добиться плавности при переходах от near- к far-field освещению. Вычисляется она таким образом:


где а — 1 для твёрдых плоскостей, m(i<k) — нормали к граням полигона P, mk — отрицательная нормаль к полигону P:


Выглядит оно таким образом:


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

Хочется внеси еще один новый термин, который называется obscurance. Он отвечает за затухание эффекта перекрытия со сменой расстояния.

Вектор смещения мы получаем таким образом:


где δ является тем самым obescurance на максимальной дистанции.


И последним нашим шагом будет произведение затухающей функции( g ) на перекрытие полигоном P ( AOp(n) ). Так же, после всех операций следует применить т.н. blending.

После всего написанного здесь было бы грехом не приложить скриншоты, которые продемонстрируют работу AOV алгоритма. Эти скриншоты были сделаны компанией NVIDIA, а демо можно найти внизу статьи(опять же от NVIDIA).

image

image

Для сравнения с Ray Tracing'ом:

image

Заключение

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

Литература

Мной было прочитано достаточное количество источников, но основной упор я делал именно на эти паперы:

— M. McGuire «Ambient Occlusion Volumes»
— «Improving radiosity solutions through the use of analytically determined form-factors»

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

6 советов для реалистичной цифровой живописи в Фотошоп

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

Сложность урока: Легкий

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

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

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

1. Используйте фототекстуры в своей работе

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

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

В этом невероятном примере Джонсона Тинга (Johnson Ting), он создает великолепное изображение астронавта. Обратите внимание, как он использует небольшие части фотографий, чтобы добавить реалистичные текстуры для своего рисунка.


2. Рисуйте с текстурными кистями

Помните Боба Росса (Bob Ross)? Короля гигантских причесок в стиле "афро" и "счастливых деревьев"? Более десяти лет он здорово рисовал прекрасные масляные пейзажи в своей ТВ программе The Joy of Painting. Он достигал невероятно реалистичных деталей при помощи простых материалов, включая широкую кисть для рисования, которую он использовал при создании своих фирменных деревьев.

Вы также можете получить реалистичный результат, используя большое количество текстурированных кистей в Photoshop. Их можно найти в интернете или создать самому. В этом вам поможет серия уроков Custom Brushes in Photoshop.

Хотите увидеть, как это делается? Узнайте, как использовать разные кисти в этих уроках:

  1. Рисуем текстурной кистью в Photoshop
  2. Рисуем реалистичный огонь в Фотошоп
  3. Рисуем реалистичную воду в Фотошоп
  4. Рисуем реалистичные снежные эффекты в Фотошоп


3. Используйте Ambient Occlusion для освещения

Изучение техники Ambient Occlusion - это как случайно наткнуться на святой Грааль техник рисования. Если вы уже знакомы с рисованием в оттенках серого, то, пожалуй, знаете такое распространенное уравнение:

Одна черно-белая основа + цвета с разными режимами наложения = почти законченный рисунок.

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

Мы уже были впечатлены возможностями Photoshop превращать черно-белые оттенки в динамический цветной рисунок. Но с Ambient Occlusion достаточно просто применить универсальный сценарий освещения, который на половину уменьшает требуемое для выполнения работы время. Может даже больше. После того, как вы завершите превращение оттенков серого в цветные оттенки, рисунок будет почти закончен. Никаких больше безустанных "допиливаний" изображения после применения цвета или устранения ошибок в оригинальной заготовке.

Многие авторы уроков успешно применяют эту технику. Посмотрите, как автор этого урока использовал Ambient Occlusion для создания Китайской лапши в Photoshop . Просто освойте эту технику, и она значительно изменит процесс рисования и позволит создавать более реалистичные рисунки.


4. Рисуйте с натуральными цветовыми палитрами

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

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

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

В этой иллюстрации Alice Catrinel Ciobotaru можно заметить, как даже крошечные оттенки пурпурного цвета используются для ее простого урока по рисованию реалистичных губ. Узнайте больше о человеческом теле, чтобы научиться замечать эти крошечные изменения цвета и затем попробуйте самостоятельно использовать натуральные цветовые палитры.


5. Добавьте быстрый фильтр Шум

Если вы забыли о рисовании разными кистями или вам надоело собирать кусочки фотографий для своего творения, можно воспользоваться одним простым решением. Используйте быстрый фильтр Шум (Noise).

Чтобы добавить шум, создайте новый слой (New Layer), нажав Ctrl + Shift + N. Заполните его светло-серым цветом. Перейдите в меню Фильтр > Шум > Добавить шум. (Filter > Noise > Add Noise) и установите значения поля Эффект (Amount) на 15%.

Установите режим наложения (Blending Mode) на Перекрытие (Overlay) и сократите Непрозрачность (Opacity) до 30%.

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


6. Создавайте дополнительные источники освещения

Каждый художник за свою жизнь рисует хотя бы пару портретов. Для работы над этой техникой не обязательно использовать только портреты, но при помощи них вы можете поэкспериментировать с разными цветовыми настройками.

Лучший способ изучать свет - изучать фотографии. Поищите в интернете немного информации, чтобы узнать о разных типах освещения, включая:

  • Rim Lighting
  • Back Lighting
  • Ambient Light
  • Different Combinations of Light

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

Попробуйте применить свои наработки, исследуя, как эта техника освещения делает работу более живой. Экспериментируйте с разными цветами и будете приятно удивлены результатом.


Выводы

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

Они нашли свою формулу. Вы найдите свою.

Желаю успехов в вашем путешествии по миру цифровой живописи. Оставайтесь на связи с серией Цифровая живопись от А до Я для новых советов и трюков. Удачи!

Ambient occlusion – метод глобального фонового или непрямого затенения объектов.

Мягкие тени, создаваемые за счет Ambient Occlusion в различных трещинах и углублениях 3D-объектов, освещаемых в сцене непрямым освещением, визуально разделяют объекты, добавляя дополнительного реализма на рендере.

AO_01

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

AO_02

Если эти лучи взаимодействуют с другой поверхностью, этот участок становится темнее. Если нет – светлее. В большинстве 3D-приложений АО рассчитывается с помощью специального шейдера, который назначается на геометрию. После рендера АО-пас добавляется к изображению в редакторе для композитинга, например в Photoshop, где он дополнительно редактируется и улучшается.

AO_03

Учитывая, что АО имитируется тогда, когда поверхность объекта «испускает» свет, любой объект с назначенной картой прозрачности не будет просчитываться автоматически. При этом кажется, что АО не рассчитывается, но это не так, поскольку на самом деле лучи света проходят сквозь прозрачную геометрию.

Ambient Occlusion идеально подходит для смягчения всех теней в сцене, если они чрезмерно резкие, а также для их затемнения, если светлые. При этом необходимости в создании дополнительного источника света нет, поскольку АО работает не так, как, например, Final Gather, для которого нужен источник света, испускающий лучи. Для Ambient Occlusion также характерна некоторая вариативность цвета, благодаря которой наши глаза лучше различают детали, которые в противном случае остались бы незамеченными или размытыми. Кроме того, АО идеально подходит для визуализации незатекстуренных моделей.

Советы по настройке Ambient Occlusion
При просчете Ambient Occlusion время рендера можно также сократить, если запечь АО в отдельный слой. Это особенно важно при рендере анимации, поскольку при рендере каждого компьютер будет заново рассчитывать AO, что значительно замедляет время рендера.

AO_04

Если при рендере на АО-пасе возникают непонятные артефакты, например, излишне насыщенные или слабые тени и пр., нужно подкрутить параметр Max distance в настройках АО. Этот параметр отвечает за то, какое расстояние должны преодолеть лучи света на пути к поверхности геометрии. Чем больше расстояние, тем шире и насыщенней будут тени. Увеличение расстояния также увеличит количество отбрасываемых теней. При уменьшении этого расстояния лучи проделают меньший путь, поэтому тени появятся только там, где геометрия будет расположена близко к поверхности. Экспериментальный подход – залог того, что вы достигнете желаемого результата.

AO_05

Для дополнительного реализма на рендере можно также использовать непосредственно АО-пас, который можно найти в настройках рендера. Это позволит с помощью направленного источника света добавить Ambient Occlusion дополнительной направленности, а также уменьшит его зависимость от окружающей геометрии.

В некоторых случаях необходимости в рендере отдельного АО-паса нет, поскольку в некоторых материалах он встроен. В таких 3D-редакторах, как 3ds Max или Maya, АО можно найти в настройках архитектурных или дизайнерских материалов. Поэтому перед тем, как настроить отдельный АО-пас, проверьте, не встроен ли он в настройки материала.

Часть 5. Обзор приложений для создания различных карт.

В предыдущей части статьи было рассказано про Теорию карт нормалей.

Данная часть статьи посвящена мини-обзорам программ и плагинам для генерации карт, включая карты нормалей, карты смещения, самоосвещенной карты нормалей, карты освещения/затенения и карты отражений из текстуры и карты высот. В данной части статьи, помимо уже упомянутого в одной из предыдущих частей Normalmap Online, обозреваются такие программы и плагины, как Normalmap Online, NVIDIA Texture Tools for Adobe Photoshop (NVIDIA Normal Map Filter), SSBump Generator, xNormal, GIMP normalmap plugin и SmartNormal, CrazyBump и Awesome Bump.

Вы можете поддержать автора проекта , пожертвовав ему сумму (сколько посчитаете нужным и возможным) на развитие сайта.

NVIDIA Texture Tools для Adobe Photoshop

Раз разговор зашел о картах нормалей, не могу не сказать еще об одном удивительном инструменте NVIDIA Texture Tools for Adobe Photoshop, который позволяет:

Более подробно с возможностями данного набора инструментов вы можете ознакомиться на сайте Nvidia, либо в pdf-файлах NVJavaScript.pdf, PhotoshopDDSPlugin.pdf и PhotoshopNormalMapFilter.pdf, которые будут доступны вам в папке “\\Program Files\NVIDIA Corporation\“ или в “\\Program Files (x86)\NVIDIA Corporation\“после установки пакета.

Для того чтобы запустить плагин, выберите слой, на котором хотите применить фильтр, затем вкладку Filter в главном меню, в котором выберите вкладку NVIDIA Tools, а в ней – NormalMapFilter.

Карты нормалей, создаваемые в NVIDIA Texture Tools for Adobe Photoshop в режиме по умолчанию, как и 3ds Max, имеют инвертированный зеленый канал, следовательно, для того чтобы они правильно работали в Unity3D, необходимо инвертировать ось Y (Invert Y) при создании карты нормалей из текстуры или карты высот.

На рисунке показаны созданные карты нормалей из текстуры. nvidia-filter-normal-maps

Как видно из рисунка, NVIDIA Normal Map Filter не просто позволяет создавать карты нормалей из изображений (в центре), используя большое количество настроек (окна настроек показанынад созданными картами нормалей), но и инвертированные карты нормалей (справа), как если бы цвета текстуры предварительно были бы инвертированы.

Также в данном плагине существует возможность предпросмотра карты нормалей на 3D модели (плоскости), что присутствует и в плагине для Фотошопа xNormal, который является частью standalone версии xNormal.

16-битный фильтр для плагина от nVidia доступен по ссылке NormalMapFilter16.zip, который позволяет работать с 16bit изображениями в градациях серого, в которые экспортирует изображения ZBrush.

SSBump Generator

Еще одним представителем семейства генераторов карт нормалей и карт высот является SSbump Generator 5.3 w/ CUDA, который позиционируется, как должно быть понятно из названия, как генератор ssbump карт нормалей (Self-Shadowed Bump Maps). Карты нормалей ssbump являются частью системы самозатенения (хранения карты затенений вместе с картой нормалей), реализованной в движке Source от Valve Corporation. На данном движке был реализован известный Half-Life 2, а также переиздана первая часть данной игры, получившая название Half-Life: Source, которая была издана в 2004 году, и включающая ряд графических нововведений и дополненная изменениями в игровом процессе.

На рисунке показан интерфейс программы SSbump Generator 5.3 w/ CUDA, а также пример создания самозатененной карты нормалей (Self-Shadowed Bump Maps) для движка Source, разработанного компанией Valve. ssbump-generator

Помимо ssbump текстур (самозатененных и не самозатененных) SSbump Generator способен генерировать простые карты нормалей, карты высот, а также добавлять карту затенения (ambient occlusion) к изображению. Интерфейс не совсем интуитивно понятный.

Кстати карты нормалей ssbump также можно запечь и в xNormal.

xNormal

xNormal представляет собой приложение для запекания различных карт с высокополигональной 3D модели на низкополигональную, включая закпекание карт нормалей, карт высот, диффузных текстур (Albedo), карт затенения/освещения (Ambient occlusion), bent normalmap (карты нормалей с самозатенением), PRTpn, Convexity map, Thickness map, Proximity map, Cavity map, Wireframe and ray fails, Direction map (Vector Displacement Map), Radiosity normal map (карта нормалей с запеченным освещением), vertex colors хайполи модели, curvature map, карты прозрачности (translucency map), derivative map (карты нормалей в пространстве объекта).

На рисунке показано меню настроек запекания в xNormal. xnormal-maps-to-render

Имеется предпросмотр модели в 3D пространстве в выбранном разрашении, причем как ее highpoly версии, так и lowpoly с возможностью наложения карты нормалей, текстуры, карты затенений, карты отражений (Reflect texture), текстуры блеска/глянцевости (Gloss texture), карты свечения (emissive texture), карты отражений (Reflect texture) и карты глобального освещения (DiffuseGI texture).

Кстати, xNormal поддерживает контроллер Xbox360 для навигации по сцене в окне предпросмотра, достаточно лишь включить его в окне настроек предпросмотра.

На рисунке показано окно настроек предпросмотра 3D модели в приложении xNormal. xnormal-preview-settings

Хватает и настроек в самом окне просмотра.

На рисунке показано окно визуализации загруженной в xNormal 3D модели и варианты ее отображения в окне 3D просмотра: с отображением направления нормалей, карты нормалей, сетки и т.д. xnormal-preview-head

В программе также доступна опция вращения 3D модели и источника света.

На рисунке показан набор инструментов/ утилит xNormal. xnormal_tools

Как можно заметить на рисунке, созданные карты нормалей имеют “правильную” ориентацию Y оси, т.е. данный инструмент с настройками по умолчанию отлично подходит для создания карт, которые могут быть импортированы в Unity3D и Blender без дополнительных преобразований и инвертирования Зеленого (Y) канала.

Некоторые утилиты xNormal доступны в плагине для Фотошопа, например, создание карт затенений и карт нормалей из карты высот. Плагин позволяет нормализовывать карты нормалей и создавать Cavitymaps (могут использоваться для имитации грязи в углублениях) из карты нормалей.

На рисунке показано меню создания карты нормалей из изображения (текстуры, карты высот) плагина xNormal для Фотошопа, а также диффузная карта и результирующая карта нормалей. xnormal_normalmap-plugin

Есть и фильтр для расширения краев изображений/текстур “Dilation” (Filter->xNormal->Dilation), по сути являющийся аналогом параметра Margin в Blender’е (выставляется в параметрах запекания карт “Bake”).

Помните Dilate Many из набора AlphaUtility.atn.zip для создания альфа канала для листьев, работа с которым описана в статье “How do I Import Alpha Textures?” руководства пользователя?

На рисунке показан результат работы фильтра Dilation из набора xNormal для Photoshop. dilation-margin-black-texture-inverted

Плагин normalmap для GIMP

Раз уж зашел разговор про графические редакторы, для которых существуют плагины для создания карт нормалей (и других карт), стоит рассказать о плагине normalmap для GIMP, бесплатной альтернативе Photoshop.

Плагин normalmap после загрузки с репозитория Google доступен в GIMP в вкладке главного меню Filters->Map->NormalMap (Фильтры->Карта->NormalMap).

Как и его братья данный плагин обладает всеми необходимыми настройками для создания качественных карт нормалей.

На рисунке показан плагин normapmap для GIMP. gimp-normalmap-plugin

Как и описанный выше плагин NVIDIA Texture Tools, данный плагин по умолчанию создает карту нормалей с инвертированным зеленым каналом, а, следовательно, его необходимо инвертировать для импорта в Unity3D.

Данный плагин также предлагает пристойный предпросмотр создаваемой карты нормалей в 3D пространстве на одной из пяти 3D моделей-примитивов: плоскости, кубе, сфере, торе и знаменитом “максовском” чайнике Юта/Ньюэлла (хотя, если честно, я ожидал увидеть здесь Blender’овскую Сюзанну).

На рисунке показан затекстурированный чайник Юта/Ньюэлла в окне 3D предпросмотра созданной карты. gimp-3dview

Smartnormal

Заканчивая обзор бесплатных утилит, плагинов и приложений для создания карт нормалей (и не только), хотелось бы рассказать еще об одном онлайн приложении. Smartnormal представлен в двух версиях – более поздней Smartnormal 2.0 и Smartnormal 1.0.

Основным отличием Smart Normal 1.0 от второй версии является возможность выбора фильтра, который будет использован для создания карты нормалей: упомянутый выше Собель и Condensed. Судя по заверениям разработчиков от февраля 2009 года, данный генератор карт нормалей был (или и сейчас) доступен в виде плагина для After Effects и Photoshop, но требует предустановленного Pixel Bender Plugin.

На рисунке показана текстура и карта нормалей, сгенерированная для нее в онлайн генераторе карт нормалей Smart Normal (Smart Normap). smartnormal-1

В данной версии приложения карты нормалей по умолчанию создаются с инвертированым Красным (R) каналом (как в Normalmap Online, описанном выше), так что не забудьте его “обратить” в веру Unity3D. Количество настроек – минимально: Сила (Bias), Размытие (Blur), возможность инвертирования исходного изображения (Invert source) и возможность инвертирования Зеленого (G) и/или Красного (R) каналов.

В SmartNormal версии 2.0 инвертировать каналы уже не нужно, но можно, если очень хочется, например, если вы хотите использовать созданную карту нормалей в 3dsMax. Отличительной особенностью данной версии является поддержка изображений размером 8192*8192 пикселей, сохранение результата без компрессии изображения (в несжатом виде). Реализация на WebGL с поддержкой вычислений на GPU.

На рисунке показано окно онлайн приложения SmartNormal версии 2.0 для создания карты нормалей из карты высот/текстур. smartnormal-20

CrazyBump

На рисунке показан основной интерфейс программы CrazyBump с созданными картами для исходной текстуры, а также показаны меню настроек, окно 3D-просмотра и меню настроек параметров сохранения изображения. crazybump

Помимо своих основных функций по превращению карт высот и изображений в карты отражений, смещения, нормалей и карты затенений, приложение CrazyBump обладает функционалом конвертера изображений. Вы всегда можете загрузить в него свое изображение, чтобы на выходе получить изображение в практически любом существующем формате. Помимо сохранения в файл, данное приложение обладает возможность сохранения одной из выбранных карт в буфер обмена, как если бы вы использовали “Snip” от Microsoft (правда, в Snipe вам еще придется выделить интересующую для копирования область или щелкнуть мышью на активном окне программы, чтобы сделать скриншот).

В данном приложении также существует возможность предпросмотра своих текстур в окне 3D вида, причем вы можете использовать как существующие примитивы (шар, колонну, ролик, ящик), так и загрузить свою 3D модель.

Данное приложение – платное, но ценовая политика – крайне гибкая, поскольку для студентов и индии-разработчиков автор идет навстречу и по личной договоренности может разрешить использовать приложение по лицензии “CrazyBump for Students”, купленную за $49 USD, в коммерческих целях. Если же вы хотите заполучить себе копию CrazyBump на одно лицо (один компьютер), а ваш годовой доход или годовой доход вашей компании не превышает 200.000 долларов, то вам останется лишь выложить за этот “аппарат” 99 долларов. Если вы давно зарабатываете более 200 тысяч долларов в год или доход вашей компании хотя бы на доллар превысил данную планку, то вам остается лишь выложить 299 долларов за одну копию данного приложения.

Crazy Bump также позволяет инвертировать загруженное изображение, а также смешивать карты нормалей. Об инвертировании изображения я уже сказал выше, а вот смешиванию карт нормалей будет посвящена отдельная статья.

Awesome Bump

Следующей программой в списке генератором карт, является AwesomeBump. Для того чтобы создать карту нормалей в данном приложении из изображения, например, Albedo (диффузной) текстуры или карты высот, его необходимо загрузить. Переходим в окно работы с диффузной картой, открыв соответствующую вкладку “Diffuse”, затем ставим флаг напротив опции Enable preview, загружаем текстуру, нажав на иконку дискетки и выбрав вашу диффузную карту или карту высот. Теперь осталось лишь нажать на кнопку “Convert to N H”, чтобы создать карту нормалей (а также карту отражений, карту высот и карту освещения/затенения) из вашего изображения. В окне предпросмотра 3D примитиву автоматически была назначена созданная карта нормалей. Чтобы снять отображение карты нормалей, снимите флаг напротив опции “ Enable preview”.

Хотите больше? Перетащите какую-нибудь текстуру на ту же самую иконку дискеты, и вы получите возможность лицезреть загруженную текстуру на 3D примитиве, наложенную поверх созданной карты нормалей.

На рисунке показан интерфейс программы Awesome Bump создания карты нормалей из текстуры. awesomebump_3dbuffer

Можно подвигать источник света в окне 3D предпросмотра (удерживая Среднюю Клавишу Мыши перемещайте мышь в окне с 3D примитивом).

Если вы хотите посмотреть, как будет выглядеть текстура на вашей 3D модели, то вам достаточно лишь нажать кнопку “3D settings” на окном 3D предпросмотра модели, после чего нажать кнопку “Load OBJ Mesh” и выбрать свою 3D модель в формате OBJ. Awesome Bump не понимает 3D модели без UV развертки!

При некотором умении данный инструмент станет вам незаменимым помощником в создании и доработке 3D контента для игр.

Приветствую всех Стопгеймеров! Давайте начистоту, вы ведь тоже заходите в только купленную игру, но сперва кликаете на графические настройки? Кто ради чего, кому-то ради самоутверждения надо глянуть на ультра-автонастройку благодаря своему мощному «железу», а кто-то просто лезет туда ради интереса.Однако, задумывались ли вы, чем отличаются FXAA и TXAA, или 8х и 16х анизотропная фильтрация? Как-раз в этом блоге, группа Abuse Reviews сейчас вам расскажет и покажет, что же это за фильтрации такие, как они работают и с чем их едят. Поехали!

P.S.
прошлом блоге количество материала в ролике было урезано, здесь эта ошибка была учтена, очень старался для вас.Приятного просмотра)
Давайте начнём с самого-самого простого


Разрешение экрана

Мало кто не знает, что разрешение — это количество отображаемых пикселей по горизонтали и вертикали. От этой настройки также зависит качество картинки и то, как сильно будут выражены «лесенки» в переходах между разными плоскостями\поверхностями. Но почему же возникает этот графический артефакт? Дело в том, что все графические элементы в играх состоят из пикселей, но таких проблем с прямыми линиями не происходит, но стоит только чуть её наклонить, как появляются «лесенки». Возникает это из-за отсутствия плавного перехода между цветами, которое обеспечивает сглаживание, вот о нём мы сейчас и поговорим.


Сглаживание

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


Этот вид сглаживания не слишком сильно нагружает процессор, потому что он обрабатывает лишь те части кадра, которые выглядели бы неровными, а выбирает он эти части независимо от того, где и как они располагаются. Это самый быстрый и менее затратный в плане ресурсов метод сглаживания. Отличие от прошлого метода сглаживания заключается в нескольких аспектах. В первую очередь, FXAA применяется к изображению в том разрешении, в котором вы играете, также размывает картинку сильнее, что выглядит совсем не лучше, чем MSAA, зато расходует на порядок меньше ресурсов, из-за чего этот вид сглаживания почти не вредит вашему FPS
Пожалуй, это лучший вид сглаживания, который сильно похож на MSAA, но с некоторыми дополнениями. Дело в том, что TXAA учитывает и берёт в расчёт предыдущие кадры и сглаживает последующие путём усреднения цветов.
Да, это не вид сглаживания, но избавляется от лесенок этот способ довольно неплохо, но при одном условии, которое свойственно не каждому пк. Ведь не у всех есть 2\4К мониторы, которые позволяют увеличить разрешение больше 1920х1080. За счёт уменьшения пикселей «лесенки» остаются, но становятся куда меньше, однако это влияет на производительность больше всего из перечисленных способов. Так что этот метод подойдёт только обладателям мониторов с очень высоким разрешением и мощным железом. Забавно слушать легенды о том, что если поставить 2к или 4к разрешение в игре на FullHD мониторе, то картинка станет лучше. Решил я это проверить на примере GTA V и что-то не увидел разницы до и после, ни в фреймрейте, ни качестве.

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


Вертикальная синхронизация

Этот параметр заставляет работать видеокарту на той же частоте, что и монитор, однако из-за этого возникают уже другие проблемы, к примеру, частота кадров может сильно падать из-за того что в игре появляется слишком много объектов, которые приходится обрабатывать. Но и для этой беды есть решение, которое называется — горизонтальная синхронизация. Принцип действия заключается в том, что модуль, встроенный в монитор заставляет экран обновляться сразу же при получении нового кадра, что способствует идеальному совпадению частот видеокарты и монитора. Благодаря всему этому, производительность компьютера не уменьшается, а монитор и видеокарта работают максимально слаженно.

На этом о проблемах картинки и артефактах — всё


Тесселяция

Тут стоит обратить внимание на контур головы 47-го

А вот она создана не для того чтобы исправлять косяки в картинке, а улучшать её и делать более насыщенной и реалистичной. Многие из нас знают, что 3д-объекты в играх состоят из полигонов (мелких частиц). Тесселяция подразумевает разбиение полигонов на более мелкие части, чтобы генерировать больше деталей у объекта. Это особенно удобно для выделения высоты и глубины объектов. Также она способствует созданию более закругленных объектов без острых форм и углов.

Окклюзия окружения (Ambient Occlusion)

Лично я занимаюсь созданием 3д-моделей в Cinema 4D и довольно хорошо знаком с этой фичей. Она позволяет создавать искусственные тени, таким образом, в идеале, геймдизайнеры и создатели 3д-анимаций предпочитают использовать движки, поддерживающие функцию глобального освещения, которое позволяет создавать освещение идентичное реальному, а всё благодаря вычислениям точных оттенков каждого из пикселей, в зависимости от общего количества света, попадаемого на него. Знаю, что звучит это сложновато, но как же это преобразовывает картинку… словами не описать. Такое освещение очень подходит для различных кинематографичных сцен в мультфильмах или кат-сцен в играх, но это оказывает очень сильную нагрузку на железо, но на то у нас и есть окклюзия окружения, которая создаёт искусственные тени там, где они должны располагаться.
Для начала стоит разобраться с освещением в играх. В них источником света является естественное освещение, которое является упрощённой версией глобального освещения, где расположение теней зависит от того, есть ли перед источником естественного освещения какое-либо препятствие, но это даёт нам более плоские тени в меньшем количестве, чем хотелось бы. Тут и наступает триумф окклюзии окружения, ведь она определяет расположение дополнительных теней с поммощью трассировки лучшей, а именно вычисляет, сколько солнечных лучшей блокируется рядом со стоящими объектами. То есть, если один объект загораживает другой, то поверхность второго объекта, разумеется, будет находиться в тени. Впадины, углубления и тому подобное начинает больше выделяться с помощью окклюзии.В огромном большинстве случаев этот параметр уже «вшит» в графические настройки, что не позволяет включать и выключать его. Но это всё окклюзия окружения в общем. Наверняка вы все сталкивались с такими параметрами освещения как SSAO,HBAO и HDAO?

Она взяла своё начало со времён первого Crysis, благодаря компании Crytek, по-сути оно заключается в вычислении глубины каждого пикселя и пытается вычислить количество преград от каждой из выбранных точек. Алгоритм SSAO призван упростить вычислительную сложность алгоритма Ambient occlusion и сделать его подходящим для работы на графических процессорах в режиме реального времени. Вместе с тем качество результирующего изображения у SSAO является худшим, чем в первоначальном Ambient occlusion, так как SSAO использует упрощённые методики рендеринга(обработки изображения).
Имеет тот же принцип работы, что и SSAO но несколько усовершенствованный. Просто вычисления глубины производятся с большим числом выборок, но приходится жертвовать производительностью.
Одно основывается на другом. Таким же образом как SSAO отличается от HBAO, HDAO от HBAO отличается точно тем же, ну и ещё эта окклюзия была представлена нам компанией AMD.
Ну а что по кинематографичности?


Глубина резкости

Неплохо так нагружает вашу систему, но и так же неплохо придаёт картинке кинематографичности, а всё благодаря фокусу на конкретных объектах, благодаря чему, остальные объекты размываются. Но это может привнести неудобства, как например при игре в PUBG, во время выглядывания из окна (ну вы знаете, когда упираешься лицом в стену как идиот и видишь всё что происходит за ней) иногда замыливается вид в окне, а фокус идёт на стену или оконную раму. Очень раздражает. Однако кинематографичность, опять же, дарит нам положительные впечатления об игре.

Ну и последнее о чём хотелось бы рассказать


Анизотропная фильтрация

А вот этот параметр уж точно видел каждый, но далеко не все понимают как это работает. Объясню быстро и просто. Во имя сохранения FPS разработчики используют нехитрый трюк с понижением качества текстур и моделей по мере отдаления от них. Зачастую мы можем наблюдать размытие текстуры пола вдали от себя, но если мы включим фильтрацию, то границы между различными уровнями детализации размываются. Плюс такой фильтрации в том, что вы можете со спокойной душой ставить значение 16х, ведь этот параметр почти не оказывает давления на процессор и видеокарту.

Ну а на этом всё. Если вам понравился этот блог и вы узнали что-то новое, обязательно жмите на плюс, а также интересно узнать, нравится ли вам качество видеоформата, если вы его глянули? Большое спасибо вам за внимание, всем удачных каток и стабильного FPS!

Читайте также: