2.2.1 Алгоритм обратной трассировки лучей
Идея алгоритма обратной трассировки лучей унаследована от придуманного ранее алгоритма прямой трассировки лучей. Суть алгоритма в испускании из точки наблюдения луча через каждую точку картинной плоскости и определение интенсивности этой точки путем отслеживания маршрута испущенного луча, который ведет себя по законам геометрической оптики. Алгоритм рекурсивен – при попадании на поверхность объекта луч делится на отраженный и преломленный и продолжает свой путь. Таким образом, можно построить дерево хода луча, где узел является пересечением луча с поверхностью, а исходящие из узла ветви – отраженный и преломленный лучи. Ветвь кончается, когда поиск пересечения соответствующего луча с объектами сцены дает отрицательный результат. Однако при таком подходе легко получить бесконечную рекурсию – в случае, например, расположенных друг напротив друга идеальных зеркал луч будет отражаться от них бесконечно. Для предотвращения подобных эффектов, а также для повышения скорости вычислений вводят предельное значение глубины рекурсии, представляющее собой максимальное количество узлов в дереве луча.
При пересечении луча с поверхностью направления отраженного и преломленного лучей определяются, исходя из законов геометрической оптики.
Отраженный луч строится, исходя из того, что падающий луч, отраженный и нормаль к поверхности в точке касания лежат в одной плоскости, и угол падения равен углу отражения (рис. 2.1).
Для преломленного луча используется закон Снеллиуса, который гласит, что отношение синусов углов падения и отражения равно отношению абсолютных коэффициентов преломления сред (рис. 2.2).
Преломление луча
Рис. 2.2 Вектор преломленного луча вычисляется по формулам /8/:
Где
Необходимо заметить, что основной сложностью алгоритма обратной трассировки лучей является нахождения точки пересечения луча с объектом сцены и определение нормали к поверхности в этой точке. Данный вопрос подробно рассматривается в разделе 2.3.
2.2.2 Глобальная модель освещения Уиттеда
Определение интенсивности точки на поверхности объекта осуществляется согласно глобальной модели освещения Уиттеда:
где
Глобальная модель освещения Уиттеда
Рис. 2.3
Из рис. 2.3 виден смысл входящих в формулу величин. Трассируемый луч
В уравнении Уиттеда интересен член:
где
На рис. 2.4 изображена функция
2.2.3 Стохастический суперсэмплинг
Для повышения реалистичности изображения требуется сглаживание резких переходов цвета на границах между объектами. Путем сравнения изображений полученных без алгоритмов устранения ступенчатости и с ними, был сделан вывод, что применение алгоритмов сглаживания значительно повысило качество изображения и приблизило его к реальности.
Классическим подходом при решении задачи устранения ступенчатости применительно к обратной трассировке лучей является пропускание через каждый пиксел картинной плоскости не одного, а нескольких лучей, а затем усреднение полученных интенсивностей для получения интенсивности видимого пиксела.
Этот метод получил название суперсэмплинга (supersampling – название пришло из области обработки сигналов и означает повышение частоты дискретизации для получения более качественных результатов). На рис. 2.5 видно, что через каждый пиксел пропускается 9 лучей, что означает увеличение времени вычисления в 9 раз.
Известен такой факт, что световые рецепторы на сетчатке человеческого глаза расположены нерегулярно, на случайных расстояниях друг от друга, но не меньше какого-то определенного расстояния. Это послужило дальнейшему развитию алгоритма суперсэмплинга.
После вычисления координат субпикселов к каждому из них применяется небольшое случайное отклонение, после чего через полученные точки пропускаются лучи, и интенсивности усредняются. Этот подход дал более качественное изображение и получил название стохастического суперсэмплинга (рис. 2.6).
Интересен тот факт, что данный метод дает положительные результаты даже при использовании его при пропускании только одного луча на пиксел – в этом случае «лестничный» эффект все равно устраняется. Хотя при внимательном рассмотрении видны неровности на границах перехода цветов, но зрительно изображение выглядит качественней, чем при построении без использования этого метода.
2.2.4 Шум Перлина
Данный алгоритм используется для моделирования неровностей водной поверхности. Шум Перлина генерирует процедурную фактуру, которая затем накладывается на поверхность.