On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Возможности Mental Ray

Иван Железняк

Итак, речь пойдет о небезизвестном рендере "mental ray" и 3D Studio Max, а точнее, их совместном "творчестве". Но для начала выясним, как справляется с задачами просчета сам Max.

Default Scanline A-Buffer Render


Если вы помните, 3D Max, а точнее, его встроенный рендер, всегда ругали за "пластмассовость" получаемых при визуализации сцен. Хотя в последнее время ситуация сильно изменилась и Scanline Render выдает вполне "перевариваемые" вещи. Но в основном это заслуги Raytrace'ра от Blur Studio, с недавних времен прочно "вшитого" в тело всеми любимого пакета. Трассировщик лучей (Raytrace'р) берет на себя такие задачи, как расчет карт отражения/преломления на основе физических законов поведения светового потока в различных средах (жидкость, стекло, зеркальная поверхность и т.д.). С помощью Raytrace Material, или используя Raytrace Map в создаваемом материале, можно получить, например, вполне реалистичное стекло или хромированную ложку... поиграв с параметром просвечиваемости (Translusency) можно сотворить "живую" свечу...



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

Для начала рассмотрим картинку с бокалом Мартини. Вроде бы все хорошо, все правильно: и преломление есть (оливка в бокале), и отражение от шейкера... но тени!!! Такая ли должна быть тень от прозрачного бокала... да и от всего остального, впрочем? Ответ на этот вопрос может дать только опыт общения с реальной физической средой, в которой законы физики исполняются помимо нашей воли и в которой мы тусуемся с рождения :). Мой скудный жизненный опыт говорит "нет"! Просчет теней в сцене осуществляется с использованием трассировки лучей. Этот метод дает более "честный" результат (об этом чуть ниже), нежели shadow map, и, тем не менее, грубость его реализации лишает ощущения реальности, если хотите, присутствия. Это более ощутимо на картинке с ложками. Кстати, и сами ложки не есть шедевр с точки зрения <восприимчивости> к окружающей среде, но это уже проблема <нечестного> расчета ray-trace'ром карт отражения.

Если кто-нибудь считает, что я "слишком многого хочу от жизни", пусть первым бросит в меня камень :) - истина дороже! А вот вам и "жизненный опыт":


Без комментариев...

Обязан сделать оговорку: это mental ray! (далее - MR)

Итак... где же "собака порылась"?..

Чего Max (имеется ввиду базовая версия, без дополнительных плагинов, как например, RadioRay от Digimation) никогда не умел и не умеет по сей день, так это работать со светом. Чтобы добиться нужного результата, порой приходится часами "ставить" свет, используя массу Omni, Spot и др. его источников, хотя по логике вещей достаточно одного-двух. Работа прямо-таки для маньяков, но деваться некуда.

Основная масса проблем при постановке света возникает именно с тенями, притом, что общую освещенность сцены и отдельных ее объектов контролировать куда проще. Источники света в Max'е обеспечивают реализацию двух типов теней: Shadow Maps и Ray-Traced Shadows. Рассмотрим, в чем заключается их различие.

Shadow Maps (теневые карты)

Shadow map - карта (текстура), которую генерирует рендер во время предварительного прохода сцены (pre-rendering'а). Shadow map не реагирует на цветовой оттенок прозрачного или полупрозрачного объекта. С другой стороны, с помощью shadow map можно получить мягкие размытые тени, чего не сделаешь, используя ray-traced тени. Shadow map - карта, которую проектирует направленный источник света. Этот метод обеспечивает более мягкие переходы между тенями и освещенными участками сцены и более быстрый рендеринг, чем ray-traced.



Ray-Traced Shadows (тени на основе трассировки лучей)

Ray-traced shadows просчитываются и рендерятся почти таким же способом, что и изображения, формируемые в векторных программах рисования, и, как следствие, являются независимыми от разрешения. Ray-traced shadows всегда имеют резкие границы, что может быть преимуществом или недостатком, в зависимости от желаемого эффекта. Рендер генерирует ray-traced shadows, прослеживая путь светового потока, испускаемого источником света. Эти тени более точны, чем shadow map. Например, только ray-tracing может генерировать точные тени от прозрачных и полупрозрачных объектов, учитывая их цвет.


Ясность внесли, но на чем остановиться? :) Ведь, сделав выбор, приходится чем-то пренебрегать, либо ухищряться до безобразия, и в итоге - неудовлетворительный результат.

А представьте теперь абсолютно "честные" ray-traced тени с мягкими размытыми краями... реалистично освещенную сцену, всего лишь с одним источником света... блики, отбрасываемые блестящими предметами (без особых затрат)... и это - не предел фантазии, не проекция сна, не поток сознания - это "Луч разума".

mental ray

MR - самостоятельный (независимый) программный продукт, который используется для визуализации (рендеринга) трехмерных сцен. Его можно подключить к Max'у, как плагин, используя т.н. "3D Studio MAXR Connection to mental rayR" от Discreet. При этом, в Preference Settings, в разделе Rendering / Current Renderer появляется новый рендер - mental ray. С этого момента можно рендерить из Макса напрямую в MR, либо создать с помощью транслятора mi2-файл, содержащий описание сцены для последующего просчета.

Mental ray предназначен для моделирования реальных источников света, а также для динамического просчета прохождения светового потока (фотонов) через различные природные среды и распределения освещенности с учетом физических свойств поверхностей.

MR использует такие методы рендеринга, как алгоритм "растровой строки" (scanline) для первичного визуального определения поверхностей и алгоритм "разделения двойного пространства" (BSP / binary space partitioning) для определения вторичного светового потока. MR поддерживает разделение вторичного светового потока и "тенеобразующего" потока, для ускорения расчета теней. MR воспроизводит "блики" (сaustics) и симуляцию "глобального освещения" (global illumination), используя для их реализации так называемый "метод фотонного текстурирования" (Photon Mapmethod).

А также:

Ray-traced Reflections and Refractions (отражения и преломления)

Mental ray может генерировать отражения и преломления на основе трассировки лучей, прослеживая ход луча из источника света, в соответствии с физическими законами. Скорость просчета отражений и теней контролируется "глубиной следа" (trace depth), которая ограничивает число отражений и (или) преломлений светового потока.

Идеологически MR raytracer ничем не отличается от MAX'овского, но результаты просчета сцен говорят о том, что с точки зрения "математики" вычислений первый гораздо предпочтительней (см. результаты рендеринга сцен с ложками и шейкером).

Shadows (тени)

Mental ray renderer помимо shadow map теней может генерировать тени трассировкой лучей, причем как с жесткими краями, так и с мягкими.

Motion Blur (размытие перемещающегося объекта)

Motion Blur - способ повысить реализм анимации, моделируя работу настоящей камеры. Скорость срабатывания затвора камеры (выдержка) влияет на получаемое изображение, и если происходит активная смена плана при открытом затворе, то изображение на пленке получается смазанным.



Хочется отметить, что реализация motion blur от MR существенно отличается от стандартной (естественно, в лучшую сторону). MAX реализует этот эффект после рендеринга, не учитывая характера движения объектов и "забывая" про тени. С тем же успехом к просчитанной сцене можно применить эффект motion blur в PhotoShop'е.



Depth of Field (глубина резкости)

Depth of field - способ, эмулирующий глубину резкости (фокусное расстояние) реальной камеры, при этом объекты, попавшие в фокус, имеют четкий вид, а не попавшие выглядят размытыми.

Тут добавить нечего, реализация DOF MR схожа c MAX'овской.



Caustics (блики)

Caustics - световые пятня, отбрасываемые одним объектом на другой в результате отражения или преломления луча. Можно создавать Caustics, вызванные многократным отражением и/или преломлением, Caustics, которые сами по себе будут отражением или преломлением, объемные Caustics.

Очень сильная вещь для создания бликов от поверхности воды или сконцентрированного светового пучка от линзы (эдакого "солнечного выжигателя"). Кстати, вспомните бокал с Мартини - блики и "растворенные" тени созданы с помощью Caustics.



Area Lights (не точечные источники света)

Area Light - источник света, эмиттер которого может принимать форму, отличную от точки - сфера/цилиндр (Omni Light) или прямоугольник/диск (Spot Light).

MAX Connection to MR добавляет два новых источника света - Area Spot Light и Area Omni Light. Эти по-настоящему объемные "светильники" исполнены большего реализма, чем стандартные.



Global Illumination (глобальное освещение)


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

В этой сцене использовался всего лишь один "светильник" типа Area Omni Light. Для точной настройки освещения используется закладка Indirect Illumination Params в свойствах источника света, где устанавливаются мощность источника и количество испускаемых фотонов.



Помимо всего прочего, MAX Connection to MR производит модификацию MAX'a, обновляя свойства имеющихся объектов:

- новые свойства объектов (Object Properties)

Как видите, ничего хитрого - объекты "научились" эмиттировать/воспринимать Caustics и Global Illumination, а также быть видимыми (или нет) напрямую и в зеркале.



- новые свойства источников света

Можете установить мощность "фонаря", количество фотонов для Caustics и для Global Illumination.



- новые свойства камер



И несколько слов о материалах. Mental ray renderer трактует материалы и карты закраски MAX'а тем же самым способом, что и default 3D Studio MAX scanline renderer; правда, есть некоторые исключения, но о них - ниже. Если же рендер MR не распознает карту закраски или материал объекта, то попросту "закрашивает" его непрозрачным белым. Это может произойти при использовании материалов-плагинов сторонних производителей.

Не поддерживаемые материалы:

- Matte/Shadow Material

Не поддерживается лишь использование Raytrace карты в компоненте отражения (reflection) Matte/Shadow материала. Вместо этого можно использовать Reflect/Refract map или Flat Mirror map.

- Morpher material

- Raytrace material

В настоящее время Raytrace материал не работает с рендером MR, а то бы я предложил на ваш суд обсчитанную им сцену со свечей. Вместо Raytrace material можно использовать Reflect/Refract map или Flat Mirror map в компоненте отражения и (или) преломления.

Помимо этого есть ограничение на использование MAX'овских шэйдеров материалов - MR не поддерживает Strauss shader. Но все остальные: Anisotropic, Blinn, Metal, Multi-Layer, Oren-Nayar-Blinn и Phong - работают как часы.

И пусть вас не пугают эти маленькие преграды, я уверен, любому дизайнеру/ 3D-графику/ аниматору хватит свободы для творчества.




Литература по 3DMax