Идею этого урока я вынашивал давно, она так бы и оставалась идеей,
если бы мне не предложили написать для книги главу по анимации и
композингу. Книга называется 3ds Max 2009 Architectural Visualization Intermediate to Advanced (http://www.3dats.com/products.asp).
Этот урок появился благодаря Брайану Смиту (Brian Smith) и Владимиру
Кваснице (который нас познакомил). Я хотел написать такой урок, который
бы был одинаково полезным и понятным как новичкам, так и продвинутым
людям. Что в итоге получилось - судить вам. Итак, начнем!
Рендеринг в VRay
Для начала я кратко расскажу что мы будем делать. Я расскажу про
основные настройки Vray, про различные аспекты рендеринга, постараюсь
рассказать про всякие тонкости, но не буду углубляться в детали. Потому
что мне это не интересно, да и зачем пересказывать хэлп и то, что
разжевано на многих форумах?
Давайте взглянем на простенькую сценку с чайниками, на которой разберем (или освежим в памяти) основные настройки Vray.

1. Вначале нам нужно проверить является ли Vray рендером по умолчанию. Идем в меню настроек рендера, и проверяем, что в меню Assign Render - Production выбран Vray. В меню Common parameters надо Render Frame Window выключить, т.к. мы будем использовать Vray Frame buffer. Далее во вкладке VRay в свитке Vray Frame Buffer надо включить Enable Built-in Frame buffer. В свитке Vray Image sampler (Antialiasing) ставим Adaptive DMC и выключаем Antialiasing Filter (он по сути дела и не нужен, тем более не надо ставить Catmul-Rom когда рендерите анимацию). В свитке VRay color mapping надо включить Sub-Pixel mapping и Clamp.

2. Идем в следующую вкладку - Indirect illumination (GI).
Включаем GI и выбираем Light Cache GI engine для Primary и Secondary лучей. В свитке Light Cache надо выставить такие же параметры, как у меня на картине (subdivs = 500, filter - none).

3. Делаем тестовый рендер. Что мы видим? На картинке видно отдельные
сэмплы LC в виде пятен - это грубая аппроксимация GI. Чтобы сгладить
картинку нам нужно включить фильтрацию сэмплов. Надо выбрать Nearest Filter в настройках LC и установить Interp. samples=16. Рендерим и сравниваем с предыдущей картинкой.

С фильтрацией картинка получилась гораздо лучше, чем сильнее
фильтрация, тем больше размытие GI. Надо просто подобрать оптимальный
вариант для конкретной сцены.
4. Теперь рассмотрим другой GI engine - Irradiance Map.
В VRay irradiance map это метод эффективного расчета глобального
освещения в сцене. Т.к. в сцене могут быть объекты с разной
детализацией, IM просчитывается более точно для детализированных
участках и менее точно на простых участках (например на больших
открытых участках). Алгоритм IM адаптивный за счет того, что IM
просчитывается в несколько проходов - с начала с низким разрешением,
потом всё точнее и точнее. По сути IM это набор точек-сэмплов, хранящих
информацию об освещенности в данной точке, во время рендера картинки
эти сэмплы интерполируются и "сглаживаются".
Итак, ставим Primary bounces GI engine - Irradiance Map. Ставим Current preset - custom, min rate -3, max rate -1, включаем Show Calc. phase и Show direct light. В Advances Options меняем Sample lookup на Overlapping и рендерим.

Что получилось? Получилась хорошая картинка без артефактов. Irradiance Map рассчитывает GI очень точно, но лучше её использовать вместе с Light Cache, потому что LC сохраняет вторичное GI.

5. Выключаем LC - Secondary bounces GI engine - None и рендерим.

На этой картинке нет вторичного GI и картинка заметно отличается от прежней.
6. IM можно сохранить в файл, чтобы каждый раз не пересчитывать её.
Для этого надо нажать кнопку Save и сохранить например в файл c:\1.vrmap. Затем надо поменять режим на From file и выбрать файл c:\1.vrmap.
Теперь можно выключить LC - он больше не нужен, т.к. у мы уже посчитали
GI и берем его из файла. Давайте посмотрим как выглядит Irradiance Map - для этого нужно включить Show Samples.

На картинке видны светлые точки - это и есть сэмплы. Сэмплы
привязаны к геометрии и зависят от камеры. Если мы развернем камеру и
отрендерим картину, то увидим вот что:

Хм, сразу появились артефакты в GI, т.к. мы берем IM из файла, а в
ней нет сэмплов, просчитанных для этого вида из камеры. На картинке
видно распределение сэмплов и где их не хватает.
7. Для решения этой проблемы нам нужно просчитать недостающие сэмплы
и добавить в нашу IM в файл. Во-первых, нам нужно опять включить LC для
secondary bounces. Во-вторых, поменять Irradiance Map mode на Incrementaladd to current map. В этом режиме Vray будет просчитывать недостающие сэмплы и добавит их в нашу IM в файл. Нужно еще включить Auto save, выбрать c:\1.vrmap и включить Switch to saved map. Тогда после просчета GI будет сохранятся в файл и режим автоматически переключится на From file. Выключаем Show Samples запускаем рендер.


Вот что получилось. В общих чертах с этим разобрались, теперь
попробуем отрендерить анимацию в Vray. Вместо того, чтобы считать GI
для каждого кадра мы может посчитать только каждый 5-10-й кадр (это
зависит от скорости движения камеры) и для финального рендера брать GI
из файла.
Рендеринг анимации в VRay
1. Откройте сцену anim_01.max (архив сцен, текстуры).
В этой сцене я сделал длинный мост и добавил анимированные машинки -
посмотрите анимацию. Начнем с расчета GI для всей анимации. Мы будем
просчитывать GI каждый 5-й кадр. В свитке Common render нужно
установить Every Nth frame = 5.

2. Во вкладке VRay в свитке Global Switches включаем - Don't render final image - нам не нужно рендерить картинку, а только просчитать GI. Нужно выключить и Hidden lights т.к. в сцене есть спрятанные ИС, которые нам понадобятся для вечерней сцены.

3. В свитке Indirect illumination мы используем такие же настройки, что и в прошлом примере, но нам надо поменять режим IM на Multiframe incremental - в этом режиме Vray удалит старую IM перед началом рендера, а в остальном этот режим аналогичен Incremental add to current map. И еще не забываем включить Auto save в файл c:\1.vrmap и Switch to saved map.

4. Перейдем к настройкам Light Cache, устанавливаем subdivs = 3000,
потому что у нас большая сцена и для нормального GI нам нужно гораздо
больше сэмплов (на самом деле будет 3000 * 3000 = 9 000 000 сэмплов).
Ставим Filter - None, а Pre-filter
= 32 для ускорения расчета, потому что Filter считается для каждого
кадра, а Pre-Filter только один раз после расчета LC. Меняем режим LC
на Fly-Through - он как раз предназначен для
анимации, в этом режиме лучи "выстреливаются" из камеры на протяжении
всей траектории движения и в каждом кадре. Включаем Auto save в файл c:\1.vrlmap и Switch to saved map.
Вроде бы все, ничего не забыли :) Запускаем Render и ждем 1-2 часа,
пока будет идти расчет GI. На моем Intel Quad Q6600 с 8 Gb RAM все
отрендерилось примерно за час. Чтобы посмотреть что вышло - скачайте
файл bridge_01_gi_err.avi и
посмотрите ролик - под мостом видны артефакты GI потому, что там не
хватает сэмплов - мы пропустили эти учаcтки при просчете GI из-за
слишком быстрого движения камеры.

5. Вернемся во вкладку Common render и установим Every Nth frame = 1
- нам нужно досчитать недостающие сэмплы GI, чтобы убрать глюки. Нам
надо рендерить не всю анимацию, а только отрезок с 62 по 88 кадры, что
мы и сделаем.

6. Идем в Indirect illumination, Irradiance map и Light Cache mode стоят в режиме From File. Нам надо поменять режим Irradiance map на Incremental add to current map и снова отрендерить анимацию, но теперь только кусочек под мостом. Посмотрите bridge_01_gi_fixed.avi -
теперь артефактов нет! В принципе можно использовать LC для Primary и
Secondary лучей. Если отрендерить анимацию, то можно посмотреть, что
получиться в ролике bridge_01_gi_lc.avi.
7. Ну и в заключении темы о GI я добавлю, что мы упустили сэмплы в
самом конце анимации, т.к. мы рендерили каждый 5-й кадр - 0, 5, 10...
240, 245, но 249-й кадр не просчитан! Нам остается повторить такую же
процедуру, что и в предыдущем шаге для 249-го кадра - просчитать его и
добавить в нашу сохраненную IM.
Двигаемся дальше. Можно продолжить и с текущей сценкой, а можно просто открыть файл anim_02.max - там уже все готово и настроено.
8. Пора добавить машинки в сцену - сделайте Unhide для слоя Cars в меню Layers
(если не понятно - поищите в хэлпе про слои). Теперь у нас есть
несколько машинок, движущихся по мосту и нам как-то надо отрендерить
анимацию, при том, что GI для машинок мы не считали. Да оно и особо не
нужно. Если бы мы считали GI c машинками, то у нас было бы куча
артефактов и пятен на мосту, т.к. этот метод расчета GI предназначен
только для статичных сцен. Что делать? А все очень просто - надо
создать имитацию GI с помощью с сферического ИС. Для этого я и вставил
в сцену VrayLight в режиме Dome для имитации рассеянного небесного освещения. Нужно выбрать VraySky - в опциях exclude/include этого ИС я сделал так, что наш VraySky светит только на машинки и не влияет на другие объекты.

При желании можно посмотреть анимацию автомобилей. Кстати, чуть не забыл! Очень важно отключить у машинок GI - в Vray properties надо выключить Receive GI, Generate GI и Visible to GI у всех машинок, иначе у нас будут глюки в анимации.
9. Выключаем LC - он нам уже не нужен, все GI хранится в IM на диске. Идем в Indirect illumination и выключаем Light Cache - просто ставим second GIengine на None и оставляем только Irradiance map. И не забудьте проверить, что IM работает в режиме From file.
10. Во вкладке Vray в свитке Global Switches выключаем Don'trender final image - иначе рендерится ничего не будет и в буфере вы увидите только пустоту :) В Common render устанавливаем Active time segment для того чтобы отрендерить все кадры.
11. Создадим папку C:/render. В вкладке VRay в свитке Vray Framebuffer включаем Save separate render channels - это важная часть урока, мы сохраним разные каналы (пассы) рендера для дальнейшего композинга в Fusion. Жмем кнопку Browse и выбираем папку c:/render куда будут сохранятся результаты рендеринга. В поле file name вводим 1.exr. Мы будем использовать формат OpenEXR
потому что он очень удобный для многих целей - поддерживает HDR,
хорошее сжатие, кучу суб-каналов внутри себя и тп. Некоторые особо
упертые товарищи любят рендерить в jpeg или даже сразу в avi... Но это
не наш путь :)
Установите свойства OpenEXR как на этой картинке.

12. Хотя я и работаю с гаммой 2.2, но для финального рендеринга на
нужна гамма 1. Т.к. мы будем делать пост-обработку нашей анимации или
просто композить, то нам надо работать в Linear color space во
избежание многих проблем. Об этом я расскажу позже. В свитке color mapping ставим gamma = 1.

13. В настройках DMC sampler ставим DMC (QMC) threshold = 0.001
чтобы не было шума и фликеринга в анимации. Рендерится все будет
дольше, но если вам нужна качественная анимация придется пожертвовать
временем. Вообще эта тема часто поднимается, для того, чтобы
продемонстрировать шум в анимации и то, как влияют на него настройки
антиалиасинга - посмотрите noise_test_01.mov, noise_test_02.mov и noise_test_03 .mov.

14. Нам осталось только включить во вкладке Render elements опцию Elements active.
Мы будем использовать разные каналы для композинга - velocity или
vector motion для 2D motion blur, Z-depth для создания тумана или
эффекта глубины резкости DOF, object_ID для масок (канал multi matte
element), global illumination и direct lighting, specular и background
- многие каналы я переименовал. Что делать с этими каналами мы узнаем
позже.
15. В принципе всё, если ничего не забыли - можно запустить
финальный рендер. У меня 250 кадров отрендерились примерно за 6 часов,
2-3 минуты на кадр. На картинке внизу я собрал все каналы, чтобы
показать как они выглядят (150-й кадр).

Что в итоге получилось после "чистого рендера" можно посмотреть здесь - bridge_01_day_raw.avi.
Т.к. мы рендерим с гаммой 1, а сцена настроена на гамму 2.2 - в окошке
рендера картинка будет очень темной. Чтобы это исправить - нажмите на
кнопку SRGB чтобы увидеть картинку в гамме 2.2.

Ну наконец финальный шаг - нам надо просчитать Ambient occlusion (AO) для того, чтобы добавить деталей в нашу анимацию.

В Vray мы можем сделать АО с помощью VRayDirt map. Откройте сцену anim_03_ao.max, в которой я сделал несколько изменений.
- выключил Indirect illumination - оно нам и не нужно.
- выключил Render Elements.
- выключил в Global switches Lights и Shadows, а опцию Override
Mtl. включил (в этот слоте находится материал "ao" из мат. эдитора)

Откройте Material editor и найдите этот материал - это простой VRayLight материал с картой VRayDirt в слоте Color.

В карте VRayDirt я использовал только 2 параметра - radius и subdivs. 30 см достаточно для нашей сцены, а Subdivs = 16 - чтобы было меньше шуму.
4. В свитке Frame buffer я поменял file name на 1.ao.exr.

5. В окне Environment and Effects Background color - чисто белый.

Все, запускаем рендер - на моей машине все отрендерилось очень быстро - 15-20 секунд на кадр. Посмотрите что вышло здесь - bridge_01_ao.avi.
Источник: http://www.render.ru/books/show_book.php?book_id=634 |