Выполняю, подождите...
 
Войти
Создать учётную запись
Логин:
Пароль:
Запомнить
 

Библиотека

Освещение интерьера в Mental Ray для Maya

Освещение интерьера в Mental Ray для Maya

Этот урок содержит опыт, полученный мной и другими участниками форума treddi.com, в результате исследований освещения интерьера с помощью рендерера Mental Ray. Он может быть легко выполнен с использованием Mental Ray для Maya, 3ds max, xsi, hudini и т.д. Разумеется, в уроке я привел только один из способов добиться такого освещения, и вы можете рассматривать его как отправную точку для экспериментов со светом в собственных интерьерах.

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

Урок предполагает наличие у читателя базовых знаний Maya и Mental Ray.

Итак, начнем.

1. Базовые системы освещения

Перед написанием урока я попробовал много разных типов осветителей и нашел, что выбранные здесь наиболее эффективны для такого типа освещения в Maya, исходя из задач качества/скорости рендеринга и реалистичности итоговой картинки. Я использовал два типа осветителей, первый имитирует прямое освещения, второй - рассеянное.

1.1 Выбор и позиционирование осветителя

Прежде всего, скачайте сцену, с которой будете начинать выполнение урока. Она доступна в трех форматах:

.mb
.obj
.3ds

Откройте файл. Это комната, обставленная в японском стиле. В качестве единиц измерения выберите сантиметры. Помните, что после импорта модели .3ds или .obj в Maya, установки "Visible in reflection" (Видимость в отражении) и "Visible in refraction" (Видимость в преломлении) будут сняты, поэтому включите их вручную в окне "Render Stats"

Теперь добавим свет в сцену:

A. Солнечный свет
Первый осветитель имитирует прямой свет от солнца. Подумав, я решил использовать для него прожектор (spotlight). Расположите его подальше от комнаты так, чтобы можно было использовать малый угол конуса (примерно 20 градусов). При большем угле будет заметно расхождение лучей, что приведет к нереалистичному изображению.

B. "Рассеянное" освещение
Создайте точечный осветитель и откройте атрибуты осветителя. В секции Mental Ray включите настройку "Area Light". Расположите осветитель в окне и увеличьте его масштаб так, чтобы его ребра касались оконной рамы (лучше даже немного меньше, чтобы избежать проблем с засвеченностью стен возле окна)

На этой картинке вы можете видеть, как я расположил осветители:

Расположение источников света.

Расположение источника света.

1.2 Настройки осветителей

Чтобы лучше понять вклад, который вносит в сцену каждый осветитель, я делал рендеринг с отключением каждого из двух. Назначьте белый шейдер (я предпочитаю Lambert или DGS без Glossy и Specular) всем объектам модели.

1.2.1 Солнечный свет

Выделите точечный осветитель и отключите его, сняв следующие флажки: "Illuminates by Default", "Emit Diffuse" и "Emit Specular".
Выделите прожектор и настройте его атрибуты: включите тени на основе трассировки лучей с настройками по умолчанию (можно слегка поварьировать угол конуса).
Откройте окно "Render settings" и установите опцию "Quality Presets" в значение "Preview", чтобы получить быстрый тестовый рендеринг. Если вы все сделали правильно, то должна получиться примерно такая картинка:

Настройте интенсивность освещения, пока не получите нужный вам результат.

  • Активируйте глобальное освещение в окне "Render settings" и установите опцию "Global Illum Accuracy" в значение 512. Значение "Global Illum Radius" оставьте равным нулю (по умолчанию).
  • Измените значения "Raytracing" (4-4-8 должно хватить).
  • Также включите "Emit Photons" в атрибутах прожектора и запустите тестовый рендеринг, чтобы проверить освещенность в тех местах комнаты, которые не освещены прямым светом.
  • Запомните, что количество света, действующего на объект, напрямую зависит от расстояния до объекта.
    Чтобы свет доходил до модели, увеличим интенсивность фотонов.
    Например, чтобы получить такой результат, я установил значение 185 000 000:

    Теперь увеличьте число фотонов до 500 000, и при рендеринге получится примерно такая картина:

    Рекомендую вам активировать опцию "Progressive Messages" (Окно "Render Settings", секция "Translation" опция "Progressive messages"), чтобы вы могли оценивать время рендеринга.

    Примечание переводчика: В Maya 7.0 установка Progress Messages выбирается из списка Export Verbosity.

    1.2.2 "Рассеянный" свет

    Теперь выполним те же шаги для точечного осветителя (который мы преобразовали в пространственный (area light) свет Mental Ray см. выше).

  • Запретите работу прожектора (не забудьте отключить "Emit Photons").
  • Активируйте тени на основе трассировки лучей для точечного источника.
  • Что касается настроек фотонов, то для этого осветителя лучше всего использовать те же установки, что и для прожектора, за исключением интенсивности, которая должна быть очень малой (в данной сцене я использовал 100000).
  • Выполните тот же рендеринг, что и для прожектора.
  • Только прямой свет:

    Прямой свет и фотоны:

    Не беспокойтесь о зернистости тени. Этим вопросом мы займемся чуть позже.

    1.3. Как сбалансировать осветители в сцене

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

    Пока не беспокойтесь о том, что некоторые области пересвечены, эта проблема будет решена после активации окончательной сборки (final gather).

    Впрочем, можно провести небольшой тест: выполните рендеринг центрального участка изображения, активировав окончательную сборку со следующими настройками:
    "rays": 100, "min max radius": 0/0 и "rebuild photon map" отключено.
    Вот что получилось у меня:

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

    Теперь займемся оптимизацией GI. Вот как выглядит панель "Caustic and Global illumination":

    Caustic and Global Illumination (каустика и глобальное освещение).

    Вкратце опишем основные настройки GI в Maya:

  • "Global Illum Accuracy": это значение установлено в 512 и представляет собой качество карты фотонов.
  • "Global Illum Radius": мы установим его позже. Пока запомните, что его значение по умолчанию 0: с этим значением Mental Ray сам рассчитывает установки для рендеринга и в 90% случаев его можно не изменять.Впрочем, чтобы оптимизировать время рендеринга, его можно и пересчитать.
  • "Max Photon Depth", "Max Reflection Photons" и "Max Refraction Photons". Эти установки также хорошо известны как параметры отражения фотонов. Они определяют, сколько раз фотон отражается от поверхности (преломляется в поверхности) прежде чем остановиться. Первое значение задает максимальное количество отражений и преломлений.
  • На текущий момент мы изменим настройки Photon Volume Radius и Max Photon Depth. Что касается Max Photon Depth, то я обычно получаю хорошие результаты, используя установки по умолчанию (5-5-5). Запомните, что более высокие значения помогают осветить темные области, но серьезно увеличивают время рендеринга. Как я говорил раньше, изменим Photon Volume Radius, чтобы оптимизировать скорость рендеринга. Для этого выполним рендеринг (только с GI), установив Photon Volume Radius в ноль (наилучшее качество).
    Теперь посмотрим на время рендеринга: 50 секунд (на моей рабочей станции, разумеется).

    Можно поэкспериментировать со значением радиуса, контролируя время рендеринга (не забывая при этом о качестве изображения).
    Рекомендую начать с очень малого радиуса (например, 1) и увеличивать его, пока результат будет сравним по качеству с первым рендерингом (при значении 0), но с меньшим временем рендеринга. Помните, что радиус выражается в локальных единицах сцены. При выполнении тестов отключите "rebuild photon map", чтобы ускорить рендеринг. Время, затраченное на проверку, сторицей окупится на финальном рендеринге. Каждая секунда на счету!

    Вот мои тесты по изменению радиуса:







    Я остановился на значении 15.

    1.4 Окончательная сборка (Final Gather)

    Теперь мы добрались и до окончательной сборки. В этой сцене мы не меняли настроек осветителей или материалов сцены, поэтому оставьте флажок "Rebuild Photon Map" снятым.

    Вот как выглядит панель настроек:

    Final Gather (финальная сборка)

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

    Если вас не очень интересует теоретическое описание окончательной сборки, прейдите сразу к главе 1.4.1. По существу, окончательная сборка позволяет Вам рассчитать и сохранить информацию об освещености в некую карту.

    Расчет ведется в два этапа:

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

    2. дополнительный расчет и интерполяция
    Вторая фаза реализуется непосредственно во время рендеринга (или, частично перед ним, если вы активировали флажок "Precompute Photon Lookup"). Используется карта, сохраненная на предыдущем этапе, причем результат интерполируется, используя значения минимального/максимального радиуса. Если максимальный радиус недостаточно велик, чтобы покрыть каждую часть сцены, алгоритм окончательной сборки эмитирует другие лучи, чтобы получить нужный результат.

    Чтобы посмотреть, как окончательная сборка действует на вашу сцену, активируйте опцию Diagnose Finalgather в окне "Render Settings", секция "Diagnostics" Зеленые точки означают данные, рассчитанные на первой фазе, а красные – на второй.

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

    "Min/Max Radius" как сказано выше, эти два значения используются алгоритмом окончательной сборки для интерполяции данных, полученных на первом этапе. Меньшие значения дают высокую детализацию, но увеличивают время рендеринга."Min/Max Radius" могут выражаться в единицах сцены (в нашем случае сантиметрах) или пикселях. Пользователи Mental Ray 3.4 могут активировать эту установку, включив опцию "View (Radii in pixel size)". О предыдущих версиях Mental Ray вы можете подробнее узнать здесь. Работа в пикселях дает большое преимущество. Вы можете сразу подобрать нужное значение, вместо того, чтобы прикидывать расстояние в единицах сцены.

    "Final Gather Rays" задает количество лучей эмитируемых из каждой точки пересечения луча с объектом. Увеличивая это число, можно добиться более точного расчета освещенности. Для расчета общей освещенности также важны значения максимального и минимального радиуса!

    Однако значения радиуса ничего не говорят о длине луча, которая задается параметром "Falloff start/stop".

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

    Не менее важные параметры: "Trace Depth", "Trace Reflection" и "Trace Refraction". Концептуально они работают так же, как и ограничения числа отражений фотонов в глобальном освещении.

    И, наконец, флажок "Secondary Diffuse Bounces" активирует так называемое "множественное отражение" (вы найдете его только в Mental Ray 3.4), но здесь мы этот параметр не используем, поскольку он не активен при включенном глобальном освещении.

    "Precompute Photon Lookup" производит предварительную оценку некоторых параметров окончательной сборки, с целью ускорения рендеринга. Эта опция очень важна при анимации.

    1.4.1 Как настраивается окончательная сборка

    Вот параметры, которые я использовал для теста. Установите примерно такие же настройки:
    "Rays": 50 (для Mental Ray 3.3 нужно значение 100-200).
    Значение "Filter" смените с 0 на 1.
    Оставьте значение "Radius" равным нулю и выполните рендеринг на низком разрешении (400x300).

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

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

    Вот несколько тестов, в которых я использовал разные значения радиуса:





    Вы можете увеличить радиус, чтобы избежать (или как можно сильнее уменьшить) эффект помех, возникающий при малых значениях радиуса. Имейте в виду, что значение зависит от масштаба. Разумного компромисса между качеством и временем рендеринга можно достичь, используя значение радиуса от 1 до 10. Подобрав радиус, удовлетворяющий Вашим нуждам, выполните рендеринг в областях с артефактами и увеличьте количество эмитируемых лучей, чтобы устранить их. Не забудьте также, что оптимальное значение радиуса зависит от версии Mental Ray. Версия 3.4 оптимизирована для низких значений радиуса, предудущие требовали более высоких значений (и больше времени на рендеринг).

    1.5 Настройка окончательного рендеринга

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

    1.5.1 Материалы

    Правильно подобранные материалы крайне важны для достижения реализма. На сайте www.treddi.com есть урок, посвященный материалам Mental Ray, в частности dgs, dielectric и другим интересным шейдерам (dgs_fresnel, l_glass). Он написан Alessandro (Pantich) и поможет начинающим освоится с этими шейдерами.

    Примечание переводчика: Урок по указанной ссылке написан на итальянском языке.

    Преимущество этих материалов заключается в двух вещах: более быстрый рендеринг и корректный расчет освещения. Если вы начали этот урок, используя шейдер lambert, назначьте всем объектам материал DGS (без глянцевого (glossy) отражения) и выполните тестовый рендеринг для сравнения старого и нового материалов. При этом помните, что как и для других шейдеров Mental Ray, для DGS материала надо установить dgs_photon или mib_photon_basic в качестве фотонного шейдера.

    Рекомендую использовать в сцене только один тип шейдеров (или Maya или Mental Ray). В противном случае неизбежно появление артефактов.

    1.5.2 Качество антиалиасинга (Anti-Aliasing quality)

    Для оптимизации окончательного рендеринга важно также настроить параметры антиалиасинга. Я предпочитаю использовать фильтрацию Mitchell: в Mental Ray она имеет оптимальное соотношение качество/скорость.

    Наиболее важные установки антиалиасинга – "Numbers of Samples" и "Contrast Threshold"

    Опция "Min Sample Level" задает минимальное значение лучей, которое использует Mental Ray. "Max Sample Level", естественно, максимальное.

    Предупреждение:
    Значение разбиения (сэмплинга) в Maya увеличивается НЕ линейно, а экспоненциально. Поэтому, если вы используете значение 0, вы получите один луч, значение 1 соответствует четырем лучам, 2 - шестнадцати и т.д. Соответственно этому увеличивается и время рендеринга. В 3dsmax этот параметр задается по-другому: он управляет именно количеством лучей. Таким образом, значение 2 в Maya эквивалентно значению 16 в 3dsmax.

    Как можно определить максимальное и минимальное количество лучей? Установкой значений "Contrast Threshold" (Порог контрастности). Этим важным для качества параметром часто пренебрегают. В тех областях картинки, где порог контрастности превышается, Mental Ray будет использовать максимальное разбиение, где контраст меньше порога - минимальное. Это особенно эффективно в однородно окрашенных областях, где разбиение почти не требуется. Более подробно о параметре Contrast Threshold можно прочитать здесь.

    И так, я рекомендую вам такие параметры:

    Mitchell 4 | 4
    Min samples 0 (или -1) (для 3ds max 1 или 1/4)
    Max samples 2 (для 3ds max 16)
    R 0,05 G 0,05 B 0,05

    Пример: Использование значений по умолчанию (3-3)

    Samples 6-6



    1.5.4 Цвет освещения

    Чтобы добиться фотореалистичного освещения интерьера, нужно установить цвет осветителей таким, каким он и бывает в реальной жизни. В Mental Ray 3.4 есть новая утилита, которая позволяет выбрать цвет, базируясь на температурной шкале Кельвина. Посмотрите на приведенную ниже диаграмму:

    Диаграмма. Температурная шкала Кельвина.

    В качестве начального приближения для прожектора выберите цвет солнечного света, а для точечного источника цвет атмосферного освещения.

    Если вы используете Mental Ray версии до 3.4, задайте желто-оранжевый цвет для обоих осветителей и светло-голубой цвет для фотонов.

    1.5.5 Двоичное пространственное разделение (Binary Spatial Partitioning (BSP))

    Этот параметр ищите в окне "Render Setting", в секции "Memory and Performance". Он весьма важен для оптимизации времени рендеринга. Подробный рассказ о нем потребовал бы специального урока. Полную информацию о нем Вы, как всегда, можете найти на сайте LAmrUG. Я использую следующую методику. Делаю несколько рендерингов всей сцены в очень малом разрешении (или рендернгов наиболее критичного участка) изменяя BSP с шагом по 3. Например, если вы начали с 40, пробуйте 37/34/31 и т.д. Сравните время рендеринга и выберите наиболее подходящий вариант.

    1.5.6 Выходной буфер кадра

    Mental Ray в Maya не имеет средств для тонирования, но есть несколько обходных путей, позволяющих решить эту проблему.

    Один из них - использование параметра "gamma" (окно "Render Setting", секция "Framebuffer", параметр "gamma") который управляет общей яркостью результата рендеринга, в частности для затененных областей (значения ниже 1 увеличивают яркость).

    Однако я предпочитаю другой путь: экспортировать рендеринг в 32-хбитный формат, а затем использовать пост-обработку. Mental Ray, начиная с версии 3.3 поддерживает формат OpenExr (32bit). Вы можете найти новости и плугины для этого формата здесь. Этот формат предоставляет больше возможностей, чем HDR (поскольку имеет больший динамический диапазон) и чем TIF (поскольку последний сохраняет данные в классическом RGBA 16-ибитном формате).

    Если вы используете Mental Ray 3.4, то использовать формат EXR очень просто: Установите опцию "Data Type" в секции "Framebuffer" в значение RGBA (float) 4x32bit, а "Image Format" в секции Image File Output - в значение OpenExr.

    Если вы используете версию 3.3, экспорт в EXR формат чуть сложнее. Я рекомендую Вам скачать плугин, написанный Gonzalo Garramunos, отсюда и использовать шейдер output_exr как выходной шейдер для камеры.

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

    Render Settings:
    Anti-Aliasing Quality
    Samples -1 и 2
    Mitchel: 4 и 4
    Contrast R: 0.05
    Contrast G: 0.05
    Contrast B: 0.05
    Contrast A: 0.1

    Raytracing
    Reflection: 4
    Refraction: 4
    Max Trace Depth: 8

    Global Illumination
    Accuracy: 512
    Radius: 15
    Max Photon Depth: 5
    Max Reflection Photon: 5
    Max Refraction Photon: 5

    Final Gather
    Rays: 400
    Min / Max Radius: 2 и 15
    Filter: 1
    Trace Depth: 2
    Trace Reflection: 1
    Trace Refraction: 1

    Прочие установки
    Area Light
    Sampling: 6 и 6
    Low Level: 0

    2.0 Другие типы освещения

    Как уже говорил выше, я пробовал разные способы освещения, чтобы выбрать наилучший. Здесь я привожу список своих проб. Вы можете выбрать из них тот, который нравится Вам больше (Солнечный свет + Рассеянное освещение).

    Direct + point(area light) с physical_light:

    Direct + point(area light):

    Direct + spot(area light):

    Spot + physical:

    Spot + spot(area light):

    Надеюсь, что этот урок поможет вам в освоении Mental Ray в Maya.