Модель Блинна-Фонга
Модель Блинна-Фонга — это эмпирическая модель затенения в трёхмерной компьютерной графике, используемая для аппроксимации отражения света от поверхности. Она является модификацией модели Фонга, предложенной в 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 →


