Наука создания фотореалистичного 3D. Часть 2

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

Разрешение на публикацию нижеприведенного материала на ВсехСоветах любезно предоставлено администрацией сайта Компьютерная графика. За кулисами.

Продолжение. Начало смотрите тут.

Теперь о видах отражений.

В зависимости от качества поверхности, отражения делят на:

  • Зеркальные отражения (Specular reflections)
    характерны для отполированных, очень гладких поверхностей. Это – поверхностный эффект. Specular это корень греческого слова "зеркало".
  • Диффузные (рассеянные, размытые) отражения (Diffuse reflections) характерны для шершавых поверхностей. Это – подповерхностный эффект.
  • Глянцевые отражения (Glossy reflections) - это что-то среднее между зеркальными и диффузными отражениями.

Зеркальные, диффузные, глянцевые отражения

Есть определенные зеркальные отражения, которые характерны только для металлов – окрашенные отражения.

Проводники (металлы) не имеют подповерхностных отражений, только зеркальные отражения.

Разница в отражениях проводников и диэлектриков

Диффузные отражения характерны для диэлектриков, именно поэтому их
поверхность имеет цвет.

Как отражается свет

Не существует поверхностей, которые полностью поглощают (абсолютно черных), полностью отражают, или полностью пропускают свет. Любая поверхность одновременно отражает, пропускает и поглощает в какой-то мере.



1. Отражения.

Отражение – это случай, когда фотоны отскакивают от поверхности. И это не благодаря микроструктуре поверхности, это благодаря ее атомному строению.

Диэлектрики всегда отражают точно такой по цвету свет, как и тот, что на них светит. Т.е. их отражения всегда "белые", бесцветные, чистые.

Проводники же окрашивают свои отражения.

Но есть редкие исключения, к примеру, атлас.

Тот цвет, в который окрашивают проводники свои отражения, зависит как от типа проводника, так и от угла под которым свет отражается от поверхности. К примеру, свет, падающий на золотую поверхность под большИм углом (скользя по поверхности), окрашивается в желтый не так сильно, как свет, падающий на золотую поверхность перпендикулярно (в лоб).

Зеркальные отражения могут быть:

  • Изотропными (isotropic).
  • Анизотропными (anisotropic).

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

Отличие изотропных или анизотропных отражений

Основной вклад в цвет отраженного света (в диффузную часть) вносят подповерхностные эффекты. А поверхностные эффекты зависят от степени шероховатости поверхности: начиная зеркальными и заканчивая диффузными (Lambert - Ламберт) отражениями.



BRDF

Bidirectional reflectance distribution function (BRDF) - двунаправленная функция распределения отражений (поверхностных отражений) описывает, как свет отражается или поглощается поверхностью в зависимости от разных углов падения.

Существует три вида BRDF:

  • Упрощенная BRDF (без учета трассировки лучей (raytracing – построение хода луча)).
  • Гибридная BRDF (упрощенная + raytracing).
  • Измеренная BRDF (комплексная, основанная на реальных измерениях).

На момент написания статьи, наиболее популярной была гибридная BRDF, а измеренная BRDF еще не была доступна (простому пользователю). И, несмотря на то, что разработчики рендерера VRay уже создали рабочий прототип измеренной BRDF, но библиотек измеренных данных пока не существует.

Гибридная BRDF обеспечивает более реалистичный результат, чем упрощенная, ну а измеренная BRDF дает еще более реалистичную картинку.

Это видео 2007-го года:

На данный момент похожие технологии нашли применение почти во всех современных фильмах со спецэффектами: последние части Спайдермена, Кинг Конг, Супермен возвращается, Хэнкок, Загадочная история Бенджамина Баттона и, конечно же, Аватар. Во всех этих фильмах использовались разные версии оборудования и программного обеспечения Light Stage.

Упрощенная BRDF.

Упрощенная BRDF основана на цвете (diffuse) и отражениях.

На ранних стадиях развития КГ трассировки лучей еще не было, а соответственно и не было возможности настройки трассируемых отражений. Вот так возникла идея создания зеркальных световых бликов - фальшивых бликов. Сейчас все больше и больше людей стремятся использовать трассируемые отражения вместо фальшивых CG-бликов, которые понемногу устаревают.

Эта ситуация отлично отражена в 3D-редакторах: каждый современный рендерер обычно комплектуется объемным источником света (area light), который имеет реальное свое отражение (поскольку рендерер действительно может визуализировать трассируемое отражение) и при этом старые источники света не имеют реальных отражений, а только фальшивый зеркальный блик. Но, тем не менее, фальшивые блики все еще полезны.

Трассируемое и фальшивое CG отражение

Lambert и Oren-Nayar (Орен-Найар) – это наиболее распространенные упрощенные модели BRDF для цвета (diffuse).

Ламберт (просто цвет).

Тип отражение Lambert

Ламберт – по-простонародному это обычный диффузный (рассеянный) цвет, а если по-научному – подповерхностное рассеивание. Другие модели работают в основном с фальшивыми зеркальными бликами (Blinn (Блин), Phong (Фонг)), которые обычно додаются поверх Ламберта.

BRDF по Ламберту симулирует подповерхностное рассеивание таким образом: свет входит в материал равномерно рассеивается и выходя наружу попадает в объектив камеры (хотя очевидно, что свет попадая внутрь не может вести себя как зеркально отраженный). Поэтому данная модель BRDF по Ламберту не отражает картину окружения.

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

Орен-Найар (цвет шершавых поверхностей).

Тип отражений Oren noyar

Существует также "шершавая" функция для "цвета" (подповерхностного отражения). Называется она модель BRDF Орена-Найара. Эта модель имеет параметр для контроля шершавости поверхности. Этот параметр определяет, сколько света отразится назад в направлении источника света, что является характеристикой "шершавой" (запыленной) поверхности. Чем более шершавая поверхность, тем менее отчетливым является диффузное отражение.

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

К примеру, поверхность пластика не такая шершавая. А резина, камень, ржавчина значительно грубее (шершавее) кожи или бархата.

Шершавя поверхность рассеивает свет во всех направлениях, но абсолютно неравномерно. Поэтому Орен-Найар – это упрощенное представление реальности.

Blinn, Phong и Ward (Уорд) - это наиболее распространенные упрощенные модели BRDF для бликов (specular). Наиболее удачным будет материал, построенный на Ламберте + блик по модели Блинна или Фонга.

Blinn (световой блик с малыми искажениями если свет падает под скользящим углом).

Отражение по модели Блинна

Blinn – это улучшенная версия Фонга. Блики по модели Блинна в сравнении с моделью Фонга лучше держат форму при разных углах падения света.

Phong (световой блик).

Отражение по Фонгу

Модель Фонга генерирует более растянутые блики под скользящими углами падения света, в то время как по модели Блинна форма бликов не меняется.

Ward-anisotropic (или просто Ward – анизотропные световые блики).

Тип затенения поверхности Ward

Ward – это основная модель для зеркальных бликов на поверхностях с микрогранями (также как и модель Cook-Torrance), которая позволяет вам определить разную шершавость в разных направлениях, отсюда и анизотропия. Уорд – это в честь изобретателя анизотропной BRDF.

Cook-Torrance (металлы).

Модель Кука-Торенса – отличная модель для зеркальных бликов на поверхностях с микрогранями. Вы можете использовать различные функции распределения для получения различных форм бликов, включая анизотропные.

Lafortune – это многослойная модель (т. е. это как три Фонга вместе), которая позволяет индивидуально "задавать" позицию блика на каждом слое, а также шероховатость каждого слоя. Подставляя математически совпадающие данные измеренной BRDF, вы сможете создавать страшно реалистичные изображения реальных материалов.

Существуют и другие типы BRDF, но они не так распространены. Поэтому для получения сведений используйте руководства к вашему рендереру.

Но будьте осторожны: каждый рендерер имеет свои определения вышеперечисленных типов затенения. К примеру, в 3ds Max есть Oren-Nayar-Blinn – это не что иное, как шейдер Oren-Nayar + блик по модели Блинна. А Lambert – это обычно тот же Блинн, но без блика. Так что все это сильно зависит от 3D приложения.

Очень важно перестать полагать, что трассируемые отражения в корне отличаются от модели BRDF бликов по Фонгу или Блинну. Оба эти метода имитируют один и тот же процесс – зеркальное отражение от поверхности – они просто вычисляются разными методами. Но все-таки трассируемые отражения будут отличаться, если вы переключитесь на BRDF по Фонгу или Блинну.

Использование принципа "что лучше смотрится" – это конечно правильно. Но понимание принципа работы той или иной BRDF, а также ее назначения очень важно хотя бы по той причине, что вы должны знать, от чего следует отталкиваться, чтобы получить такой материал как вы задумали.

С возрастанием мощи компьютеров будет возрастать и преобладание физически корректных визуализаций. А понимание принципов создания материалов (shading) поможет вам сделать изображения реалистичными.

Измеренная BRDF


В реальном мире микроструктура поверхности очень сложна, а модели, которые используются для описания отражений, очень просты и, к тому же, не точные. В реальной жизни каждая поверхность имеет свою уникальную микроструктуру (хотя некоторые рендереры, к примеру, VRay, уже добавляют возможность вводить данные BRDF).

Что происходит на микроструктурном уровне в реальной жизни.

Подумайте о микроструктуре поверхности как о горном массиве, смоделированном с помощью карты шумов (как например, в программах Bryce, Terragen и др.). С увеличением параметра шероховатости BRDF, увеличивается "высота" этих горных вершин. Теперь представим, что горный массив смоделирован из параллелепипедов, которые являются идеальными зеркалами. Солнце светит, а мы летим на самолете и смотрим вниз на один квадратный километр таких вот гор через объектив нашей камеры. Так вот, модель отражений BRDF, главным образом просчитывает, как много таких вот зеркал-граней отражают солнечный свет в нашу камеру.

Измеренная BRDF, модель реальной поверхности

Если поразмышлять на эту тему, то можно заметить, что некоторые зеркала будут затенены другими вершинами и, поэтому, не будут отражать свет. Аналогичным образом другие зеркала будут скрыты от нас за другими вершинами. Эти эффекты известны в литературе как затенение (shadowing) и экранирование (masking).

Даже измеренная BRDF еще не учитывает переотражения – это когда луч сначала отражается от одной грани, потом сталкивается с другой и только потом попадает в объектив камеры.

Затенение и экранирование – это два эффекта, которые есть в арсенале таких BRDF для поверхности с микрогранями как Cook-Torrance, Ward и A&S. Они моделируют эффекты от вершин на микроструктуре поверхности: затенение света другими микрогранями и блокирование объектива определенными микрогранями, соответственно. Измеренная BRDF также учитывает эти эффекты, но только как часть измеренных данных, а не как точные параметры модели.

Измеренная BRDF получается всего лишь с помощью измерения отражающей способности поверхности в зависимости от всевозможных комбинаций положений камеры и источника света. При этом используется инструмент Gonioreflectometer (Гониорефлектометр) или световая студия (Light Stage). Свойств поверхности на самом деле никто не исследует, они просто измеряют количество света, попадающего в камеру для определенного направления падающего на поверхность света.

Сама BRDF не может описать подповерхностные эффекты из-за своей сущности. Поскольку BRDF описывает суммарные данные только для одной точки поверхности. Подповерхностные же эффекты зависят от света попадающего на всю поверхность. Вот почему для функции подповерхностного рассеивания дали другое название – BSSRDF.


Источник Компьютерная графика. За кулисами.