14.12.2020

Объемный рендеринг — техника, используемая для получения плоского изображения (проекции) трехмерного дискретного набора данных.

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

Объемная модель может быть получена либо путём построения полигональной сетки на основе входных данных, либо прямым объемным рендерингом. Алгоритм Marching cubes является стандартным для преобразования набора вокселей в полигональную модель. Прямой объемный рендеринг является сложной вычислительной задачей, которую можно выполнить несколькими способами.

Прямой объёмный рендеринг

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

Объёмный рейкастинг

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

Сплэттинг

Более быстрый способ, дающий изображения худшего качества. Lee Westover называет этот способ «бросанием снежков» (англ. splatting). Вокселы «бросаются» на поверхность просмотра в порядке удаленности от неё, от дальних к близким. Получившиеся «следы от снежков» (сплэты) рендерятся как диски, цвет и прозрачность которых изменяется в зависимости от диаметра в соответствии с нормальным (гауссовым) распределением. В различных реализациях могут использоваться другие элементы или же другие распределения.


Аппаратное ускорение объемного рендеринга

Благодаря тому, что объемный рендеринг легко распараллеливается, специализированное оборудование для его проведения являлось предметом многочисленных научных исследований, до того момента, когда обычные видеокарты стали справляться с этой задачей за приемлемое время. Наиболее популярной технологией являлась VolumePro, которая требовала много памяти и использовала неоптимизированный рейкастинг в качестве базового алгоритма.


Оптимизация

Пропуск пустого пространства

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

Ранняя остановка луча

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

Октодерево и BSP

Использование таких иерархических структур, как октодерево и BSP-дерево, может быть полезным как при сжатии входных данных, так и при оптимизации объемного рейкастинга.

Сегментация пространства

Выделив неинтересные для отображения части пространства ещё до рендеринга, можно значительно уменьшить количество вычислений при рейкастинге или смешивании текстур. В зависимости от используемого алгоритма, вычислительная сложность уменьшится от O(n) до O(log n) для n последовательных вокселей. Применении сегментации пространства помогает значительно ускорить алгоритмы рендеринга, использующие рейкастинг.

Представление со множественным и адаптивным разрешением

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


Имя:*
E-Mail:
Комментарий: