суббота, 2 октября 2010 г.

Глубина резкости (DOF) c помощью Vray_ ZDepth



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

Что же такое ГРИП (глубина резко изображаемого пространства) или как принято говорить у 3дшников DOF (Depth of field)?Как гласит
Wikipedia ГРИП - фотографический термин, обозначающий расстояние между ближней и дальней границами области пространства, при нахождении внутри которой объекты получаются на снимке резкими ("в фокусе").  Объекты, расположенные ближе и дальше этого "резко изображаемого пространства", будут на фотографии расплывчатыми, размазанными, "не в фокусе".  Вот собственно пример


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




В данном способе используется комбинация Vray_Zdepth+photoshop

Данный способ самый шустрый в реализации, но как по мне так качество картинки при его использовании (если использовать только стандартные средства photoshop)оставляет желать лучшего, особенно если на переднем плане у нас есть какие то объекты в расфокусе.

        1.Открываем сцену и в настройках Vray заходим во вкладку  Render Elements. Жмем Add, и выбираем  ZDepth 


1.      

        2. В данном элементе нас интересуют два параметра  ZDepth min и ZDepth мах



Этими параметрами задаются минимальный и максимальный пределы необходимой нам маски глубины резкости.

3.Заходи в вид TOP в нашей сцене, выбираем рулетку
и меряем расстояние от камеры до ближайшего объекта в сцене (если к примеру камера располагается за габаритами помещения) и до самого дальнего объекта. Советую мерить не четко по объекту, а ближнюю точку немного ближе, а дальнюю немного дальше, что б был небольшой запас .
В моем варианте камера находиться в помещении и поэтому ближнюю границу я оставил нулевой, а дальнюю замерил с помощью рулетки. По итогу 635



И так ZDepth min = 0 см
ZDepth мах = 635 см

4. Запускаем рендер и на выходе получаем две картинки. 1-я наш основной рендер. 2-я маска для глубины резкости.


5. Далее нам понадобиться исключительно фотошоп. Открываем наши обе картинки. Выделяем всю картинку с маской глубины резкости и копируем ее в буфер. Переходим на наш чистовой рендер в закладку каналов. Создаем новый альфа канал и вставляем в него из буфера нашу маску резкости


6. Так как границы в альфа-канале имею четкие очертания слегка разблюрим его по Гаусу.

7. Далее открываем фильтр Filter -> Blur ->Lens Blur

8. В разделе sourse выставляем наш альфа канал. Параметром Blur focal distance выставляем точку, которая у нас будет находиться в фокусе и параметром radius регулируем величину размытия объектов которые находятся вне фокуса.


9. На выходе получаем такой результат


Теперь немного лирики. Как по мне так этот метод можно примерять , если у нас объекты в фокусе находятся на переднем плане, а «задник» размыт или к примеру объекты переднего плана не находятся на фоне фокусного объекта. Если же идет накладка фокуса и расфокуса, то результат оставляет желать лучшего (это лишь мое субъективное мнение), может, кого то, устроит и такой результат. Разберем это дело поподробнее, что бы внести ясность.


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



Нам необходимо сделать расфокус лампы находящейся на переднем плане с помощью имеющегося канала Vray_ ZDepth. Применяем Filter -> Blur ->Lens Blur. Вот что у нас получается на выходе.


Результат очень показателен и думаю удовлетворит не многих. Почему так получилось? В данном случае объект переднего плана (абажур лампы) находиться на области, которая находиться в зоне фокуса. При расфокусе у нас должен быть размыт не только объект но и края объекта, а так как картинка полученная из канала Vray_ ZDepth имеет четкие края по всем объектам, то даже увеличение радиуса размывки привете лишь к усилению размытия самого объекта но не его границ.



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

В данном случае можно применить стандартный Врэевский Depth of field. Сравним результаты?



Правая картинка сделана Vray_ ZDepth, а левая стандартным Depth of field. На левой картинке края цветов находятся именно в расфокусе, а не просто слегка «замылены» при том что середина предметов имеет четкую текстуру (хорошо просматривается на спинке стула)
Ну а вот что получилось у нас с лампой (расфокус сделал посильнее что б было нагляднее).



На лицо результат, Depth of field реализованный в Врэе или тот же Depth of field который находиться в physical camera выдают результат ощутимо лучше, нежели вариант с Vray_ ZDepth. Однако рендер картинки с включенной функцией Depth of field во Врэе мало того что значительно увеличивает время рендера, но и забирает часть времени на настройку этого самого DOFa. Надо найти оптимальное фокусное расстояние + настроить апертуру и все это время уходит на тест рендеры. А как только вы в добавок поставите побольше сабдивов для более качественно DOFа то можно идти курить как можно дальше пока чистовая картинка закончит рендерится.

Так что же выбрать? Быстрый и некачественный DOF или качественный но забирающий кучу драгоценного времени? Не сочтите за рекламу, но если вас не устраивает ни первый ни второй способы, я посоветую плагин под фотошоп DOF PRO. Результат от его действия имеет что то среднее, между результатом получаемым при использовании «сухого» Vray_ ZDepth и результатом от Depth of field Vray и physical camera. Одним словом лучше Vray_ ZDepth но хуже Depth of field. Однако оперативность настройки DOFа и быстрота рендера картинки, безусловно, ставят DOF PRO если не на первое место по соотношению быстрота/качество то близко к нему. Сильно выигрываем во времени и немного проигрываем в качестве.

Описывать работу плагина в этом уроке я не буду, все что его касается  можно найти на официальном сайте http://www.dofpro.com/. Однако скажу, что для того что бы сделать DOF с его помощью вам так же понадобиться карта  из канала Vray_ ZDepth ну и собственно сам плагин.


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

4 комментария:

  1. поправка к статье. Вариант с dof с помощью Zdepth карты отлично работает с включенным фрейм буффером. Не знаю, чего ты решил, что не работает.

    ОтветитьУдалить
  2. присоединяюсь к первому каменту) всеж работает. таких ситуаций с обрезанной размывкой вообще не было -не знаю)

    ОтветитьУдалить
  3. А у меня zdepth рендерится черным. Объясните, что не так?

    ОтветитьУдалить
  4. проверьте настройки канала а точнее min и max значения указанные в п.2

    ОтветитьУдалить