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

Модель Блинна-Фонга

Модель Блинна-Фонга — это эмпирическая модель затенения в трёхмерной компьютерной графике, используемая для аппроксимации отражения света от поверхности. Она является модификацией модели Фонга, предложенной в 1977 году Джеймсом Блинном, и предназначена для более реалистичного отображения бликов на шероховатых и глянцевых поверхностях. Модель широко применяется в системах реального времени, включая видеоигры и интерактивные приложения, благодаря своей вычислительной эффективности и визуальному качеству.

История

Модель Фонга была разработана Буй Туонг Фонгом в 1975 году как эмпирическая модель отражения света. Она состояла из трёх компонентов: фонового (ambient), диффузного (diffuse) и зеркального (specular). Зеркальный компонент в модели Фонга вычислялся на основе угла между направлением отражённого луча и направлением взгляда, что требовало вычисления вектора отражения.

В 1977 году Джеймс Блинн, работавший в Университете Юты, предложил модификацию, заменившую вектор отражения на вектор половинного угла (half-vector). Это упрощение позволило снизить вычислительные затраты, особенно при использовании аппаратного ускорения, и стало стандартом в графических API, таких как OpenGL и DirectX. Модель Блинна-Фонга быстро вытеснила оригинальную модель Фонга в приложениях реального времени.

Математическая основа

Модель Блинна-Фонга описывает интенсивность отражённого света как сумму трёх компонентов:

\[ I = I_a \cdot k_a + I_d \cdot k_d \cdot \max(0, \mathbf{L} \cdot \mathbf{N}) + I_s \cdot k_s \cdot \max(0, \mathbf{N} \cdot \mathbf{H})^n \]

Где:

  • \(I\) — итоговая интенсивность в точке поверхности.
  • \(I_a\) — интенсивность фонового освещения (ambient).
  • \(k_a\) — коэффициент фонового отражения (материал).
  • \(I_d\) — интенсивность диффузного освещения (от источника).
  • \(k_d\) — коэффициент диффузного отражения.
  • \(\mathbf{L}\) — единичный вектор направления на источник света.
  • \(\mathbf{N}\) — единичный вектор нормали к поверхности.
  • \(I_s\) — интенсивность зеркального освещения.
  • \(k_s\) — коэффициент зеркального отражения.
  • \(\mathbf{H}\) — вектор половинного угла, вычисляемый как \(\mathbf{H} = \frac{\mathbf{L} + \mathbf{V}}{\|\mathbf{L} + \mathbf{V}\|}\), где \(\mathbf{V}\) — вектор направления на наблюдателя.
  • \(n\) — показатель степени, контролирующий размер блика (блеск материала).

Отличие от модели Фонга

В оригинальной модели Фонга зеркальный компонент использует \(\mathbf{R} \cdot \mathbf{V}\), где \(\mathbf{R}\) — вектор отражения \(\mathbf{L}\) относительно \(\mathbf{N}\). В модели Блинна-Фонга используется \(\mathbf{N} \cdot \mathbf{H}\), что эквивалентно косинусу угла между нормалью и половинным вектором. Это упрощение позволяет избежать вычисления вектора отражения, который требует дополнительных операций.

Применение

Модель Блинна-Фонга используется в следующих областях:

  • Компьютерные игры: как стандартная модель затенения для объектов с шероховатыми и глянцевыми поверхностями (например, металл, пластик, кожа).
  • Интерактивная графика: в CAD-системах, симуляторах и визуализациях реального времени.
  • Образование: как базовый пример эмпирического освещения при изучении компьютерной графики.

Модель является частью стандартных шейдеров в графических библиотеках, таких как OpenGL (фиксированный конвейер) и Direct3D (до версии 10). В современных графических API (DirectX 11/12, Vulkan) модель реализуется через программируемые шейдеры.

Классификация

Модель Блинна-Фонга относится к классу эмпирических моделей освещения, в отличие от физически корректных моделей (например, модели Кука-Торренса). Она не моделирует точные физические процессы отражения, а аппроксимирует их для визуального правдоподобия.

Варианты и расширения

  • Модель Блинна-Фонга с текстурированием: позволяет изменять коэффициенты \(k_a, k_d, k_s\) и \(n\) по поверхности с помощью карт текстур (например, карт бликов или нормалей).
  • Модель с несколькими источниками света: суммирование вкладов от нескольких источников, каждый со своими параметрами.
  • Модель с затуханием: учёт ослабления света с расстоянием (линейное, квадратичное).

Критика

Модель Блинна-Фонга имеет ряд ограничений:

  • Нефизичность: не учитывает эффекты Френеля, микрорельеф поверхности и энергосбережение.
  • Артефакты: при низких значениях \(n\) блики могут выглядеть неестественно, а при высоких — создавать «ступенчатые» границы.
  • Зависимость от угла обзора: модель не корректно воспроизводит отражение для сильно шероховатых поверхностей.

В современных приложениях модель Блинна-Фонга часто заменяется более физически корректными моделями, такими как модель Кука-Торренса или модель PBR (Physically Based Rendering), которые обеспечивают реалистичное отражение при различных условиях освещения.

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

  • Джеймс Блинн также известен своей работой над методом карт нормалей (normal mapping) и моделированием поверхности планет.
  • Модель Блинна-Фонга была стандартом в графических процессорах (GPU) до появления шейдерной архитектуры, когда она реализовывалась аппаратно в фиксированном конвейере.
  • В некоторых источниках модель называют «Blinn-Phong shading» или «modified Phong model».

Источники

  • Blinn, J. F. (1977). «Models of light reflection for computer synthesized pictures». ACM SIGGRAPH Computer Graphics.
  • Phong, B. T. (1975). «Illumination for computer generated pictures». Communications of the ACM.
  • Foley, J. D., van Dam, A., Feiner, S. K., Hughes, J. F. (1996). «Computer Graphics: Principles and Practice».
  • Akenine-Möller, T., Haines, E., Hoffman, N. (2018). «Real-Time Rendering».

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

На главную BFOmetr →