Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Mental ray 3.3 для 3ds max.docx
Скачиваний:
5
Добавлен:
01.09.2019
Размер:
9.59 Mб
Скачать

"The Final Battle". Автор: Max Kor

Статья автора работы: "The Making of The Final Battle"

Создание собственных материалов sss Fast

Материалы miss_fast_simple_phen (SSS Fast Material), и miss_fast_skin_phen (SSS Fast Skin Material) обладают богатыми возможностями. Но что, если возникнет необходимость в создании материала с четырьмя и более рассеивающими слоями? Или материала с какими-либо иными свойствами?

Один из способов решения проблемы — "сборка" шейдеров в редакторе материалов 3ds max на основе стандартного материала. Сделать это можно следующим образом.

1. Выбираем в редакторе материалов свободный стандартный материал и разворачиваем у него mental ray Connection.

2. Отключаем "замок" у слота "Surface" и назначаем ему SSS Fast Render Shader (mi). Мы создали два рассеивающих слоя у материала. Если требуется бОльшее количество слоев, то нужно воспользоваться слотом "Diffuse Illum" и снова назначить ему SSS Fast Render Shader (mi). В результате материал будет иметь 4 рассеивающих слоя. Если необходимо нечетное количество слоев, то вклады от любого слоя или слоев можно отключать, обнуляя их вес. Каскадируя SSS Fast Render Shader (mi) через слот Diffuse Illum можно построить материал с любым количеством слоев.

3. Возвращаемся к mental ray Connection и, нажав слот Light Map (группа Advanced Shaders), выбираем из появившегося списка Material/Map Browser шейдер SSS Lightmap Write (mi). Этот шаг необходим для того, чтобы генерировались карты lightmap и depthmap.

Примечание. Для того чтобы иметь возможность собирать собственный материал SSS Fast, должен быть выполнен ряд обязательных условий:

  • в качестве активного рендера должен быть установлен mental ray;

  • в Preference на закладке mental ray должно быть разрешено использование расширений: Preference > mental ray > General > Enable mental ray Extensions = on (установлена галочка в чекбоксе);

  • нужно открыть шейдера SSS Fast, отредактировав subsurface.mi

Пример. Соберем и настроим материал, аналогичный SSS Fast Skin Material.

1. mental ray Connection > Surface назначаем SSS Fast Render Shader (mi). Настраиваем значения параметров этого шейдера следующим образом:

  • Overall diffuse color = белый цвет;

  • Unscattered diffuse weight = 1, это необходимо, поскольку через слот Diffuse Illum будет подключен еще один SSS Fast Render Shader;

  • Front surface scatter color = (RGB 242, 128, 51), что соответствует цвету второго рассеивающего слоя материала Fast Skin;

  • Front surface scatter weight = 0,4;

  • Front surface scatter radius = 25 мм;

  • Back surface scatter color = (RGB 178, 26, 26);

  • Back surface scatter weight = 0,5;

  • Back surface scatter radius = 25 мм;

  • Back surface scatter depth = 25 мм

Рассеивающие слои первого шейдера воспроизводят свойства среднего и заднего рассеивающего слоев SSS Fast Skin.

Теперь идем к слоту Specular Illum и назначаем ему SSS Specular Reflection for Skin (mi). Для его параметров устанавливаем те же значения, что и у параметров зеркальных отражений SSS Fast Skin (группа 2-Layer Specularity and Reflections).

Далее, слоту Diffuse Illum назначаем еще один (второй) шейдер SSS Fast Render Shader (mi) и настраиваем его параметры таким образом, чтобы воспроизвести свойства диффузного не рассеянного освещения и рассеяния от первого слоя Fast Skin:

  • Diffuse Illum назначаем шейдер SSS Lambert Gamma (mi);

  • Overall diffuse color = белый цвет;

  • Unscattered diffuse weight = 0,3;

  • Front surface scatter color = (RGB 255, 217, 153), что соответствует цвету первого рассеивающего слоя материала Fast Skin;

  • Front surface scatter weight = 0,5;

  • Front surface scatter radius = 8 мм;

  • Back surface scatter weight и radius = 0, вклад от этого слоя нам не нужен;

Остальные значения оставляем по умолчанию.

Возвращаемся к mental ray Connection и слоту Light Map назначаем SSS Lightmap Write (mi) со следующими значениями параметров:

  • Light map group = любое имя, оно будет использоваться для передачи карт освещения между шейдерами, например, "A";

  • Write to file = 0, если используется автоматическое создание и передача карт освещения и запись карт в файл не производится, 1 и 2 — если нужна запись карт в файлы, тогда во всех слотах шейдеров Lightmap нужно явно указывать имя и путь файла.

Преимущество использования этого параметра в том, что можно просчитать и сохранить карту освещенности в файл один раз и затем открывать этот файл только для чтения (опция Open as read-only есть у слота lightmap шейдера SSS Fast Render), то есть карта освещенности будет считываться из файла, а не пересчитываться. Для этого перед первым расчетом устанавливаем Write to file = 1, после расчета и записи карт освещения в файл — Write to file = 0. Можно даже попробовать удалить SSS Lightmap Write после создания файлов с картами освещения — это гарантированно избавит нас от пересчета.

  • Scatter Bias = 0,12;

  • Sampler уже имеет назначенный SSS Lambert Gamma (mi), его параметры оставляем по умолчанию

Карту bump следует подключать через первый шейдер, во втором шейдере ее можно просто отключить (установить None).

Материал готов к работе. Его схема выглядит следующим образом:

Схема собранного из шейдеров SSS Fast материала, реализующего функциональность SSS Fast skin

Помимо возможности создания произвольного числа рассеивающих и зеркальных слоев, преимущества построения собственного материала состоят в том, что все настроечные параметры шейдеров доступны для редактирования. Более того , мы можем заменять шейдеры misss_fast_shader (SSS Fast Render Shader), misss_skin_specular (SSS Specular Reflection for Skin), misss_lambert_gamma (SSS Lambert Gamma) и bump shader своими собственными . Например, замена misss_lambert_gamma на шейдер Illum Phong в шейдере SSS Lightmap Write позволит экспериментировать с рассеянием зеркальных отражений. Замена шейдера этого же типа в Diffuse Illum misss_fast_shader позволяет реализовать иную схему расчета диффузного не рассеянного освещения, например, при помощи "оборачивающего" шейдера JS_wrapmaterial или Illum Phong и так далее.

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

В качестве альтернативы можно декларировать собственный материал, создав интерфейс для настроечных параметров, аналогично тому, как это сделано для miss_fast_simple_phen и miss_fast_skin_phen. Это позволит сгруппировать в одном месте настроечные параметры, сделав удобным их редактирование. В качестве примера файл subsurface_mod.mi содержит SSS Fast Cascade Material, который аналогичен SSS Fast Skin, но позволяет каскадировать произвольное число misss_fast_shader, то есть определять произвольное число рассеивающих и зеркальных слоев.

Все же удобнее заранее определиться с количеством рассеивающих и зеркальных слоев и декларировать материал с интерфейсом настроечных параметров, соответствующий числу слоев. Например, можно построить более сложный материал кожи с четырьмя рассеивающими слоями (дополнительный слой для вен и артерий) и тремя зеркальными слоями (третий слой для подсветок bump).

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

Сочетание материалов и шейдеров группы miss_physical и группы SSS Fast позволяет решать самый широкий спектр задач, связанных с расчетом подповерхностного рассеяния.

Ссылки на дополнительную литературу по теме:

1. "The Making of The Final Battle"

2. Stiven Stahlberg "Human skin shading"

3. Форум "Skin shading"

4. Форум "misss tests", посвященный вопросам использования SSS Fast Skin в Maya. Особенно интересна 22 страница форума, где обсуждается применение карт для различных свойств кожи компьютерного персонажа Hulk.

Файлы:

1. subsurface_mod.mi — отредактированный оригинальный subsurface.mi, в нем открыты все шейдеры и все их свойства, содержит исправленный материал miss_fast_simple_phen (SSS Fast Material) и нестандартный материал SSS Fast Cascade Material для каскадирования произвольного числа слоев. Для использования это файл нужно поместить в папку 3dsmax7\mentalray\shaders_standard\include\ и переименовать его в subsurface.mi, перед этим не забудьте сделать резервную копию оригинального subsurface.mi.

2. файл сцены test.max с тестовым объектом и примерами материалов SSS Fast Cascade Material, настроенных как miss_fast_simple_phen (SSS Fast Material) и miss_fast_skin_phen (SSS Fast Skin Material).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]