Выбор модели освещения при построении изображения с использованием метода Фонга
Российский университет дружбы народов, *****@***com
В работе рассматриваются способы описания освещения при построении изображений 3D объекта. Затенение по Фонга — модель расчёта освещения трёхмерных объектов. Данный алгоритм постоянно улучшается и является мощным инструментом в руках разработчиков ПО.
Ключевые слова: Алгоритм Фонга, рендеринг, освещение 3D сцены, фрагментный шейдер.
Введение
Задача построения изображений трехмерных объектов появляется как в научных исследованиях, так и в индустрии развлечения. Одним из наиболее часто применяемых алгоритмов является алгоритм Фонга, который, в частности, реализован в игровом «движке» “Source”. Он интересен тем, что использует улучшенный алгоритм анализа трассировки света, учитывающий различные варианты формирования бликов и ореолов при отражении света, что позволяет добиться значительной степени реалистичности. Появляется задача выбора варианта реализации использованной в описанном «движке» модели освещения и способа организации данных о сцене.
Постановка задачи
Задачей исследования были выбор способа описания освещения сцены, аналогичной модели “Source”, и выбор варианта реализации алгоритма построения изображения, базирующегося на предложенной модели освещения.
Используемый язык С++ – язык высокого уровня – поддерживает такие парадигмы программирования, как процедурное программирование, объектно-ориентированное программирование, обобщенное программирование и обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции.
Выбранной для работы моделью сцены является модель бюста человека. Фоном является концепция помещения с 3-мя источниками света.
Пользователю доступен интерфейс для ввода данных и набор инструментов, позволяющих производить добавление и удаление источников света. Программа обрабатывает сформированные данные и строит изображение конечной сцены (Рис. 1).

Рис. 1. Алгоритм выполнения программы
Принцип работы программы
Использование вершинного шейдера позволяет выстраивать более «гладкую» модель за счёт увеличения количества используемых вершин. Возникающая проблема увеличения количества хранимых данных решается при помощи преобразования многомерного массива в одномерный. Это уменьшает время доступа при запросе. В программе используется вершинный шейдер, выполняющий часть функций графического конвейера, в частности – преобразование данных вершин.
Фрагментный шейдер обрабатывает каждую видимую часть конечного изображения. Внутри фрагментного шейдера обрабатывается все данные, связанные с видом поверхности – освещение, тени, отражения, текстуры и расчет их смешивания. Результатом работы фрагментного шейдера, является цвет пикселя в формате RGBA (красный, зеленый, синий и альфа-канал) (Рис. 2). [1]
Рис 2. Принцип работы шейдеров
Заключение
В работе был рассмотрен способ формирования модели освещения при построении изображений трехмерных объектов с использованием алгоритма Фонга. В модели освещения описаны эффекта бликов (отражения света от поверхности), а также эффект ореола (распределения света при наведении камеры на источник света). Алгоритм позволяет достичь появления на изображении данных эффектов благодаря улучшенной модели падения света. Используемые библиотеки: Cg (библтотека от фирмы nVidia), стандартные библиотеки glut/gl и glu. Был использован метод хранения данных в виде многомерных массивов, в том числе динамический массив с изменяемыми количеством мерностей и переменных [2].
Литература
1. Боресков А. М. Б. Разработка и отладка шейдеров // БХВ-Петербург, 2006. – 488 с.
2. OpenGL Shading Language Specification v 1.30.8 // https://www. opengl. org/registry/ doc/GLSLangSpec. Full.1.3.
USING METHODS OF STORAGE and their use in dealing with methods Fong, by constructing models of objects
Palchevky A. I.
Peoples’ Friendship University of Russia, *****@***com
The paper considers algorithms for constructing 3D objects lighting. Now the use of improved lighting algorithm based on the method of Phong, spread very widely, as well as in research and in the entertainment industry. This algorithm is constantly improving and is a powerful tool in the hands of software developers.
Кеу words: algorithm Phong, rendering, lighting a 3D scene, the fragment shader.


