Участник: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) расчетом теней от каждого источника света (требуется определить, "виден" ли источник света из точки пересечения с объектом).