Данная статья описывает основные принципы отражения света материалами. Понимание этих принципов дает возможность эффективно управлять внешним видом материалов, характером освещения, тенями, видимыми отражениями и бликами.
Материал статьи будет полезен в любой сфере 3d-графики, и применим для любого современного архитектурного рендера, такого как Corona Renderer, V-Ray, Redshift, Octane и подобные "физкорректные" рендеры.
В интерактивных и игровых движках визуализации материал применим частично, так как многие "честные" эффекты поведения света (распространения и отражения) рассчитываются в них упрощенно для увеличения производительности. Но и там материал статьи не конфликтует с основами получения итогового результата.
Для наглядности примеры в статье могут быть гипертрофированы. Приятного ознакомления.
В прошлой статье я коротко упоминал про светоперенос. И сегодня мы заглянем в эту часть поглубже.
Сначала хотя бы какие-то базовые вводные:
Светоперенос, применимо к 3d-графике — это то, насколько много света будет отражено/поглощено материалом, прежде чем этот отраженный свет будет использован дальше в расчете освещение объекта/сцены.
Светоперенос обычно находится в диапазоне от 75% до 5%. Большие и меньшие значения не типичны для реальных задач и относятся к категории "сферических коней в вакууме".
Важно понимать, что материалы выглядят настолько светлыми/темными именно от того, насколько они сильно/слабо переносят свет.
Это важно, не наоборот. Материалы выглядят так, как выглядят, из-за переноса света. В нашей вселенной и в упрощенных движках визуализации, где это имитируется.
Далее буду сопровождать текст примерами из Corona Render, так как это самый популярный движок для архитектурных задач. В иных движках ситуации практически идентичны, различаются лишь некоторые термины.
Двумя противоположными по принципу работы типами отражений будут диффузный и рефлективный тип отражений. Вы будете встречать названия рассеянный и направленный, матовый и глянцевый. Суть одна.
Глобально все сводится к тому, что один и тот же материал может отразить одинаковое количество света двумя способами.
Отразить диффузно:

Или отразить рефлективно:

В первом случае весь отраженный свет разбивается на условно бесконечное количество направлений отражения света, сумма которых и составляет силу светопереноса. Во втором случае вектор отражения равен углу падения света и переносит свет сконцетрированно в одном направлении.
Если проще, максимально диффузное отражение матовое, а максимально рефлективное, как зеркало. Да простят мне высшие силы такое упрощение :)
Важно: сила отражения света одинакова в обоих случаях. Меняется только характер.
В жизни мы можем видеть, что характер светопереноса зависит от "шершавости" поверхности. И это верно. Можно взять стекло, зашкурить его половину и мы будет иметь один материал на уровне структуры, но разный по характеру отражения света.
Именно поэтому любая современная система описания свойств цифровых материалов все чаще оперирует именно понятием шероховатости (roughness) для передачи свойств светопереноса.
Раньше в архитектурных рендерах была распространена система описания светопереноса через diffuse и reflection параметры, что часто приводило к не физкорректным сочетаниям в материале (одновременно матовый и рефлективный материал) и именно поэтому со временем эволюционировала в текущую.
Важно:в реальной жизни практически никогда не встречается только диффузное или только рефлективное отражение света. Чаще всего это микс.
Но если брать какие-то приближенные к ним примеры, то можно взять что-то мелко толченое, как абсолютно матово отражающее. Например, тертый пигмент.

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

В 99% живых реальных случаев характер отражения будет "гибридным". То есть будет содержать в себе признаки обоих типов отражения.
Почему это вообще важно? А потому, что все это не только визуальное "блестит/не блестит", оно еще и имеет принципиально разный тип работы.
Если коротко, то диффузное отражение работает всегда очень предсказуемо, а рефлективное завязано на индекс отражений и угол, под которым мы смотрим на поверхность. Но тут уже текстом я устану расписывать.
Погнали с картинками.
Вернемся в нашу тестовую комнату, где я задам среднесерую подменку на все материалы. Временно, чтобы не отвлекать ваше внимание от главного.
Итак, создадим две коробочки, повесим на стену и применим к ним два достаточно разных по типу отражения света материала. Прилеплю превью материалов прямо поверх картинки, чтобы было понятно, где кто.
Как видим, несмотря на достаточно сильную разницу в типах отражения, в этих условиях материалы выглядят почти одинаково.
Почему?
Наше окружение однотонно. Рефлективный тип отражения себя проявляет слабо за счет почти перпендикулярного угла, под которым мы смотрим на поверхность. Так что мы фактически видим только диффузное отражение (цвет материала). Небольшое высветление глянцевого материала происходит из-за того, что светоперенос рефлективного отражения немного задает характер, так как мы не смотрим строго под 90 градусов на всю поверхность предмета.
Вот пасс светопереноса (CShadingalbedo):
Важно: тут мы видим, что диффуз работает "всегда", тогда как рефлект будет зависеть от внешних условий. Он больше завязан на внешнее, чем на свойства материала.
Это упрощенно, но пока примем так. Хотя на самом деле дальше мы немного опровергнем это "всегда".
Теперь оставим все как есть и сменим угол камеры. Что мы получим?
Вот что:
Теперь явно видим, что яркость материала выше слева. Помним, что светлота материала является следствием его высокого светопереноса. Что и подтверждается альбедо пассом:
Особо внимательные заметили торец у левого постера? Он на бьюти пассе почти черный. Однако мы видим, что он переносит свет даже сильнее, чем основное "лицо" постера.
Именно об этом далее.
Как вы уже поняли, у нас начинает работать индекс отражений IOR. Который по умолчанию 1.5 для большинства предметов вокруг нас. Это обобщение грубое, но в целом для визуальных задач архивиза приемлемо.
Что такое 1.5? Да просто коэффициент, который обозначает, насколько сильно будет проявлять себя рефлективный канал в зависимости от угла, под которым мы смотрим на поверхность материала.
Вот что будет при остром угле камеры к поверхности:
Видим, что разница уже колоссальная. И тут мы можем увидеть то, что визуально вам может показаться что где-то рефлект работает больше, где-то меньше. Ведь вот подушка в отражениях почти белая, а влияния стен почти не видно. Но это не имеет отношения к светопереносу. Точнее имеет, но в формулировке: что попало в отражения, то и увидели. А сама сила рефлективного отражения света неизменна.
Что и видим на альбедо пассе:
Лишь небольшой градиент по "лицу" постера, так как угол к поверхности левого и правого края сильно отличаются. А уж подушки ли будут в этом рефлективном отражении или еще что — не важно.
Обратите внимание. Мы сейчас говорим о "стерильной" постановочной ситуации. В реальности вы будете видеть наслоение многих иных факторов на итоговый результат. Но, зная эти основы, еще на этапе преднастройки, сможете понимать, отчего свет и отражения в вашей сцене ведут себя так, а не иначе.
Последний ракурс, где мы почти по касательной смотрим на постер:
Видим, что даже на 1.5 коэффициенте мы уже почти не видим влияния диффуза на итог. Почти все "забито" рефлектом. Напомню, что материалы одинаково синие.
Вот склейка, чтобы было видно как диффуз заменяется рефлектом по мере возрастания угла:
Тут уже можно усложнить утверждение, что диффуз работает всегда, пока ему это позволяет рефлект. Это как качели: если одно плечо идет вверх, другое идет вниз. А экспрессия (скорость прироста влияния типа отражения) зависит от коэффициента отражения, шероховатости материала и углов, под которыми смотрим на материалы, они обращены к источникам света.
Зачем это знать?
Знание модели работы с отражениями света, как и инструментов, позволяет решать ваши ежедневные задачи в визуализации. А вещей, связанных с отражениями света, тысячи даже в самых рутинных задачах.
Для примера: разница в плотности слоев древесины, которая "играет" бликами именно по структуре волокон, при этом по цвету может быть абсолютно не выразительной. Так, напротив яркого блика части материала, имеющие низкую шероховатость, проявят рефлективное отражение. Тогда как шероховатые сохранят больше диффузного отражения (читай цвет текстуры). Поэтому и материал дерева, который учитывает эти особенности, будет более убедительным, чем если это не использовать.
При этом вы можете повторять шероховатостью данные с диффуз канала, что часто является самым простым и логичным, или же наоборот. Уменьшать сильно контрастный рисунок диффуза, делая разницу в типе отражений соответствующей задаче.
Важно понимать, что в вашем распоряжении весь яркостной диапазон от черного до белого, что на канале шероховатости дает богатую палитру эффектов и дополнительно усиливается, или ослабляется коэффициентом отражений.
Вот еще один пример того, сколько дополнительной информации, которая помогает выделить что угодно или показать "черное на черном", заключается в работе с типами отражения.
Вот этот же ракурс с одним цветом диффуза и одинаковым отражением:
Вот с тем же цветом и разными по характеру отражения материалами:
Думаю, комментарии тут излишни. Кстати, такое выделение отдельного компонента в материалах помогает очень точно настроить параметры верно, так как в общем итоге не всегда очевиден какой-то перекос.
Еще есть хорошее упражнение, когда "сам себе связываешь руки за спиной" и создаешь проект с жесткими ограничениями по цвету. Например, все материалы "черные" или белые. Тогда становится очень интересно "поиграть" именно с теми свойствами, с которыми хочется разобраться.
На этом по типам отражений все. Металличность и рефрактивное отражение света я рассмотрю отдельно.
Если вам интересен такой формат, то поддержите статью отметкой "нравится" и напишите в комментариях, что вы бы хотели видеть в таком формате еще. Это может быть любая тема или инструмент в 3D.
Так же напишите, комфортен ли такой размер статей и подача. Я пока не понял для себя лучше делать длинные или короткие материалы. И не определился со степенью "разжевывания".













