Image
Вверх
Меню
Июнь 10, 2015

Основы физического рендера

Физический рендер (далее — ФР) – одна из самых интригующих тем современной компьютерной графики. Эта технология широко обсуждается и довольно часто можно услышать, как ФР приписывают свойства, которые не имеют к нему ни малейшего отношения. А поскольку короткий ответ в стиле «ФР объединяет множество областей знания» или «ответ будет зависеть от постановки задачи» никого не устраивает, я позволил себе подготовить объяснение чуть более подробное. В данной статье я попытаюсь сформулировать, что же такое ФР, и чем он отличается от уже существующих методик рендера. Руководство не рассчитано на инженеров, уж скорее на художников, поэтому обойдемся без математики и кода.

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

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

Текстура и отражение

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

Когда свет падает на какую-нибудь поверхность, часть его в соответствии со школьной аксиомой (угол падения равен углу отражения) отразиться и уйдет в пространство. Поведение света похоже на поведение резинового мяча, который мы можем бросить о стену, от которой он отскочит обратно нам в руку. Чем больше света отражает поверхность, тем более она зеркальная.
Однако поверхность отражает не весь свет. Часть его всегда проникает внутрь освещаемого объекта, и дальше для этого света есть два пути: быть поглощенным материалом, из которого сделан объект (обычно это приводит к его нагреву, то есть излучению в инфракрасном диапазоне) или рассеяться внутри материала. Во втором случае часть этого рассеянного света позже вернется на поверхность объекта и снова станет видимой для объектива камеры или глаза. Это явление всем нам хорошо знакомо, достаточно посмотреть на солнце, закрыв его собственной ладонью – кожа между пальцами наполнится красным светом, рассеянным внутри нашей ладони. В терминологии CG художников этот эффект называется «Subsurface scattering» — подповерхностное рассеивание.

Поведение света при столкновении с поверхностью

Поведение света при столкновении с поверхностью

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

Прозрачность и просвечиваемость

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

Сохранение энергии

Приведенных данных достаточно для того, чтобы сделать первое важное заключение: отражение (reflection) и распределение света (diffusion) – взаимоисключающие функции. Чтобы свет распределялся, необходимо, чтобы он проник под поверхность объекта (то есть, не отразился от нее). В физическом мире это называется «сохранением энергии», что на практике означает одну очень простую вещь – свет, возвращающийся к поверхности объекта, не может быть интенсивнее, чем свет, который упал на нее изначально.

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

Изменение уровня отражения

Изменение уровня отражения при постоянном альбедо

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

Металлы

Материалы, проводящие электричество, в основном – металлы, требуют отдельного пояснения.

Во-первых, металлы в среднем больше отражают (чем непроводящие материалы). Проводники в целом демонстрируют коэффициент отражения в диапазоне 60-90%, в то время как для непроводящих материалов это значение значительно меньше – 0-20%. Высокая степень отражения препятствует свету проникать и рассеиваться внутри объекта, придавая металлам то самый «блестящий» (glossy) вид.

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

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

Эта дуальность, разделяющая металлы и все остальные материалы приводит к тому, что иногда в современных рендер-системах «метализированность» становится отдельным параметром. В этих системах художник сам определяет степень «металлизированности» того или иного материала вместо того, чтобы просто регулировать альбедо и степень отражения. В некоторых случаях это удобнее, но такой подход не может считаться характеристикой ФР.

Френель

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

В компьютерной графике словом «френель» называют эффект изменения уровня отражения при изменении угла обзора. Объекты, отрендеренные с правильным эффектом Френеля, будут иметь более яркие отражения ближе к краям. Этот эффект многим из вас знаком и в нем самом по себе нет ничего принципиально нового. Однако ФР материалы вносят в него кое-какие важные корректировки.
Во-первых, при использовании любых материалов, края гладкого объекта должны реагировать, как идеальные (бесцветные) зеркала. И, да, любая поверхность может быть идеальным зеркалом, если она гладкая, и вы смотрите на нее под правильным углом. Это может не согласовываться с интуицией, но с физикой не поспоришь.

Во-вторых, кривая градиента между углами не слишком изменяется в разных материалах. Металлы хуже всего укладываются в это наблюдение, но, тем не менее, – укладываются тоже.

При условии, что художник хочет получить фотореалистичное изображение, его возможность влиять на характеристику Френеля необходимо уменьшить, а не увеличить. Или хотя бы установить правильное значение по умолчанию.

На самом деле это хорошие новости, потому что на практике это сильно облегчает работу по производству контента. Система создания материала для ФР может регулировать эффект Френеля сама, для чего ей необходимо всего лишь иметь ввиду несколько параметров материалов, использованных в сцене, таких как отражения и блеск (gloss).

эффект Френеля

Эффект Френеля — отражения появляются по краям

ФР требует от художника только задать базовую степень «отражаемости» для материалов, а эффект Френеля, будучи единожды отрендеренным, будет добавлять нужную степень отражений поверх заложенного художником значения вплоть до 100% (белый цвет) по краям.

Есть один важный момент при моделировании эффекта Френеля – он очень быстро пропадает там, где поверхность становится менее гладкой. Но об этом — дальше.

Микроповерхность

Данные выше описания отражений и распределения света зависят от ориентации поверхности в пространстве. В большинстве случаев этот вопрос решается за счет расстановки моделей, а также normal map – для мелких деталей.

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

микроповерхность и свет

Влияние микрорельефа на отражение света

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

К сожалению, измерение реальной микроструктуры поверхности для создания максимально правдоподобных материалов не представляется возможным из-за аппаратных ограничений. Однако если мы откажемся от конкретики и попробуем напрямую регулировать степень жесткости поверхности, мы сможем получить весьма и весьма неплохой результат. Обычно этот критерий называется блеском (gloss) или гладкостью (smoothness) или жесткостью (roughness). Он может быть указан для текстуры или материала в качестве константы.

Эта характеристика чрезвычайно важна для любого материала, поскольку и в реальном мире ее значения постоянно варьируются, делая этот мир именно таким, каким мы его наблюдаем. Добавление блеска к материалу – не новшество, однако в ФР этот показатель имеет колоссальное значение для создания реалистичных отражений. Как мы вскоре увидим, есть несколько техник, связанных со свойствами микроповерхностей, с которыми можно работать, используя ФР.

Сохранение энергии (опять!)

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

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

хммм

Влияние жесткости микроповерхности на размытие отражения

И здесь мы подходим к необходимости выработки еще одного механизма сохранения энергии, в дополнение к тому, который описан выше. Если настроить его правильно – это будет важный шаг к полноценному ФР.

Молимся на микроповерхность

Продравшись через все сведения, которые я изложил выше, вы готовы к еще одному важному выводу (и даже очень важному): блеск микроповерхности прямо влияет на видимую яркость и отражения. Это означает, что художник может задавать эту характеристику, используя параметр gloss, просто добавляя туда царапины, углубления или, наоборот, пятна гладкости по своему вкусу, а ФР будет автоматически формировать не просто форму отражения, но его интенсивность. И никаких specular или reflection масок больше не потребуется!

Это важно потому, что две важные характеристики окружающего нас мира – детализация микроповерхностей и отражения – впервые правильно взаимосвязаны внутри процесса рендера. Это приблизительно похоже на баланс отражения/распределения, который я описывал выше: мы можем настраивать оба значения отдельно, но поскольку они связаны между собой, это только усложняет задачу.

Изучение материалов реального мира демонстрирует, что их отражающая способность не так уж сильно различает от материала к материалу. Хороший пример – вода и грязь: оба материала имеют одинаковую отражающую способность, но из-за того, что грязь – куда более жесткий материал, а поверхность лужи, наоборот, гладкая – их отражения для нашего глаза так сильно отличаются. Художник, создающий подобную сцену с использование ФР, задает эту разницу, регулируя один единственный параметр – gloss или жесткость карты вместо того, чтобы править само значение reflection, как показано ниже:

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

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

Свойства микроповерхности оказывают и другие виды менее заметных воздействий на отражение. Например, «яркие каря» эффект Френеля снижается с повышением жесткости (хаотическая природа микрорельефа рассеивает эффект Френеля, мешая нам заметить его). Крупные впадины на микроповерхности могут захватывать свет, заставляя его отражаться от поверхности несколько раз, повышая поглощение и уменьшая яркость. Разные рендереры по-разному справляются с этими нюансами и дают разные результаты, но общий принцип – чем жестче поверхность, тем более размыт отраженный свет – сохраняется.

Автор: Джефф Рассел
Источник

Добавить комментарий