понедельник, 16 апреля 2012 г.

mental ray 4 Maya | Shaders Guide | dgs_material, dielectric_material

Здравствуйте друзья, в этом посте, нашего большого путешествия, мы познакомимся с двумя первыми шейдерами из набора шейдеров mental ray 4 Maya. Этими шейдерами являются dgs_material и dielectric_material. Это одни из основополагающих шейдеров mental ray. При объединении их в единую структуру, вы можете получить полный контроль над свойствами поверхностей и контролировать их.
Рассматриваемые сегодня шейдеры dgs_material и dielectric_material, группы Material.
Заметим, что, шейдеры dgs_material и dielectric_material визуализируются с использованием метода трассировки луча (Raytracing), и для достижения лучшего качества визуализации, вам необходимо настраивать параметры трассировки луча в глобальных параметрах визуализатора (вкладка Quality).
Параметры трассировки луча (Raytracing) во вкладке Quality диалогового окна Render Settings. 
Давайте рассмотрим параметры их задачи в шейдерах dgs_material и dielectric_material. Шейдеры материалов dgs_material и dielectric_material реализуют различные физически корректные модели отражающих и преломляющих материалов. Однако, стоит отметить, что они считаются уже устаревшими и на замену этим шейдерам рекомендуется использовать более мощные и современные шейдеры. Например, такие как mia_material. О них мы поговорим в следующих разделах.

Шейдер dgs_material (Diffuse-glossy-specular Material)
Шейдер dgs_material позволяет симулировать зеркала, глянцевую краску или пластик, анизотропную глянцевитость для таких материалов как шлифованный металл, диффузные материалы, такие как бумага, полупрозрачные материалы, такие как оледенелое стекло и другие типы материалов.
Этот шейдер не может быть использован как шейдер теней (Shadow Shader), так как тени могут быть вычислены вдоль пути прохождения луча света, что не определено в DGS материалах. Используйте глобальное освещение для освещения объектов расположенных в тени от DGS объектов.

Описание шейдера в формате .mi:
color "dgs_material" (
    color           "diffuse",
    color           "glossy",
    color           "specular",
    scalar          "shiny",
    scalar          "shiny_u",
    scalar          "shiny_v",
    scalar          "transp",
    scalar          "ior",
    array light     "lights"
    integer         "mode")

Шейдер dgs_material не имеет большого количества параметров, и он очень просто декларируется в файле, экспортируемом в формат .mi. В Autodesk Maya, этот шейдер представлен полностью, и все параметры его реализованы в интерфейсе программы.
Реализация шейдера dgs_material в интерфейсе Attribute Editor.
Шейдер подключается к Shading Group через два атрибута Material Shader и Photon Shader. Это объясняется тем, что шейдер dgs_material может выступать в качестве фотонного шейдера.
Давайте рассмотрим назначение параметров шейдера dgs_material. Я буду указывать название из описания шейдера в формате .mi, а в скобках будет дано название в интерфейсе Maya.
"diffuse" (Diffuse) – добавляется к каждому источнику света, после преумножения с цветом, возвращается свет и вес в расчете на скалярное произведение непрямого освещения и направление света. В Maya задает диффузный цвет поверхности.
Пример изменения параметра Diffuse в шейдере dgs_material.
"glossy" (Glossy) – задает цвет и яркость глянцевых подсветок. Чем ярче цвет, тем будет более выражены глянцевые подсветки.
Пример изменения параметра Glossy в шейдере dgs_material.
"specular" (Specular) – задает цвет зеркальных отражений. Чем ярче цвет, тем будут более выражены зеркальные отражения в материале.
Пример влияния параметра Specular в шейдере dgs_material на итоговое затенение.
"shiny" (Shiny) - определяет ширину изотропных глянцевых отражений, в манере, сходной с показателем отражения Фонга: 5 очень широкие и 100 очень узкие. Если значение Shiny отлично от нуля, следующие пять анизотропных параметров игнорируются.
Пример изменения параметра Shiny в шейдере dgs_material. Значения 1, 35, 85
"shiny_u", "shiny_v" (Shiny U, Shiny V) – используются для анизотропных глянцевых отражений. Указывает ширину глянцевое отражение в первой производной U и V направления. (Производные должны быть включены или указаны на полигонах или в free-form поверхности, если этот шейдер применен к ним. Регулярный параметр shiny должен быть определен или равен 0.
Пример влияния параметров Shiny U и Shine V на блик в шейдере dgs_material.
"transp" (Transp) – указывает степень прозрачности (если IOR = 1) или преломления (если IOR не = 1). Он также косвенно указывает на отражение. Передача зеркальных подсветок такая же, как преломление, а передача глянцевых и диффузных называется прозрачностью.
"ior" (Index of Refraction) – задает индекс преломления (Index of Refraction) материала. Типичные металлы имеют больший индекс преломления, чем стекло.
Пример визуализации прозрачной среды имитируемой шейдером dgs_material.
"lights" – это список источников света позволяющий контролировать взаимосвязи шейдера с источниками света через список источников света.
"mode" – контролирует режим источников света указанных в списке.
Для изотропных отражений, используйте параметр “Shiny” и не задавайте значение параметрам “Shiny U” и “Shiny V”. Если значение “Shiny” равно нулю, шейдер будет обращаться к значениям параметров “Shiny U” и “Shiny V”. Если эти параметры больше нуля, то шейдер будет визуализировать анизотропные отражения. Значение по оси U, используется для направления анизотропных отражений.
Примеры материалов созданных на базе dgs_material.
Как видите, с помощью dgs_material, можно без труда создать практически любую зачищенную металлическую поверхность. Следующий шейдер который мы с вами рассмотрим – шейдер диэлектрических сред – dielectric_material.

Шейдер dielectric_material (Dielectric Material)
Шейдер dielectric_material – физически точный шейдер, предназначенный для создания диэлектрических материалов (диэлектриков), таких как стекло, вода и другие жидкости. Шейдер основан на применении в нем формулы Френеля (Fresnel’s formulas) для диэлектрических сред. Это означает, что свет проходит через поверхность в перпендикулярных направлениях, в то время как большая доля лучей света отражается от поверхности равно углу падения, таким образом, имитируются свойства реальных диэлектрических материалов. Шейдер использует закон Бера для поглощения света, проходящего через среду. Это означает, что свет подчиняется экспоненциальному спаду, как он передается между двумя поверхностями с диэлектрическим материалом.
Шейдер представляет два типа диэлектрических сред: dielectric-air имитирует взаимодействие между диэлектриком и воздухом, например, таких как стекло-воздух, и dielectric-dielectric имитирует взаимодействие между двумя диэлектрических материалов, таких как стекло-вода.
Для достижения физически корректной модели, важно использовать правильно настроенную поверхность. При моделировании стакана коньяка, необходимо создать три различных объекта и назначить соответствующий шейдер для имитации взаимосвязей между стеклом-воздухом, стеклом, коньяком, коньяком и воздухом. Шейдер dielectric_material, использует нормали поверхности для определения типа среды по обе стороны поверхности. Для dielectric-air точки нормалей, обращенную в воздух. Для dielectric-dielectric точки нормалей в диэлектрических материалах, которые находятся «снаружи». Для использования диэлектрического материала нормали модели должны быть правильно ориентированы, если параметр ignore_normals активен. Этот шейдер не может быть использован в качестве шейдера теней.

Описание шейдера в формате .mi:
color "dielectric_material" (
    color           "col",
    scalar          "ior",
    color           "col_out",
    scalar          "ior_out",
    boolean         "ignore_normals"
    scalar          "phong_coef",
    array lights    "lights",
    integer         "mode")

Шейдер dielectric_material не имеет большого количества параметров, и он очень просто декларируется в файле, экспортируемом в формат .mi. В Autodesk Maya, этот шейдер представлен полностью, и все параметры его реализованы в интерфейсе программы.
Реализация шейдера dielectric_material в интерфейсе Attribute Editor.
Шейдер подключается к Shading Group через два атрибута Material Shader и Photon Shader. Это объясняется тем, что шейдер dielectric_material может выступать в качестве фотонного шейдера.
Шейдер dielectric_material, требователен к значениям глубины трассировки луча, указанным в группе Raytracing в диалоговом окне Render Globals (вкладка Quality).
Визуализация шейдера dielectric_material с различными значениями Reflections, Refractions и Max Trace Depth.
Для достижения максимального качества, рекомендуется настроить глубину трассировки луча в глобальных параметрах визуализатора. Обычно используются значения 7, 7, 14; 10, 10, 20 и выше, для параметров Reflections, Refractions и Max Trace Depth соответственно.
Давайте рассмотрим параметры шейдера dielectric_material:
"col" (Col) – задает коэффициент "сохранения", который соответствует доле света, которая остается после прохождения через единицу материала. Таким образом, 0,9 означает, что 10% света поглощается на единицу длины материала. Длина измеряется в мировых координатах.
Пример визуализации шейдера dielectric_material с различными значениями “Col” (Color).
"ior" (Index of Refraction) – задает значение индекса преломления (Index of Refraction) в диэлектрическом материале.
Пример визуализации шейдера с различными значениями index of Refraction (IOR). Обратите внимание на изображения с IOR меньше 1.0 и больше 2.0 (внизу).
"col_out" (Outside Color) – если данному параметру задано значение и он активен, материал представляет собой тип диэлектрик-диэлектрик и параметр col_out указывает сохранение коэффициента для внешнего диэлектрика.
Пример визуализации шейдера с различными значениями “out_col”.
"ior_out" (Outside Index of Refraction) – Используется в сочетании с col_out для описания индекса преломления внешнего диэлектрика.
"ignore_normals" (Ignore Normals) – Этот параметр позволяет вычислить направление нормалей в геометрии. Если модель имеет ошибки в направлении нормалей, этот параметр позволит шейдеру автоматически вычислить правильное направление нормалей.
"phong_coef" (в документации “pcoef”) (Phong Coefficient) – указывает коэффициент по Фонгу, используемый для расчета нормированных подсветок по Фонгу, который используется для создания поддельных (фэйковых) бликов от источников света. Если эта составляющая равна нулю то будет вычисляться физически корректные блики, и только отраженные лучи могут создавать блики, если они попали в зону яркости.
Визуализация шейдера dielectric_material с различными значениями “phong_coef” (Phong Coefficient).
"lights" – это список источников света позволяющий контролировать взаимосвязи шейдера с источниками света через список источников света.
"mode" –  controls which lights to use, see light lists контролирует режим источников света указанных в списке.
Познакомившись с параметрами шейдера dielectric_material, перейдем к примеру создания стакана с жидкостью и особенностям создания сред dielectric-dielectric.

Подготовка и визуализация геометрии для сред dielectric-dielectric и dielectric-air
Для визуализации взаимодействующих между собой диэлектрических сред, необходимо заранее подготовить геометрию. Рассмотрим пример визуализации сцены стакана наполненного жидкостью. Как известно, жидкость также является диэлектриком и для имитации жидкости можно применить шейдер dielectric_material.
Геометрию необходимо разбить на 3 отдельных элемента. Каждый элемент потребует назначения материала с соответствующими свойствами. Первый объект – основная модель стакана, второй – модель жидкости, взаимодействующая со стенками стакана, третий – поверхность жидкости не пресекающаяся со стенками стакана.
Для модели жидкости, пересекающейся со стенкой стакана необходимо инвертировать нормали участка объекта имитирующего жидкость. Обычно для этого можно просто отделить область модели стакана и применить к ней инвертирование нормалей.
Пример модели стакана с жидкостью с демонстрацией направления нормалей для отдельных элементов диэлектрических сред.
После этого, создается объект, имитирующий внешнюю грань жидкости. Его нормали необходимо повернуты к наблюдателю.  Далее идет подготовка шейдеров.
Каждый из шейдеров должен обладать свойствами dielectric-air или dielectric-dielectric. К первому относятся объекты стакана и поверхность воды, ко второму относится внутренняя стенка стакана и воды.
Параметры шейдеров dielectric_material для сред dielectric-air и dielectric-dielectric.
При этом в шейдере типа dielectric-dielectric задаются одинаковые значения для параметров Col и Outside Color. А вот значения Index of Refraction задаются в соответствии с имитируемыми поверхностями. На представленном выше рисунке, показано, что для параметра Index of Refraction задано значение 1.300 (вода), а для Outside Index of Refraction равен 1.500 (стекло).
Примеры визуализации стакана с жидкостью, с различными параметрами шейдеров dielectric_material.
После визуализации, мы получаем корректные преломления и отражения в пресекающихся или примыкающих друг к другу средах. Однако, следует быть внимательным в применении данного шейдера к анимированным поверхностям, имитирующим жидкость. Здесь шейдер dielectric_material может не подойти в своем оригинальном виде, и необходимо использовать другие шейдеры.

На этом, мы заканчиваем знакомство с шейдерами dgs_material и dielectric_material. В следующем посте, мы рассмотрим шейдеры из группы Materials - mib_glossy_reflection и mib_glossy_refraction. Это еще два шейдера, которые могут помочь в создании отражающих и преломляющих сред.

До скорой встречи, ваш dimson3d :).

mental ray 4 maya | Shaders Guide – содержание
- mental ray 4 Maya | Shaders Guide | dgs_material, dielectric_material