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