Pull to refresh

Comments 47

Про то, что воксели заменят полигоны, я начал слышать лет этак 20 назад, когда начал темой увлекаться. Но сложности с тем, что все современные gpu заточены именно на работу с полигонами. И чтобы рисовать красивую картинку вокселей надо ну прямо очень много памяти. Я когда отображаю серьезные z-stacks по своей работе часто сталкиваюсь с недостатком памяти, а ее у моей машины вполне.
А многие указанные в статье игры рендерят картинку все-равно полигонами, используя воксели лишь как невидимый каркас для многоугольников. Потому что воксели это не куб, это пиксель с тремя координатами. А отображать его можно и как куб, если вокруг этих координат нацепить 6 полигонов.

Уточнение: как правило, нужно много именно видеопамяти.

вдруг настанет тот момент, когда мы уже не сможем отличить реальность от игры и будет как в 4-й серии 1-го сезона Рика и Морти.

Ага, у которой прям на скрине видно что рендерят полигоны.

Ну, справедливости ради, герои заметили это не сразу

Говорим о вокселях - а культовую  Command & Conquer2: Tiberian Sun  даже не упомянули - а ведь тогда это была революционная игра - именно продвигавшая воксельную графику во всей её, тогдашней, красе - от 2D к условному 3D - уже не "топорному" изометрическому, но ещё далёкому от полного 3D.

Увы - при всей мощи того движка - мощь компьютерного железа была далека для его эффективного использования.... от чего красиво вывести воксельную графику в реальном времени не получалось (если сравнивать с самой первой C&C - то вышло лучше, а если сравнивать с RA (SVGA) и StarCraft - вышедшая даже годом раньше - то уже вырви глаз) и вышедшая следом RA2 - уже была без воксельного движка - хотя упорно его иллюзорно моделировала - но уже на статических спрайтах (хотя рисовались они как раз воксельными) - хорошо показав что воксели вполне могли бы выдать красивую графику - будь железо помощнее. Вот C&C3 (и до него C&C Generals) уже поддался веянью моды на полигоны - и эти игры были уже выпущены в 3D на полигонах - и надо сказать, C&C3 и RA3 смотрелись уже очень хорошо даже на полигонах. Жаль на том (C&C4 не в счёт) эксперименты с графикой в 3D стратегиях серии прекратились (вместе с серией и всей командой, оставшейся от Westwood studio). Потому что на рынок так и не вышли воксельные 3D ускорители (хотя в начале века о них разговоры шли). И этом фактически ставит крест на массовом применении чисто воксельной графики в реальном времени в динамике - вычислительные ресурсы для этого нужны не хилые, а ускорителей нет. Да и полигональное 3D сейчас тоже рисуют по "технологиям вокселей" - это называется скульптурное 3D моделирование - когда 3D модель буквально вырезают из "полнотелой" болванки - а потом по ней просто генерируется меш с заданной детализацией (или даже динамической детализацией как в UE5, да и в UE4 тоже уже была поддержка - когда количество полигонов детализации в реальном времени меняется автоматическими алгоритмам; а UE5 уже имеет встроенную поддержку разрушаемых полигонов - то ли ещё будет позже в какой-нибудь бедующей UE6) - полигоны вполне показали свою состоятельность и лёгкость математических преобразований при перестроении и при выводе 3D моделей. И тот же просчёт волн воды на UE5 делается на полигонах достаточно эффективно (да - с эффектами пены, конечно, придётся повозиться - ту придётся создавать иллюзорную эмуляцию такой пены).

А вот воксельными 3D ускорителями и эффективными математическими моделями как-то особо сейчас не занимаются - хотя, вроде бы, пару лет назад ходили слухи о том, что ведущие разработчики 3D ускорителей хотят добавить такие технологии в свои движки - но пока ничего не сдвинулось!

P.S.

А вообще было бы интересно сейчас посмотреть на обновлённые ремастеры C&C2 и RA2 - на чисто-воксельных движках, но со всей доступной современной мощью железа (надеюсь даже как-т можно было бы припахать универсальные вычислительные процессоры 3D ускорителей - но вряд ли на всю мощь - ибо воксельная математика - целочисленная - а актуальные 3D ускорители заточены на вычисления с плавающей точкой - а это большая технологическая разница).

Но мне кажется(+), если и выпустят ремастеры C&C2 и RA2 (на волне удачно вышедших ремастеров C&C и RA) - то это будут уже либо спрайты как RA2 (просто модельки подтянут до уровня HD) - либо уже конвертируют для 3D-полигонального движка (т.к. на нём та же RA3 смотрелась лучше чем RA2, а сейчас 3D ускорители стали мощнее - и можно сделать достаточно детализированные 3D модели и переписать 3D эффекты; и текстурки обновить на более детальные) - ибо воксельные модели относительно легко перевести в 3D-полигональные - используя те же упомянутые технологии скульптурного 3D (если, конечно, сохранились эти воксельные модели - если их нет - то ремастера не будет вовсе)

Увы, у Вас перепутано. И TibSun, и RedAlert 2 имели одинаковый(просто у второй чуть доработанный) подход к графике, что прекрасно видно если покопаться в их моддинге:

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

  • спрайтовая пехота и сложная техника с анимациями;

  • спрайтовые здания;

  • спрайтовый террейн.

И всё. Те же Tick tank или Artillery у NOD это по факту две разных объекта - воксельный танк в движении и здание(sic!) с анимацией разворачивания.

Террейн только имитировал рельеф и был классически спрайтовым. Он слегка прогибался снарядами с настройкой "портить террейн"(всё та же артиллерия), но в рамках ограничений спрайтами склонов/подъёмов/"скрытых" подъёмов, сами же ступени перехода высот были снова чистыми спрайтами. В RA2 эту возможность "перекопки" просто не использовали, а так видно даже без копания в файлах игры что то же самое.

Воксели техники были интересной штукой - они имели цвет, позицию, и "нормаль"(которая и помогала красивее освещать юниты при вращении). То есть, они почти буквально имитировали точечный полигон размером с себя. И мододелы эти воксельные юниты быстро наловчились делать вокселизацией полигональных моделей из популярного тогда подварианта 3DStudio MAX(пардон, забыл как точно он назывался за давность лет). В TibSun значение нормали было каким-то более ограниченным, чем в RedAlert2(там оно было от 0 до 255), так что младшая игра давала возможность получить более "гладкое"(переходом освещения) подобие воксельных сфер..

Единственной заметной разницей графики между играми(с точки зрения мододеланья) стала процедурная анимация в RA2:YR - винты у самолёта-разведчика вращались(а может даже и не вращались) и винт у "штурмового вертолёта"(а вот этот вертелся точно).

Насколько я в курсе подход к графие C&C2 b RA2 был разный. В C&C - воксельными были юниты (может только техника), всё остальное было спрайтовое (ну не тянуло железо больше) - но воксельная техника реально прикольно ездила по неровной местности - меняя угол своего наклона.

В RA2 - уже всё выводится спрайтами - но юниты были изначально нарисованы вокселями. Я не знаю на каком этапе воксели переведены в пиксели (самой игрой (в реальном или предварительном рендеринге) или ещё на стадии компиляции проекта) - но тут уже просто все разные углы наклона техники - это разные спрайты - и выводятся они именно как спрайты. Это позволило повысить общее разрешение таких моделей, сделать им боле качественный пререндеринг и уменьшит затраты вычислительных ресурсов на вывод графики - что позволило выделить из для доп спецэффектов реального времени. Но по крайней мере я так это помню - когда этим интересовался лет 20 назад.

И у TS и у RA2 один и тот же движок. Воксельная там только техника.

У RA2 техника спрайтовая уже - воксельный вывод не используется. Но сами спрайты отрисованы воксельной технике!

Замена полигонам? Для видеокарты не существует этих ваших вокселей, ни в OpenGL, ни в Vulkan, ни в DirectX. Только полигоны (треугольники)) и точки.

Говорю как опытный программист графики.

Есть 3D-текстуры, пусть и сильно ограниченные по разрешению. Ну и вокселизацию/растеризацию придётся писать самому.

Я всегда думал, что там просто матрицы

Для видеокарты не существует этих ваших вокселей
Только полигоны (треугольники)) и точки.

Это если вы застряли в махровых 90-х.
Уже давно для GPU доступны иные методы рендеринга — рейтресинг, sdf и т.п.
Соответственно внутри шейдера могут существовать любые примитивы.
Да даже рисовать микрополигоны (как в nanite) быстрее в шейдере чем на железе.

Тут только один полигон — полноэкранный.
www.shadertoy.com/view/3lsSzf
www.shadertoy.com/view/llK3Dy

Или вот воксельная игрушка Dreams, по какой-то причине не упомянутая в статье.
Там объекты представлены как октри из воксельных блоков 8x8x8.
www.youtube.com/watch?v=ITrkbsaX2c8
www.youtube.com/watch?v=Pi3r18ld-S8

Материалы по Dreams
www.youtube.com/watch?v=u9KNtnCZDMI (R&D по рендерингу)
www.youtube.com/watch?v=1Gce4l5orts (Общая структура игры)
www.youtube.com/watch?v=yZM_Ij9aeOA

Шейдеры выполняются на железе. Рейтрейсинг есть у 2 калек, особенно с ситуацией в стране, хотя и до этого с конскими ценами на видеокарты. В написании графики редко кто использует даже 4 opengl, все сидят на 3 версии.

Рендер рендером, но для видеокарт других примитивов не существует. Без железной поддержки все это пшик и придумать можно все что угодно.

Я не понимаю откуда эта вся дурь пошла. Я следил за эволюцией видеокарт, единственное в них что заточено под "полигоны", это растеризация и текстурирование. Ибо растеризация это когда у тебя из 3 точек собирается фрагмент, который обрабатывается уже попиксельно, а текстурирование это когда у тебя по координатам фрагмента вытаскивается текстел- всё, остальные этапы гибко настраиваются и на них можно вообще любой матан сделать.
Где там специализация?
Тогда цпу тоже можно назвать "заточенным под векторы" ибо там есть логика для матана над векторами?
(вроде текстел не правильно написал, спать хочу, не помню...)

В Dreams splatrender. Из sdf генерится облако точек, оно рендерится уже с помощью кастомной растеризацией. Но это тоже считается вокселями. Весьма занятная презентация по рендеру, по ней сделал свой аналог.

А почему бы не использовать воксели для расчета изменений мира, а не для рендеринга?

Допустим, разрушаем здание или копаем тоннель. На основе полигониальной области, в которой нужно рассчитать изменения, генерируется воксельная (это вполне можно возложить на видеокарту, кажется там должны быть достаточно тупые алгоритмы типа буфера глубины), в воксельном пространстве рассчитываются изменения в соответствии с физическими законами, а далее оно обратно превращается в полигониальное (наверное это тоже можно возложить на железо) и записывается на место оригинальной полигониальной области.

в большей части "воксельных" игр на скриншотах в статье это как-то так и работает.

В cryengine таким образом делались пещеры

Формально это есть. В математике и информатике это называется КА (Клеточный Автомат), или клеточно-автоматная модель.

Будущая замена полигонам

Я могу представить на этом месте SDF, но никак не воксели. Посмотрите хотя бы на число статей по этим темам за последние 3-4 года.

Мне вспоминается серия игр Delta Force. Как мы по сетке в нее резались и графика очень радовала.

Всем интересующимся вокселями рекомендую посмотреть эксперименты вот этого человека - https://youtu.be/8ptH79R53c0, очень впечатляют

С одной стороны впечатляет. С другой - качество вывода отстало от современных тенденций в 3D полигональной графике лет на 10-15. Очень не хватает сглаживания. И даже свечения и отражения не так впечатляют - как это даёт полигональное 3D уже лет 5-6, даже без обратного рейтрейсинга! Чего уж говорить о современном студийном рей-трейсинге (но это не реал тайм, конечно), применяемом в первую очередь для рендера рекламных роликов и в кино.

А всё потому - что для вокселей нет ни навороченной программной базы, ни поддержки со стороны ускорителей - чтобы потянуть эту навороченную программную базу и повышенную детализацию воксельных спрайтов для рендеринга хотя бы в FHD качестве (чего уже говорить о рендеринге в 8K)

Вы правы. Для текущих целей 3D-графики воксели - это далеко не приоритетное направление. Единственная возможность, когда они могут стать приоритетным - это когда цели изменятся, а полигоны попросту не дадут возможностей для их реализации. Энтузиасты воксельной графики, судя по всему, интуитивно делают свои разработки в надежде на этот момент.

Вы сразу спросите - насколько сильно должны должны измениться цели. Отвечу - радикально. Когда 3D-графика нужна будет не для визуализаций, а для полноценной симуляции материалов и целых миров с физикой, в которых нужно будет "селить" разумных существ (неважно, искусственных или естественных) на постоянную основу. Воксели здесь безальтернативны, хотя и не в нынешнем виде - к ним ещё добавятся какие-нибудь нейросетевые физические движки и фиг знает что ещё. Это очень далёкая перспектива - ещё лет 20 минимум полигонам ничего не будет угрожать.

Насчёт более эффективной симуляции в вокселях я бы поспорил, но этот спор вряд ли будет разрешим до конца века.

Если говорить о профессиональной симуляции - в специализированном ПО, как, например,Nostromo иди из набора AutoDesk - то там, как раз строятся полгональные меши модели, и задаются физические свойства (как кортежи значений для каждого полигона) - и затем, при помощи уже давно разработанной математической модели и компьютерного моделирования на численных методах - производится расчёт того или иного физического процесса. Соответственно 3D модели не являются полыми - внутри так же идёт заполнение сеткой полигонов (причём на автоматическими алгоритмами).

Тут ещё активно используются и фрактальные модели - отлично оптимизированные для полигональных сеток.

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

Кстати, недавно случайно нашёл в статье про транзистор вот такую цитату:

Изобретение в 1904 году Джоном Флемингом вакуумного диода и последующее за этим в 1906 году изобретение Ли де Форестом усилительного вакуумного триода, стало началом развития вакуумной электроники. Стабильные в работе и основанные на понятных физических принципах электронные лампы на 50 лет замедлили развитие полупроводниковой электроники в мире. В этот период физика полупроводников была ещё плохо изучена, все достижения являлись следствием экспериментов. Учёные затруднялись объяснить, что происходит внутри кристалла. Часто выдвигались ошибочные гипотезы.

И самое главное:

В то же время на рубеже 1920—1930 годов в радиотехнике началась эпоха бурного индустриального развития электронных ламп, в этом направлении работала основная масса учёных-радиотехников. Хрупкие и капризные полупроводниковые детекторы открытой конструкции, в которых нужно было при помощи металлической иглы вручную искать на кристалле «активные точки», стали уделом кустарей-одиночек и радиолюбителей, строивших на них простейшие радиоприемники. Потенциальных перспектив полупроводников никто не видел.

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

Фрагмент с пещерами напомнил это:
https://gamedev.ru/projects/forum/?id=258554
Там качество где-то даже и получше, нет квадратов при сильном приближении. Освещение более продвинутое.

Квадраты, понятно, зависят от метода рендера. Если это рейкастинг, то есть для каждого пикселя ищем пересечение луча из камеры с воксельным миром, то сгладить в теории не проблема... той же линейной интерполяцией, если попали лучом между вокселями, считаем среднее по 8 соседним. По сути это выборка из 3D-текстуры с фильтрацией.
Но возможно в движках со сложными структурами данных типа SVO считается, что брать 8 соседних вокселей слишком дорого, они могут быть в разных ветках дерева и т.п.

Воксели - это просто формат данных, самый простейший. В них могут содержаться что угодно, включая точки, спаты, и треугольники. Хранить их можно в деревьях или в sdf. Рендерить их можно как угодно, той же растеризации. Воксели давно применяются, без них не получится сделать нормальный Gi и физику, звук. DXR, lumen, nanit - это тоже воксели. Растеризация уже устарела, и сейчас переходных период на pathtracing.

С игрушками все понятно. Для фотореалистичности, по любому, нужно переводить в полигоны, сглаживать и натягивать текстуры.

Но для технического зрения, имхо, альтернативы я не вижу. В каком еще представлении можно сравнивать, или усреднять несколько 3D сцен полученных от сенсоров? Например, полученных от лидаров по ходу движения машины. Причем, построенных под разными углами и координатами.

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

Для указанного Вами примера мне кажется тоже полигоны лучше походят (хотя изначально да - с сенсоров данные будут поступать в формате более близком к вокселям - но это всё надо разу в полигоны перегонять) - потму что доля полигональной обработки уже давно создан очень продвинутый матапппарат и куча научных и технических библиотек - такие данные лучше годятся для перегонки в матричные формы и последующей "числодробилке" на универсальных процессорах условно "графических ускорителей"

Простая задача - две смещенные-повернутые относительно друг друга 3D сцены. Для примера, простейшие, два куба разных размеров. Нужно их совместить, т. е. найти значения сдвигов и поворотов.

Для воксельного представления базовый алгоритм нахождение смещения-поворота тривиален. Сканируем с разными смещениями по осям-углам и сравниваем воксели пересечений. Где их значение максимально, те смещения-углы и есть искомые. Сам же значение величины пересечения есть похожесть этих сцен.

Как это сделать для полигонального представления я хорошего метода не вижу. Имхо, только искусственным переходом от полигонов к объемам ими создаваемым, т. е. косвенно проделывать тоже самое, что и на вокселях.

Я не спец в этой области - не подскажу. Но - почти всегда тривиальный алгоритм бывает крайне не эффективным! По вокселям просто наработок мало. А по поверхностям математики трудятся уже несколько столетий! Как и инженеры - чтобы всё что придумают математики эффективно ускорять на вычислительных системах!

Хмм, а каждый воксель это не тот же полигональный куб? В статейку бы добавить простейший формат описания модельки.

Многие начинают со структуры данных Sparse Voxel Octree (SVO), а потом наворачивают. Дешево и сердито. С одной стороны экономит массу памяти по повторяющимся вокселам, во вторых SVO, как структура данных, очень удобна для рейтресинга при растеризации.

Воксель может быть чем угодно. На мой взгляд, зацикливаться на кубах не стоит. Гораздо интереснее выглядит представление вокселей в качестве шара. Это упростит мтематический аппарат преобразования 3д в 2д экрана. Шар вообще не надо вращать в пространстве, достаточно только его текущих координат, освещение рассчитать проще, если свести к примитиву. Z позиционирование тоже проще, для нас шар всегда - круг и накладывая их друг за другом на экран, не заботясь о том какой стороной они повёрнуты, мы получим конечную проекцию.

Добавьте, пожалуйста, ссылки на ролики, скриншоты из которых вы приводите.

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

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

Так что будущее за эллипсоидами.

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

и "Добро пожаловать в Матрицу, Нео"

Sign up to leave a comment.

Articles