Пиксели и воксели в чем разница
Воксель — Voxel – аббревиатура от слов «VOlumetric» и «piXEL», или, если проще, трехмерный пиксель. Яркая игра современности на вокселях - Outcast.
Элементы объема, способны воссоздавать трехмерные объекты С ЛЮБЫМ УРОВНЕМ ДЕТАЛИЗАЦИИ. И воксельная графика уже используется в игровой индустрии. Проблема использования такого "формата" сказочной графики состоит в мощностях. Да-да.. .Требования воксельной графики НЕ ЗАЛОЖЕНЫ ни в одну спецификацию DirectX, соответственно, карта не может аппаратно их считать. Остаётся - программно, т. е. , опять - процессор или процессоры. И, здесь мы упираемся в мощность этих самых процессов. 8800GTX в числах (GPU aka CPU) примерно в 25 раз превосходит разогнанный до 3GHz Core2Duo.
Что будет дальше? Логично предположить, что, при определенном количестве полигонов качество картинки может быть сопоставимо с воксельной графикой, хотя и не может быть лучше. Слишком много денег вложено в разработку "быстрых" RISC процессоров, и, ох как непросто отказаться от вложенных денег.. .
Если интересно, то, Open Source CPU-based воксельный движок (древний и убогий) . Предел детализации определяется путем подсчета использованных в модели вокселей и в соответствии с максимально допустимыми размерами файлов и объемом оперативной памяти, необходимой, чтобы содержать в себе эту модель. Снижение размера файлов может привести к эффекту "пикселизации", при котором каждый воксель будет отчетливо виден, после чего объект больше не будет ни детализированным, ни четким (именно эта судьба постигла Blade Runner и Outcast). Такой же эффект наблюдается и с полигонными моделями: чтобы повысить степень сжатия информации и сэкономить оперативку, дизайнер уменьшает число полигонов, и фигуры получаются уродливо-кубическими (это нам всем прекрасно знакомо) .
"В железе" воксели реализовала компания 3Dfx, в VooDoo Graphics, но, рынок это "не принял". Воксельной графикой активно занимается Sony. Но, "прорыв" будет, когда появится спецификация DirectX с поддержкой вокселей.
Художник Матеуш Retro Ян, рисующий в стиле пиксель-арт, написал для издания Retronator Magazine статью, в которой попытался ответить на вопрос, в чём разница между пикселями и вокселями, но при этом рассказал намного больше.
Ян объяснил, чем игры девяностых отличаются от современных 2D и 3D-игр в пиксельной стилистике, а также изучил разные варианты такого подхода к созданию графики.
Редакция DTF публикует перевод материала.
Предупреждение: в тексте много картинок и GIF-анимаций, поэтому он может долго прогружаться. Особенно с мобильных устройств.
Ранее в этом году мне задали такой вопрос: в чём разница между пикселями и вокселями?
Иногда бывает сложно удержаться, поэтому вместо прямого ответа я написал по этому поводу целую статью.
Вопрос вполне логичен. Общество вываливает на вас что-то вроде постера к фильму «Пиксели», и вы не понимаете, что происходит. Это вот пиксели? Или это воксели? Это птица? Самолёт? Никто вам ничего не объясняет.
Я до сих пор не могу решить, должен ли я из своей любви к старым играм посмотреть этот фильм, или наоборот НЕ смотреть его.
Но не бойтесь, пока я с вами, всё будет хорошо. К моменту, как вы прочитаете этот материал, вы будете знать всё про пиксели, воксели и всё, что находится между ними. Расслабьтесь, заварите чаю.
Начнём с основ, иначе вы не сможете понять общей картины. Есть два основных способа представления компьютерной графики: векторный и растровый.
Векторная графика описывает изображение с помощью математических формул, обычно с помощью таких вещей как прямые, кривые и различные геометрические формы.
Растровая графика представляет изображение как массив цветных точек, расположенных друг за другом по сетке.
Второе различие — способ представления компьютерной графики в двумерном и трёхмерном пространстве. Если разделить их, а заодно векторную и растровую графику, то мы получим такую таблицу:
В двумерной векторной графике каждая точка на линии или фигуре описывается вектором с двумя составляющими (x и y). В общем, именно поэтому двумерная графика так и называется.
А вот пример низкополигонального двухмерного векторного изображения.
Оно построено исключительно из двумерных полигонов (в данном случае — треугольников). Изображение называется низкополигональным из-за сравнительно небольшого числа составных элементов. Именно поэтому треугольники легко заметны.
Добавим ещё одно измерение. В трёхмерной векторной графике всё работает так же, но добавляется ещё одна компонента — z. Три компоненты — три измерения.
Разница между двумерным изображением Улуру и трёхмерной моделью гоночного трека в том, что на трек мы можем посмотреть под любым углом.
Чтобы отобразить трек на вашем экране (то есть на двумерной поверхности), мы выбрали несколько углов и отобразили трёхмерную геометрию на плоском изображении.
Так и получается двумерное изображение.
Но есть одна хитрость, позволяющая показать трёхмерную геометрию в 2D. Просто измените угол угол обзора или повращайте объект.
Да, действительно, перед нами трёхмерный объект. И даже очки не нужны!
Так, немного разогрелись. Теперь разберёмся с тем, как растровая графика работает в 3D и 2D.
Растровое двумерное изображение представляется массивом с определённым количеством столбцов и строк.
Каждая клетка в таком массиве называется пикселем (от слов picture element — pixel). Помимо его координат в массиве пиксель определяется цветом.
Мы уже узнали, что низкополигональное векторное изображение состоит из заметных полигонов. Если мы сделаем то же самое с растровой графикой и заметными пикселями, то получим пиксель-арт.
На двумерной пиксельной сетке можно изобразить трёхмерные объекты вроде автомобиля Lotus Esprit или X-Wing из «Звездных войн», но для изображения они не трёхмерны. Их нельзя покрутить и рассмотреть с разных сторон, как гоночный трек или машинку. Точно так же мы не можем вертеть рисунок Улуру — изображение состоит из полигонов, но они располагаются не в трёхмерном пространстве, а в двумерном.
Итак, мы поговорили о двумерной и трехмерной векторной графике и 2D-растровой графике. Не хватает только 3D-растровой графики.
В трёхмерной растровой графике всё пространство разделено на колонки и строчки по всем трём направлениям (высота, ширина и глубина). В результате трёхмерное пространство становится набором разноцветных кубов-вокселей (volume element — voxel, элемент объёма). Каждый воксель определяется цветом и расположением.
Мы уже знаем, как выглядит пиксель-арт. Воксель-арт выглядит похожим образом.
Похоже на LEGO, не правда ли?
Так как теперь мы смотрим на трёхмерное изображение, сцену можно рассмотреть с разных сторон. Вот так выглядит воксельный Татуин под другим углом:
Можно даже делать анимации. Вот это, например, анимированный воксельный персонаж от Sir Carma:
Сравните его с двумерным пиксельным персонажем:
То есть в воксельном изображении анимация изменяет цвет (или расположение) определённых маленьких кубов, а в пиксельном — меняется цвет квадратов-пикселей.
Теперь вам известна разница между пикселями и вокселями (и много чего ещё… прошу прощения).
Но давайте пойдём ещё дальше. Не время останавливаться. Я рассказал это всё потому, что на современных мониторах любая графика в конечном итоге отображается на двумерной растровой сетке.
Для нас это интересно потому, что люди, увлекающиеся пиксель-артом, создают его с помощью всех возможных видов графики.
«Я что, могу превращать воксели и трёхмерные модели в пиксель-арт?» — спросите вы. Именно так. С помощью особых техник рендеринга и шейдинга можно создавать совершенно уникальный пиксель-арт.
Схема наверху отображает не совсем полную картину. Двумерное векторное изображение можно отображать и сразу, без преобразований. Но всё не так просто.
Двумерное векторное изображение может отображаться напрямую только на векторном мониторе. Они, например, использовались на некоторых аркадных автоматах Atari.
Вот как оно бы выглядело на осциллографе.
Похожим образом иногда отображается трёхмерное векторное изображение.
Как я уже говорил, сначала трёхмерное изображение нужно отобразить на плоскости. Так получается двумерное векторное изображение, которое можно вывести на векторный монитор.
Настоятельно рекомендую глянуть трейлер аркадной игры VEC9:
В наши дни вы вряд ли найдёте векторный монитор где-нибудь за пределами музея. Люди используют мониторы, на которых отрисовываются… пиксели!
Современные ЖК-дисплеи окрашивают каждый отдельный пиксель в определённый цвет, включая или выключая маленькие красные, зелёные и синие жидкие кристаллы на каждую клетку. Если что, в старых ЭЛТ-мониторах работал похожий механизм: на каждый пиксель три разноцветных трубки зажигались под воздействием луча электронов.
Итак, что же мы делаем, если нам надо отобразить векторное изображение на растровом мониторе? Для этого используется техника растрирования. Каждый полигон (чаще всего треугольник) отображается на массив пикселей.
Трёхмерная графика прорисовывается на плоском мониторе так: сначала трёхмерные треугольники отображаются на плоскость и становятся двумерными полигонами, а затем полигоны растрируются и становятся набором пикселей.
Но что насчёт вокселей? Сегодня они чаще всего представляются как трёхмерные векторные кубы. Мы создаём трёхмерную модель с треугольниками по каждой стороне воксельного куба.
Так же, как и в прошлый раз, трёхмерные треугольники затем отображаются на плоское пространство, после чего растрируются в двумерное изображение.
Сегодня практически весь воксельный арт создаётся таким образом, чаще всего с помощью бесплатной программы MagicaVoxel.
Есть ещё один подход. Каждый воксель можно представить как точку в трёхмерном пространстве, то есть как кусочек объёма. Можно отрисовать воксель на плоском пространстве, если расположить пиксель в том же месте. Или наоборот: взять пиксель с экрана и отыскать в пространстве воксель, находящийся на том же месте.
Обратный подход называется ray casting («бросание лучей»). Луч направляется прямо в трёхмерное пространство, и летит, пока не наткнётся на воксель. На практике в пространство «бросается» столько лучей, сколько надо, чтобы покрыть все необходимые точки.
Впервые эта техника была использована в игре Wolfenstein 3D. В ней комнаты целиком состояли из вокселей. Рендеринг работал довольно быстро, потому что один луч отображал целую колонку пикселей на экране. Результат, по сути, получался двумерным, поэтому такую 3D-графику иногда называют 2.5D (потому что третье измерение вроде как не настоящее).
Сейчас Wolfenstein обычно не называют воксельной игрой, но именно она дала толчок к развитию воксельных движков девяностых.
Поначалу воксели использовались только для создания локаций. Из-за нехватки ресурсов разработчики не могли хранить информацию о каждой клетке пространства, но могли записывать высоту расположения вокселей на плоской карте (также известной как карта высот).
Карта высот (слева) показывает насколько высоко поднимаются колонки вокселей (чёрный – низкие колонки, белый - высокие).
Так как вся информация о вокселях могла содержаться только в картах высот, то игры не могли создавать нависающие над игроком скалы. Но, господи, насколько же детализированными получались локации!
Ray casting был не единственной технологией воксельного рендеринга в девяностых. Существовали и другие. Каждая с собственными сильными сторонами: разрушаемое окружение, поддержка обработки моделей машин и персонажей и так далее. Это было что-то невероятное! Но, что иронично, именно такое разнообразие в итоге и привело к закату технологии.
В 2000 году началась эпоха графических карт или графических процессоров. Специальные встроенные в компьютер устройства, которые сейчас называются GPU, отлично справлялись с обработкой 3D-полигонов. Они делали это очень быстро, но больше ничего не умели. К несчастью, различные алгоритмы рендеринга вокселей (включая ray casting) остались за бортом.
Воксельные движки переехали на центральный процессор, но и у него хватало собственных проблем. Процессор думал о таких важных вещах, как физика, геймплей и игровой ИИ. Графические карты создавались для того, чтобы «переселить» рендеринг на отдельную микросхему. В результате рендеринг значительно ускорился, а у процессора освободились ресурсы на выполнение других задач. Воксельные движки не смогли угнаться за полигональной графикой. Так они и умерли.
С тех пор прошло 10 лет, и вдруг воксели вернулись. Помощь пришла с неожиданной стороны. Появилась игра, которая нашла к вокселям совершенно новый подход. Воксель – это куб, верно? И теперь эти кубы уже могли спокойно обрабатываться видеокартой. А дальше вы и сами всё знаете.
Давайте вспомним всё, о чём я рассказал, и попытаемся ответить на вопрос, с которого всё началось. Что же такое пиксели и что такое воксели?
Пиксель — мельчайший элемент двумерного пространства, разделённого дискретно на множество равных частей.
Каждый пиксель определяется вектором с двумя целыми числами X и Y. Именно поэтому пиксельное пространство дискретно, в то время как в векторной графике координаты определяются вещественными числами.
Соответственно, воксель — мельчайший элемент трёхмерного дискретного пространства, где все элементы имеют одинаковый размер.
Ну что, на этом всё? А вот и нет!
Как видите, определение довольно общее, а потому пиксели и воксели могут быть очень разными. Давайте попробуем соединить все четыре элемента таблицы вместе: растровое/векторное, а также 2D/3D.
В прежние времена для отображения 2D-спрайта на экране приходилось напрямую копировать биты из памяти, в которой хранились цвета спрайта, в память, хранящую данные об отображенных на экране цветах. Эта технология называется bit blit или bit BLT - bit block transfer (перенос блоков битов). Сейчас почти никто не рендерит двухмерную графику именно так.
Виртуальная консоль PICO-8 — один из немногих современных движков, работающих на блиттинге, но в прошлом двумерная графика не могла отображаться иначе.
Сейчас большинство графических движков работает с векторами, потому что видеокарты заточены именно под них. В таких условиях, чтобы отобразить изображение на плоском экране, его нужно нанести на полигон с помощью карты текстур.
Текстуры — двумерные растровые изображения, размещённые на трёхмерном полигоне.
Если не вдаваться в подробности, то именно так и работает трёхмерная графика.
Вот, например, как выглядит высокополигональная 3D-модель без текстуры и с текстурой высокого разрешения:
Благодаря шейдингу и картам текстур нам даже не нужно слишком много полигонов, чтобы получить приятно выглядящего персонажа.
Вот низкополигональная трёхмерная модель с качественной текстурой:
А если взять текстуру с низким разрешением, то получится приятная на вид низкополигональная модель с текстурами в стиле пиксель-арт:
Снова можно вспомнить Minecraft. Её блоки — воксели по определению (мельчайшие дискретные элементы игры), и по сторонам они покрыты пиксельными текстурами. Однако, обратите внимание, что не все блоки в игре — простые кубы.
А теперь разберёмся с 2D. Если натянуть текстуру на плоский прямоугольник, мы получим современную 2D-графику. На современном железе каждое 2D-изображение (чаще всего в данном контексте мы называем его спрайтом) отображается на прямоугольнике, состоящем из двух треугольников. Два треугольника (их пара называется квадом) рендерятся с натянутым на них спрайтом. И так изображение оказывается на своём месте.
С изображениями высокого разрешения всё понятно.
Но вот с текстурами в стиле пиксель-арта всё становится немного сложнее. Всё зависит от разрешения экрана, на котором отображаются спрайты.
Мы уже знаем, что пиксельные текстуры без проблем наносятся на трёхмерные низкополигональные модели даже на экранах с большим разрешением. Снова подумайте о Minecraft. Ведь низкополигональные кубы всё равно рендерятся на дисплеях с разрешением 1920×1080.
То же самое можно сделать и с полигонами на плоскости. Возможно взять пиксель-арт, нацепить его на 2D-квад и отреднерить результат на мониторе с высоким разрешением. Тогда каждый пиксель на исходном изображении окрасит несколько пикселей на дисплее в определённый цвет.
Это называется пиксель-артом с большими пикселями. Каждый пиксель на спрайте увеличивается в размерах и становится большим квадратом на изображении.
Если спрайт вдруг наклоняется или поворачивается, то сразу становится заметно, что квадраты на экране состоят из нескольких пикселей:
Посмотрите на листву на этом изображении и сравните с вращающимся спрайтом при низком разрешении:
Обратите внимание, что пиксели на колесе остаются на одной линии и горизонтально, и вертикально, а на гифке из Path to the Sky большие пиксели на листве, птице и мосту заметно искажаются при движении.
Чтобы достичь этого, Kingdom полностью рендерится при низком разрешении и растягивает пиксели только на итоговом изображении. В то же время Path to the Sky, Hotline Miami и Moonman рендерят спрайты на монитор напрямую.
Kingdom — двумерная игра, но такой же подход можно применить и в трёх измерениях.
Если нацепить пиксель-арт текстуры на трёхмерные модели и отрендерить их при низком разрешении, получится что-то такое:
С тенями всё нормально. Хотя на первый взгляд кажется, что перед вами пиксель-арт, на самом деле это полноценная 3D-сцена в низком разрешении с пиксельными текстурами.
Анимации, основанные на векторах (со скелетным ригом), могут использовать пиксельный стиль себе на пользу:
И если запустить рендер на низком разрешении, то анимация ещё сильнее начнёт напоминать пиксель-арт, почти как в случае с Kingdom.
Может быть, эта анимация и не кажется слишком качественной, но у неё есть свой стиль. Почти как в старых добрых играх девяностых.
А теперь снова поговорим о высоком разрешении. Существует игра, которая по полной использует свою трёхмерную природу, сохраняя двухмерный стиль. Это The Last Night от студии Odd Tales.
Их модели нарисованы в 2D, но наложены на трёхмерный мир со всеми современными графическими эффектами: динамическим освещением, bloom, depth of field, кинематографичными ракурсами камеры, отражениями и так далее.
Таким образом, разработчики создали трёхмерный мир, на который можно посмотреть с разных углов.
А вот ещё один пример качественного динамического 3D-освещения. Невероятно атмосферная игра с печальной судьбой — Confederate Express:
Все модели отрисованы в 2D, но каждый объект хранит данные по шейдингу для света, идущего с любого угла. Свет обрабатывается модулем Sprite Lamp, и благодаря ему кажется, что лучи попадают на трёхмерные объекты.
Проблема в том, что с таким подходом мы получаем только шейдинг для спрайтов, но тени всё равно не отобразятся корректно без трёхмерной геометрии объекта. А что может дать нам трёхмерную геометрию? Правильно. Воксели!
Отличным примером такого подхода является недавно анонсированная игра Pathway:
Кажется, словно графика состоит исключительно из плоских спрайтов, но на самом деле модельки в игре полностью объёмные. Разработчики девяностых пытались сделать свою графику максимально реалистичной и современной. Но разработчики из студии Robotality не собираются заходить так далеко, им достаточно, чтобы воксель на экране соответствовал размеру пикселя на мониторе. В результате графика выглядит как очень приятный для глаза пиксель-арт, но у движка есть вся необходимая ему 3D-информация.
В подходе к отображению вокселей в стиле пиксель-арта нет ничего инновационного. Впервые такая технология была использована в игре FEZ. Авторы называли кубики, из которых состояла игра, трикселями (3D-пикселями). Триксель — это куб со сторонами в 16 вокселей.
В каждый отдельный момент времени игрок видит FEZ только с одного угла, и поэтому ему кажется, что он видит мир в 2D. Именно поэтому FEZ выглядит как пиксель-арт, но мир всё равно может вращаться.
Рассказываем, как воксели пришли в рисование из медицины, и, хотя им пророчили будущее 3D-визуализации, стали инструментом для стилизованной графики.
В 2D-изображениях, если достаточно увеличить масштаб, вы сможете увидеть крошечные квадраты разных цветов — пиксели. Из их комбинации составляется цельное изображение.
Воксели [c английского «объемный пиксель»: volume + pixel] ведут себя очень похоже, их даже называют 3D-аналогами пикселей. Если не уходить в сложные технические рассуждения, то разница между пикселем и вокселем в том, что у вокселя есть дополнительная ось Z, которая позволяет ему располагаться в трехмерном пространстве.
На DTF есть подробная статья с фундаментальным объяснением разницы между вокселями и пикселями (и не только). Мы не будем так глубоко уходить в детали. Мы поговорим об истории вокселей, где они используются и в каких программах с ними работают.
Использовать воксели начали в медицине. В 1973 году Годфри Хаунсфилд разработал компьютерную томографию на основе рентгеновских лучей (КТ). Это было одним из первых применений объемного моделирования в медицинской визуализации. За это в 1979 году он получил Нобелевскую премию по физиологии в медицине (вместе с Алланом Кормаком «за новаторскую работу в области компьютерной томографии»).
В 1992 году воксели начали использовать в видеоиграх. Comanche: Maximum Overkill — первая коммерческая игра, в которой применялась воксельная технология. Вся местность Comanche — рендеринг на основе вокселей. На тот момент такой способ обеспечивал гораздо более реалистичное и подробное представление местности, чем векторная графика и полигоны того времени.
По сути, воксели в 3D выступали за частицы, из которых состоит реальный физический мир, поэтому уже тогда объекты выглядели правдоподобнее полигональных. Но на их обработку требовались слишком большие мощности, которых на тот момент не было.
У полигонов в этом плане было преимущество — они требовали меньших мощностей и алгоритмы рендеринга были проще. Поэтому с начала 2000х большую часть процессоров создавали, ориентируясь на полигоны. Сегодня воксельные объекты с высоким разрешением многое оборудование просто не выдержит. Хотя некоторые технологии все же разрабатывают, например Atomontage.
Но пока полигоны «побеждают», и удел вокселей — стилизация.
Воксель-арт — это направление цифрового искусства, в котором изображение создается из 3D-кубов. Работы с использованием вокселей стали популярными среди художников по всему миру из-за их приятной эстетики.
Воксели пользуются определенной популярностью в игровой индустрии, особенно в мобильных играх, например Crossy Road и Shooty Skies.
Еще одна популярная мобильная игра, в которой используют воксели, это Monument Valley.
Игр на ПК, где используются только воксели, немного. В основном разработчики комбинируют их с полигонами. Например, в No Man's Sky планеты и луны сделаны на основе вокселей, а персонажи и корабли — полигональные.
В Roblox ландшафт также сделан из вокселей.
В 2020 году в Steam вышла Teardown — одна из немногих полностью воксельных игр.
Популярнейшая игра Minecraft — интересный пример. С одной стороны, ландшафт в Майнкрафте создан из полигональных кубов, что формально не является вокселями. С другой стороны, Minecraft хранит карту в виде воксельной сетки, но для рендеринга использует полигональные меши.
Наверное, самый известный воксельный фильм — комедия 2015 года «Пиксели». Создатели вдохновлялись одноименной короткометражкой Патрика Джина 2010 года. Правда, в ней культовые персонажи выглядели гораздо проще.
Все визуальные эффекты фильма созданы с помощью вокселей. Сначала команда создавала простые модели персонажей с плавным шейдингом и базовыми ригами. Затем вокселизировали их в Houdini.
Многие художники любят воксели не за потенциал создания гиперреалистичных сред, а за пиксельную эстетику и ностальгию. Преобразовать модель в воксельный объект можно даже в Блендере. Но обычно художники предпочитают создавать 3D-модели в специальных редакторах.
Самое популярное ПО для воксель-арта. Большинство воксельных проектов на Artstation созданы именно в этой программе. У Magicavoxel большое комьюнити с десятками бесплатных уроков (и не только по MagicaVoxel).
Десктопная программа экспортирует файлы только в формате .OBJ, мобильная версия Mega Voxels Play позволяет экспортировать в разных форматах, в том числе .OBJ и .VOX.
Плюсами программы называют понятный интерфейс, большой набор инструментов и отсутствие подписок и лицензий.
- Цена: от 360 до 2030 рублей (зависит от количества дополнительного контента).
- Платформы: Windows.
Менее популярная программа, продается в Стиме. На официальном сайте можно скачать и бесплатную версию, но с ограниченным набором функций.
Из плюсов программы называют большой набор инструментов и поддержку большого количества форматов для экспорта и импорта.
- Цена: декстопные версии бесплатно, мобильные — платно.
- Платформы: Windows, MacOs, Linux, Android (499 рублей), iOS (~5 долларов).
Среди плюсов программы пользователи отмечают простой и понятный интерфейс, доступность на многих платформах (особенно Линукс) и экспорт во многих форматах, включая Magica Voxel, Qubicle, glTF2, obj, ply, build engine.
Еще больше программ с их плюсами и минусами можно найти здесь.
Напоследок — пример фотореалистичной пиксельной анимации волн. Для этой симуляции художник задействовал большое количество частиц, поэтому волны выглядят реалистично, а точно смоделированная гидродинамика [сцена создана в Houdini] приводит к их нужному взаимодействию, напоминающему реальное поведение воды:
Текст написала Хлебко Юлия, автор в Smirnov School. Мы готовим концепт-художников, левел-артистов и 3D-моделеров для игр и анимации. Если придёте к нам на курс, не забудьте спросить о скидке для читателей с DTF.
Magica Voxel и Magica CSG — просто чудо. Позволяют в творческом режиме без задней мысли рисовать по вечерам и малой кровью делать супер-красивые картиночки. И бесплатно!
Я и сам балуюсь, жаль времени мало.
И правда чудесно!:З
Можете помочь, не получается найти в Android market Magica Voxel. Качать с их сайта?
Magica CSG уже можно юзать для геймдева? Он ведь 3D модельки делает?
воксельн проги пиздаты тем, что можно что то строить в 3D ничего не понимая в 3D. Майнкрафт без майна и с др масштабом (в нем тож можн в масштаб, но не так удобно)
Писать про воксели и не вспомнить К-Д Лаб, Вангеры и Периметр?
А Вангерах точно воксели были? Читал на Хабре, там вроде немного другая технология была.
И ВоВ, с его динамическим небом.
Посмотрите другие наши материалы, возможно, что-то и Вам захочется добавить себе в закладки 🤗
О, коллега)
Эх, у меня куча незаконченных сцен, и после начала всем известных событий совсем нет вдохновения завершить их.
Эх, где бы только время найти на все хотелки и на всё, что интересно и хотелось бы как минимум попробовать.
1. >изображение создается из 3D-кубов
Не верно. Да, кубы используются часто, но воксель — это лишь кордината точки в сетке определённой формы.
В той же MV есть несколько режимов визуализации.
Чувствуется, что автор не в теме: упомянуть медицинское применение и не упомянуть алгоритм шагающих кубов…
2. >в блендере
Там есть воксельная обработка, но работы с вокселями как таковой нет, визуализация в трисы. Можно задействовать отдельные модули/аддоны/сборки. Нетрисовая визуализация в принципе есть у облака точек.
3. >в играх
Подавляющее большинство современных игр лишь хранит информацию в воксельном формате, иногда информацию о свете и дымке. Но вот визуализирует твёрдые тела во всё те же треугольники.
Куда реже есть какой-нибудь рэймаршинг/сегмент-трейсинг или визуализация 2д-квадратом, размером с воксель, например в «Build and Shoot»
В старом Blood окружение рисовалось в вокселях, а не в трисах.
Перевод в треугольники в том же Teardown адски нагружает видяху.
4. >симуляции
Разумеется, объёмные данные для воды и дыма удобно хранить в вокселях или считать с ограничением пространственного разрешения. Но в финале двигаются не воксели, а меш или точки со свободными кординатами. Там весьма всё хитро устроено (хранение скоростей потоков). Но воксельная сетка статична, как правило, и в голом виде не годится для визуализации анимаций/симуляций
Ну и раз такая пьянка, пару старых моих работ. Давно за воксели не брался.
Потому что видео выглядит как разноцветная каша, где цвета если и брались то сразу RGB(255,0,0), RGB(0,255,0) и тд.
Ну я не уверен что оттенки сильно помогут этой каше стать краше
Хороший фильтр поможет на раз два
Мне кажется чтобы такого не случилось, тут нужно варьировать размер вокселей и чанков в мире, чтобы что то допускалось более большим, а что то дробным до минимал сайза. У тирдауна в этом плане более ровно
Я конечно любитель инди-игр, но все эти пиксели и воксели, которые индюки впихивают в каждую игру, уже мне сильно надоели.
игр, сделанных полностью на вокселях, не так много, хотя технология достаточно перспективная
Понятно. Но что касается пикселей, то их стало слишком много. С одной стороны, понимаю, что упрощает работу, особенно тем, у которых нету таланта рисовать. Но с другой стороны это уже превратилось в клише.
Ничего это не упрощает. А те кто делают пиксели потому что нет таланта делают убогие пиксели и в такое уж точно никто играть не будет.
По твоему пиксель арт не может быть красивым? Ок, твое мнение. Но пиксель арт не может быть "клише" также, как и любая другая. Это всего лишь стиль 2D графики.
И 3D графика тоже может быть убогой, вот.
Мне вспомнился Stoneshard с его восхитительным пиксель-артом. Она мне понравилась и очень жду её полноценного релиза.
Никогда это не упрощает ничего, если за пример брать качественную серьезную игру, скорее наоборот прибавляет сложности.
Да. Куда проще нарисовать аниме-арт, чем красивую мозаичную картинку.
Вот тут я полностью подтверждаю. Рисовал и то, и другое - красивые пиксели намного сложнее, с аниме же все сводится к простым техникам и алгоритмам, которые не сработают в качественной точечной работе.
Всё таки японцы очень изобретательный народ.
дтф тоже так считает
Это просто случайность. Алгоритм.
чел, я знаю —--______-—---
Технически пиксель-арт это не вид картинки, а метод рисования когда картинка создаётся в по отдельным пикселям и с ограниченной палитрой. В пиксель-арте так же может быть высокое разрешение и гладкий антиалиасинг либо наоборот каша из случайных пикселей, в зависимости от желаемого эффекта и он будет всё ещё пиксель-артом. А не-пиксель-арт картинке можно понизить разрешение но пиксель-артом она не станет.
А вообще в идеале один воксель должен быть равен одному пикселю на мониторе.
Порой я ничего не могу с собой поделать, поэтому вместо прямого ответа написал целую статью на эту тему.
Я понял вопрос. В обществе появляются такие вещи, как афиши фильма «Пиксели» (2015), и они действительно сбивают с толку. Это пиксель? Или воксель? Это птица? Или самолет? Они определенно затрудняют суть.
Я до сих пор не могу решить, стоит ли смотреть этот фильм ради любви к старым видеоиграм или точно не смотреть его
Не бойтесь, теперь вы в надежных руках. Когда вы закончите читать эту статью, то будете знать все, что нужно, о пикселях, вокселях и обо всем, что между ними. Возьмите печенье.
Это длинная статья, но я обещаю: вы читаете Retronator Magazine, а это значит, что здесь больше иллюстраций, чем текста.
Сначала я дам вам небольшую базу, чтобы прояснить полную картину. Есть 2 основных способа представления графики на компьютерах: векторный и растровый.
Векторная графика описывает изображение с помощью математических уравнений, обычно представляющих такие вещи, как линии, кривые и фигуры. В отличие от нее растровая графика описывает изображение как матрицу цветовых значений, которые располагаются одно за другим в виде сетки.
Второе различие в компьютерной графике — представление 2D- и 3D-пространств. Вместе с векторным / растровым разделением это дает нам 4 квадранта для рассмотрения:
ВЕКТОРНАЯ ГРАФИКА
В 2D-векторной графике каждая точка на линии или фигуре описывается вектором, имеющим 2 компонента: x и y. Вот что делает ее двухмерной: два компонента — два измерения.
Вот пример так называемого low-poly (низкополигонального) 2D-векторного рисунка:
Он полностью построен из 2D-полигонов (в данном случае — треугольников). Термин «низкополигональный» означает, что количество полигонов, используемых для создания изображения, относительно небольшое (низкое). За счет этого треугольники легко заметны.
Давайте добавим измерение. В 3D-векторной графике ситуация такая же, но каждый вектор использует 3 компонента: x, y и z. Три компонента — три измерения.
Посмотрим на низкополигональный 3D-рисунок:
Большая разница между 2D-изображением скалы Улуру и 3D-изображением гоночного трека здесь заключается в том, что мы можем смотреть на трек из любой точки, какой пожелаем.
Чтобы показать гоночный трек на вашем экране (по сути 2D-поверхности), мы должны выбрать одну конкретную точку обзора и спроецировать 3D-геометрию на 2D с этой точки обзора.
Так мы получаем одно конкретное 2D-изображение.
Но мы можем использовать трюк, чтобы показать объемную сущность 3D-геометрии даже в 2D. Можем сделать анимацию, в которой перемещаем точку обзора вокруг объекта (или сохраняем точку обзора при вращении самого объекта, как видно ниже).
Ура, мы видим, что это действительно 3D, даже очки не нужны!
РАСТРОВАЯ ГРАФИКА
То была всего лишь разминка. Давайте двинемся от векторов дальше и посмотрим, как растровая графика взаимодействует с 2D и 3D.
В 2D-растровой графике изображение делится на ряд строк и столбцов одинакового размера:
Каждая ячейка называется «пиксель» (от англ. picture element — элемент картинки). Помимо 2D-координаты в сетке (x, y), его основное свойство — цвет, который помещается в эту координату.
Мы видели, как в низкополигональных векторных рисунках используются крупные, заметные многоугольники. Если сделать то же самое с растровой графикой (использовать крупные, заметные пиксели), мы получим пиксель-арт.
В случае с 2D-пиксельными артами, даже если они пытаются представить 3D-объекты (авто Lotus Esprit или истребитель X-wing), они рисуются непосредственно на 2D-сетке пикселей. Вы не можете поворачивать такое изображение, как мы делали с 3D-векторным фургоном выше. Точно так же рисунок скалы Улуру (№5 в статье) нельзя повернуть. Несмотря на то, что он состоит из многоугольников, они были размещены не в 3D-пространстве, а непосредственно в 2D.
До сих пор мы рассматривали 2D- и 3D-векторную графику, а также 2D-растровую. Последний шаг — 3D-растровая графика.
В 3D-растровой графике объем разделен на равномерно расположенные строки и столбцы, охватывающие все 3 разных направления: вверх-вниз, влево-вправо, внутрь-наружу. Это делит 3D-пространство на кубы, известные как «воксели» (от англ. volume elements — объемные элементы, либо volumetric pixels — объемные пиксели). Каждый воксель определяется 3D-координатой и цветом в этой координате.
Прямо как пиксель-арт, который представляет собой изображение с умышленным размещением пикселей, только теперь это воксель-арт, где каждый куб тщательно просчитан.
Очень похоже на ЛЕГО, не правда ли?
Обратите внимание: поскольку мы в 3D-пространстве, воксели тоже можно наблюдать под любым углом. Вот еще один ракурс воксельной планеты Татуин:
Мы даже можем делать анимацию! Вот пример одного из анимированных воксельных персонажей от Sir Karma:
Сравните его с 2D-пиксельным персонажем:
Смотрите, как в воксель-арте анимация изменяет присутствие (цвет) маленьких кубиков — вокселей, а в пиксель-арте изменение цвета происходит на маленьких квадратиках — пикселях.
Теперь вы знаете разницу между пикселями и вокселями (и многое другое… ха-ха, сорян).
Но я не останавливаюсь на этом. Видите ли, причина, по которой я объяснил вектор / растр и 2D / 3D, заключается в том, что на современных дисплеях каждый тип графики в итоге выводится как 2D-растровое изображение.
Причина, по которой мы озаботились этим в журнале о пиксельной графике, заключается в том, что мы можем использовать эти типы преобразований для создания современных стилей пиксель-арта, которые используют объекты из квадрантов непиксельной графики.
«Я могу создать пиксель-арт из вокселей или 3D-моделей?» — спросите вы. Разумеется! Искусные методы затенения и рендеринга позволяют нам создавать уникальные визуальные стили, которые переносят пиксель-арт в будущее.
ВЕКТОРНЫЕ ДИСПЛЕИ И ПРОЕКЦИИ
Диаграмма выше не совсем правдива. Есть способ отображать 2D-векторную графику напрямую, пусть и с небольшой оговоркой.
Если у вас есть 2D-векторное изображение, его можно напрямую вывести только на векторный монитор, такой как используемый аркадной игрой Asteroids от Atari.
Вот как это будет выглядеть на практике (игра в стиле Asteroids, выведенная на осциллограф):
Таким же способом мы можем выводить и 3D-векторные изображения (обычно называемые 3D-моделями).
Как упоминал ранее, сначала 3D-модели надо спроецировать на два измерения, чтобы получить 2D-векторное изображение, которое можно вывести на векторный монитор.
Я также настоятельно рекомендую посмотреть трейлер VEC9 ради огромной дозы офигенных 80-х:
РАСТЕРИЗАЦИЯ
Сегодня трудно найти векторный монитор за пределами музея. Вместо них мы используем дисплеи, которые состоят из… пикселей!
Современный ЖК-дисплей создает разные цвета, включая и выключая (или где-то посередине) маленькие красные, зеленые и синие жидкокристаллические индикаторы. Если интересно, нечто похожее было даже во времена ЭЛТ (электронно-лучевых трубок), просто они использовали 3 типа люминофора в разных конфигурациях, которые светились красным, зеленым или синим светом при попадании электронного луча.
Так что же делать, если у нас есть векторное изображение и только растровый дисплей, на котором его надо вывести? Ну, чтобы перейти от 2D-векторного изображения к 2D-растровому изображению, его необходимо отрендерить, или растеризовать. Каждый многоугольник (обычно треугольник) рендерится в сетку пикселей.
Это можно распространить и на рендеринг 3D-моделей на растровом дисплее. В первую очередь 3D-треугольники проецируются в 2D-треугольники. Во вторую — 2D-векторные треугольники растеризуются в пиксели.
ТРИАНГУЛЯЦИЯ
А что насчет вокселей? Сегодня самый распространенный подход к воксель-арту — представление каждого вокселя в виде 3D-векторного куба. Мы делаем это, создавая 3D-модель с треугольниками, размещенными вдоль сторон воксельных кубов.
Как и ранее, 3D-треугольники затем проецируются в пространство 2D-изображения и, наконец, растеризуются для вывода 2D-растрового изображения.
Так мы подходим к самому распространенному сегодня стилю воксель-арта, созданному почти исключительно с помощью бесплатного инструмента моделирования MagicaVoxel.
РЕЙКАСТИНГ
Вообще-то необязательно использовать кубический подход. Каждый воксель можно рассматривать как точку в 3D-пространстве, как сгусток объема в этом месте. Вы можете нарисовать каждый воксель в 2D-пространстве напрямую, разместив пиксель (или несколько) в этом 2D-местоположении. Или наоборот — вы берете пиксель на экране и видите, какой воксель в сцене появляется в этом месте.
Этот обратный подход называется «рейкастинг» (метод «бросания лучей»). Вы бросаете луч из точки обзора на сцену и видите, в какой воксель попали. Фактически, вы бросаете много лучей, чтобы охватить все поле зрения.
Впервые эта техника была применена в Wolfenstein 3D, где воксели представляли собой целые блоки комнат, так что это был просто еще один способ рендеринга подхода «воксель как блок». Однако он был очень быстрым, потому что вам нужно было лишь бросить один луч на целый столбец пикселей на экране. Это сделало его по существу 2D-процессом, поэтому иногда этот тип 3D-графики мы также называем 2.5D (третье измерение получается фальшивым, поскольку оно просто позволяет выдавить 2D-поверхности).
Хотя, мы обычно не думаем о Wolfenstein как о рисовании вокселей. Мы должны сделать ячейки достаточно маленькими и позволить им иметь разную высоту. Так мы пришли к классическим движкам воксельной графики 90-х.
Поначалу воксели использовались только для рельефа. Они должны были упростить вещи, так что вся объемная информация была просто возвышением рельефа, сохраненным в 2D-изображении, также называемым картой высот.
Карта высот (слева) показывает, насколько высоки вертикальные столбцы вокселей (черные — низкие, белые — высокие)
Ограничение воксельной информации картой высот означает, у вас не может быть, например, нависающих скал. Но, черт побери, рельеф имел столько деталей, сколько мы никогда раньше не видели в играх.
Читайте также: