пятница, 28 мая 2010 г.

mia_materials - Fundamentals - Part 2


Часть 2. Характеристики материала 
"Модель" шейдера.

The mia_material shading model
Модель шейдера состоит из трех компонентов:
  • Диффузия (Diffuse) – диффузный канал (в том числе и «шероховатость» по Oren Nayar)
  • Отражение (Reflections) – глянцевое анизотропное отражение (и блики)
  • Преломление (Refractions) – глянцевое анизотропное преломление (и translucency-просвечиваемость)
Прямое и отраженное освещения вызывают диффузное рассеяние (diffuse reflections), так же как и эффекты просвечиваемости (translucency effects). Прямые источники света являются причиной возникновения «свечения» или бликов ("highlights" или specular highlights).

РЕКОМЕНДУЮ ТАКЖЕ ПРОЧИТАТЬ ПЕРВУЮ ЧАСТЬ

Основные механизмы взаимодействия света с объектом


Для создания эффектов отражения и преломления в компьютерной графике используется  трассировка лучей, а усложненная методика "importance-driven multi-sampling" используется для создания глянцевого отражения (glossy reflections) и преломления.

Схемы механизмов отражения и рассеяния


Схемы механизмов поглощения и преломления

Скорость визуализации блестящего отражения\преломления (glossy reflections/refractions) может быть значительно увеличена за счет использования интерполяции (упрощения), так же как и за счет "имитации" отражений с помощью Final Gathering.

Сохранение энергии (Conservation of Energy). 
Одной из самых главных характеристик материала является его способность автоматического сохранения энергии. Это означает, что нормированная энергия диффузного рассеяние + отражения + преломления = 1, то есть то, что не создается никакой магической энергии внутри материала. Входящей "свет" (энергия света, освещенность) равномерно распределяется между компонентами диффузного рассеяния, отражения и преломления в соответствии с первым законом термодинамики.
На практике, к примеру, это означает следующее. Когда мы добавляет больше отражения, то энергия, затрачиваемая на этот процесс, должна откуда то взяться, и следовательно, в соответствии с этим, уровень диффузного рассеяния и прозрачности должны быть автоматически уменьшены. Что и происходит в модели шейдера mia_material. Тоже самое и для увеличения прозрачности, она будет увеличиваться за счет уменьшения диффузного уровня рассеяния.
Правила тут таковы:
  • Прозрачность берет энергию от диффузного рассеяния, т.е. при 100% прозрачности не будет никакого диф. рассеяния. 
  • Отражение берет энергию одновременно от диф. рассения и прозрачности, т.е. при 100% отражения, не будет никакого диф.рассеяния и никакой прозрачности.
Слева направо: Отражаемость 0.0, 0.4, 0.8 и 1.0
  • Просвечиваемость (Translucency) есть особый тип прозрачности, и параметр refr_trans_w определяет процент соотношения между transparency vs. translucency.
Слева направо: Прозрачность 0.0, 0.4, 0.8 and 1.0

Это также означает, что уровень яркости (уровень блика - highlights) связан с глянцевостью поверхости (glossiness of a surface). Высокое значение refl_gloss вызывает более "узкую" (ограниченную), но очень интенсивную подсветку (highlights), а низкое значение приводит к более широкой, но менее интенсивной. Это происходит потому что энергия теперь распространена и рассеивается по большему телесному углу.

Зависимость рассеяния от угла обзора (BRDF)
В реальном мире, отражение всегда является зависящим от угла просмотра. Для определения того насколько материал отражает в зависимости от угла используется специальный механизм – BRDF (Bi-directional Reflectance Distribution Function) = Реверсная функция распределения коэффициента отражения.

Отражение от деревянного пола зависит от угла обзора.

Многие материалы имеют такую особенность, к примеру, вода, стекло и другие диэлектрические материалы в которых наблюдается эффекты Френеля (где угловая зависимость ведет себя в строгой зависимости от коэффициента преломления), а также слоистые материалы, такие как лакированная древесина, пластик и тому подобные. Mia_material позволяет реализовать этот эффект за счет переопределения коэффициента преломления, с помощью настроек для двух индексов отражения при: 
  • Нулевом угле обзора (перпендикулярно к поверхности) 
  • 90 градусов обзора. 
Об этих параметрах мы поговорим немного позже.

Характеристика отражения.
Окончательное отражение от поверхности может быть представлено как сумма трех компонент:
  • Эффект диффузного рассеяния
  • Отражение само по себе (от окружающих объектов - The actual reflections)
  • Зеркальная подсветка - блики (Specular highlights) симулирующая отражение от источников света.
Диффузное рассеяние, Отражение (Reflections), Подсветка\Блики (Highlights)

В реальном мире «highlights» это всего лишь блестящее отражение от источников света (блики или glossy reflection). Но в компьютерной графике более эффективно обрабатывать их по отдельности. Однако, чтобы сохранить физическую точность, материал автоматически отделяет (и сохраняет) интенсивность «highlights», глянцевость (glossiness), анизотропию и т.д. (для бликов) и связывает их с интенсивностью, глянцевостью и анизотропией отражения (Reflections), следовательно нет никаких отдельных настроек, оба они (отражение и подсветка) управляются за счет регулирования коэффициента отражения (или его настроек), то есть уменьшая одно, увеличивается другое.

Характеристика прозрачности.
Материал поддерживает полную глянцевую анизотропную прозрачность (full glossy anisotropic transparency), и также включает в себя компоненту просвечиваемости (translucent), о чем более детально будет рассказано вдальнейшем.

Просвечиваемость (Translucency)

Твердое и тонкостенное (Solid vs. Thin-Walled).
С помощью Прозрачности\Просвечиваемости можно создать объекты как твердые, так и  тонкостенный (thin walled).
Если все объекты представляют из себя твердые тела, к примеру оконное стекло, то оно должно быть смоделировано как две поверхности (в смысле оно должно иметь две грани): поверхность входа (an entry surface) – которая преломляет свет в одном направлении, и сразу же за ней поверхность выхода (exit surface) – где свет был бы приломлен назат в первоначальное направление. Это не только дополнительная работа по моделированию, это также трата мощностей компьютера (при визуализации) на дополнительное преломление, что мало влияет на конечную картинку. Но, этот материал позволяет моделировать стекло как ОДНУ единственную поверхность.

Solid vs. Thin-walled transparency and translucency

На картинке выше представлены объекты: кабина вертолета, оконное стекло, просвечивающиеся занавески и правая сфера сделаны с использованием «тонкостенной» (“thin walled” - имеется ввиду, что тут только одна поверхность) прозрачности или просвечиваемости  (для занавески), в то время как стеклянный кубок (goblet), пластиковая лошадь и левая сфера используют настройки «твердотельной» (“solid” - тут две поверхности) прозрачности или просвечиваемости.

Дополнительный параметр - Профиль прозрачности (Cutout Opacity).
Помимо «физической» прозрачности (которая является характеристикой материала) здесь присутствует не физический «профиль прозрачности», канал позволяющий вырезать спроецированную (или наложенную) текстуру (“billboard” – доска объявлений) на наложенном объекте, основываясь на альфа канале, к примеру текстуру дерева наложенного на плоскость.

Вживленная АО (Built-in Ambient Occlusion)
Ambient Occlusion (далее просто как АО) – это метод пришедшим из кино, он позволяет имитировать эффект глобального освещения по средствам самого шейдера, который считает насколько область закрыта (то есть блокирована) от попадания внешнего света. Если использовать АО шейдер отдельно, то он создает черно-белую картинку, на которой «темные» места это то куда свет попасть не может (или попадает меньше), а «светлые» куда может:

Пример применения АО

Как показано на картинке выше, один из основных результатов АО – это темнота в щелях и участках, где свет блокирован другими поверхностями, и "засветка" в местах отсутствия объектов. Один из основных аспектов АО – то, что можно настраивать «расстояние», в пределах которого он ищет преграждающие объекты (occluding geometry).

Эффект AO с меньшим радиусом распространения.

Используя правильный радиус можно создать «локальный» АО эффект, при этом только поверхности находящиеся в этом радиусе будет считаться преграждающими (occluders), радиус так же значительно влияет на время рэндера. На практике, результат АО создает хороший эффект «контрастной тени» и делает маленькие щели видимыми. Есть два способа использования АО в mia_material
  • «Традиционный» АО, для добавления рассеянного света (ambient light), который ослабляет освещение за счет затемнения картой АО и создает дополнительные детали. 
  • Использовать АО для усиления деталей вместе с существующими методами рассеянного освещения (к примеру Final Gathering или photons
Последний метод особенно интересен, когда используется очень «размытые» параметры рассеянное освещение, которые могут привести к потере небольших деталей. (т.е. большой радиус фотонов, или маленькая плотность final gather с большим значение "сглаживания"). Но за счет применения АО эти детали можно вернуть обратно.

Характеристики производительности. 
Наконец, mia_material содержит большой набор функций для наилучшей производительности, содержит, но не ограничивается ими:
  • Улучшенный механизм сэмплинга - Advanced importance sampling with ray rejection thresholds
  • Адаптированный подсчет сэмплов по блеску - Adaptive glossy sample count 
  • Интерполированное блестящее отражение\приломление с подробными деталями - Interpolated glossy reflection/refraction with detail enhancements 
  • Ультра быстрая имитация блестящего отражения - Ultra fast emulated glossy reflections (refl_hl_only mode) 
  • Возможность игнорирования внутреннего отражения для стеклянных объектов - Possibility to ignore internal reflections for glass objects 
  • Возможность выбора между традиционной прозрачной тенью (к примеру от оконного стекла) и преломляющей каустикой (к примеру от твердотельного куска стекла - бутылки)
ПРОДОЛЖЕНИЕ СЛЕДУЕТ ...

РЕКОМЕНДУЮ ТАКЖЕ ПРОЧИТАТЬ ПЕРВУЮ ЧАСТЬ

Комментариев нет:

Отправить комментарий