Модель отражения Фонга (также называемая освещением Фонга или Фонгом освещение ) - это эмпирическая модель локального освещения точек на поверхности, разработанная исследователем компьютерной графики Буй Туонг Фонг. В компьютерной 3D-графике это иногда называют «затенением Фонга», особенно если модель используется с методом интерполяции с тем же именем и в контексте пиксельные шейдеры или другие места, где расчет освещения может упоминаться как «затенение ».
Модель отражения Фонга была разработана Буй Туонг Фонгом в Университете штата Юта, который опубликовал ее в своей докторской диссертации 1975 года. диссертация. Он был опубликован вместе с методом интерполяции вычислений для каждого отдельного пикселя, растеризованного из модели полигональной поверхности; метод интерполяции известен как затенение Фонга, даже когда он используется с моделью отражения, отличной от модели Фонга. Во время своего появления методы Фонга считались радикальными, но с тех пор стали де-факто базовым методом затенения для многих приложений визуализации. Методы Фонга оказались популярными благодаря в целом эффективному использованию времени вычислений на рендеринг пикселя.
Отражение Фонга - это эмпирическая модель местного освещения. Он описывает способ отражения света поверхностью как комбинацию диффузного отражения шероховатых поверхностей с зеркальным отражением блестящих поверхностей. Он основан на неофициальном наблюдении Фонга, что блестящие поверхности имеют небольшие интенсивные зеркальные блики, в то время как тусклые поверхности имеют большие блики, которые исчезают более постепенно. Модель также включает в себя окружающий термин для учета небольшого количества света, рассеянного по всей сцене.
Визуальная иллюстрация уравнения Фонга: здесь свет белый, окружающий и рассеянный цвета - синие, а зеркальный цвет - белый, отражающий небольшую часть света, падающего на поверхность, но только в очень узких местах. Интенсивность диффузного компонента зависит от направления поверхности, а окружающий компонент является однородным (независимо от направления).Для каждого источника света в сцене компоненты и определяются как интенсивности (часто как значения RGB ) зеркальной и диффузной составляющих источников света соответственно. Один элемент управляет окружающим освещением; иногда он рассчитывается как сумма вкладов всех источников света.
Для каждого материала в сцене определены следующие параметры:
Кроме того, у нас есть
Затем Фонг модель отражения предоставляет уравнение для вычисления освещенности каждой точки поверхности :
где вектор направления рассчитывается как отражение для на поверхности, характеризуемой нормалью к поверхности с использованием
, а шляпы указывают, что векторы нормализованы. На диффузный термин не влияет направление зрителя (). Зеркальный член велик только тогда, когда направление зрителя () совпадает с направлением отражения . Их выравнивание измеряется степенью косинуса угла между ними. Косинус угла между нормализованными векторами и равно их скалярному произведению. Когда большое, в случае почти зеркального отражения зеркальный свет будет маленьким, потому что любая точка обзора, не выровненная с отражением, будет иметь косинус меньше единицы, которая быстро приближается к нулю при увеличении в большой степени.
Хотя приведенная выше формулировка является обычным способом представления модели отражения Фонга, каждый член следует включать только в том случае, если скалярное произведение термина положительно. (Кроме того, зеркальный член следует включать только в том случае, если скалярное произведение диффузного члена положительно.)
Когда цвет представлен в виде значений RGB, как это часто бывает в компьютерная графика, это уравнение обычно моделируется отдельно для интенсивностей R, G и B, что позволяет использовать различные константы отражений и для различных цветовых каналов.
При реализации модели отражения Фонга существует ряд методов для аппроксимации модели, а не реализация точных формул, которые могут ускорить расчет; например, модель отражения Блинна – Фонга является модификацией модели отражения Фонга, которая более эффективна, если наблюдатель и источник света рассматриваются как находящиеся на бесконечности.
Еще одно приближение, которое касается вычисления возведения в степень в зеркальном члене, следующее: учитывая, что зеркальный член следует учитывать только в том случае, если его скалярное произведение положительно, его можно аппроксимировать как
где и - действительное число, которое не обязательно должно быть целым. Если выбрано в степени 2, то есть где - целое число, тогда выражение можно более эффективно вычислить, возведя в квадрат раз, т.е.
Это приближение зеркального члена справедливо для достаточно большого целого числа (обычно 4 или 8 будет достаточно).
Кроме того, значение можно приблизительно представить как , или как Последний гораздо менее чувствителен к ошибкам нормализации в и , чем скалярное произведение Фонга есть, и практически не требует и для нормализации, за исключением треугольных сеток с очень низким разрешением.
Этот метод заменяет несколько умножений на переменное возведение в степень и устраняет необходимость в точной векторной нормализации на основе обратного квадратного корня.
Модель отражения Фонга в сочетании с затенением Фонга является приближением затенения объектов в реальной жизни. Это означает, что уравнение Фонга может связать затенение, видимое на фотографии, с нормалями поверхности видимого объекта. Обратное относится к желанию оценить нормали поверхности для визуализированного изображения, естественного или созданного на компьютере.
Модель отражения Фонга содержит множество параметров, таких как параметр поверхностного диффузного отражения (альбедо ), которые могут варьироваться в пределах объекта. Таким образом, нормали объекта на фотографии можно определить только путем введения дополнительной информации, такой как количество источников света, направления света и параметры отражения.
Например, у нас есть цилиндрический объект, например палец, и мы хотим вычислить нормальный на линии на объекте. Мы предполагаем только один свет, отсутствие зеркального отражения и однородные известные (приближенные) параметры отражения. Затем мы можем упростить уравнение Фонга до:
С константа, равная окружающему освещению и константа, равная диффузному отражению. Мы можем переписать уравнение так:
Что можно переписать для линии, проходящей через цилиндрический объект, как:
Для Например, если направление света на 45 градусов выше объекта , мы получаем два уравнения с двумя неизвестными.
Из-за степеней двойки в уравнении есть два возможных решения для нормального направления. Таким образом, для определения правильного направления нормали необходима некоторая предварительная информация о геометрии. Нормали напрямую связаны с углами наклона линии на поверхности объекта. Таким образом, нормали позволяют вычислить относительную высоту линии на объекте с использованием линейного интеграла, если мы предполагаем, что поверхность является непрерывной.
Если объект не цилиндрический, у нас есть три неизвестных нормальных значения . Тогда два уравнения по-прежнему позволяют нормали вращаться вокруг вектора обзора, поэтому необходимы дополнительные ограничения из предшествующей геометрической информации. Например, в распознавании лиц эти геометрические ограничения могут быть получены с помощью анализа главных компонентов (PCA) в базе данных карт глубины лиц, что позволяет использовать только решения нормалей поверхности, которые находятся в нормальное население.
Модель отражения Фонга часто используется вместе с затенением Фонга для затенения поверхностей в программном обеспечении 3D компьютерной графики. Помимо этого, он также может использоваться для других целей. Например, он использовался для моделирования отражения теплового излучения от зондов Pioneer в попытке объяснить аномалию Pioneer.