Настройка Lightmap для miSSS_fast материалов в Maya Mental Ray

Данный урок предназначен начинающим Майщикам (в особенности бывшим Максерам (Максюжникам, Максистам и т. д.:), имевшим какой-то опыт пользования FastSSS материалами в Макс-версии МенталРэя), которые столкнулись с проблемой настройки Lightmap для ССС материалов в Maya Mental Ray.

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

Итак. Для тех кто не знает что такое SSS и MentalRay FastSSS? в частности, скажу вкратце:
SSS (Sub Surfase Scattering - Под Поверхностное Рассеивание) - свойство материала которое позволяет ему рассеивать попадающий на него свет под поверхностью, т. е. внутри сделанного из этого материала предмета. Этим свойством обладают практически все окружающие нас объекты, некоторые в большей, некоторые в меньшей степени в зависимости от разных характеристик материала. Легко пронаблюдать этот эффект поднеся свою руку к свету: кожа по краям будет просвечиваться красноватым цветом; или глядя на горящую свечу: воск из которого она сделана пропускает свет и как бы светится изнутри причем чем болиже к огню тем сильнее. Практически все рендереры для макса поддерживают SSS. Нас же интересует Mental Ray for Maya. Для создания эффекта рассеивания света под поверхностью наиболее целесообразно использовать материалы из группы misss_fast.
Эти материалы выгодны тем, что создают достоверный эффект ССС без учета физических свойств материала (для этого есть misss_physical), при их настройке учитываются глубина проникновения света и цвет внутренних слоев материала. Иногда их еще называют Non Physycal SSS материалами, т. к. для работы они не требуют генерации фотонов, рейтрейсинга и т. д. Расчет ССС в этих материалах происходит посредством Lightmap (растровой карты хранящей данные о пикселях в формате с плавающей точкой) - карты освещенности и Depthmap - карты глубины (т. е. расстояния каждой точки объекта от плоскости на которую эти точки проецируются). Обе эти карты записываются в один файл.
Более подробно обо всем что касается СССФаст в Ментал Рэй можно прочесть здесь: http://www.ixbt.com/soft/ss_fast.shtml Это статья в которой ув. тов. Игорь Сиваков приводит исчерпывающее описание возможностей "Быстрых" ССС материалов на примере 3dsMAX Mental Ray (кстати, эта статья может быть интересна не только новичкам:) благодарность и низкий поклон автору).

В Макс-МенталРэй эти карты (в смысле Lightmap и Depthmap) по умолчанию создаются во время рендера и хранятся в памяти.

Ситуация:

Начинающий Майщик создал модель, допустим свечки и хочет сделать материал, похожий на воск. Если он еще и бывший Максер и до этого пользовался в Максе материалом SSS Fast Material то и в Мая Ментал рэй он выбирает его аналог misss_fast_simple_maya. Рендерит. И видит в фрэймбуфере хитросплетенную дулю за место ССС. Примерно вот так:


Полигональная свечка и два источника света - один с Intensity = 1 непосредственно над свечкой и еще один с Intensity = 0,1 для легкой посветки всей сцены.

Мда... на воск немного не похоже, точнее совсем не похоже.

Бывший максер (или человек пользующийся Максом помимо Майи) проделивает тоже самое в максе и вот результат:



Гм… Все нормально...

Опытному майщику ситуация может показаться глупой (Он даже скажет что-то типа "Зачем писать про это урок?!"). Но для начинающего 3д художника-Майщика это может стать проблемой. Тем более для Максиста который всем этим вовсю пользовался не вдаваясь в подробности про всякие там лайтмапы (это про меня :-).

Все дело в том что в Майе Ментал Рэй хочет сохранять лайтмэп в файле на жестком диске, и для того, чтобы заставить ССС материалы работать как надо, нужно присоединить к Shading Group данного материала шейдер, который будет заниматься созданием-сохранением-загрузкой этого файла.

Делается это следующим образом:

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

2. В настройках рендера (кнопка ) выбрать активным рендерером Mental Ray (Render Using > mental ray).

3. Зайти в Хипершэйд - меню Window > Rendering Editors > Hypershade.

4. Создать материал misss_fast_simple_maya - в меню Хипершэйда выбрать: Create > mental ray materials > misss_fast_simple_maya.

В хипершэйде появится узел этого материала:

5. Присвоить этот материал объекту: в вьюпорте выделить объект, нажать на него правой кнопкой и выбрать Materials > Assign Existing Materials > misss_fast_simple_maya1.

6. В хипершэйде два раза клацануть по узлу misss_fast_simple_maya1. Справа появится панель свойств (или по-научному Attribute Editor).

7. Развернуть свиток Lightmap:

здесь лучше сразу поставить побольше сэмплов например 128 или 256 - изображение будет более качественным;

и нажать на кнопку рядом с полем Lightmap.

8. Автоматически создастся узел mentalrayTexture с названием по умолчанию mentalrayTexture1:


так это выглядит в хипершэйде

Этот узел занимается загрузкой Lightmap'a из текстуры. А её то у нас и неееету... :)

Здесь ставим галку на параметр Writable (Записываемая). Задаем размер файла по ширине и высоте а пикселях. Важно чтобы высота (Height) равнялась высоте резолюции рендера, а ширина (Width) была в 2 раза больше (можно, конечно, и меньше поставить но из-за этого будет куча артефактов и не совсем ССС - я пробовал для прикола :). Оговорюсь: не обязательно ставить высоту равной высоте рендера - для повышения качества картинки можно взять и больший (или меньший для понижения:):):)) размер, но изменения должны быть пропорциональными. Например: если резолюция рендера 640х480 то размер лайтмапа можно задать 1280х480 (как у меня на рисунке) или 1600х600 или любой другой но ширина и высота карты должна рассчитываться исходя из этих пропорций.

Параметр File Size Depth ОБЯЗАТЕЛЬНО ставить в режим 32 bits.

В поле Image Name написать имя файла в который будут записываться данные. Имя файла должно начинаться с символа "\" или должен быть указан полный путь. Я задал имя \а это значит что в корне диска D на котором у меня стоит Майка при рендеринге будет создан файл с именем "а".

9. Теперь надо прикрутить шэйдер который эту самую карту будет генерить. Для этого в ментале есть шэйдер misss_fast_lmap_maya.

Заходим, значит, в хипершэйд. Там выбираем закладку Shading Groups и клацаем (если панель Attribute Editor закрыта то клацаем 2 раза) на узле misss_fast_simple_maya1SG. Заодно можно развернуть его Graph Network и посмотреть. Должно получиться что-то типа:

Это Graph Network узла misss_fast_simple_maya1SG.

А это атрибуты узла misss_fast_simple_maya1SG.

Здесь нужно развернуть свиток Custom Shaders и нажать на кнопку рядом с полем Light Map Shader (на рисунке нажата).

10. В появившемся окне Create Render Node в свитке Lightmaps выбрать шэйдер misss_fast_lmap_maya:

11. В Attribute Editor'e появятся настройки для этого узла:

В поле Lightmap нужно написать имя узла через который происходит запись-загрузка Lightmap. В данном случае это mentalrayTexture1.

12. В принципе всё готово. Можно развернуть Graph Network для misss_fast_simple_maya1SG снова и посмотреть на соединения узлов, должно получиться нечто подобное:

13. Жмем на Render. При каждом рендеринге ментал будет создавать lightmap и записывать его поверх предыдущего в указанном месте.

Ну не совсем воск, но уже похоже. Здесь все настройки материала misss_fasf_simple_maya1 по умолчанию. Если у Вас большая модель то возможно понадобится либо уменьшить модель либо в настройках материала изменить значения FrontSSS Radius и BackSSS radius (то есть увеличить глубину проникновения света внутрь модели).

Материал для свечи сделанный за 1 минуту (или даже меньше), потому то оне ФастССС и кличуться :)

Более подробно о настройках FastSSS материалов можно прочесть в статье, указанной выше. Несмотря на то, что в ней описывается Макс-Ментал Рэй подавляющее большинство настроек в материалах для Макс- и Мая- Ментал Рэев аналогичны.

Ради Интереса можно найти в корне диска файл "а" и открыть его какой-нибудь программкой типа Imf_disp:

Это фрагмент лайтмапа свечки. Обратите внимание на характерную "Полосатость" - в таком виде хранятся данные об освещенности и глубине модели.

The END.

Благодарю за внимание. Надеюсь что данный урок сэкономит кому-нибудь пару часов (или дней:) на рытье по Нэту в поисках ответа на этот вопрос.

412 0 850 9
13
2006-03-20
Очень, очень полезный урок! Прямо так сакральные знания %)))
2006-03-21
Спаибо, весьма хороший урок. Хорошая ссылка. +На англ. про miSSS можно почитать на LAmrUG.org.
2006-07-08
Спасибо!
2006-08-08
Присоединяюсь
2006-09-11
Респект!!!
2006-09-11
спасиба за лестные отзывы. написал этот урок (даже не урок, а так... урочишко) после того как чуть себе голову не сломал, перерыл пол-интернета (на всех форумах все молчели как партизаны :) ) и в - конце-концов нашедшего на меня озарения (я понял, что такое нодовая архитектура майи). вопщем этот туторчик кому-нибудь помог и не зря здесь висит :)
2006-09-11
я забыл там написать "я надеюсь" перед "этот туторчик кому-нибудь помог и не зря здесь висит :)" :)
2006-09-12
Присоединяюсь. Совсем не зря висит. Спасибо.
2006-09-12
Спасибо!!!
2007-04-02
Как раз для таких как я... Спасибо большое!
2007-04-17
Метод идентичный с тем который представлен [b]Alex ALVAREZ: [i]Introduction to Subsurface Scattering[/i][/b] кому интересно может скачать видео на ГНОМОН бесплатно.
2009-06-15
млин...первый урок который реально пригодился)))
2009-08-11
Спасибо
RENDER.RU