Софт

воксел

Рейтинг: 4.7/5.0 (18 проголосовавших)

Категория: Android

Описание

Воксел

Воксел | Универсальная энциклопедия

Воксельная модель кошки рядом с полигональной (векторная графика) моделью кота.

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

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

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

Для хранения воксельной модели применяют массив размерами 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.

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

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

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

  • Компания NovaLogic использовала воксельные графические движки в сериях игр Delta Force. Armored Fist и Comanche .
  • Игры Command & Conquer: Tiberian Sun и Command & Conquer: Red Alert 2 от компании Westwood Studios использовали воксельные модели транспортных средств.
  • Игра Blade Runner .
  • Игра Outcast использовала вокселы для прорисовки объектов.
  • Игра Amok.
  • Игра Вангеры использовала большие многоуровневые непрерывные воксельные пространства с изменяемыми «живыми» ландшафтами.
  • В движке Build Engine есть возможность использования воксельных объектов. Такие объекты используются в шутерах Shadow Warrior и Blood. построенных на этом движке, а также в переработанном Duke Nukem 3D High Resolution Pack.
  • Игра Thunder Brigade.
  • Master of Orion III использует воксельную графику для отображения космических битв и солнечных систем.
  • В игровом движке CryEngine 2. который использовался в играх Crysis. Crysis Warhead и Crysis Wars. вокселы использовались для построения пустых пространств под поверхностью ландшафта уровня.
  • Игры Worms 3D и Worms 4: Mayhem использовали «покселы» (англ. poxel. образовано от voxel (воксел) + polygon (полигон)) для динамически разрушаемого трёхмерного ландшафта, подобного ландшафту в двухмерных версиях.
  • Игра Hexplore.
  • Игра Minecraft использует воксельную графику для создания случайно генерируемого игрового мира, моделей игроков и NPC.
  • Игра Voxelstein 3D использует воксельный движок «Voxlap», благодаря которому вся геометрия игры построена на вокселах и полностью разрушаема. [3]
  • Движок id Tech 6 компании id Software будет использовать инновационную технологию «Sparse Voxel Octree » (SVO, рус. Разреженное воксельное октодерево ) для визуализации статических объектов (ландшафта, массивных строений и т. д.) игрового уровня.
  • Графический движок OTOY. ориентированный на серверное исполнение, будет использовать вокселы для построения геометрии уровня и трассировку лучей для освещения.
  • Игра Ace of Spades использует воксельный движок Voxlap.
  • Готовящаяся к выходу игра Cube World использует воксельную графику для создания случайно генерируемого игрового мира, моделей игроков и NPC.
См. также Примечания Ссылки

Другие статьи, обзоры программ, новости

Voxel technology

Воксели Вступление

Слово воксель - voxel - образовано от слова VO lume и аббревиатуры piXEL (pixel, расшифровывается как PICture'S ELement, элемент картины). То есть, переводится как "элемент объемного изображения" или "элемент объема изображения". Обычно это шар или куб.

Не стоит приписывать пикселу и вокселю равносторонность. Это удобно, не более того. Иногда даже удобнее считать воксель неким параллепипедом - например, в карте высот.

Наиболее широкое применение воксели нашли в медицине, в компьютерной томографии, в частности. Изображения с большого количества рентгеновских или ультразвуковых снимков под разными углами (порядка 100-200 снимков) обрабатываются, и создается трехмерный массив плотностей различных участков тканей исследуемого органа. Этот массив представляет собой "объемную картину", элементом которой является воксель.

Второе, более наглядное, применение вокселей - компьютерные игры. В Shadow Warrior с помощью трехмерного массива задается форма оружия, а во всем известных Команчах - ландшафт. И если в Shadow Warrior воксели квадратные, а массив трехмерный, то в Команчах воксели представляют собой параллепипед 1*1*высота_местности, а массив двумерный. Поэтому в Команчах не видно нависающих над берегом моря утесов - такое вот ограничение на представление пространства.

Способы отображения

Двумерные массивы высот отображаются методом плавающего горизонта в комбинации с методом отслеживания лучей (raycasting, не путать с reytracing). Способ чрезвычайно прост:

void cast_ray(int scrx,real x,real y,real dx,real dy)
<
max_height=0;
for(dist=0;dist max_height) // текущий столбец "выше"
<
// самого высокого отрисованого
color=fetch_color(x,y);
draw_column(scrx,max_height,height,color); // отрисовать видимую часть
max_height=height;
>
x=x+dx; // единичный шаг вперед, вдоль луча
y=y+dy;
>
>

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

Что касается трехмерных массивов, то здесь все зависит от специфики приложения, поэтому методов их отображения существует несколько:

Честная трассировка лучей.
Традиционный "лобовой" метод, с которым все борются.

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

Отображение через преобразование Фурье.
Метод основан на теореме об обратном преобразовании двумерного среза преобразования Фурье. Вкратце смысл ее таков: если вычислить прямое преобразование Фурье для объема N*N*N, затем взять его срез плоскостью P, проходящей через центр объема, затем произвести обратное преобразование Фурье, то результат будет представлять собой двумерный массив, с элементами, содержащими сумму элементов, соответствующих трассировке объема лучами, перпендикулярными P.
Требует N**3 памяти под комплексные числа, сложность оценивается как O(N**2*log(N)).
Существенным недостатком является отсутствие отсечения скрытых деталей - результаты работы алгоритма очень похожи на рентгеновские снимки.

"Пропуск пространства" - Space Leaping
Предобработкой производится выделение и объединение пустых участков пространства, и во время трассировки лучей такие участки просто пропускаются.
Включает в себя трассировку лучей.

Отображение с помощью фильтра
Для каждого отображаемого вокселя определяется экранная координата его центра, а затем параметры вокселя "разбрасываются" по соседним пикселам с ипользованием некоторого фильтра. Коэффициенты фильтра зависит только от желаемого качества.
Чаще всего используемый фильтр - считать проекцию воксела квадратом с однородными параметрами (Shadow Warrior).

Octree для хранения данных об объеме

Два способа хранения таких данных я уже упомянул выше: массив N*N*N и карта высот. Хочется добавить еще один способ, а именно octree (восьмидерево;). От двоичного дерева его отличает способ деления пространства - сразу на восемь равных частей, с линейными размерами вдвое меньше, чем у предка.

Чем интересен такой способ хранения данных? Тем, что при добавлении в восьмидерево единичного объема автоматически обходятся пустые участки. Вот часть кода обработки восьмидерева в качестве иллюстрации:

// _subdivide отыскивает необходимый элемент восьмидерева,
// создавая отсутствующие элементы дерева по необходимости
static hnode* _subdivide(hnode*p,livec3*center,longint x, longint y,longint z,int step)
<
longint hs=p->size;
int index=0;
hnode *child;
livec3 ncenter; // новые координаты центра
if(x>=(*center)[X_DIM]) index|=X_SUB; // Вычисление индекса потомка
if(y>=(*center)[Y_DIM]) index|=Y_SUB; // двоичным делением по трем
if(z>=(*center)[Z_DIM]) index|=Z_SUB; // координатам
child=p->childs[index];
if(!child) // Нет необходимого потомка на этом уровне
<
child=new_node(); if(!child) return 0; // создать потомка в случае отсутствия
init_pointers(child,p);
p->childs[index]=child; child->parent=p; child->size=hs/2;
>
if(hs x на x->0, поскольку от перемены мест слагаемых сумма не изменяется. Если использовать не логарифмические alpha(x), а a(x)=exp(-alpha(x)), то сумма просто заменяется на умножение. (От перемены мест сомножителей результат не изменяется;)

Итак, вдоль каждой оси координат (отдельно Ox, Oy и Oz) я считаю среднюю прозрачность для стороны кубика:

T(dir)=(T(dir,upleft,forward)*T(dir,upleft,backward)+
T(dir,downleft,forward)*T(dir,downleft,backward)+
T(dir,upright,forward)*T(dir,upright,backward)+
T(dir,downright,forward)*T(dir,downright,backward) )/4;

forward и backward, left и right, up и down - координаты вокселей-потомков. Обе эти переменные зависят от направления dir. Например, для оси Oy forward будет (0,+0,0), backward - (0,-1,0), upleft - (+0,0,+0), downright - (-1,0,-1).

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

Теперь стоит перейти к цвету.

В общем случае, для всех шести сторон кубика-воксела цвет будет различен (как пример - Кубик Рубика). Более того, это же видно из интеграла Kajiya - для разных направлений у интенсивностей I(x) разные множители. Поэтому в структуре, хранящей визуальные параметры воксела присутствует шесть (число измерений * 2) не связанных между собой записей о цвете.

Цвет для определенной стороны (side) считается как взвешенная сумма цветов (для сторон side) четырех пар вокселей, с учетом заслонения прозрачными вокселами. Пример кода (на этот раз псевдокод):

component=0;
traspsum=0;
for(i in (upleft,upright,downleft,downright)) // перебираем четыре пары
<
transparency t=child[i,forward].transparency[side/2],
tb=child[i,backward].transparency[side/2];
component+=(child[i,forward].components[side]*t+ // учет заслонения
child[i,backward].components[side]*(1-t))*(1-t)*(1-tb); // вес - общая непрозрачность
transpsum+=(1-t)*(1-tb);
>
if(transpsum trnsparency[X_DIR]*abs(A)+
voxel->trnsparency[Y_DIR]*abs(B)+
voxel->trnsparency[Z_DIR]*abs(C);
transp/=abs(A)+abs(B)+abs(C);

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

Цвет считается похожим образом, только в игру вступает направление взгляда (знак):

comp= voxel->component[X_SIDE+(A component[Y_SIDE+(B component[Z_SIDE+(C
#define TRANSPBITS 7
#define TRANSPONE (1 >TRANSPBITS;
> /* tmul */
/* Способ, применяемый при отображении: */
long straight_power(long a,int power)
<
int i;
long r=TRANSPONE;
for(i=0;i

<
r=tmul(r,a);
>
return r;
> /* straight_power */
/* Способ, применяемый при подсчете усредненных параметров: */
long fast_correct_power(long a,int power)
<
unsigned int mask=0x8000U;
long r=TRANSPONE;
while(mask)
<
r=tmul(r,r);
if(power&mask) r=tmul(r,a);
mask>>=1;
>
return r;
> /* fast_correct_power */
int main(void)
<
printf("Straight %ld, correct %ld\n", straight_power(X,POW),fast_correct_power(X,POW));
return 0;
> /* main */

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

Достоинства использования octree

Быстрое отсечение невидимых деталей - если больший куб полностью невидим, значит делить его на меньшие кубы не надо.

Возьмем отрезок 2**N*Focus_len..2**(N+!)*Focus_len. На этом расстоянии будет O(Focus_len) вокселей размером 2**(N+1). Если мир, описываемый восьмидеревом, имеет максимальный линейный размер L, то количество таких отрезков будет log2(L/Focus_len). На экране отображается M=Width*Height лучей. Значит, общая сложность отображения с использование восьмидерева - O(M*log(L))

Встроенный контроль детализации - деление на меньшие объемы прекращается для объема, экранный размер которого составляет от одного до двух пикселов. Если ввести аппроксимацию цвета большего объема, то получится Contionuous Level Of Detail - непрерывность уровня детализации.

Упрощена реализация "молочного тумана" - размывающей свет среды - воксели надо отрисовывать с уменьшенным уровнем детализации. (NB: в тумане предметы кажутся больше, чем они есть на самом деле)

Направление работ

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

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

Восьмидерево освещенности - разумная идея, по-моему.

Как в воксельные картины можно добавить отражение (и преломление)?

Необходимо подумать о более быстром отсечении невидимых деталей. С использованием иерархического z-буфера и(или) карты заслоняющих предметов, a-la мистер Zhang.

Воксел

Воксел

Воксельное изображение макромолекулы рибосомы. созданное с использованием PyMOL .

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

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

Воксельная модель кошки(слева) рядом с полигональной (векторная графика) моделью кота(справа).

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

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

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

Для хранения воксельной модели применяют массив размерами 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.

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

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

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

  • Компания NovaLogic использовала воксельные графические движки в сериях игр Delta Force. Armored Fist и Comanche .
  • Игры Command & Conquer: Tiberian Sun и Command & Conquer: Red Alert 2 от компании Westwood Studios использовали воксельные модели транспортных средств.
  • Игра Blade Runner .
  • Игра Outcast использовала вокселы для прорисовки объектов.
  • Игра Amok .
  • Игра Вангеры использовала большие многоуровневые непрерывные воксельные пространства с изменяемыми «живыми» ландшафтами.
  • В движке Build Engine есть возможность использования воксельных объектов. Такие объекты используются в шутерах Shadow Warrior и Blood. построенных на этом движке, а также в переработанном Duke Nukem 3D High Resolution Pack.
  • Игра Thunder Brigade .
  • Master of Orion III использует воксельную графику для отображения космических битв и солнечных систем.
  • В игровом движке CryEngine 2. который использовался в играх Crysis. Crysis Warhead и Crysis Wars. вокселы использовались для построения пустых пространств под поверхностью ландшафта уровня.
  • Игры Worms 3D и Worms 4: Mayhem использовали «покселы» (англ.   poxel. образовано от voxel (воксел) + polygon (полигон)) для динамически разрушаемого трёхмерного ландшафта, подобного ландшафту в двухмерных версиях.
  • Игра Hexplore .
  • Игра Minecraft использует подобие воксельной графики для создания случайно генерируемого ландшафта, но рендеринг производит с помощью полигонов.
  • Игра Voxelstein 3D использует воксельный движок «Voxlap», благодаря которому вся геометрия игры построена на вокселах и полностью разрушаема. [3]
  • Движок id Tech 6 компании id Software будет использовать инновационную технологию «Sparse Voxel Octree » (SVO, рус. Разреженное воксельное октодерево ) для визуализации статических объектов (ландшафта, массивных строений и т. д.) игрового уровня.
  • Графический движок OTOY. ориентированный на серверное исполнение, будет использовать вокселы для построения геометрии уровня и трассировку лучей для освещения.
  • Игра Ace of Spades использует воксельный движок Voxlap.
  • Игра Cube World использует воксельную графику для создания случайно генерируемого игрового мира, моделей игроков и NPC.
См. также Примечания Ссылки

Воксел

Воксел


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

Содержание
  • 1 Представление в памяти
    • 1.1 Разреженное воксельное октодерево
    • 1.2 Докселы
  • 2 Области применения
    • 2.1 Медицинские данные
  • 3 Визуализация
    • 3.1 Объёмные дисплеи
  • 4 Вокселы в компьютерных играх
  • 5 См. также
  • 6 Примечания
  • 7 Ссылки
Представление в памяти

Воксельная модель кошки(слева) рядом с полигональной (векторная графика) моделью кота(справа).

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

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

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

Для хранения воксельной модели применяют массив размерами 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

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

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

Докселы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Компания NovaLogic использовала воксельные графические движки в сериях игр Delta Force, Armored Fist и Comanche.
  • Игры Command & Conquer: Tiberian Sun и Command & Conquer: Red Alert 2 от компании Westwood Studios использовали воксельные модели транспортных средств.
  • Игра Blade Runner.
  • Игра Outcast использовала вокселы для прорисовки объектов.
  • Игра Amok.
  • Игра Вангеры использовала большие многоуровневые непрерывные воксельные пространства с изменяемыми «живыми» ландшафтами.
  • В движке Build Engine есть возможность использования воксельных объектов. Такие объекты используются в шутерах Shadow Warrior и Blood, построенных на этом движке, а также в переработанном Duke Nukem 3D High Resolution Pack.
  • Игра Thunder Brigade.
  • Master of Orion III использует воксельную графику для отображения космических битв и солнечных систем.
  • В игровом движке CryEngine 2, который использовался в играх Crysis, Crysis Warhead и Crysis Wars, вокселы использовались для построения пустых пространств под поверхностью ландшафта уровня.
  • Игры Worms 3D и Worms 4: Mayhem использовали «покселы» (англ. poxel, образовано от voxel (воксел) + polygon (полигон)) для динамически разрушаемого трёхмерного ландшафта, подобного ландшафту в двухмерных версиях.
  • Игра Hexplore.
  • Игра Minecraft использует подобие воксельной графики для создания случайно генерируемого ландшафта, но рендеринг производит с помощью полигонов.
  • Игра Voxelstein 3D использует воксельный движок «Voxlap», благодаря которому вся геометрия игры построена на вокселах и полностью разрушаема.[3]
  • Движок id Tech 6 компании id Software будет использовать инновационную технологию «Sparse Voxel Octree» (SVO, рус. Разреженное воксельное октодерево) для визуализации статических объектов (ландшафта, массивных строений и т. д.) игрового уровня.
  • Графический движок OTOY, ориентированный на серверное исполнение, будет использовать вокселы для построения геометрии уровня и трассировку лучей для освещения.
  • Игра Ace of Spades использует воксельный движок Voxlap.
  • Игра Cube World использует воксельную графику для создания случайно генерируемого игрового мира, моделей игроков и NPC.
См. также
  • Проекция максимальной интенсивности
  • Объёмный рендеринг
  • Unlimited Detail
  • Облако точек
Примечания
  1. ^ Объемные дисплеи: очередной шаг к массовому производству Компьюлента, 24.12.2008.
  2. ^ Истинно объемное изображение. Computerworld Россия, 06.08.2002
  3. ^ Сайт Voxelstein 3D
Ссылки
  • Fundamentals of Voxelization (англ.). IEEE Computer, Vol. 26, No. 7 (июль 1993 года). Проверено 9 июля 2010.Архивировано из первоисточника 18 февраля 2012.
  • Дмитрий Чеканов. Рендеринг с помощью вокселей: новый уровень графики в играх? 3. Tom's Hardware (30 октября 2009 года). — Статья, описывающая вокселы, октодеревья, рейкастинг, их перспективы и ограничения. Проверено 6 февраля 2010.Архивировано из первоисточника 18 февраля 2012.
  • Рони Ягель Кафедра информатики, Университет шт. Огайо, США. Рендеринг объемов в реальном времени. Открытыe системы (издательство) (16 мая 1996 года). Проверено 11 февраля 2010.Архивировано из первоисточника 18 февраля 2012.
  • Рони Ягель Кафедра информатики, Университет шт. Огайо, США. Аппаратный рендеринг объема. Открытыe системы (издательство) (16 мая 1996 года). Проверено 11 февраля 2010.Архивировано из первоисточника 18 февраля 2012.
  • Voxel (Воксель). GameDev.ru (23 марта 2007 года). Проверено 9 июля 2010.Архивировано из первоисточника 18 февраля 2012.
  • Сергей Книгин. Что мы увидим, когда мы это увидим. Really.ru (21 февраля 2007 года). Проверено 10 июля 2010.Архивировано из первоисточника 19 мая 2012.
  • hitan. Воксели (Voxel) 3. CodeNet.ru (7 марта 2009 года). Проверено 10 июля 2010.Архивировано из первоисточника 18 февраля 2012.
  • List of all Voxel Engines (англ.). jonof.id.au (14 марта 2009 года). Проверено 10 июля 2010.Архивировано из первоисточника 18 февраля 2012.
Воксел информация О


Воксел
Воксел

Воксел Об этом видео

Воксел википедия

Воксел Вы читаете вопросы. Если вы думаете, что более уместным ошибке, пожалуйста, свяжитесь с нами. Тема Поставка википедия

Воксел Что, Воксел кто, Воксел описание

Voxel Model Maker Cube World Edtion

Voxel Model Maker Cube World Edtion,

В общем программа была создана раньше чем уже знакомый вам CWME. но не выпускалась в свет из-за малого количества функций редактирования. Сейчас программа имеет значительно больше функционала нежели Cube World Model Editor.

Voxel Model Maker Cube World Edition - это новая версия воксельного редактора, адаптированная для моделей, используемых в онлайн игре Cube World.
С помощью данного редактора вы сможете редактировать любые модели которые существуют в Cube World, будь это оружие или ваш игровой персонаж, моб, босс, доспехи, интерьер, растения, визуальная оболочка домов, и другие модели. В запросто сможете изменить игру до неузнаваемости, все зависит лишь от вашей бурной фантазии и наличии свободного времени.

Функционал:
(1) интеграция напрямую с базой данных игры. AssetBrowser не нужен.
(2) интуитивно понятное управление(которое оценят геймеры. Очень похоже на управление из какой-нибудь игры. Например, Minecraft в режиме Creative).
(3) под рукой все нужные инструменты для редактирования(пипетка, цветовая палитра и многие другие функции, не требующие копаться во вкладках меню и прочих подобных вещах).
(4)мощные инструменты для добавления/удаления больших групп блоков, что повышает вашу производительность. Присутствует инструмент копирования/вставки и растяжения областей модели.
(5) каркас будущего блока повышает точность ваших действий, эффектно превращаясь при необходимости в мощнейший инструмент для работы с областями.
(6) каркас, ограничивающий модель(может не совпадать с габаритами модели), показывает сколько места для модели выделил Воллей. Горит зеленым цветом, если все блоки лежат внутри ограничивающего модель каркас. Горит красным, если хоть один блок лежит вне каркаса. Из-за некоторых особенностей игры, некоторые измененные модели(те модели, один или несколько блоков которой при редактировании были за пределами каркаса, ограничивающего модель) могут отображаться в игре неправильно. По-этому, можно, но не рекомендуется выходить за пределы этого каркаса во избежание визуальных багов.
(7) анализатор центра модели. Показывает совпадает ли центр отредактированной модели с центром оригинальной модели. Если нет, то возможны неточности отображения модели в игре.
(8) интуитивно понятное меню и пользовательский интерфейс в целом.

Управление в редакторе:

W — двигаться вперед.

A — двигаться влево.

S — двигаться назад.

D — двигаться вправо.

SPACE — двигаться вверх.

CTRL — двигаться вниз.

СТРЕЛКА ВВЕРХ — увеличить рамку от себя.

СТРЕЛКА ВНИЗ — уменьшить рамку на себя.

СТРЕЛКА ВЛЕВО — уменьшить рамку влево.

СТРЕЛКА ВПРАВО — увеличить рамку вправо.

PAGE UP — увеличить рамку вверх.

PAGE DOWN — уменьшить рамку вниз.

NUMPAD8 — двигать рамку от себя.

NUMPAD2 — двигать рамку на себя.

NUMPAD4 — двигать рамку влево.

NUMPAD6 — двигать рамку вправо.

NUMPAD9 — двигать рамку вверх.

NUMPAD3 — двигать рамку вниз.

INSERT — заполнить рамку вокселями( в зависимости от режима *(смотрите примечание 1) рамка заполняется по-разному).

DELETE — удалить все воксели внутри рамки.

Q — отменить перемещение рамки.

E — отменить расширение рамки.

T — копировать цвет вокселя, находящегося под курсором мыши.

C — копировать воксели внутри рамки.

V — вставить**(смотрите примечание 2) ранее скопированные воксели в рамку.

F1 — показать/скрыть каркас, показывающий первоначальный размер модели.

F2 — показать/скрыть рамку, обозначающую изначальный размер модели.

F3 — показать/скрыть ФПС.

F4 — показать/скрыть отображение центра изначальной модели и центра модели в процессе редактирования.

Левая кнопка мыши — поставить воксель.

Правая зажатая кнопка мыши + движение мышью — поворот камеры.

Нажатие на колесо мыши — удаление вокселя.

Прокрутка колеса мыши — смена режима заполнения рамки вокселями.

Примечание 1 - есть 3 режима заполнения рамки вокселями: каркасный режим(появляются воксели по краям рамки), полое заполнение, полное заполнение.

Примечание 2 - для полной копии области размер рамки при вставки должен соответствовать размеру рамки при копировании. При меньших размерах область обрежется, при больших — продолжит копироваться начиная с начала области. Чтобы лучше представить — это вообразим что мы поставили 4 блока двух цветов(черного и белого) в шахматном порядке. Копируем область 2х2 блока и расширяем рамку до размеров 64х64, вставляем. Вуаля! Получили шахматную доску.

Ключи: vmm cube world edition, cube world editor, cwme, cube world model editor, редактор моделей cube world