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

mia_materials - Fundamentals - Part 1

Mental Ray
Архитектурные материлы на основе шейдера mia_material и mia_material_x.



Что такое mia_material?
Mental Ray mia_material – монолитный шейдер-материал (шейдер - программой построения теней), разработанный специально для создания большинства материалов используемых в архитектурном дизайне. Он позволяет создавать практически все твердотельные материалы, такие как метал, дерево и стекло. Разработанный специально для быстрого просчета глянцевого рассеяния и преломления (fast glossy reflections and refractions), заменяет DGS материал, а также для создания высоко качественного стекла (заменяет диэлектрический материал - dielectric material).
Основные особенности:
  • Легок в использовании – имеет весьма «гибкие» и логически упорядоченные настройки.
  • Наличие шаблонов (Templates). 
  • Физически точные параметры (Physically accurate) – материал построенный на основе законов сохранения энергии (также позволяет создать  физически невозможные шейдеры). 
  • Расширенные глянцевые возможности (Glossy performance) – интерполяция, эмуляция глянцевитости, и выбор сэмплинга. 
  • Настраиваемый BRDF (Bidirectional Reflectance Distribution Function) – пользователь может сам определять насколько отражение зависит от угла просмотра. 
  • Имеется два режима прозрачности (Transparency) – «твердотельный» ("Solid") или «тонкий» ("Thin") материалы. Прозрачные объекты, такие как стекло, могут быть просчитаны как «твердотельные» (преломление происходит на нескольких гранях) или «тонкие» (не преломляющие, только одна грань). 
  • Скругленные края (Round corners) – шейдер может симулировать эффект «гладких краев» ("fillets") , для более реалистично отражения света. 
  • Управление рассеянным освещением (Indirect Illumination control) – для каждого отдельного материала можно устанавливать точность final gather или уровень «непрямого» (рассеянного) освещения (indirect illumination level). 
  • Рассеяние по Орэн-Наеру (Oren-Nayar diffuse) – позволяет создавать порошкообразые поверхности, такие как глина (Сlay). 
  • Встроенный механизм Ambient Occlusion – для контактных теней и подчеркивания маленьких деталей. 
  • Все в одном (All-in-one shader) – объединенные фотонный и теневой шейдер, позволяют быстро создавать и настраивать материалы для любых архитектурных целей.
Расширения для Mental Ray 3.6 и mia_material_x. 
Интерфейс mia_material_x отличается mia_material, но функциональность и код те же, за исключение некоторых дополнительных особенностей:
  • … параметр для карты неровностей (bump mapping
  • … поддержка нескольких режимов АО (в том числе АО со смешиванием цветов - «ambient occlusion with color bleed») 
  • … возможность послойной раскладки изображения (отдельно отражение, рассеяние, преломление и т.д., то есть в Render Passes)

ЧАСТЬ 1. БАЗОВЫЕ ОСНОВЫ.

Физика и Дисплей Компьютера. 
Прежде всего mia_material является физически точным материалом, следовательно результат его просчета (конечная картинка) имеет расширенный динамический диапазон (HDR - high dynamic range). И то как происходит наложение цветов при визуализации, какой алгоритм просчета используется для последующего отображения на экране (до сэмплинга, внутри самого шейдера), влияет насколько визуально приятно выглядит, тот или иной материал.

При работе с mia_material необходимо делать tone mapper/exposure control или по крайней мере использовать gamma correction, поскольку считается 32-битный цветовой диапазон (цветовое значение в диапазоне от нуля до 2 в степени 32 для каждого пикселя), или правильнее говоря, цветовой диапазон может быть больше чем значения отображаемое на экране (и воспринимаемого глазом человека).

Заметка о Гамме. 
Цветовое пространство стандартного экрана компьютера НЕ ЛИНЕЙНО. Цвет RGB = {200 200 200} не является в два раза более ярким по сравнению с значением RGB = {100 100 100}, как можно было бы ожидать. Это не какой то «баг», это сделано потому, что наши глаза также воспринимают свет в не линейной форме, это нужно чтобы была синхронизация отображения (!) для правильного восприятия цвета глазом. Можно считать цветовое пространство нормального монитора "грубо" равномерным. Это особенность является основной причиной использования 24 битной системы цветов (по 8 бит – 0-255 дискретных уровня – для каждого из каналов красного, зеленого и синего), которая наиболее точно воспринимается нашими глазами. 

Проблема заключается в физически точной компьютерной операции (формуле) над истинным цветовым диапазоном (на картинке ниже это весь овал - видимый диапазон), в котором значению цвета соответствует фактическая энергия света (длина волны в нанометрах). Не правильно просто отображать результат рэндера в диапазон 0-256 для каждой компоненты RGB (или sRGB - standard RGB), так как не весь диапазон может содержать информацию о цвете того или иного объекта (для одной из компонент RGB). В результате, чтобы отобразить маленькие детали объекта на дисплее, насыщенность цвета этого объекта может быть весьма велика по сравнению с другими участками картинки, т.е. он будет засвечен. Происходит как бы сжатие одного, более широкого диапазона, в другой узкий диапазон.


Цветовой диапазон sRGB внутри всего цветового спектра. D65 - белая точка. 
Боковая контовка в нанометрах.
x = X/(X + Y + Z),
y = Y/(X + Y + Z).
x,y - хроматические координаты
Кривые X, Y и Z в модели CIE XYZ 1931 и 1964 были выбраны таким образом, чтобы площади поверхности под каждой кривой были равны между собой. (Wiki)

Решение проблемы переноса (урезания) цветового диапазона состоит в том, чтобы вывести только определенную часть всего диапазона. Один из таких методов называется – коррекция гаммы (gamma correction). Большинство мониторов имеют коэффициент контрастности 2.2 (также известный как цветовой диапазон “sRGB” - это стандарт для Windows машин), но большинство стандартного софта использует настройки гаммы 1.0, что делает все отображение  слишком темным (особенно средние тона), и «освещение» (свет) будет «накладываться» не корректно. Гамма-индекс 2.2 является теоретически «точным» значением, которое корректирует физически линейное освещения делая его правильно отображаемым на экране, также линейным образом. Однако, так как реакция фотопленки, в фотоаппаратах, также не линейна, пользователи нашли это «теоретически корректное» значение слишком «ярким». Общий компромисс был найден для значения гамма-индекса равного 1.8 (это стандарт для Mac машин), что позволяет получить более «фотографический» вид, как будто картинка была снята на фотопленку и затем проявлена.

Gamma correction for CRT

Тоновое Отображение\Наложение (Tone Mapping). 
Для получения визуально приятного значения пикселей известен еще одни метод отображения физической энергии внутри рэндера, он известен как тоновое наложение - процесс наложения одного цветового набора на другой, обычно используется в HDRi для аппроксимации широкого цветового диапазона на более узкий
Сделать его можно нескольким способами, но необходим рэндер картинки в формат с плавающей точкой (floating point file format) и:
  • использование внешних программ для коррекции (Photoshop 32bit, Nuke - Grade Node)
  • используя некоторые плагины для рэндера, работающие в процессе визуализации. 
В библиотеке mental ray имеются два tone mapping шейдера это простейший mia_exposure_simple и более продвинутый mia_exposure_photographic, о них мы поговорим в разделе «Тоновой Коррекции».

Использование Final Gathering (FG) и Global Illumination (GI) вместе с mia_material_x
Материал mia_material_x специально разработан для использования в реалистично-освещенной окружающей среде, то есть использующей прямое и отраженное освещение. В mental ray присутствуют два базовых метода для генерации отраженного (ну или рассеянного) освещения: Final Gathering и Global Illumination. Для получения лучшего результата рэндера необходимо использовать один из этих методов. По крайней мере хотя бы Final Gathering должен быть включен (в 3Ds Max MentalRay он включен стандартно). Чтобы получить качественный результат можно использовать Final Gathering вместе с Global Illumination, но при этом рэндер будет дольше.

Если для симуляции отражения вы используете "среду" (environment), убедитесь в том, что тот же самый environment (или его смазанная копия) используется для освещения сцены с включенным Final Gathering.

Физически точные источники света. 
В компьютерной графике стандартные источники света больше "направлены" на создание освещения для мультфильмов, где интенсивность света не меняется в зависимости от расстояния. В реальном мире это упрощение не подходит. Свет (освещенность) начинает затухать при удалении от источника, это происходит в следствии того, что лучи света расходятся от источника и «плотность» лучей изменяется с расстоянием. Затухание света от точечного источника обратно пропорционально квадрату расстояния от источника. Одной из причин такого традиционного упрощения, является то, что раньше в компьютерной графике tone mapping не использовался и проблема цветовой «пересветки» была не решаемой. Однако, если в качестве рассеянного освещения используется только Final Gathering, то можно работать и в этом упрощении (интенсивность света не меняется с расстоянием). Обычные источники света, без затухания, при включенном FG дают хорошую картинку при рэндеринге, потому, что FG обеспечивает распространение света (передачу освещенности) от одной поверхности к другой, т.е. обеспечивает смешивание (погашение или подсветку) освещенности, и не передает  интенсивность от источника света к поверхности (т.е. не усиливает и не пересвечивает пиксель) . Проблема с засвеченностью возникает когда используется GI. При включенном механизме Global Illumination, источник света испускает фотоны. При этом только mia_material (или любые другие mental ray материалы) работают правильно. Поскольку фотоны имеют затухающую энергию, следовательно при использовании GI необходимо:
  • Источник света должен испускать фотоны с правильной энергией
  • Направленный источник света должен затухать в соответствии с физическим законами, соответствующими затуханию фотонов. 
Поэтому, важно чтобы шейдер света и шейдер испускания фотонов работали вместе, в одной шейдер группе.

ПРОДОЛЖЕНИЕ ВО ВТОРОЙ ЧАСТИ

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

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