Исследование способов трассировки лучей на языке программирования С++ без использования графических библиотек

Автор: Коптенок Елизавета Викторовна, Подвесовская Марина Александровна, Трунников Максим Владиславович, Савенко Арсений Витальевич, Сухарев Евгений Александрович

Журнал: Вестник образовательного консорциума Среднерусский университет. Информационные технологии @vestnik-university

Статья в выпуске: 1 (13), 2019 года.

Бесплатный доступ

В статье рассмотрены достоинства и недостатки существующих алгоритмов трассировки лучей при построении графических изображений. Приводится собственный алгоритм трассировки лучей, требующий минимальных компьютерных ресурсов.

Трассировка лучей, изображение, рендеринг, алгоритм

Короткий адрес: https://sciup.org/140249583

IDR: 140249583

Текст научной статьи Исследование способов трассировки лучей на языке программирования С++ без использования графических библиотек

Keyword . Ray tracing, image rendering, algorithm.

Трассировка лучей в компьютерной графике – метод построения изображений трехмерных моделей в компьютерных программах при помощи отслеживания обратной траектории распространения луча.

Данный метод построения изображений имеет ряд достоинств и недостатков. К достоинствам можно отнести:

  • 1.    Рендеринг гладких объектов без необходимости аппроксимировать их дополнительными полигональными поверхностями. Для отображения поверхности не

  • 2.    Вычислительная сложность алгоритма практически не зависит от сложности сцены. Время работы алгоритма трассировки практически не изменится, если изменить расположение объектов на сцене.

  • 3.    Возможность «зонной» трассировки. Можно разделять экран на определенные участки (зоны) и трассировать их по-разному.


    Рисунок 1. Алгоритм работы программы

    4. Высокая итоговая фотореалистичность изображения. Обуславливается приближенным к поведению фотонов поведением лучей.

    Самый серьезный недостаток метода обратной трассировки лучей – производительность, так как процесс определения цвета пикселя каждый раз начинается зано-


нужно разбивать ее на дополнительные более мелкие поверхности.

во, рассматривая каждый из лучей в отдельности. Однако, данный подход влечет за собой некоторые преимущества, такие как возможность трассировать больше лучей, чем изначально предполагалось. Это влияет на отражения лучей, различные эффекты преломления и в общем – на фотореалистичность изображения.

Исходя из вышеперечисленных достоинств и недостатков, можно сделать вывод, что метод обратной трассировки лучей применяется в тех областях, где качество изображения приоритетнее, нежели время его рендеринга. К таким областям относятся:

  • •    3D мультипликация

  • •    Спецэффекты в киноиндустрии

  • •    Рендеринг фотоизображений

  • •    Системы автоматизированного проектирования (CAD – системы)

  • •    Видеоигры

Алгоритм обратной трассировки лучей очень сложный и требует мощного аппаратного обеспечения. Дабы сократить время работы алгоритма, было принято решение описать его возможностями языка программирования С++, не прибегая к помощи дополнительных графических библиотек, которые будут отнимать часть ресурсов компьютера.

Алгоритм работы программы представлен на рис. 1.

Закрашивание пикселей изображения реализовано при помощи обратной трассировки лучей, алгоритм которой представлен на рис. 2.

Рисунок 2. Алгоритм обратной трассировки лучей

Результат работы алгоритма представлен на рис. 3.

Алгоритм может генерировать подобного рода изображения, в которых присутствует:

  • 1.    Диффузное освещение.

  • 2.    Спекулярное (бликовое) освещение.

  • 3.    Тени.

  • 4.    Отражения.

Суть работы алгоритма состоит в том, чтобы высчитать коэффициенты интенсивности для диффузного и бликового освещения и коэффициент отражательной интенсивности для каждого луча. Сумма этих коэффициентов дает определенный цвет пикселя для изображения.

Данная программа на данный момент позволяет получать лишь статичные изображения. Данный алгоритм планируется совершенствовать и ускорять, чтобы потом на основе его написать полноценный графический движок, реализующий трассировку лучей лишь встроенными возможностями С++.

Рисунок 3. Результат работы алгоритма

Список литературы Исследование способов трассировки лучей на языке программирования С++ без использования графических библиотек

  • Don Fussel. Ray tracing. [Электронный ресурс]. - Электрон. дан.: 2018
  • Jacob K. H. Three-dimensional seismic ray tracing in a laterally heterogeneous spherical Earth. J. Geophys. Res, 2017, vol. 75, pp. 6675-6689
  • Regular grid. [Электронный ресурс]. - Электрон. дан.: 2019
  • Роджерс,Д., Адамс,Дж. Математические основы машинной графики/Пер. с англ.-М.:Машиностроение,2010.-240с
Статья научная