Открыть сервис

Модель Фонга

Модель Фонга — это эмпирическая модель локального освещения в трёхмерной компьютерной графике, разработанная вьетнамско-американским учёным Буй Туонг Фонгом (Bui Tuong Phong) в 1973 году. Модель описывает, как свет отражается от поверхности объекта, и позволяет вычислять цвет пикселя на основе трёх компонентов: фонового (ambient), диффузного (diffuse) и зеркального (specular). Она широко применялась в ранних системах рендеринга и стала основой для многих последующих алгоритмов затенения, включая затенение по Фонгу (Phong shading).

История

Модель была предложена Буй Туонг Фонгом в его докторской диссертации в Университете Юты в 1973 году. В то время компьютерная графика находилась на раннем этапе развития: существовали простые модели освещения, такие как модель Ламберта, которая учитывала только диффузное отражение. Фонг стремился создать более реалистичную модель, способную имитировать блестящие поверхности, такие как пластик, металл или керамика. Его работа была опубликована в 1975 году в статье «Illumination for Computer Generated Pictures» в журнале Communications of the ACM. Модель быстро стала стандартом в индустрии благодаря своей простоте и вычислительной эффективности, особенно в контексте аппаратных ограничений того времени.

Принцип работы

Модель Фонга основана на идее, что освещение в точке поверхности складывается из трёх независимых компонентов:

  • Фоновое освещение (ambient) — имитирует рассеянный свет, отражённый от окружающих объектов. Оно не зависит от положения источника света и направления взгляда. Представляет собой константную величину, добавляемую ко всем точкам поверхности.
  • Диффузное освещение (diffuse) — моделирует матовое (ламбертовское) отражение. Интенсивность зависит от угла между направлением на источник света и нормалью к поверхности. Чем меньше угол, тем ярче точка. Этот компонент не зависит от направления взгляда.
  • Зеркальное освещение (specular) — создаёт блики на блестящих поверхностях. Интенсивность зависит от угла между направлением отражённого луча и направлением на наблюдателя. Для управления размером и резкостью блика используется показатель степени (экспонента Фонга), который задаёт «глянцевость» материала.

Формула модели Фонга для одного источника света:

\[ I = I_a \cdot k_a + I_d \cdot k_d \cdot (\mathbf{L} \cdot \mathbf{N}) + I_s \cdot k_s \cdot (\mathbf{R} \cdot \mathbf{V})^n \]

где:

  • \(I\) — итоговая интенсивность в точке;
  • \(I_a\) — интенсивность фонового света;
  • \(k_a\) — коэффициент фонового отражения (0–1);
  • \(I_d\) — интенсивность диффузного света;
  • \(k_d\) — коэффициент диффузного отражения (0–1);
  • \(\mathbf{L}\) — единичный вектор от точки к источнику света;
  • \(\mathbf{N}\) — единичный вектор нормали к поверхности;
  • \(I_s\) — интенсивность зеркального света;
  • \(k_s\) — коэффициент зеркального отражения (0–1);
  • \(\mathbf{R}\) — единичный вектор отражённого луча;
  • \(\mathbf{V}\) — единичный вектор от точки к наблюдателю;
  • \(n\) — показатель степени (экспонента Фонга), определяющий резкость блика.

Для нескольких источников света интенсивности суммируются.

Компоненты модели

Фоновое освещение (Ambient)

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

Диффузное освещение (Diffuse)

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

Зеркальное освещение (Specular)

Зеркальный компонент отвечает за блики, которые видны на гладких поверхностях. В модели Фонга блик вычисляется с использованием вектора отражения \(\mathbf{R}\), который симметричен вектору света \(\mathbf{L}\) относительно нормали \(\mathbf{N}\). Экспонента \(n\) управляет шириной блика: при малых значениях (например, 1–10) блик широкий и размытый, при больших (100–1000) — узкий и яркий, как у полированного металла. Цвет зеркального блика обычно совпадает с цветом источника света, а не материала.

Затенение по Фонгу (Phong shading)

Модель Фонга часто путают с затенением по Фонгу — методом интерполяции нормалей для вычисления освещения в каждой точке полигона. В отличие от модели, которая является формулой для расчёта цвета в одной точке, затенение по Фонгу — это алгоритм, который применяет модель Фонга к каждому пикселю, используя интерполированные нормали. Это позволяет получать гладкие криволинейные поверхности даже при низкополигональной геометрии. Затенение по Фонгу является более точным, чем затенение по Гуро, которое интерполирует уже вычисленные цвета.

Применение

Модель Фонга широко использовалась в компьютерной графике с 1970-х до начала 2000-х годов, особенно в системах реального времени, таких как ранние видеоигры и CAD-программы. Она применялась для рендеринга пластиковых, металлических и керамических поверхностей. С появлением более сложных моделей, таких как модель Блинна-Фонга (модификация, использующая вектор половинного пути вместо вектора отражения), модель Кука-Торренса (физически обоснованная модель для металлов) и PBR (physically based rendering), модель Фонга утратила доминирующее положение, но остаётся учебным примером и используется в простых приложениях, а также как базовая модель в некоторых шейдерах.

Критика и ограничения

  • Эмпиричность: модель не основана на физике отражения света, а является аппроксимацией. Она не учитывает такие явления, как преломление, подповерхностное рассеяние, интерференция или поляризация.
  • Отсутствие глобального освещения: фоновый компонент не моделирует реальные отражения света от других объектов, что приводит к неестественным теням и отсутствию цветовых бликов.
  • Нефизичность зеркального блика: в реальности угол падения света не всегда равен углу отражения для блестящих поверхностей (например, для металлов), что модель Фонга не учитывает. Модель Блинна-Фонга частично решает эту проблему за счёт использования вектора половинного пути.
  • Вычислительная сложность: для каждого пикселя требуется вычисление вектора отражения и возведение в степень, что в прошлом было ресурсоёмким, хотя современные GPU справляются с этим быстро.
  • Непригодность для PBR: в современных системах физически корректного рендеринга модель Фонга заменена на модели, основанные на микрофасеточной теории (например, модель GGX), которые обеспечивают более реалистичное отражение.

Варианты и модификации

  • Модель Блинна-Фонга (Blinn-Phong) — предложена Джеймсом Блинном в 1977 году. Вместо вектора отражения \(\mathbf{R}\) используется вектор половинного пути \(\mathbf{H} = (\mathbf{L} + \mathbf{V}) / |\mathbf{L} + \mathbf{V}|\), что упрощает вычисления и даёт более реалистичные блики на некоторых поверхностях.
  • Модель Фонга с текстурой — позволяет накладывать на поверхность текстуры, которые модулируют коэффициенты \(k_a\), \(k_d\), \(k_s\) и экспоненту \(n\).
  • Модель Фонга с картами нормалей — используется в сочетании с картами нормалей для имитации детализированной геометрии без увеличения полигональности.

Интересные факты

  • Буй Туонг Фонг умер в 1975 году в возрасте 32 лет от лейкемии, не успев увидеть широкого распространения своей модели.
  • Модель Фонга была одной из первых, которая позволила создавать реалистичные изображения блестящих объектов на компьютерах 1970-х годов.
  • В некоторых источниках модель Фонга называют «моделью Фонга-Блинна», хотя Блинн предложил лишь модификацию, а не самостоятельную модель.

Источники

  • Bui Tuong Phong. «Illumination for Computer Generated Pictures». Communications of the ACM, 1975.
  • James F. Blinn. «Models of Light Reflection for Computer Synthesized Pictures». ACM SIGGRAPH, 1977.
  • Alan Watt. «3D Computer Graphics». 3rd edition, Addison-Wesley, 2000.
  • Tomas Akenine-Möller, Eric Haines, Naty Hoffman. «Real-Time Rendering». 4th edition, CRC Press, 2018.
  • Foley, van Dam, Feiner, Hughes. «Computer Graphics: Principles and Practice». 2nd edition, Addison-Wesley, 1995.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →