Для начала я настоятельно рекомендую прочитать презентацию Siggraph Нати Хоффмана посвященную физике рендеринга. Тем не менее, я постараюсь ответить на ваши конкретные вопросы, заимствуя изображения из своей презентации.
Глядя на единственную легкую частицу, попавшую в точку на поверхности материала, он может делать 2 вещи: отражать или преломлять. Отраженный свет будет отражаться от поверхности, как зеркало. Преломленный свет отражается внутри материала и может выходить из материала на некотором расстоянии от того места, куда он попал. Наконец, каждый раз, когда свет взаимодействует с молекулами материала, он теряет некоторую энергию. Если он теряет достаточно своей энергии, мы считаем, что он полностью поглощен.
По словам Нати, «свет состоит из электромагнитных волн. Таким образом, оптические свойства вещества тесно связаны с его электрическими свойствами». Вот почему мы группируем материалы как металлы или неметаллы.
Неметаллы будут демонстрировать как отражение, так и преломление.
Металлические материалы имеют только отражение. Весь преломленный свет поглощается.
Было бы чрезмерно дорого пытаться смоделировать взаимодействие легкой частицы с молекулами материала. Мы вместо этого делаем некоторые предположения и упрощения.
Если размер пикселя или область затенения велики по сравнению с расстояниями входа-выхода, мы можем сделать предположение, что расстояния фактически равны нулю. Для удобства мы разбили световые взаимодействия на два разных термина. Мы называем термин «поверхностное отражение» «зеркальным», а термин, возникающий в результате преломления, поглощения, рассеяния и повторного преломления, мы называем «рассеянным».
Однако это довольно большое предположение. Для большинства непрозрачных материалов это предположение в порядке и не слишком отличается от реальной жизни. Однако для материалов с любой прозрачностью это предположение не выполняется. Например, молоко, кожа, мыло и т. Д.
Наблюдаемый цвет материала - это свет, который не поглощается. Это комбинация как отраженного света, так и любого преломленного света, который выходит из материала. Например, чистый зеленый материал будет поглощать весь свет, который не является зеленым, поэтому единственный свет, который достигает наших глаз, - это зеленый свет.
Поэтому художник моделирует цвет материала, давая нам функцию ослабления материала, то есть то, как материал будет поглощаться светом. В нашей упрощенной диффузной / зеркальной модели это может быть представлено двумя цветами: диффузным цветом и зеркальным цветом. Еще до того, как использовались физические материалы, художник произвольно выбирал каждый из этих цветов. Однако должно показаться очевидным, что эти два цвета должны быть связаны. Вот где появляется цвет альбедо. Например, в UE4 они рассчитывают диффузный и зеркальный цвет следующим образом:
DiffuseColor = AlbedoColor - AlbedoColor * Metallic;
SpecColor = lerp(0.08 * Specular.xxx, AlbedoColor, Metallic)
где Metallic равен 0 для неметаллов и 1 для металлов. Параметр «Specular» контролирует зеркальность объекта (но обычно он составляет 0,5 для 99% материалов).
Я действительно задавался вопросом именно об этом несколько дней назад. Не найдя никаких ресурсов в графическом сообществе, я на самом деле подошел к физическому факультету в моем университете и спросил .
Оказывается, мы, люди графики, верим в ложь.
Во-первых, когда свет попадает на поверхность, применяются уравнения Френеля. Пропорции отраженного / преломленного света зависят от них. Вы, наверное, знали это.
Там нет такого понятия, как "зеркальный цвет"
Возможно, вы не знали, что уравнения Френеля меняются в зависимости от длины волны, потому что показатель преломления зависит от длины волны. Разница относительно мала для диэлектриков (дисперсия, кто-нибудь?), Но может быть огромной для металлов (я предполагаю, что это связано с различными электрическими структурами этих материалов).
Следовательно, коэффициент отражения Френеля изменяется в зависимости от длины волны, и поэтому различные длины волн отражаются преимущественно . При освещении широкого спектра, это то, что приводит к зеркальному цвету. Но, в частности, нет волшебного поглощения на поверхности (другие цвета просто преломляются).
Там нет такого понятия, как "рассеянное отражение"
Как говорит Нати Хоффман в своем выступлении, связанном с другим ответом, это действительно приближение к рассеянному подповерхностному рассеянию.
Металлы пропускают свет
Нати Хоффман ошибается (точнее, упрощает). Свет не сразу поглощается металлами. На самом деле он довольно легко пройдет сквозь материалы толщиной в несколько нанометров. (Например, для золота требуется 11,6633 нм, чтобы ослабить 587,6 нм (желтый) наполовину.)
Поглощение, как и в диэлектриках, обусловлено законом Бера-Ламберта. Для металлов коэффициент поглощения просто намного больше (α = 4πκ / λ, где κ - мнимая составляющая показателя преломления (для металлов ~ 0,5 и выше), а λ дается в метрах ).
Эта передача (или, точнее, SSS, которую она производит) на самом деле ответственна за значительную часть цветов металлов (хотя это правда, что во внешности металлов преобладает их зеркальное отражение).
источник