Phenomena в 3ds max виден как обычный шейдер заданного apply типа
Для настройки вновь созданного phenomena требуется всего лишь два параметра - температура и интенсивность. Как видите, уменьшение параметров, требующих определения, связано с тем, что для большей части из них значения уже назначены в "коде" phenomena.
Как и шейдеры, phenomena предназначены прежде всего для создания сложных материалов на основе более простых материальных шейдеров. Реальным примером сложных phenomena является материал sss_fast_skin, который подробно рассмотрен в обзоре "Mental ray 3.3 для 3ds max. Часть 4. Упрощенная модель подповерхностного рассеяния SSS Fast" (http://www.ixbt.com/soft/ss_fast.shtml). Или Car paint Phenomenon, который появился в standalone mental ray версии 3.4 (файл paint.mi) и представляет собой сеть из шейдеров mi_metallic_paint, mi_bump_flakes, mib_glossy_reflections, mib_color_interpolate и mib_illum_lambert.
Car paint Phenomenon
Точный синтаксис определения phenomena выглядит следующим образом.
declare phenomenon |
|
|
| [ тип] " phenomenon_name " | ( тип " parameter_name ", |
|
| .......................... |
|
| тип " parameter_name " ) |
[ version version ] |
|
|
[ shader | " name " |
|
[ material | " name " ... | end material |
[ light | " name " ... | end light |
[ instance | " name "... | end instance |
[ roots ] |
|
|
[ options ] |
|
|
end declare |
|
|
|
|
|
В определении phenomena могут быть использованы любые шейдера, конструкции материалов, источников света и инстансы. Блок options предназначен для указания только необходимых условий, которые обязательно должны быть выполнены, прежде чем phenomena может быть вызван. Перед рендерингом mental ray проверяет эти условия в декларациях всех шейдеров и phenomena, используемых в сцене, разрешает конфликты и настраивает глобальные опции сцены, чтобы удовлетворить этим требованиям. Полный список опций включает: scanline on|off, trace on|off, shadow off, shadow on, shadow sort, shadow segments, face front|back|both, derivative [ 1] [ 2], object space, camera space, volume level.
Оператор root имеет для phenomena совершенно особое и очень важное значение. Он выполняет две функции: во-первых он определяет результат который возвращает phenomena, во-вторых он может дополнять сцену различными элементами.
Возможные типы root:
root shader в качестве возвращаемого значения определяется значение шейдера, как мы это видели в примере с light phenomena. По принятому соглашению в качестве результата phenomena должны быть указаны именные шейдеры без параметров: root = "name_shader". Тип результата шейдера должен совпадать с декларированным типом phenomena. Этот вид phenomena является основным для практического использования и эквивалентен регулярному шейдеру.
root material " material_name " указывает, что сконструированный phenomena будет материалом, при этом тип phenomena в декларации обязательно должен быть material. В этом случае phenomena может быть использован для создания собственной конструкции материала, который затем используется как регулярный материал, а не шейдер, везде, где применение материалов допустимо.
Из этих двух видов root в определении phenomena один обязательно должен присутствовать и наличие одного исключает присутствие другого. Таким образом, для mental ray phenomena - это либо обычный шейдер, либо материал.
Остальные виды root не являются обязательными и могут указываться совместно с одним из обязательных видов для дополнительных целей, в основном для введения шейдеров, операторов и геометрии в определения камеры и сцены. Все дополнительные виды root обрабатывается на предварительной стадии, до начала рендеринга, и после создания геометрии, шейдера или оператора удаляются из phenomena.
geometry shader, позволяет phenomena вводить в сцену процедурную геометрию при помощи геометрических шейдеров. После обработки на предварительной стадии, процедурная геометрия добавляется к описанию сцены и удаляется из phenomena.
volume shader, позволяет добавить объемный шейдер (например, шейдер атмосферы) для камеры.
environment shader добавляет шейдер окружения для камеры.
lens shader добавляет линзовые шейдеры для камеры
output shader output [ " type "] " format " [ opt] " filename " позволяют добавить шейдеры и операторы выводы в определение камеры до начала рендеринга. Например, если phenomena рассчитывает и записывает пользовательские данные, этот вид root позволит создать пользовательский буфер для их вывода.
contour store shader contour contrast shader позволяют вводить шейдеры для NPR (non photorealictic rendering).
volume priority priority (целое число), lens priority priority (целое число), output priority priority (целое число) определяют приоритет размещения шейдеров указанных типов в определении камеры.
Как видим, несмотря на простоту "программирования" phenomena, с их помощью можно решать довольно широкий круг задачи и они органично дополняют концепцию шейдеров, превращая их в "строительные кирпичики" шейдерных графов.
Важность phenomena для практического использования всегда подчеркивалась разработчиками. Совсем свежие новости из этой области - mental images расширили линейку своих продуктов, добавив, в числе прочих новых приложений, mental mill специально для облегчения разработки шейдеров и шейдерных графов (phenomena). В частности, mental mill позволяет разрабатывать, тестировать и настраивать шейдеры и phenomena для аппаратного и программного рендеринга при помощи интуитивного графического интерфейса в режиме реального времени и, в силу этого, предназначен для самого широкого круга пользователей. Подробнее об этом можно узнать здесь: http://www.mentalimages.com/2_0_products/index.html.
Ну что же, пора подводить итоги.
Итак, мы познакомились с конструкцией материалов mental ray, шейдерами, входящими в ее состав, их назначением и свойствами. Узнали в подробностях о работе материального шейдера, являющегося основой материала (да и основой расчетов изображений в mental ray тоже). Рассмотрели shader assignment - назначение шейдеров в качестве параметров других шейдеров, и познакомились с phenomena и правилами их определения.
Я надеюсь, что этой информации достаточно для понимания основных принципов работы mental ray с материалами и составляющими их шейдерами. А когда основной принцип ясен, с деталями разобраться намного проще.
Приложение 1.
- Рендер простой сцены
- Часть 2. Options и ключи рендеринга командной строки
- Группа операторов сэмплирования
- Группа операторов рендеринга с использованием аппаратных возможностей видеокарты
- Группа операторов тесселяции
- Группа операторов Motion Blur
- Группа параметров Shadows
- Группа параметров Rendering Algorithms
- Группа операторов Feature Disabling
- Группа параметров Caustics
- Группа параметров Global Illumination
- Группа операторов Frame Buffer Control
- Группа параметров Scene Geometry
- Группа операторов Contours
- Группа операторов Diagnostic Modes
- Группа дополнительных операторов
- Ключи рендеринга командной строки ray.Exe
- Часть 3. Источники освещения
- Параметры шейдера ctrl_objectlights
- Только прямое освещение от протяженного источника-полусферы, имитирующего Sky light
- Часть 4. Геометрические объекты
- Тестовая сцена
- У стеклянного бокала visible off и в камеру он не виден. Но его тени и отражения в шейкере присутствуют
- В свойствах подложки установлено reflection 6 и refraction 6, поэтому ни шейкер, ни бокал ее не "видят"
- Для подложки refraction 12 и поэтому бокал ее не "видит", а reflection 3 и шейкер отражает подложку Обратная ситуация: для подложки refraction 3, reflection 12
- Fg Accuracy 280 сэмплов, радиусы 100 - 10 см
- У одного из объектов сцены finalgather 9, у остальных 3
- Противоположная ситуация: тумба не отражает вторичный свет, но сама его "видит"
- Расчет вторичного освещения методом fg, выполненный только для одного объекта сцены - шара. Fg accuracy: 1200 сэмплов на точку, минимальный радиус 1 см, максимальный - 10 см
- Часть 5. Камеры
- Часть 6. Материалы
- Конструкция стандартного материала
- Конструкция материала типа mental ray mental ray Connection стандартных материалов
- Шейдеры и параметры
- Назначение шейдеров в качестве параметров других шейдеров в 3ds max
- Назначение mib_cie_d в качестве параметра цвета светового шейдера точечного источника в 3ds max
- Phenomena в 3ds max виден как обычный шейдер заданного apply типа
- Is_mat_irradiance - шейдер расчета вторичного освещения индивидуально для материалов
- Интерфейс шейдера is_mat_irradiance
- Расчет освещения методом fg с глобальными настройками
- Расчет вторичного освещения с индивидуальными настройками fg для материала чайника и цилиндрической подставки (увеличено число сэмплов)
- Расчет вторичного освещения с индивидуальными настройками fg для материала чайника и цилиндрической подставки (увеличено число сэмплов) и материала конуса и земли (увеличены только радиусы)
- Рендеринг с Fast Sky