Назад в библиотеку

Организация реалистичной стерео визуализации сцен 3D-графики

Авторы: П.А. Порфиров, И.А. Звягинцев, С.А. Зори
Источник: Информационные управляющие системы и компьютерный мониторинг (ИУС-2014) / Материали V всеукраинской научно-технической конференции студентов, аспирантов и молодых ученых. – Донецк, ДонНТУ – 2014. http://www.techradar.com/news/television/active-shutter-vs-passive-3d-tv-which-is-best-958717

Аннотация

Порфиров П.А., Звягинцев И.А., Зори С.А. Организация реалистичной стерео визуализации сцен 3D-графики. Рассмотрены основные методы реалистичной стерео визуализации 3D-сцен, основанные на принципе трассировки лучей. Изучены способы повышения их производительности при реализации на CPU и GPU. Проведен анализ существующих методов 3D-стерео визуализации, обзор существующих форматов 3D видео, рассмотрены средства сжатия видео потоков для организации вывода потока на стандартные устройства 3D-стерео визуализации.

Ключевые слова

3D-стерео визуализация, трассировка лучей, GPU, стерео3D-видео технологии, видеопоток, видеокодек

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

Современные исследования показывают, что реализация алгоритмов трассировки лучей в составе систем стерео 3D-визуализации позволит выйти на качественно новый уровень отображения результатов 3D-компьютерной симуляции и моделирования, а также потенциальную возможность использования GPU для достижения требуемого быстродействия при организации 3D-стерео визуализации методами трассировки лучей на стандартных устройствах 3D-стерео.

В статье решаются следующие подзадачи:

Цель статьи:

анализ возможности реализации реалистичной 3D-стерео визуализации сцен трехмерной графики на компьютерных системах с GPU.

Организация пространственной стерео-визуализации в современных компьютерных системах 3D-графики.

На сегодняшний день можно выделить два основных способа пространственной 3D-визуализации: пространственная объемная 3D-визуализация (3D-volumetric visualization) и стереоскопическая 3D-визуализация (3D-stereoscopic visualization).

При стереоскопической визуализации вначале рассчитываются проекции сцены с двух ракурсов, задающих расположение глаз наблюдателя, а затем выполняется отображение полученной стереопары на стереоскопическом 3D-дисплее. Стереоскопическая визуализация на сегодняшний день является наиболее распространенным способом пространственной визуализации, так как не требует дорогого оборудования и использует классические методы синтеза изображений.

Метод объемной визуализации не требует предварительного проецирования сцены на плоскость, используя вместо плоских изображений дискретизованные объемно-пространственные модели, которые отображаются на объемных дисплеях. Высокая стоимость устройств, построенных на базе объемных технологий визуализации, а также отсутствие единого стандарта представления 3D-информации для данных устройств являются основными причинами их малой распространенности.

Для получения корректной и качественной визуализации в системах пространственной визуализации обычно используются методы трассировки лучей. В частности, при стереоскопической визуализации применяется классический метод трассировки лучей или более простой его вариант – Ray casting. В системах объемной 3D-визуализации используют метод Volume Ray-casting, предназначенный для трассировки объемов.

Выбор метода трассировки лучей и его современные модификации для реализации на GPU.

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

Принцип трассировки лучей используется рядом алгоритмов, классическим среди которых считается Whitted ray tracing.

Р. Кук в алгоритме Distributed ray tracing предложил метод трассировки лучей на основе случайной выборки, что позволило визуализировать эффекты мягких теней, объемные источники освещения, нечеткие отражения и преломления, а также эффекты глубины резкости и смазывания в движении. Дж. Кажия открыл уравнение визуализации, обобщающее существующие алгоритмы визуализации, и предложил алгоритм Path tracing, в котором выполняется выборка из всех возможных путей лучей, что позволяет визуализировать любые эффекты глобального освещения (в рамках геометрической и волновой оптики).

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

Среди смещенных методов снижения шума можно назвать метод Photon mapping, который включает в себя предварительный этап трассировки лучей от источников освещения с сохранением информации в фотонную карту.

Среди популярных на сегодняшний день алгоритмов трассировки, позволяющих снизить количество шума, являются двухпроходные Bidirectional path tracing и Metropolis light transport.

Результаты экспериментов Т. Вайтеда показали, что при трассировке сложных сцен на процедуру поиска пересечений в среднем уходит 95% времени работы программы. Классификация и обзор основных методов, используемых для снижения затрат на обход сцены, приведена в [1].

Комбинированные алгоритмы, совмещающие алгоритмы растеризации и трассировки лучей не дают существенных преимуществ по сравнению с классической трассировкой лучей. Несмотря на использование трассировки только в специфических участках изображения, в интерактивных сценах часто возникает ситуация, в которой необходимо производить полную трассировку сцены [2].

В [3] предлагается трассировать часть пикселов изображения, получая цвета остальных с помощью интерполяции. Данный метод может быть довольно эффективен в случае классической трассировки лучей, однако при стохастической трассировке близко расположенные пикселы могут иметь существенно различающиеся из-за шума цвета.

Для ускорения процесса поиска пересечений, обычно выполняется построение иерархической (древесной) ускоряющей структуры. Наибольшее распространение получили Kd-деревья и BVH. В [4] предложен метод трассировки, использующий сегментацию примитивов «на лету» в процессе обхода луча, что избавляет от необходимости предварительно строить ускоряющие структуры. Автор отмечает, что алгоритм работает эффективно только в случае одновременной трассировки очень большого количества лучей.

В [5] проанализированы основные проблемы организации трассировки на GPU, проведен сравнительный анализ трех вариантов распараллеливания алгоритма трассировки путей.

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

Данный алгоритм предоставляет возможность выборочно вычислять отдельные виды освещения (например, только прямое или только непрямое). Сцена в классическом варианте Path tracing может содержать только объемные источники освещения, однако возможно расширение алгоритма для поддержки точечных источников, более простых для расчета. Так как в Path tracing в общем случае должно использоваться не менее двух лучей на пиксел, то проблема алиасинга, наблюдаемая в случае классической трассировки лучей, не возникает. Также следует отметить, что алгоритм является несмещенным и сходится к корректному решению задачи визуализации, позволяя получить физически точное изображение.

В качестве ускоряющей структуры при визуализации динамических сцен предлагается использовать бинарное дерево BVH с AABB в узлах. По сравнению с реализацией [6], это решит проблему «чайника на стадионе».

В качестве платформы для реализации алгоритма используется видеопроцессор nVidia с поддержкой технологии CUDA. Как известно, современные GPU имеют SIMD-архитектуру, поэтому наиболее эффективно выполняют код без ветвлений и, тем более, рекурсии. Так как в Path tracing отсутствует ветвление лучей, а само уравнение визуализации может быть преобразовано в итеративную форму, то проблема рекурсии в данном случае отсутствует.

Далее представлена общая схема потоков данных между CPU и GPU (рис. 1). Предварительно вся необходимая для трассировки информация должна быть скопирована на GPU (в глобальную память). CUDA не имеет средств для вывода сгенерированного изображения на экран, предлагается использовать графические API, в частности, кроссплатформенный OpenGL, предоставляющие данный функционал. Так как буферы, с которыми работает OpenGL, как и данные для ядер CUDA, будут расположены в видеопамяти, то после синтеза изображения дополнительные пересылки данных обратно на CPU не потребуются. Кроме того, появится возможность пост-обработки изображения стандартными шейдерами на GLSL (естественно, пост-обработка может быть выполнена и с помощью device-функций CUDA).

pic1

Рисунок 1 – Диаграмма потоков данных между CPU и GPU

Организация стерео-вывода изображений и потоков для стандартных 3D-устройств.

Одной из подзадач разработки реалистичной визуализации трехмерных сцен является организация стерео-вывода для стандартных устройств 3D-визуализации (стерео мониторов и 3D-ТВ). Подразумевается, что на входе имеются два видео потока (левый и правый ракурс), которые нужно обработать так, чтобы 3D-аппаратура воспринимала результат обработки как стандартное 3D-видео. При этом, важна максимальная скорость преобразований, так как вывод должен осуществляться онлайн.

На сегодняшний день существует три основных метода стерео визуализации: анаглиф, активные 3D-технологии (затворные) и пассивная 3D-технология.

Анаглиф – один из самых простых и старых способов получения 3D-изображения. Для выделения левого и правового ракурса используются светофильтры (специальные очки с линзами разного цвета (чаще всего, это красный и синий цвет)).

Отсюда возникают основные недостатки этого метода:

  1. Искажение оттенков (ввиду цветового принципа деления ракурсов) и биение конфликтных цветов (мерцание цветов совпадающих с цветами стекол в противоположных стеклах)
  2. Г-хостинг (двоение) (появляется ввиду некачественных цветофильтров, некачественного видеоматериала или искажения цветов при передачи видео на экран) [7].

Отличительной особенностью активного 3D является поочередная передача изображения на каждый глаз. Для этого используются специальные очки, которые называются затворными или 3D-очками с активным затвором. При использовании, такие очки с большой скоростью поочередно закрывают то левый, то правый глаз [8].

При пассивной 3D технологии два изображения одновременно выводятся на экран. Изображения пропускаются через поляризационные световые фильтры (под разными углами) и параллельно передаются в очки, не накладываясь при этом друг на друга. Очки, используемые в пассивной технологии, также имеют поляризационные световые фильтры и воспринимают только «свою» информацию (предназначенную для конкретного глаза).

При анаглифной технологии на экран выводится совмещенное 2D-изображение, полученное предварительно из стереопары путем обработки и цветофильтровой «раскраски» анаглифа.

При использовании активной и пассивной технологий, использующей раздельные стереокадры изображения, применяют различные форматы представления 3D-видео.

Для затворной технологии используются форматы полных стереопар (раздельные полные горизонтальные и вертикальные стереопары, и их упакованный разностный формат (фреймпакинг) и анаморфных (уменьшенных в разрешении в 2 раза) стереопар (анаморфная вертикальная стереопара и анаморфная горизонтальная стереопара).

Горизонтальная стереопара подразумевает, что выводятся сразу два изображения: левый ракурс слева, правый – справа, или наоборот, аналогично и вертикальные стереопары – один ракурс располагается сверху, а другой – снизу, или наоборот.

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

Среди форматов сжатия 3D видео стандартным является MPEG-4 AVC/H.264.

После анализа существующих методов стерео визуализации и форматов 3D-видео, ввиду необходимости получения максимального качества и скорости процесса вывода, принято решение организации стерео-вывода на основе активной технологии с применением анаморфирования.

Для сжатия 3D-видео используется лицензируемый стандарт H.264, MPEG-4 Part 10 или AVC. Для обработки используется кодек х264. Видео будет получено в формате mkv.

Предполагается, что в текущий момент времени осуществляется одновременная запись каждого потока (для левого и правого глаза) на жесткий диск. Для того, чтобы «на лету» получать стереоизображение из этих двух потоков, нужно по очереди получать «родственные» кадры из каждого потока (файла, при этом должна быть реализована синхронизация обработки этих двух файлов) и выводить их на экран один за другим.

Таким образом, структура программного модуля стерео-вывода имеет следующий вид (рис. 2):

pic2

Рисунок 2 – Структура программного модуля стерео-вывода

На вход подаются два видеопотока (левый и правый ракурс). Программа по очереди получает кадры из каждого из двух потоков и осуществляет вывод на экран со стандартной частотой 60 Гц.

Полученный экспериментальный стерео-кадр видео в формате анаморфной горизонтальной стереопары показан на рисунке 3.

pic3

Рисунок 3 – Стерео-кадр в формате анаморфной горизонтальной стереопары

Выводы.

В статье выполнен анализ возможности реализации реалистичной 3D-стерео визуализации сцен трехмерной графики на компьютерных системах с GPU. Проанализированы основные методы пространственной визуализации 3D-сцен, предложена структура вычислительной системы стерео-визуализации. Проанализированы основные алгоритмы трассировки лучей, указаны их главные преимущества и недостатки. Выполнен обзор классических методов ускорения процедуры трассировки лучей и их современных модификаций, в том числе оптимизированных для параллельного исполнения. Проведен анализ существующих методов вывода стерео видеопотока на стандартные устройства 3D-стерео визуализации, рассмотрены форматы 3D видео и стандартные видеокодеки, использующиеся для сжатия 3D-стерео видеопотока. Предложена структура программной системы для вывода видеопотока на стандартные устройства 3D-стерео визуализации.

Список источников

  1. Arvo J., Kirk D. A survey of ray tracing acceleration techniques. Glassner A.S. (Ed.), An Introduction to Ray Tracing, Morgan Kaufmann (1989), pp. 201 – 262.
  2. Разработка ускоренного алгоритма трассировки лучей. [Электронный ресурс]. – Режим доступа: http://masters.donntu.ru/2010/fknt/serezhenko/diss/index.htm.
  3. When Will Ray Tracing Replace Rasterization? [Электронный ресурс]. – Режим доступа: http://www.tomshardware.com/reviews/ray-tracing-rasterization,2351-8.html.
  4. Incoherent Ray Tracing without Acceleration Structures. Attila T. Afra., Eurographics Short Papers, page 97-100. Eurographics Association, (2012)
  5. Afra, A. T. and Szirmay-Kalos, L. (2014), Stackless Multi-BVH Traversal for CPU, MIC and GPU Ray Tracing. Computer Graphics Forum, 33: 129 – 140. doi: 10.1111/cgf.12259
  6. Анализ алгоритмов трассировки лучей для реалистичной визуализации трёхмерных сцен и способов уменьшения их вычислительной сложности / Запорожченко И.А., Григорьев М.А., Зори С.А. – ИУС КМ 2013. – Донецк, ДонНТУ – 2013.
  7. Анаглиф – один из самых старых и самый ругаемый вариант 3D. [Электронный ресурс]. – Режим доступа: http://rav-anaglyph.ru.
  8. 3D активное или пассивное – что лучше. [Электронный ресурс]. – Режим доступа: http://televizor-info.ru/eto-interesno/3d-aktivnoe-ili-passivnoe-chto-luchshe.html.