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