Чтобы получить такие эффекты как мягкие тени и визуализировать матриелы из реальной жизни, обладающие нетривиальными свойствами, необходимо использовать более сложную модель, чем обратная трассировка лучей.
В реальности источники света часто не точечные (имеют размер), а материалы не всегда отражают всю энергию в одном направлении по закону “угол падения равен углу отражения”. Такое свойство может быть связано с микрорельефом поверхности или особыми свойствами краски и.т.д.
Рисунок 1. Обычная обратная (слева) и распределенная (справа) трассировка лучей.
Из-за того что источник света имеет размер, границы перехода свет-тень получаются нечеткими, потому что на этих границах затеняющим объектом закрыта только часть источника света. Чтобы вычислить, какая часть источника света закрыта, до него трассируют несколько теневых лучей, выбирая каждый раз случайную точку на источнике освещения для задания направления луча. К сожалению, если тень сильно размыта, может понадобится до нескольких сотен теневых лучей на одну точку, чтобы устранить шум, который неизменно проявляется при использовании случайных чисел.
Рисунок 2. Изображение, полученное при помощи распределенной трассировка лучей.
Аналогично поступают, если у материала сложные отражающие свойства. Нужно испускать несколько отраженных лучей в разных направлениях, сэмплируя BRDF материала в максимумах [8]. Обычно, BRDF по всем направлениям не сэмплируют, так как это очень долго, но в теории так делать можно.Ключевым моментом распределенной трассировки лучей является сэмплирование. Сэмплирование – это просто способ вычисления некоторой функции на множестве с помощью ее значений в точках – сэмплах. Самый простой способ – вычислить N значений в случайных точках и усреднить их. Чем больше сэмплов, тем точнее вычисляется функция. Благодаря сэмплированию, распределенная трассировка лучей позволяет получить следующие эффекты:
· сэмплирование пиксела устраняет ступенчатость;
· сэмплирование линз камеры создает эффект размытия по глубине (depth of field);
· сэмплирование во времени приводит к размытию в движение (motion blur);
· сэмплирование отражений дает нечеткие отражения (glossy reflections);
· сэмплирование преломлений размывает прозрачность;
· сэмплирование источников света дает мягкие тени (penumbras);
· сэмплирование длин волн света позволяет рассчитывать дисперсию
Распределенная трассировка лучей - довольно медленный, но реалистичный метод визуализации. Одним из ключевых моментов, от которого зависит скорость и качество получаемой картинки - правильный выбор количества и направления (в 3D) сэмплов.
Ссылки
[8] Cook, R. L., Porter, T., and Carpenter, L. 1984. Distributed ray tracing. SIGGRAPH Comput. Graph. 18, 3 (Jul. 1984), 137-145.
|