Чт, 16-Мая-2024, 15:39
Приветствую Вас Гость | RSS
Меню сайта
Категории каталога
Видео Уроки [5]
Уроки 3ds max [32]
Книги [1]
Уроки Photoshop [22]
Уроки zBrush [11]
Уроки RealFlow [3]
Уроки Maya [6]
Главная » Статьи » Уроки Maya

Создание размытого отражения

Создание размытого отражения. Выполнение урока предполагает, что Вы используете Mental Ray для Maya версии 1.5.1 или выше.

Отражение в 3D изображениях обычно выглядит чистым, с резкими границами и… совершенно нереалистичным для значительной части поверхностей. К счастью, на сегодняшний день существуют программы рендеринга, позволяющие получать размытые, нечеткие отражения, что, безусловно, внесет в результат долю реализма. Например, в Maya интегрирован рендерер mental ray, с помощью которого можно легко получить реалистичные отражения, не прибегая к помощи плугинов.

Как выглядит размытое отражение?

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

Слева Вы видите отражение стула в деревянном полу, которое размыто довольно сильно. Деревянная поверхность слева также дает очень размытое изображение. На фотографии справа изображена старая кастрюля, отражение в которой тоже весьма размыто, причем здесь есть одна особенность. Размытие по вертикали сильнее, чем по горизонтали. Такой эффект также легко получить с помощью mental ray.

Почему отражение бывает размыто?

Отражение может быть размыто в силу микроскопических неровностей отражающей поверхности. Зеркало – это очень гладкая поверхность, поэтому оно и дает такое четкое отражение. Деревянный пол на фотографии слева хотя и полирован, но имеет микроцарапины. Эти неровности и отражают свет в разных направлениях, создавая эффект размытости.
Может возникнуть вопрос. Поскольку размытость порождается неровностями, то нельзя ли получить нужный эффект наложив на отражающую поверхность карту микрорельефа? Ответ положительный. Рассмотрим пример:

На картинке слева Вы видите идеально ровную отражающую поверхность, в то время как справа на канал микрорельефа (bump) поверхности наложена процедурная карта фрактального шума. Чтобы добиться нужной частоты шума, карта повторяется 100 раз. Как видите, отражение действительно становится размытым, но при этом выплывают другие проблемы. Во-первых, пол не выглядит гладким. Вы можете попытаться увеличить антиалиасинг, но это никак не поправит дело. Вторая проблема известна как муар. Обратите внимание на правый нижний угол картинки, расположенной справа. Там явно проступает волнообразный узор, который и называется муаром. И это он еще только слегка проступает. При анимации он будет явственно двигаться, и избавиться от него не будет никакой возможности. Увеличение антиалиасинга опять-таки может помочь, но не всегда. Итак, после этого может кто-то и захочет добиваться размытого отражения с помощью микрорельефа, но не я. К счастью у нас есть mental ray, который позволяет управлять степенью размытости отражения без всей этой суеты с текстурами.

Шейдеры mental ray

Возможно, некоторые читатели никогда не использовали шейдеры mental ray в своих сценах, поэтому я дам их краткий обзор. Будем исходить из того, что закладка mental ray у Вас загружена и выглядит примерно так:

Вы можете увидеть ее, нажав кнопку текстурирования рядом со свойством цвета материала, либо непосредственно из меню окна Hypershade. Шейдеры сгруппированы по своему назначению и называются так, чтобы по названию можно был понять их свойства. Большинство имен носит технический характер, и, если Вы не очень свободно чувствуете себя в областях оптики, рендеринга и шейдинга, то можете и не понять, какой шейдер Вам нужен именно в этом случае. Чтобы придать Вам верное направление, я вкратце опишу шейдеры материала:
Dgs_material: Этот материал используется в данном уроке и на нем я остановлюсь подробно чуть дальше.
Dielectric_material: Этот материал отлично подходит для имитации стекла и воды. Он реализует отражение по Френелю (Fresnel) (отражение сильнее всего там, где нормаль поверхности перпендикулярна линии камеры) и закон поглощения Бирса (Beers) (свет поглощается экспоненциально при прохождении через материал). Да и еще. Dielectric означает “не проводящий электричества”.
Path_material: Этот материал рассчитывает глобальное освещение (Global Illumination), используя только этот шейдер. Вам не нужно включать GI в окне Render Globals и не надо использовать фотоны. Просто назначьте этот материал Вашему объекту и он начнет отбрасывать свой цвет на окружающие объекты и т.д. ОДНАКО, поскольку этот шейдер использует “метод грубой силы”, а не карту фотонов, на его расчет уходит достаточно много времени. Кроме того, для него требуется высокое значение сэмплинга (примерно 4, 4), что еще более замедлит рендеринг. Впрочем GI будет рассчитываться очень аккуратно.
Transmat: Этот материал делает объект невидимым.
Mib_Illum_blinn: Аналог стандартного материала Blinn.
Mib_Illum_hair: О нем я ничего не знаю. Возможно он используется для специальной геометрии волос mental ray, которую Maya пока не поддерживает.
Mib_Illum_phong: Аналог стандартного материала Phong.
Mib_Illum_ward: Может создавать анизотропные (разные по разным направлениям) и размытые отражения подобно DGS шейдеру, только для него нужно вручную указывать направление размытия. Кроме того имеет возможность управления подсветкой (ambience).
Mib_Illum_ward_deriv: Этот шейдер проще предыдущего. Он базируется на шейдере DGS с добавлением управления подсветкой (ambience).
Mib_Illum_cooktorr: Подобен шейдеру Blinn но цвет его блика может изменять цвет в зависимости от угла.
Mib_Illum_lambert: Аналог материала Lambert.
Вот основной список Material шейдеров mental ray. Необходимо помнить при этом, что в отличие от шейдеров Maya, шейдеры mental ray делают нечто большее, чем простая закраска объекта. В mental ray шейдеры могут добавлять различные линзы к Вашей камере (например, “рыбий глаз” или “панорама”), изменять работу освещения, управлять GI и еще много разных вещей. В следующем разделе урока я покажу, как применять шейдеры Material, подробнее остановлюсь на шейдере DGS и расскажу, как создавать размытые отражения.

Материал DGS

Прежде всего, что обозначает аббревиатура DGS? Она расшифровывается как Diffuse, Glossy, Specular (рассеянное, глянцевое и зеркальное отражение). Это и есть три основных атрибута, которые использует шейдер. Diffuse это собственно цвет объекта – атрибут, который обязательно присутствует в любой 3D программе. Specular – это то, что обычно и называется отражением. Он не имитирует блик, подобно аналогичному атрибуту шейдеров Maya. Glossy – также отражение, но в отличие от предыдущего этот атрибут может создавать размытое отражение, а это именно то, что нам и нужно! DGS шейдер тем и хорош, что малым количеством настроек позволяет добиться реалистичной поверхности. Давайте применим DGS шейдер и посмотрим, как он работает.
Возьмем для примера самую простую сцену. В ней имеется один источник освещения (spot light), одна NURBS сфера и одна NURBS плоскость. Поверхности пола назначьте шейдер Blinn с настройками по умолчанию, а сфере – материал Lambert, установив его цвет ярко-красным:

Пришло время добавить отражение шара в поверхности пола! Первое, что для этого нужно сделать, это назначить объекту стандартный шейдер Maya. Практически не имеет значения, какой именно шейдер использовать, обычно я назначаю Lambert. Необходимость этого шага состоит в том, что нам нужен узел SG (Shading Group (группа шейдинга)) который предоставляет атрибуты для соединения с mental ray, как Вы позже увидите. Вот что надо сделать:

  1. Выделите плоскость, изображающую пол, откройте окно Attribute Editor и настройте атрибуты материала Blinn как показано на картинке.
  2. Нажмите кнопку “Go to output connections” (Переход по исходящим связям), чтобы перейти к узлу группы шейдинга Blinn.
  3. Откройте секцию “mental ray”.
По шагам это выглядит так:






Отлично, теперь мы находимся в нужном месте, чтобы применить шейдер mental ray. Рассмотрим картинку чуть поближе:

Как видите, в секции “mental ray” присутствует довольно много атрибутов, каждый для своей категории шейдера. В этом уроке мы, главным образом, будем применять атрибут Material Shader. Нажмите кнопку текстурирования рядом с полем 'Material Shader' и из появившегося окна выберите Dgs_material. Теперь окно Attribute Editor выглядит так:

Рассмотрим появившиеся атрибуты
Diffuse: данный атрибут аналогичен соответствующему атрибуту стандартных шейдеров.
Glossy: Выберите цвет, чтобы определить насколько ярким будет размытое отражение. Если выбранный цвет не будет оттенком серого, отражение будет окрашиваться в этот цвет.
Specular: То же что и для Glossy, но для четкого отражения.
Shiny: Этот атрибут управляет нечеткостью нечеткого отражения (если Вы установили Glossy не в черный цвет). Значение 1 дает очень сильную размытость, значение 1000 – практически четкое отражение (в этом случае лучше использовать значение Specular).
Shiny_u: Помните фотографию кастрюли, где отражение сильнее размыто по одному направлению. Используйте это значение, чтобы размыть отражение по направлению U.
Shiny_v: Размывает отражение по направлению V.
Transp: Этот атрибут управляет прозрачностью объекта. Допустимый диапазон от 0 (невидимый) до 1 (полностью непрозрачный).
Ior: Коэффициент преломления (Index Of Refraction) объекта, если он хоть немного прозрачен. Если Вам нужен коэффициент преломления какого-нибудь вещества, посетите этот сайт (Вам потребуется Acrobat Reader). Например, стекло имеет коэффициент преломления примерно 1.55.
А теперь несколько советов:

  1. Если Вы хотите использовать атрибуты Shiny_u и Shiny_v, то значение Shiny должно быть равно 0.
  2. Вы можете накладывать текстуру на любой атрибут.
  3. Чтобы свойства Вашего материала были физически корректны, общая сумма значений Diffuse, Glossy, Specular и Transp должна быть равна 1 или меньше! Каждый из этих атрибутов означает количество света, отражаемого от поверхности соответствующим способом Diffuse, Glossy or Specular way. Если Вы используете Transparency, необходимо учитывать и количество света, которое проходит сквозь объект. Например, если общее количество света, попадающего на Вашу поверхность равно 100%, а сумма значений Diffuse, Glossy, Specular и Transp равна 1.75, то объект излучает на 75% процентов больше света, чем попало на него. В этом случае поверхность будет выглядеть совсем не натурально.
  4. Текстура микрорельефа теперь Вам не нужна!
  5. Использование Shiny_u and Shiny_v для создания анизотропного отражения, дает предсказуемый результат только на NURBS объектах.
Теперь применим Dgs_material к плоскости, имитирующей полы, используя следующие значения:

Значение Diffuse установим в серый цвет со значением 0.5, а Glossy зададим равным 0.4. В сумме получится 0.9, что значит, что 90% света, падающего на объект, отражается, а 10% поглощается. Обычно в первом приближении я устанавливаю значение Shiny равным 20, что дает приемлемое размытие. Теперь рендеринг. Сначала откройте окно Render Globals и измените настройку качества mental ray на Production, что обеспечит Вам трассировку лучей и приемлемый антиалиасинг:

Вот что получилось в результате рендеринга! Как видите не совсем то...:

Отражение налицо, но совсем не видно пола. Почему? Потому что некоторые элементы шейдеров mental ray не полностью интегрированы в Maya. В связи с этим потребуется небольшая ручная работа. Проблема заключается в том, что шейдеры (будь то шейдеры mental ray или стандартные Maya) нуждаются в списке осветителей сцены, чтобы получать информацию об освещении. Maya 5.01 не присоединяет осветители к шейдерам mental ray автоматически, и Вам придется делать это руками. Вообще-то это не трудно, но если сцена содержит 10 источников света и 10 DGS шейдеров, то выполнение 100 ручных соединений может и утомить. Пока у нас один шейдер и один осветитель, обойдемся ручным методом, а позже я покажу Вам, как это сделать быстрее.

  1. Откройте окно Connection Editor (меню Window, пункт General Editors, и затем Connection Editor):


    Если Вы имеете определенный опыт работы с Maya, то должны знать, что Connection Editor (Редактор соединений) - это одно из средств, позволяющее связывать один атрибут с другим (для этого же используются окна Hypergraph или Hypershade). Выходные атрибуты первого узла перечислены в левой колонке, входные атрибуты другого – в правой.
  2. Выделите осветитель, который хотите связать с шейдером и нажмите клавишу со стрелкой вниз, чтобы выделенным оказался нижний узел группы (у меня он назывался spotLightShape1).
  3. В окне Connection Editor, нажмите кнопку Reload Left. Список всех выходных атрибутов осветителя появится в левой колонке. Чтобы убедиться, что там выведены действительно все атрибуты, откройте меню Left Display окна Connection Editor и проверьте, что пункты Show Readable, Show Non-Keyable и Show Hidden отмечены галочкой. Если это не так, сделайте это. То же сделайте в меню Right Display, но вместо Show Readable отметьте Show Inputs Only.
    Теперь все в порядке, если только Вы не забыли нажать клавишу со стрелкой вниз, выбрав осветитель в видовом окне. В этом случае Вы, вместо узла Shape Node осветителя, загрузили атрибуты узла Transform Node. Все, что содержится в Transform Node – это расположение осветителя в пространстве, его ориентация, масштаб и другие параметры, которые нам не нужны. Все, что нам нужно в данный момент, содержится в узле Shape Node, поэтому в левую колонку нужно загрузить именно его:


    Если с этим покончено, нужно выделить узел DGS Material и загрузить его в правую колонку.
  4. Откройте окно Hypershade (меню Window, пункт Rendering Editors и далее Hypershade)
  5. В числе материалов сцены Вы увидите узел DGS. Если Вы, подобно мне, оставляете узлам имена, данные программой по умолчанию, то он называется 'dgs_material1'. Нажмите на нем левую кнопку мыши


  6. Теперь нажмите кнопку 'Reload Right' в окне Connection Editor. В правой колонке появится список атрибутов DGS.


    Чтобы установить связь, надо выделить выходной атрибут в левой колонке, а затем входной атрибут в правой.
  7. В колонке слева выделите атрибут 'Message', в правой колонке атрибут 'Lights'.
    Атрибут Message находится почти во всех узлах Maya. Он используется для соединения одного узла с другим без передачи информации между этими узлами. В данном случае атрибут Message сообщает списку осветителей шейдера mental ray (через атрибут Lights) "Привет, я - осветитель, и я существую". После создания связи окно Connection Editor должно выглядеть так:


Обратите внимание, что атрибут Lights стал называться Lights[0]. Это произошло потому, что список осветителей может иметь не только один пункт, причем нумерация элементов списка начинается с нуля. Если Вы присоедините к списку еще один осветитель, то соответствующий атрибут будет называться Lights[1].
Теперь DGS Material знает, что осветитель существует, и результат рендеринга будет другим:

орошо, но плоскость пола теперь слишком темная. Эта проблема порождена тем, что шейдеры mental ray используют более яркие осветители, нежели Maya. Если Вы увеличите интенсивность осветителя до значения 3, то получите такую картину:

Теперь полы выглядят лучше. Можно даже разглядеть размытое изображение! Я слегка изменил положение осветителя, чтобы его было лучше видно. Однако появилась новая проблема. Настроив осветитель под освещение пола, мы сделали освещение сферы слишком ярким. Чтобы устранить это затруднение, есть три пути:

  1. Сделать шейдер Lambert более темным.
  2. Применить к сфере материал DGS.
  3. Или создать второй осветитель специально для сферы.
В данном случае я решил пойти по второму пути. В конце концов, этот урок посвящен именно материалу DGS! Поскольку мы уже подробно разобрали, как DGS материал применяется к объекту, а свет связывается с шейдером, для сферы я не буду приводить подробностей этого процесса. После того, как DGS материал применен к сфере, изменим цвет среды, чтобы обеспечить более ровное освещение:

Теперь оба шейдера имеют одинаковую яркость. Я не задавал на сфере отражения, только красный цвет Diffuse. Вы можете видеть, что отражение в полу стало более четким после перемещения осветителя. Теперь займемся качеством размытого изображения. На последнем рендеринге оно достаточно размытое, но качество оставляет желать лучшего. Все же сделаем его более размытым, установив атрибут Shiny материала равным 3. Отражение будет слишком зернистым:

Я также сделал конус света намного больше, так как световое пятно вокруг шара раздражало меня. Чтобы убрать зернистость изображения, повысим значение Sampling Quality в настройках рендерера mental ray. Это другая сторона текущей версии mental ray для Maya. Если Вы хотите, чтобы отражение выглядело хорошо, нужно настроить антиалиасинг для всей сцены, а не только для одного шейдера. Разумеется, это существенно увеличит время рендеринга.
Откройте окно Render Globals и перейдите в секцию Sampling Quality:

Примечание переводчика: в Maya 7.0 такой секции нет. Искомые параметры находятся в секции Anti-Aliasing Quality
Сейчас нас интересуют параметры Min Samples и Max Samples.
Min Samples: Это значение представляет собой минимальное число разбиений, которые mental ray делает для каждого пикселя итоговой картинки. После установки опции Quality Presets в значение Production, значение Min Samples становится равным нулю, что значит, что каждый пиксель разбивается один раз (не ноль раз).
Max Samples: Это значение представляет собой максимальное число разбиений, которые mental ray делает для каждого пикселя итоговой картинки в тех областях где минимального значения недостаточно. Для качества Production значение по умолчанию равно двум, и этого обычно хватает, но для качественного размытого отражения этого мало.
После нескольких попыток я нашел, что для данного случая подходят значения 3 и 4. Время рендеринга при этом увеличилось вдвое. Вот что получилось в результате:

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

  1. Выполнить рендеринг всей сцены, со значением сэмплинга, обеспечивающим желаемое качество изображения (кроме отражений).
  2. Обвести прямоугольником область полученного изображения, в котором содержится отражение.
  3. Увеличить настройки сэмплинга в окне Render Globals.
  4. Выполнить рендеринг выделенной области.
Выделенная область обновится. Таким образом, мы быстро нарисуем всю картинку, а медленно только небольшую ее часть. Я часто использую этот прием и сэкономил немало времени. Вот иллюстрации к предложенному алгоритму:





Итак мы обсудили основы шейдеров mental ray, создание размытого изображения, применение материала DGS и связывание его с осветителем. Теперь слегка коснемся проблемы нескольких осветителей и фотонного шейдера.
Но сначала рассмотрим вопрос создания альфа-канала при работе с шейдерами mental ray. По умолчанию текущая реализация mental ray в Maya не создает альфа канала для объектов со своими шейдерами. Чтобы исправить это, сделайте следующее:

  1. Откройте окно Render Globals.
  2. Перейдите в секцию Custom Entities.
  3. Установите флажок Pass Surface Color Alpha Channel.
А вот иллюстрация к рекомендуемым действиям:

Теперь займемся проблемой множества осветителей. Чтобы нам было на чем потренироваться, добавим к сцене второй осветитель, тем более что первый мы связали с шейдером вручную. Для соединения второго осветителя с материалом DGS воспользуемся MEL (не беспокойтесь, всего одна строка). Вот как я добавил новый точечный (point) осветитель к сцене:

Если я выполню рендеринг сейчас, то новый осветитель ничего не изменит, поскольку ко всем объектам сцены применен шейдер mental ray. Для исправления ситуации используем команду MEL:

connectAttr pointLightShape1.message dgs_material1.lights[1];
Для достижения окончательной ясности рассмотрим ее по частям:
connectAttr – команда MEL которая соединяет один атрибут с другим.
pointLightShape1.message – я добавил к сцене новый точечный осветитель и не переименовывал его, поэтому он и называется pointLightShape1. Часть ".message" означает, что при соединении будет использоваться атрибут 'message'.
dgs_material1.lights[1] - "dgs_material1" - это шейдер mental ray, который я применил к плоскости, имитирующей пол. ".lights" входной атрибут, который надо связать с упоминаемым выше атрибутом 'message'. "[1]" – это второй пункт списка осветителей, о котором мы говорили ранее. Если помните, мы с помощью окна Connection Editor соединяли атрибут 'message' с первым элементом этого списка и он назывался [0].
Знак ";" служит для завершения строки, содержащей команду MEL.
В переводе с MEL на русский это звучит как: "Соединить атрибут message узла pointLightShape1 со вторым элементом списка осветителей материала dgs_material1". Возможно вы спросите меня, что нужно делать с этой командой? Ответ простой: ее нужно ввести в строке Command Line и нажать клавишу Enter:

Теперь, как Вы можете видеть, новый осветитель освещает пол:

Заставим его работать и со сферой. Для этого повторим то же самое выражение MEL, но заменим материал "dgs_material1" на "dgs_material2". Получится:

connectAttr pointLightShape1.message dgs_material2.lights[1];
И вот результат:

Второй осветитель не очень сильно освещает сферу, но мы знаем, что он это делает. Тех, кто свободно владеет MEL, не затруднит написать утилиту для соединения шейдеров и осветителей. Тех, кто не очень знаком с MEL, спешу порадовать. Такая утилита уже написана и доступна на сайте www.highend3d.com
Ну, вот и конец урока! И напоследок еще одно замечание. Если Вы хотите использовать DGS материалы с глобальным освещением или каустикой, Вам ОБЯЗАТЕЛЬНО нужно соединить шейдер Dgs_material_photon с атрибутом Photon Shader стандартного шейдера Maya. Это делается точно так же, как и соединение шейдера Dgs_material с атрибутом Material Shader. Хорошая новость заключается в том, что Photon Shader работает только с фотонами, а не с осветителями, поэтому осветители привязывать к нему не нужно. Photon Shader нужно добавлять потому, что mental ray получает информацию о фотонах от стандартных шейдеров Maya, но при использовании материала DGS эта информация блокируется.
Вот и все, что я хотел сказать о размытом отражении. Надеюсь, что этот урок поможет Вам при создании собственных сцен!





Источник: http://www.3dcenter.ru
Категория: Уроки Maya | Добавил: 3dlife (01-Ноября-2008)
Просмотров: 3630 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 1
1 gelietequelex  
0
[color=color_url - Добрый день уважаемые люди. Нашел наш отличный сат http://3dlife.ucoz.ru и подумал что здесь мне подскажут.
Попрошу всех желающих присоедениться.
Увидев эту категорию этот надеюсь правлильную, если не ту прошу Администраторов перенести ее в раздел которая более подходящая.
Я сильно люблю фильмы. У кого скоросной инет могут себе позволить http://kinozal.in - скачать бесплатно фильмы кино[color=color_url - .
Или просто смотреть онлайн.
Ка на меня я болше люблю с женой смотреть http://kinozal.in/erotika - erotik filmler[color=color_url - . Вообщем кому что лучще. Но проблемма в том что у меня слабый интернет.

Так вот пожалуйста помогите мне найти сайты где возможно смотреть фильмы или скачать даже с медленным инетом.
Ссылки пожалуйста присылайте в личное сообщения, на почту unsomimmusemm@gmail.com или icq 9448995

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0