Полезное

Мы Вконтакте

Depth of Field

Добавлено Ноя 19 2015

Глубина резкости (DoF) применяет размытие к сцене, основываясь на расстоянии от фокуса. Так происходит симуляция камеры из реального мира. Эффект применяет для акцентировании внимания зрителя на определенном предмете или для достижения большего реализма изображения.

Типы глубины резкости

В Unreal Engine 4 присутствует три реализации глубины резкости: Боке, по Гауссу и Радиальная

Gaussian DoF
Bokeh DoF
Circle DoF

По Гауссу (Gaussian DoF)

Глубина резкости по Гауссу (Gaussian DoF): используется обычное размытие по Гауссу. Этот метод быстр и хорошо подходит для использовании в играх, где производительность критична.

Боке (Bokeh DoF)

Боке — это нечеткость, размытость отдельных областей изображения или фильма, как правило тех, которые не находятся в фокусе. Глубина резкости Боке (Bokeh DoF) – метод, где рендеринг каждого пикселя происходит с использованием текстуры, определяющей форму, с помощью которой можно добиться эффекта, производимого линзами камеры. Нынешняя реализация требовательна к ресурсам компьютера, поэтому применяется в половинчатом разрешении.

Еще один способ сохранения производительности – это использование адаптивной глубины резкости (Adaptive DOF).
Боке больше всего подходит для создания кинематографических роликов ввиду своей яркой визуальной составляющей (и требовательности к ресурсам).

Радиальный (Circle DoF)

Радиальный DoF является новейшим дополнением глубины резкости, и позволяет создавать более реалистичную картинку. Вы можете увидеть боке округлой формы с более резким и качественным содержанием. Очень большое боке является слабостью этого алгоритма, так как из-за размера появляются шумы и не так мало, как при Боке DOF. Метод имеет хорошую производительность (гораздо лучше, чем Боке DOF) и хорошее качество, особенно в таких областях, как переходные зоны.

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

Реализация

Эффект глубины резкости делится на три уровня – Ближний, Дальний, Фокусный регионы (Near, Far, Focal, соответственно) – каждый из которых обрабатывается отдельно, после чего они объединяются.

  • Объекты в ближнем и дальнем регионах обычно полностью размыты.
  • Объекты в фокусном регионе используют неразмытый слой сцены (non-blurred scene layer).
  • Объекты в ближнем или дальнем регионах, но не в переходных, полностью смешиваются с размытым слоем.
  • Объекты в переходном регионе смешиваются линейно с неразмытым слоем сцены и размытым, основываясь на их собственном положении.

Все уровни могут быть визуализированы. Для этого нужно установить флажок у параметра «Depth of Field Layers show» («Показывать слои глубины резкости»). Ближний регион – зеленый, дальний – синий, фокусный – черный.

Scene with DoF
DoF Layers Visualized

Улучшенная нами версия этой визуализации также включают в себя много интересного:

VizualizedDoF

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

Свойства

 

Свойство Описание
Method Определяет метод, использующийся для сцены: Боке, по Гауссу или Радиальное.
Depth Blur Radius Глубина радиуса размытия в пикселях на 1920.
Focal Distance Дистанция (в единицах Unreal Engine) от камеры, которая является центром региона, на который будет наведен фокус, и где будет отсутствовать размытие.

Focal Distance 400
Focal Distance 1000
Focal Distance 2500
Focal Region Расстояние (в единицах Unreal Engine) за фокусной дистанцией, где также будет фокус.

dof_focalregion
Near Transition Range Расстояние в единицах Unreal Engine от фокусного региона ближе к камере, где будет переход от фокуса к размытию. При использовании глубины резкости по Гауссу.

dof_gaussian_near
Far Transition Range Расстояние в единицах Unreal Engine от фокусного региона в сторону от камеры, где будет переход от фокуса к размытию. При использовании глубины резкости по Гауссу.

dof_gaussian_far
Scale Общий коэффициент масштабирования для размытия Боке.

Scale 0
Scale 0.375
Scale 1.0
Max Bokeh Size Максимальный размер (в процентах от ширины изображения) для размытия в эффекте глубины резкости Боке (заметьте: затраты на просчет масштабируются в соответствии с формулой: «размер*размер»). Примерный вид функции, используемой для вычисления размеров Боке на любой дистанции, изображен ниже:

dof_bokeh_coc

Size 2.5
Size 7.5
Size 15.0
Near Blur Size Максимальный размер (в процентах от ширины изображения) ближнего размытия для глубины резкости по Гауссу (заметьте: затраты на просчет растут с размером).

Size 0
Size 0.25
Size 2.5
Far Blur Size Максимальный размер (в процентах от ширины изображения) дальнего размытия для глубины резкости по Гауссу (заметьте: затраты на просчет увеличиваются с размером).

Size 0
Size 0.25
Size 2.5
Shape Текстура, определяющая форму Боке при выходе объектов из фокуса (не смешивается).
Occlusion Контролирует количество «размытой» геометрии, которая выйдет за пределы своего обычного силуэта и непрозрачности. Значение 0.18 обеспечивает хороший результат. Значение 0.4 может потребоваться для решения проблем с «утечкой» или пропаданием цветов. Крайне малые значения (менее 0.18) сводят на нет эффект размытия, хотя отлично работают, когда объекты находятся близко к камере.

Occlusion = 0.05
Occlusion = 0.18
Occlusion = 0.4
Color Threshold Граница, за которой адаптивная глубина резкости переключается на использование полного разрешения, основываясь на цвете. Малые значения обеспечивают обработку большей части сцены в полном разрешении.
Size Threshold Граница, за которой адаптивная глубина резкости переключается на использование полного разрешения, основываясь на размере. Большие значения обеспечивают обработку большей части сцены в полном разрешении.
Sky Distance Искусственное расстояние, на котором небо находится в фокусе (к примеру, 200000). Значения <=0 отключают функцию. Применяется только для глубины резкости по Гауссу. Может сильно повлиять на производительность.

Адаптивная глубина резкости (Adaptive DoF)

Глубина резкости Боке по умолчанию рендерится в ¼ разрешения (1/2 в каждом направлении) по причинам производительности. В большинстве случаев, субдискретизация едва заметна. Однако, она может вызывать артефакты и нежелательные результаты в некоторых ситуациях.

Downsampled
Adaptive Algorithm

Вы можете заметить, что размытие у персонажей на заднем фоне имеет дефекты при использовании одной лишь субдискретизации глубины резкости (downsampled DoF ). Помимо этого, заметны артефакты вокруг рогов персонажей переднего плана. Устранить эти проблемы можно с помощью адаптивной глубины резкости, в этом случае персонажи на заднем плане выглядят лучше.
Адаптивную глубину резкости можно визуализировать, если установить флажок «Adaptive Depth of Field show» («Отображать адаптивную глубину резкости»). Так можно увидеть, где использовалась субдискретизация (зеленый цвет), а где – полноэкранный эффект (красный цвет). Обычный цвет сцены обозначает те области, к которым не применено размытие.

dof_adaptive_visualize

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

Optimized
Expensive
Добавил: jQuest Категория: Пост-обработка


Комментарии

На данный момент не добавлено ни одного комментария.

Оставить комментарий

Вы должны войти, что бы оставлять комментарии.

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница