Участник:Vlamakarenko/Трассировка лучей: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 12: Строка 12:
=== Входные данные ===
=== Входные данные ===


<math>scene = {objects, lights, camera}</math> - сцена, которая будет визуализирована алгоритмом, где
<math>scene = \{objects, lights, camera\}</math> - сцена, которая будет визуализирована алгоритмом, где


<math>objects</math> - множество объектов (например сфера, плоскость, треугольник, составной объект и т. п.).
<math>objects</math> - множество объектов (например сфера, плоскость, треугольник, составной объект и т. п.).
<math>lights</math> - множество источников света (точечные источники, направленные источники; объекты, излучающие свет)
<math>lights</math> - множество источников света (точечные источники, направленные источники; объекты, излучающие свет)
<math>camera</math> - камера наблюдения ("виртуальный глаз").
<math>camera</math> - камера наблюдения ("виртуальный глаз").



Версия от 10:48, 17 ноября 2016

Основные авторы описания: В.А.Макаренко, Р.А.Габдуллин

Свойства и структура алгоритма

Общее описание алгоритма

Трассировка лучей - это технология визуализации трехмерных сцен путем отслеживания обратной траектории лучей света (от наблюдателя к источнику). Достоинствами данного метода являются реалистичность итоговых изображений, возможность визуализации гладких объектов без аппроксимации полигональными поверхностями, простота реализации отражений, преломлений, взятия в фокус, реалистичного освещения; возможность параллельной обработки лучей.

Математическое описание алгоритма

Входные данные

[math]\displaystyle{ scene = \{objects, lights, camera\} }[/math] - сцена, которая будет визуализирована алгоритмом, где

[math]\displaystyle{ objects }[/math] - множество объектов (например сфера, плоскость, треугольник, составной объект и т. п.).

[math]\displaystyle{ lights }[/math] - множество источников света (точечные источники, направленные источники; объекты, излучающие свет)

[math]\displaystyle{ camera }[/math] - камера наблюдения ("виртуальный глаз").

Алгоритм трассировки лучей работает с камерой (наблюдателем), множеством объектов сцены и множеством источников освещения. Камера задается положением (точка в трехмерном пространстве) и ортонормированным базисом (локальная система координат). Поставим перед камерой полотно, разбитое на пиксели. Выпустим через каждый пиксел луч. Найдем первое пересечение луча с объектами сцены, расчитаем цвет объекта в точке пересечения (зависит от положения наблюдателя, положения источников света, материала объекта; возможно, понадобится выпустить новые лучи из точки пересечения, чтобы расчитать отражения, преломления, тени от других объектов) и присвоим его соответствующему пикселу.

Вычислительное ядро алгоритма

Основные вычисления связаны с:

1) поиском пересечения луча с объектами сцены

2) расчетом теней от каждого источника света (требуется определить, "виден" ли источник света из точки пересечения с объектом).

Макроструктура алгоритма

Схема реализации последовательного алгоритма

Последовательная сложность алгоритма

Информационный граф

Ресурс параллелизма алгоритма

Входные и выходные данные алгоритма

Свойства алгоритма

Программная реализация алгоритма

Особенности реализации последовательного алгоритма

Локальность данных и вычислений

Возможные способы и особенности параллельной реализации алгоритма

Масштабируемость алгоритма и его реализации

Динамические характеристики и эффективность реализации алгоритма

Выводы для классов архитектур

Существующие реализации алгоритма

Литература