Объёмный рендеринг
Объёмный рендеринг — техника, используемая для получения плоского изображения (проекции) трехмерного дискретного набора данных.
Под входным набором данных часто подразумевается множество плоских изображений слоев, полученное при компьютерной томографии или магнитно-резонансной томографии. Обычно слои имеют равную толщину (например, фотографируется один слой на миллиметр) и равное количество пикселей на каждый слой. Таким образом, входными данными является регулярная сетка вокселов, где каждому вокселу соответствует усредненное значение (температура, плотность материала) в данной точке трехмерного объекта.
Объёмная модель может быть получена либо путём построения полигональной сетки на основе входных данных, либо прямым объёмным рендерингом. Алгоритм Marching cubes является стандартным для преобразования набора вокселей в полигональную модель. Прямой объемный рендеринг является сложной вычислительной задачей, которую можно выполнить несколькими способами.
Прямой объёмный рендеринг
[править | править код]Прямой объёмный рендерер [1][2] сопоставляет значению каждого воксела цвет и прозрачность. Это делается при помощи передаточной функции, которая может задаваться кусочно-линейной функцией или таблицей значений. После этого полученное RGBA значение выводится в кадровый буфер. После прорисовки всего объёма получается цельная картинка.
Объёмный рейкастинг
[править | править код]Объёмный рейкастинг является применением уравнения рендеринга на практике и дает очень качественные изображения.
Сплэттинг
[править | править код]Более быстрый способ, дающий изображения худшего качества. Lee Westover называет этот способ «бросанием снежков» (англ. splatting). Вокселы «бросаются» на поверхность просмотра в порядке удаленности от неё, от дальних к близким. Получившиеся «следы от снежков» (сплэты) рендерятся как диски, цвет и прозрачность которых изменяется в зависимости от диаметра в соответствии с нормальным (гауссовым) распределением. В различных реализациях могут использоваться другие элементы или же другие распределения.
Аппаратное ускорение объемного рендеринга
[править | править код]Благодаря тому, что объёмный рендеринг легко распараллеливается, специализированное оборудование для его проведения являлось предметом многочисленных научных исследований, до того момента, когда обычные видеокарты стали справляться с этой задачей за приемлемое время. Наиболее популярной технологией являлась VolumePro[3], которая требовала много памяти и использовала неоптимизированный рейкастинг в качестве базового алгоритма.
Оптимизация
[править | править код]Пропуск пустого пространства
[править | править код]Часто система объемного рендеринга получает на вход дополнительную информацию, определяющую области, которые не содержат материала, требующего отрисовки. Эта информация может быть использована для того, чтобы не тратить время на отрисовку заведомо прозрачных областей[4].
Ранняя остановка луча
[править | править код]Эта техника используется при рендеринге от ближней плоскости отображения к дальней. Фактически является поверхностным рейкастингом.
Октодерево и BSP
[править | править код]Использование таких иерархических структур, как октодерево и BSP-дерево, может быть полезным как при сжатии входных данных, так и при оптимизации объемного рейкастинга.
Сегментация пространства
[править | править код]Выделив неинтересные для отображения части пространства ещё до рендеринга, можно значительно уменьшить количество вычислений при рейкастинге или смешивании текстур. В зависимости от используемого алгоритма, вычислительная сложность уменьшится от O(n) до O(log n) для n последовательных вокселей. Применении сегментации пространства помогает значительно ускорить алгоритмы рендеринга, использующие рейкастинг.
Представление со множественным и адаптивным разрешением
[править | править код]Менее интересные для отображения области можно также выводить с меньшим разрешением, тем самым избавившись от необходимости обрабатывать лишние входные данные. При необходимости разглядеть данные области поближе можно дополнительно детализировать их, считав соответствующую информацию с диска и проведя дополнительный рендеринг, либо использовать интерполяцию.
См. также
[править | править код]- V3D — свободная и быстрая платформа для объемного рендеринга и анализа изображений для больших изображений (использует OpenGL)
- ImageVis3D — an Open Source GPU volume slicing and ray casting implementation
- VoluMedic — volume slicing and rendering software
- Voreen — volume rendering engine (a framework for rapid prototyping of volume visualizations)
Примечания
[править | править код]- ↑ Marc Levoy, «Display of Surfaces from Volume Data», IEEE CG&A, May 1988. Archive of Paper Архивная копия от 29 марта 2010 на Wayback Machine
- ↑ Drebin, R.A., Carpenter, L., Hanrahan, P., «Volume Rendering», Computer Graphics, SIGGRAPH88. DOI citation link
- ↑ «Fast Volume Rendering Using a Shear-Warp Factorization of the Viewing Transformation» Архивная копия от 3 ноября 2020 на Wayback Machine
- ↑ Pfister H., Hardenbergh J., Knittel J., Lauer H., Seiler L.: The VolumePro real-time ray-casting system In Proceeding of SIGGRAPH99 DOI
- ↑ Sherbondy A., Houston M., Napel S.: Fast volume segmentation with simultaneous visualization using programmable graphics hardware. In Proceedings of IEEE Visualization (2003), pp. 171—176.
- ↑ Max N., Hanrahan P., Crawfis R.: Area and volume coherence for efficient visualization of 3D scalar functions. In Computer Graphics (San Diego Workshop on Volume Visualization) (1990) vol. 24, pp. 27-33.
- ↑ Stein C., Backer B., Max N.: Sorting and hardware assisted rendering for volume visualization. In Symposium on Volume Visualization (1994), pp. 83-90.
- ↑ Engel K., Kraus M., Ertl T.: High-quality pre-integrated volume rendering using hardware-accelerated pixel shading. In Proceedings of Eurographics/SIGGRAPH Workshop on Graphics Hardware (2001), pp. 9-16.
- ↑ Lum E., Wilson B., Ma K.: High-Quality Lighting and Efficient Pre-Integration for Volume Rendering. In Eurographics/IEEE Symposium on Visualization 2004.
- Barthold Lichtenbelt, Randy Crane, Shaz Naqvi, Introduction to Volume Rendering (Hewlett-Packard Professional Books) , Hewlett-Packard Company 1998.
- ↑ Peng H., Ruan, Z, Long, F, Simpson, JH, Myers, EW: V3D enables real-time 3D visualization and quantitative analysis of large-scale biological image data sets. Nature Biotechnology, 2010 (DOI: 10.1038/nbt.1612) Volume Rendering of large high-dimensional image data.
Ссылки
[править | править код]- Tutorial: Interactive Visualization of Volumetric Data on Consumer PC Hardware
- The Visualization Toolkit — VTK Архивная копия от 7 мая 2021 на Wayback Machine is a free open source toolkit, which implements several CPU and GPU volume rendering methods in C++ using OpenGL, and can be used from python, tcl and java wrappers.
- Linderdaum Engine Архивная копия от 24 июля 2008 на Wayback Machine is a free open source rendering engine with GPU raycasting capabilities.