Строим сами: Вводный курс

EverQuest Next: Строим сами: Вводный курс.

Я начинаю курс статей, посвящённых секретам, техникам и методам строительства в Лэндмарке, а также расскажу немного о других воксельных играх и о вокселях непосредственно. Надеюсь, что кто-то найдёт это интересным, а ещё лучше полезным. Сегодня немного теории.

Следующая статья →

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

Первый вариант более распространённый, в нём воксели независимы друг от друга, как детальки LEGO. При таком подходе мир поделён на равные кубические секции, внутри которых может находиться один любой объект из библиотеки: куб земли, факел или кочан капусты. Скорей всего в этой игре факел нельзя прикрепить к капусте, но это лишь геймплейное ограничение, принципиально движок это позволяет. И если это сделать, то кочан так и останется кочаном, не изменив свои очертания. Этот способ ограничивает в количестве форм, которые можно построить из вокселей, ведь нужно чтобы разработчики создали их заранее. Некоторые игры, например Blockscape, пошли по пути расширения коллекции форм вокселей: там есть отдельные формы для наклонных деталей под разными углами, формы шара, даже формы для сборки меча. Несомненно, что такое разнообразие позволяет комбинировать их огромным числом способов, но это число всё равно сильно ограничено, а манипулировать большой коллекцией становится слишком сложно.

EverQuest Next: Строим сами: Вводный курс.А всё начиналось с нескольких кирпичиков.

Мне известен только один игровой движок, который организовал воксели иным способом — Voxel Farm — на котором создаются такие игры, как TUG и Landmark. Может кому-то это покажется удивительным, но воксели это не кубики, воксели — это точки, а вот от того, как они расположены друг относительно друга в пространстве и зависит номинальная форма. В принципе это может быть любое трёхмерное тело, есть примеры игр с шестиугольными призмами и даже тетраэдрами, но удобнее всего и привычнее являются кубы. Дейв Джордсон в своей заметке по ссылке выше смутил игроков, вызвав путаницу в терминологии. Хоть его вариант правильный с технической точки зрения, но я буду придерживаться уже сложившихся в игровой среде терминов. Номинальный кубик я буду звать вокселем, а его вершины (которые на самом деле воксели) так и буду звать вершинами. Разобрались? Поехали дальше.

EverQuest Next: Строим сами: Вводный курс. Двумерное представление вокселей.

Номинальный минимальный воксель в Лэндмарке, как и всякий куб, имеет 8 вершин. Но благодаря инструментам мы можем менять его форму, фактически перемещая его вершины в пространстве. Главное свойство вокселей в Лэндмарке в том, что между ними не может быть пустоты (воздух тоже состоит из вокселей). Так как соседние воксели делят между собой вершины, то перемещая общую вершину, мы изменяем форму сразу нескольких вокселей (а точнее сразу 8). Вершина может «блуждать» от своего изначального места в достаточно широких пределах. Схематично это показано на рисунке сверху. Поиграться с формой вокселей можно здесь.

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

Если мы переместим все вершины одного вокселя в сторону к его центру на величину 0,5, то получим воксель нулевого размера. Этот нулевой воксель будет обладать всеми свойственными другим вокселям параметрами: материалом, из которого он сделан, владельцем, твёрдостью, свойственному этому материалу и прочая. Можно создать решётку из таких вокселей, чтобы преградить персонажу путь, или выстелить из них практически невидимый, но вполне работоспособный пол. Если немного постараться, то можно даже вывернуть воксель наизнанку, хотя я так и не нашёл адекватного ему применения. :)

EverQuest Next: Строим сами: Вводный курс. Нуль-воксель.

Такой подход в организации воксельного пространства имеет свои недостатки — невозможно создать достаточно детализированную форму малого размера, например сферу. Шар, диаметром 4 вокселя и меньше по форме напоминает больше октаэдр. Шар диаметром 1 воксель невозможен в принципе, в этом приближении он будет выглядеть как куб. Звучит нелепо, вы правы. Зато, благодаря тому, что вершины вокселей могут плавно смещаться, можно получить совершенно потрясающие кривые, а прямые располагать под любыми углами. Надо только уметь, поэтому в следующий раз я расскажу не только что, но и как.

EverQuest Next: Строим сами: Вводный курс.

Следующая статья →
Читайте также

13 комментариев

avatar
Шар диаметром 1 воксель… — это куб! :D Спасибо за подробности, это интересно :)
avatar
Шар диаметром 1 воксель… — это куб!
Да, это очень странное место ^__^
avatar
Отличная статья, жду продолжения!
avatar
Или я чего-то не понимаю, или вектором задается позиция вершины, а не вокселя (в твоей терминологии). У трехмерного вектора 3 степени свободы, у вокселя — 24, но зависимые для соседних вокселей, так что просто 24-мерным вектором это тоже не выразить.
avatar
Чтоб выразить форму одной ячейки, требуется 8 векторов. Если ты подвесишь в воздухе такую ячейку, то она изменит форму 26 смежных ячеек, которые состоят из воздуха, то есть куб 3х3х3-1. В каком то смысле это можно представить в виде отливки, где нужный объект — позитивная форма, а окружающие его ячейки — негативная.
Я ответил на вопрос? А то не совсем понял в чём он заключается.
avatar
Игроки вокселем называют ячейку, а Дейв — вектор. В этом и весь сумбур с терминами.
avatar
Я так понял, что на воздух тоже уходят вычислительные мощности?((
avatar
Я по секрету скажу, что и в Майне и в Блокскейп воздух тоже обсчитывается. ;)
avatar
С майном-то понятно, там даже в сохраненных моделях указываются «координаты воздуха», уж не говоря о том, что у него даже свой ID есть, чего не скажешь о BS… А в Voxel Farm как не знаешь?

Я все-таки, по опыту копания, моему и еще одного более компетентного в этом вопросе товарища, предположу, что BS от них достаточно сильно отличается. Да, старый движок использовал те же «марширующие кубы», но сейчас там все немного иначе.
Во-первых, используются булевы операции примитивов для создание сложных форм.
Насколько я знаю (по спецификации сейвов) записываются только чанки, изменённые игроком.
Вообще воксельное- только запись о блоках. Йенс преобразует кубики в поверхность из видимых частей. Именно поэтому при провале в текстуры видна изнанка.
А во-вторых, в тех же пользовательских моделях используются только координаты твердых блоков, хотя… Возможно, это и не обязательно указывает на отсутствие. Йенс же говорил, что использует модифицированный алгоритм шагающих кубов (marching cubes) для построения поверхности. Так что «воздух» не учитывается вообще.
avatar
Это всё не говорит ни о присутствии, ни об отсутствии воздуха. В Лэндмарке мы можем судить о наличии у воздуха структуры благодаря тому, что в некоторых ситуациях видно, как воздушные воксели искажают обычные, не говоря уже о том, что сами разрабы на это указывали. Воздух, как все остальные воксели неплохо сжимается методом sparse voxel octree, даже наверное, лучше всего сжимается именно воздух.

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

С изнанкой тут точно так же — вот мир изнутри. Видеокарта не рисует все возможные полигоны, а лишь те, которые появляются на границе с прозрачной средой и которые обращены к камере. В принципе, это стандартный метод оптимизации, применяющийся ещё с самой зари игростроения.
avatar
Был бы это массив, думаю было бы ограничение.
Да и если есть сами блоки почему тогда их не учитыаают ни в моделях, ни в сейвах?
К тому же Йенс сам говорил, что воздуха нет, т.к. это модификация той технологии, что используется в фарме… Да и к тому же все равно не дает покоя тот момнт, что воздух не прописан вообще нигде, если он просчитыаается, то каким-то невообразимым для меня образом.))
avatar
Спасибо, может пригодится. Мне уже даже и приглашение в бету пришло, но как-то не хватает… чего-то… чтобы ещё чему-то начать своё время посвящать. Игры не денег стоят (деньги — то такое), а времени. И чем лучше игра — тем она «дороже». Эх.

Но выглядит очень интересно! :)
  • Anton
  • 0
  • v
avatar
Класс, прямо заинтересовал)

Оставить комментарий