Область применения воксельной графики




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

Медицина

Сейчас самая часто используемая область применения воксельной графики, это медицина.

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

Воксельное октодерево

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




Воксельное октодерево это дерево, корневая нода которого содержит всё пространство, хранимое деревом. Каждая нода делит свё пространство на 8 частей как куб 2х2х2, сохраняя в своих 8 потомках подпространства своей области. Если вся область поддерева занимается однородным материалом, то поддеревья не хранятся, что сильно экономит память, и позволяет некоторым алгоритмам, таким как трассировка лучей, эффективно проходить целые области вокселей.

Программа DICOM Viewer для визуализации медицинских данных использует октодеревья для визуализации, выполняемой на CPU, но для GPU данные представляются как непрерывная сетка. Это связано с тем, что октодерево, как иерархическая структура данных, очень плохо подходит для параллельного рассчёта трассировки лучей, и других алгоритмов, на графических процессорах.

Marching cubes

Другой важный алгоритм воксельной графики это marching cubes, который используется для сглаживания воксельной сетки при отображении.

Если рендерить воксели классическим путём, как набор кубов, они могут выглядеть не достаточно эстетично для некоторых целей. Довольно простым способом сглаживания острых граней является алгоритм marching cubes, который в зависимости от соседних вокселей выбирает тот или иной набор скошенных граней вокселя.

Игры


На заре трёхмерных игр было довольно много экспериментов с воксельной графикой, в таких играх как Вангеры или Blade Runner 1997 года. Но в современном мире воксели применяют в основном как вспомогательное промежуточное представление для рассчёта некоторых эффектов.

Cone tracing

Cone tracing наиболее популярный из таких алгоритмов. Он применяется для расчёта отражений глобального освещения.

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

Анимация и кинематограф


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

OpenVDB

Самая популярная библиотека
реалистичного рендера при помощи вокселей, это OpenVDB. Библиотека предоставляет собственную структуру данных, называемую VDB, и множество способов работы с ней. В том числе имеются алгоритмы рассчёта завихрений воздуха, для реалистичной симуляции туманов и облаков, симуляция жидкостей, и множество других алгоритмов.

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