Анализ алгоритмов трассировки лучей для реалистичной визуализации трёхмерных сцен и способов уменьшения их вычислительной сложности

1. Аннотация

Разработан алгоритм трассировки лучей для реалистичной визуализации трехмерных сцен. Использован метод сеточного разделения для уменьшения сложности алгоритма. Проанализированы результаты работы для различных конфигураций и найдены оптимальные значения.

2. Постановка проблемы

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

3. Анализ литературы

Изучен и реализован алгоритм трассировки лучей Вайтеда [1], для уменьшения вычислительной сложности был реализован метод сеточного разделения [2], для решения задачи определения, через какие подпространства проходит луч, использовался алгоритм 3DDA — модификация алгоритма Fujimoto [3].

Цель статьи — модификация алгоритма трассировки лучей для уменьшения его вычислительной сложности и его программная реализация.

4. Постановка задачи исследования

В основу исследования положено изучение алгоритмов реалистичного рендеринга и поиск способа уменьшения их вычислительной сложности для моделирования динамических сцен в реальном времени.

5. Решение задач и результаты исследований

Для трассировки лучей был применён алгоритм Вайтеда [1]. Этот алгоритм можно описать следующими действиями:

  • Для каждого пикселя трассируем первичный луч в направлении V к первой видимой поверхности.
  • Для каждого пересечения трассируем вторичные лучи:
    • Лучи Li в направлении источников света;
    • Отраженные лучи в направлении R;
    • Лучи преломления или проходящие лучи T

Общий вид алгоритма приведен на рисунке 1.

Общий вид алгоритма Вайтеда трассировки лучей

Общий вид алгоритма Вайтеда трассировки лучей

Поиск пересечения лучей и объектов — это наиболее трудоемкая задача и она занимает более 90% времени работы алгоритма. При стандартном использовании алгоритма трассировки лучей ищутся пересечения между лучом и каждым объектом. При этом количество вычислений можно выразить формулой:

n_calculations=〖res〗_x*〖res〗_y*n_objects

Где 〖res〗_x*〖res〗_y — умножение разрешения экрана, что, в принципе, является количеством первичных лучей,

n_objects — количество объектов на сцене.

При этом зависимость сложности от количества объектов равна O(n). Это — довольно трудоемкая задача и ее можно упростить.

Для упрощения разделим пространство на подпространства. То есть разделим все пространство на небольшие кубы. Для трассировки луча будем рассматривать только те подпространства, через которые проходит луч. Вид сверху данного алгоритма схематически изображен на рисунке 2.

Разделение пространства на подпространства

Разделение пространства на подпространства

Для того, чтобы определить, через какие подпространства проходит луч, использовался алгоритм 3DDA — модификация алгоритма Fujimoto [2].

Для реализации алгоритма будем хранить, какие объекты входят подпространство. При просчете также будем идти по всем подпространствам до первого пересечения с объектом, остальные нас не будут интересовать.

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

Расположение объектов, при котором сеточное разделение не выгодно

Расположение объектов, при котором сеточное разделение не выгодно

6. Результаты

Увеличение эффективности работы в зависимости от количества сфер и количества кубиков

Кубы

Сферы

5

10

20

50

100

2

0.72

1.02

1.36

2.08

2.71

4

0.75

1.13

1.68

3.20

4.33

8

0.76

1.20

1.92

3.76

5.25

16

0.78

1.20

1.93

3.76

4.99

32

0.74

1.12

1.69

3.17

3.82

Можно заметить, что данный метод становится более эффективным при большом количестве сфер. Также определено, что оптимальное количество кубов равняется 8.

Зависимость эффективности метода от количества сфер при оптимальном количестве кубов

Зависимость эффективности метода от количества сфер при оптимальном количестве кубов

Зависимость эффективности метода от количества кубов для 100 сфер

Зависимость эффективности метода от количества кубов для 100 сфер

Результат синтеза

Результат синтеза

7. Выводы

Разработан алгоритм трассировки лучей для реалистичной визуализации трехмерных сцен. Использован метод сеточного разделения для уменьшения сложности алгоритма. Проанализированы результаты работы для различных конфигураций. Данный метод становится более эффективным при большом количестве сфер. Определено, что оптимальное количество кубов равняется 8.

8. Список литературы

  1. Don Fussel. Ray tracing. [Электронный ресурс]. — Электрон. дан.: 2013 — Режим доступа: http://www.cs.utexas.edu/~fussel/courses/cs384g/lectures/lecture09-Ray_tracing.pdf
  2. Regular grid. [Электронный ресурс]. — Электрон. дан.: 2013 — Режим доступа: http://www.ray-tracing.ru/articles182.html
  3. An Efficient and Robust Ray-Box Intersection Algorithm. [Электронный ресурс]. — Электрон. дан.: 2013 — Режим доступа: http://www.cs.utah.edu/~awilliam/box/box.pdf