Министерство образования Российской Федерации
Московский Государственный Институт Электроники и Математики
(Технический Университет)
Кафедра Информационно-коммуникационных
технологий
Курсовая работа на тему:
«Анализ перспективности использования метода трассировки лучей в 3D моделировании»
Выполнили:
Гулиян Борис
Подзоров Иван
Группа С-35
Москва 2010
Содержание
1. 3D-графика. Введение
2. Прямая и обратная трассировка лучей
3. Алгоритмы трассировки лучей
4. Основные достоинства и недостатки трассировки лучей
5. Применение метода трассировки лучей
6.
Эксперимент.
Задача: "Анализ перспективности использования метода трассировки лучей в 3D моделировании"
Постановка задачи
Ознакомиться с методом трассировки лучей и его использованием в области 3D графики, поставить эксперимент с использованием одного из алгоритмов трассировки лучей.
В нашем эксперименте мы рассматриваем: 1)производительность алгоритма трассировки лучей в зависимости от числа полигонов модели(в качестве модели берутся 3 шара: матовый, прозрачный и зеркальный).
2)Анализ полученых изображений с применением трассировки лучей и без нее.
В Качестве среды для проведения эксперимента используется ПО Blender.
3D-графика. Введение.
Трёхмерная графика раздел компьютерной графики, совокупность приемов и средств, предназначенных для изображения объёмных объектов. Больше всего применяется для создания изображений на плоскости экрана или листа печатной продукции в архитектурной визуализации, индустрии развлечений, печатной продукции, а также в науке, промышленности и в технологии дополненой реальности.
Любое 3D изображение определяется следующими параметрами и объектами:
· Геометрия (построенная медели)
· Материалы (информация о визуальных свойствах модели)
· Источники света (настройки направления, мощности, спектра освещения)
· Виртуальные камеры (выбор точки и угла построения проекции)
· Силы и воздействия (настройки динамических искажений объектов, применяется в основном в анимации)
· Дополнительные эффекты (объекты, имитирующие атмосферные явления: свет в тумане, облака, пламя и пр.)
Задача трёхмерного моделирования — описать эти объекты и разместить их на сцене с помощью геометрических преобразований в соответствии с требованиями к будущему изображению.
Основной проблемой 3D графики и моделировния является получение максимально фотореалистичной картинки с минимальными затратами ресурсов компьютера и времени на обработку сцены. Так как в различных областях существую различные потребности — создаются различные идеи и алгоритмы для решения конкретно поставленной задачи. Одной из таких идей является трассировка лучей, которую мы рассмотрим в нашей работе.
Прямая и обратная трассировка лучей
Трассировка лучей- это метод обработки 3D моделей с получением фотореалистичного изображения, в котором учитывается взаимное расположение объектов, источников света, а также такие физические свойства объектов как отражающая и преломляющая способность.
Существует 2 метода трассировки лучей: прямой и обратный
При прямой трассировке лучей рассматриваются все лучи от источников освещения, попадающие на объекты и в итоге приходящие в глаз наблюдателя. Но такой метод не рационален с точки зрения производительности, потому что приходится обрабатывать все лучи окружения(исходящие и преломляющиеся) во всех направлениях, в том числе и те, которые не попадают на сцену, видимую наблюдателем.
При обратной трассировке лучей все лучи исходят из глаза наблюдателя, тем самым определяя сцену с объектами, для которых в дальнейшем будет произведена обработка. Данный метод позволяет не обрабатывать объекты, не попадающие в видимую область, что значительно уменьшает объем необходимых вычислений.
Все алгоритмы трассировки лучей основаны на методе обратной трассировки лучей.
Алгоритмы трассировки лучей
Рассмотрим принципиальный алгоритм трассировки(Рис. 1). Объектом возьмем сферу.
1. Для каждого пиксела на экране из глаза наблюдателя выпускается луч.
2. После пересечения лучом объекта определяется:
· Прозрачность/непрозрачность объекта. Если объект прозрачный, то из пересечения испускается луч преломления, если непрозрачный — не испускается.
· Освещенность/тень. Из точки пересечения лучом сферы испускаются луч к источнику света (или поочередно для каждого источника света, если их несколько). Если этот луч не пересекает другие непрозрачные объекты или поверхности, значит, источник света непосредственно влияет на освещенность данной точки. Если имеется несколько источников света, то по влиянию всех лучей вычисляется результат, определенный RGB-значением данной точки.
· Отражающая способность. Если объект способен отражать лучи, то из точки пересечения лучом сферы испускается отраженный луч к объектам, которые будут отражены в сфере.
В итоге мы получаем несколько типов лучей. Первичные лучи используются для определения видимости объекта, а вторичные лучи разделяются на следующие:
· лучи преломления;
· лучи тени/освещения;
· лучи отражения.
Рис. 1 Схема алгоритма трассировки лучей
Все остальные алгоритмы основаны на алгоритме, показанном выше, и призваны оптимизировать вычисления.
kd-дерево
Алгоритм построения kd-дерева можно представить следующим образом (будем называть прямоугольный параллелепипед англоязычным словом "бокс" (box)).
1. "Добавить" все примитивы в ограничивающий бокс. Т.е построить ограничивающий все примитивы бокс, который будет соответствовать корневому узлу дерева.
2. Если примитивов в узле мало или достигнут предел глубины дерева, завершить построение.
3. Выбрать плоскость разбиения, которая делит данный узел на два дочерних. Будем называть их правым и левым узлами дерева.
4. Добавить примитивы, пересекающиеся с боксом левого узла в левый узел, примитивы, пересекающиеся с боксом правого узла в правый.
5. Для каждого из узлов рекурсивно выполнить данный алгоритм начиная с шага 2.
Regular grid
Все 3D пространство разбивается на мелкую регулярную сетку, состоящую из N*N*N кубиков. Идея заключается в том, что можно пробегать только по тем по кубикам, через которые пошел луч.
Метод не используется на практике.
Д
остоинства и недостатки
Помимо того, что метод трассировки лучей дает максимальн
1. Возможность рендеринга гладких объектов без интерполяции их полигональными поверхностями (например, треугольниками).
2. Вычислительная сложность метода слабо зависит от сложности сцены.
3. Высокая алгоритмическая распараллеливаемость вычислений — можно параллельно и независимо трассировать два и более лучей.
4. При методе трассировки лучей отражения отображаются идеально (рис.2), причём без сложных алгоритмов, поскольку всё просчитывается основным алгоритмом рендеринга.
Рис. 2 Отражения двух зеркальных шаров друг в друге
У метода трассировки лучей имеются недостатки, наблюдаемые во всех алгоритмах которые определяют сферу использования данного метода.
1. Основным недостатком данного алгоритма рендеринга является его медлительность. Однако алгоритм трассировки лучей хорошо распараллеливается, а число ядер процессора увеличивается каждый год, поэтому мы должны увидеть линейный рост производительности трассировки лучей. Но такой подход не учитывает вторичные лучи (отражения, преломления и определения затенения), а рендеринг с первичными лучами практически не дает улучшения качества изображения по сравнению с классическим алгоритмом.
2. Проблема вторичных лучей заключается в том, что у них абсолютно отсутствует когерентность (сонаправленность). При переходе от одного пикселя к другому нужно рассчитывать совершенно разные данные, что сводит на нет все обычные техники кэширования, очень важные для хорошей производительности. Это означает, что расчёт вторичных лучей очень сильно зависит от задержек памяти.
3. Отсутствие аппаратной поддержки метода (все GPU специализируются на растеризации).
4. Ещё одна характерная проблема метода трассировки лучей касается сглаживания (AA). Лучи проводятся в виде простой математической абстракции, и реального размера они не учитывают. Проверка на пересечение с треугольником является простой логической функцией, которая даёт ответ "да" или "нет", но не даёт таких деталей, как "луч на 40% пересекает треугольник". Прямым следствием такого эффекта будет появление "лесенок"(Рис.3).
Рис. 3 сглаживание теней
И единственной технологией, которая может дать хорошие результаты, является расчёт большего числа лучей, чем есть пикселей, то есть суперсэмплинг(Oversampling или Anti-Aliasing) (рендеринг при большем разрешении).
Также следует помнить, что скорость рендеринга и его качество методом трассировки лучей сильно зависит от оптимизации кода.
Применение метода трассировки лучей
Из-за своих особенностей(фотореалистичное изображение, медлительность вычислений) данный метод применяется в областях, где важно качество картинки, а не время ее рендеринга (при этом чаще всего используются комбинированный методы рендеринга, что позволяет повысить производительность). К Таким областям относятся:
· 3D мультипликация;
· Спецэффекты киноиндустрии;
· Реалистичный рендеринг фотоизображения;
· Cad — системы.
Специальные термины:
Полигональная сетка-совокупность вершин и полигонов, которая определяет форму отображаемого объекта.
Рендеринг (Render) - (англ. rendering — «визуализация») — процесс получения изображения по модели.
Здесь модель — это описание любых объектов или явлений на строго определённом языке или в виде структуры данных. Такое описание может содержать геометрические данные, положение точки наблюдателя, информацию об освещении, степени наличия какого-то вещества и пр.
Рис 4. полигональная сетка
Эксперимент.
В качестве ПО для проведения эксперемента мы выбрали 3D -редактор Blender.
Он достаточно легок в освоении и содержит в себе все не обходимые функции:
· Рендеринг изображения с возможность подключения и отключения трассировщика.
· Oversampling(anti-aliasing или сглаживание)
Мы замеряли время, необходимое на рендеринг 3-х различных сфер(стеклянной, зеркальной и матовой) на различных Уравных Multeris (каждый уровень повышает число полигонов в 4 раза). При повышении уровня время считали от 0.
Ур. Multeris |
Время рендеринга каждого ур. с 0 |
|
Без RayT [c] |
С RayT [c] |
|
2 |
0,53 |
3,36 |
3 |
0,46 |
3 |
4 |
0,54 |
2,84 |
5 |
0,55 |
3,02 |
6 |
0,61 |
3,85 |
7 |
0,96 |
5,96 |
8 |
2,5 |
10,64 |
10 |
29,12 |
43,9 |
Таблица 1.
Рендеринг производился с максимальными параметрами, чтобы увеличить разницу в скорости обработки.
В результате видим, что время на обработку трех сфер с уровнем 4 (по 256 полигонов на каждой сфере) меньше, чем время, потраченное на обработку сфер с уровнем 2 (по 16 полигонов).
Рис 5. полигональные сетки для различных уровней
Итог
Из проведенного эксперимента видно, что время, затраченное на рендеринг 3-х шаров с использованием трассировки существенно больше, чем время, затраченное на рендеринг без использования трассировки лучей. Но в процессе эксперемента было замечено интересное наблюдение: время на обработку 3, 4 и 5 уровневых моделей меньше времени обработи двухуровневой модели.
Анализ полученый изображений: 1)На картинке, полученной без использования трассировки (далее А), видно, что прозрачная сфера не дает эффект линзы (применение альфа-канала), в то время как на картинке, с использованием трассировки лучей (далее Б) прозрачный шар увеличивает объекты за ним(рис. 6).
Рис. 6 прозрачные сферы (слева alpha-канал, справа трассировка лучей)
2)На картинке А нет зеркального шара, т. к получение отражения на нем основано на трассировке лучей(рис. 7).
Рис 7. модель эксперимента (сверху alpha-канал, снизу трассировка лучей).
3)На рисунке 8 видно, что при рендеренге без использывания трассировки лучей, происходит освещение внутренних полостей, куда, по логике, свет проникать не должен.
Рис.8 Падения света на впадены в шаре(слева А, справа Б)
Из данного анализа видно, что качество изображений с использованием трассировки лучей существенно лучше, чем изображений полученных без нее, что оправдывает использование данного метода в областях, где важно качество полученного изображения, а не время его обработки.