Воксел

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 85.236.189.84 (обсуждение) в 11:09, 18 февраля 2021 (Вокселы в компьютерных играх). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
Воксельная модель. Один воксел соответствует одному кубику
Воксельное изображение макромолекулы рибосомы, созданное с использованием PyMOL.

Во́ксел (в разговорной речи во́ксель, англ. Voxel — образовано из слов: объёмный (англ. volumetric) и пиксель (англ. pixel)) — элемент объёмного изображения, содержащий значение элемента растра в трёхмерном пространстве. Воксели являются аналогами двумерных пикселей для трёхмерного пространства. Воксельные модели часто используются для визуализации и анализа медицинской и научной информации.

В компьютерной графике воксели используются как альтернатива полигонам. Новички иногда ошибочно считают воксели заменой для физических пикселей (элементов матрицы дисплея). На самом деле под вокселом обычно понимается виртуальный элемент, соответствующий набору из шести прямоугольных полигонов. Всё в виртуальном мире — виртуальные пиксели, полигоны и воксели — должно быть спроецировано на пиксели физического экрана:[источник не указан 1903 дня]

  • Виртуальными пикселями «рисуют» плоские 2D модели объектов в 3D мире.
  • Полигонами или 2D плоскостями как бы обволакивают пустое 3D пространство.
  • Вокселями выкладывают объёмные модели объектов, которые имеют внутренности.

То есть в отличие от полигонов и пикселей, воксели — это истинный 3D кирпичик, а не 2D плоскость, которая «окружает» пустое 3D пространство.[источник не указан 1903 дня]

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

  1. либо с помощью плоских полигонов — тем самым будет создана полая модель без внутреннего наполнения, но для тех, кто наблюдает 3D, часто и не требуется знать, что, например, у 3D кошки внутри ничего нет. Для наблюдателя достаточно лишь хорошо сшитой из треугольных полигонов поверхности кошки.
  2. либо с помощью объёмных кубиков — вокселей, которые полностью заполняют внутренности 3D модели, где каждый такой кубик несёт в себе информацию о том, чем он является, например, кожей, мышцами, костями и т.д.[источник не указан 1903 дня]

Ввиду того, что полигональные модели пусты по своей природе, очень трудно моделировать их поведение в 3D мире. Например, если программисту нужно смоделировать поведение воды в 3D игре про пиратов, он сталкивается с проблемой: как смоделировать волны на поверхности воды? Как моделировать всплески воды, ведь вода в игре — это просто ковёр, сплетённый из треугольников голубого цвета, под этой плоскостью ничего нет, а между тем нужно показать пенящуюся и плескающуюся воду. То есть надо показать отделение частей воды друг от друга в виде пены и всплесков. Приходится вводить новые объекты в память компьютера, а управление этими дополнительными объектами требует большого искусства именно от программиста, а не от дизайнера.[источник не указан 1903 дня]

Если же воду моделировать через воксели, то всё становится гораздо проще, ибо вся вода от поверхности океана и до дна состоит из «атомов», которые легко «отделяются» друг от друга естественным, с точки зрения программиста, путём.[источник не указан 1903 дня]

Представление в памяти

Модель кошки в воксельном (слева) и полигональном (справа) представлении

Как и в случае с пикселями, сами по себе вокселы не содержат информации о своих координатах в пространстве. Их координаты вычисляются из их позиции в трёхмерной матрице — структуре, моделирующей объёмный объект или поле значений параметра в трёхмерном пространстве.

Этим вокселы отличаются от объектов векторной графики, для которых известны координаты их опорных точек (вершин) и прочие параметры.

Воксельные модели имеют определённое разрешение. Каждый воксел имеет определённое значение, например, цвет.

Для хранения воксельной модели применяют массив размерами X×Y×Z. Несжатые воксельные модели (по сравнению с векторными) потребляют гораздо больше места в памяти для обработки. К примеру, одна несжатая модель размером 256×256×256 вокселей будет занимать память объёмом от 32 МБ (256*256*256=16777216 вокселей и как минимум 2 байта на воксель даже в 256 градациях серого, так как к ним надо добавить 256 градаций прозрачности, итого 16777216*2=33554432 байт=33554432/1024=32768 КБ = 32768/1024=32 МБ), в то время как векторной модели может потребоваться в десятки или даже сотни раз меньше.

Построение воксельного октодерева

Разреженное воксельное октодерево

Одной из новейших перспективных технологий, позволяющей делать эффективную детализацию воксельных объектов, является разреженное воксельное октодерево (sparse voxel octree). Её преимущества: значительная экономия памяти, естественная генерация уровней детализации (аналога mipmap-карт) и высокая скорость обработки в рейкастинге.

Первый узел дерева — корень — является кубом, содержащим весь объект целиком. Каждый узел или имеет 8 кубов-потомков, или не имеет никаких потомков. В результате всех подразбиений получается регулярная трёхмерная сетка вокселей.

Докселы

Докселы — это вокселы, изменяющиеся во времени. Как ряд картинок составляет анимацию, так и ряд воксельных моделей во времени могут составлять трёхмерную анимацию.

Области применения

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

Медицинские данные

Модель, построенная из 150 слоев с МРТ с использованием алгоритма marching-cubes. Размер сетки 64x64x150

Ряд медицинских устройств, например, сканеры компьютерной томографии, трехмерное УЗИ, МРТ выдают послойную информацию при сканировании. По завершении сканирования строится воксельная модель. Значения вокселей в этом случае отражают данные с устройства. В компьютерной томографии, например, это прозрачность тела по шкале Хаунсфилда, то есть прозрачность для рентгеновских лучей.

Для воксельных моделей (например, медицинских данных со сканера МРТ) просто реализуется вывод любого сечения модели. Это даёт возможность изучить любой срез данных.

Визуализация

Визуализация воксельной модели на трёхмерном дисплее Perspecta volumetric

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

Для улучшения качества изображения используются более сложные алгоритмы отрисовки: алгоритм Marching cubes и другие. Алгоритм «Marching Cubes» (бегущие кубики) строит изоповерхность, опираясь на данные вокселов. Обычная реализация алгоритма использует значения 8-ми соседних вокселов, чтобы отрисовать полигон внутри куба, образованного их координатами. Так как существует всего 256 возможных комбинаций, можно заранее их подготовить и использовать типовые «кирпичики» (уже в экранных координатах) для отрисовки больших объёмов данных в хорошем качестве.

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

Объёмные дисплеи

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

Иногда для таких дисплеев указывается их разрешение в вокселах, например 128×128×128.

Вокселы в компьютерных играх

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

Воксельные движки встречались в играх:

  • Игра Space Engineers, где воксельная графика используется для создания и изменения ландшафта планет, лун и астероидов, а также разнообразных пород для добычи ресурсов.
  • Компания NovaLogic использовала воксельные графические движки в сериях игр Delta Force, Armored Fist и Comanche.
  • Игры Command & Conquer: Tiberian Sun и Command & Conquer: Red Alert 2 от компании Westwood Studios использовали воксельные модели транспортных средств.
  • Игра Blade Runner.
  • Игра Outcast использовала вокселы для прорисовки объектов.
  • Игра Amok.
  • Игра Rising World - игра с процедурно-генерируемым миром, которая представляет собой песочницу (с различными режимами, включая выживание), построенная на воксельной графике. Благодаря этому можно полностью изменять ландшафт (копать пещеры, строить, наращивать горы и создавать водоемы).
  • Игра Вангеры использовала большие многоуровневые непрерывные воксельные пространства с изменяемыми «живыми» ландшафтами.
  • В движке Build Engine есть возможность использования воксельных объектов. Такие объекты используются в шутерах Shadow Warrior и Blood, построенных на этом движке, а также в переработанном Duke Nukem 3D High Resolution Pack.
  • Игра Thunder Brigade.
  • Игра Clone Drone in the Danger Zone.
  • Master of Orion III использует воксельную графику для отображения космических битв и солнечных систем.
  • В игровом движке CryEngine 2, который использовался в играх Crysis, Crysis Warhead и Crysis Wars, вокселы использовались для построения пустых пространств под поверхностью ландшафта уровня.
  • В 3D-шутере Z.A.R (1997) и аддоне Mission Pack (1999) использовался воксельный движок для отображения разрушаемого ландшафта.
  • Игры Worms 3D и Worms 4: Mayhem использовали «покселы» (англ. poxel, образовано от voxel (воксел) + polygon (полигон)) для динамически разрушаемого трёхмерного ландшафта, подобного ландшафту в двухмерных версиях.
  • Игра Hexplore.
  • Игра Minecraft использует подобие воксельной графики для создания случайно генерируемого ландшафта, но рендеринг производит с помощью полигонов.
  • Игра PixARK (похожа на ARK: Survival Evolved, но имеет воксельную гафику)
  • Игра Voxelstein 3D использует воксельный движок «Voxlap», благодаря которому вся геометрия игры построена на вокселах и полностью разрушаема[3].
  • Движок id Tech 6 компании id Software будет использовать инновационную технологию «Sparse Voxel Octree» (SVO, рус. Разреженное воксельное октодерево) для визуализации статических объектов (ландшафта, массивных строений и т. д.) игрового уровня.
  • Графический движок OTOY, ориентированный на серверное исполнение, будет использовать вокселы для построения геометрии уровня и трассировку лучей для освещения.
  • Игра Ace of Spades использует воксельный движок Voxlap.
  • Игра Cube World использует воксельную графику для создания случайно генерируемого игрового мира, моделей игроков и NPC.
  • Игра Trove использует воксельный движок, написанный на C++.
  • Игра Nex Machina компании Housemarque.
  • Игра 7 days to die
  • В игре Astroneer игровой процесс полностью базируется на преобразовании воксельного ландшафта в структуры, необходимые игроку для достижения поставленных задач: пещеры, тоннели, мосты, дороги и т.д.
  • Игра No Man’s Sky использует воксельный рендеринг.
  • А также игра Barony
  • И игра Teardown

См. также

Примечания

Ссылки