Как сделать натурально выглядящий воксель

11

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

Я видел воксельную игру, которая естественно выглядит на местности. Под этим я подразумеваю не блочные. В игре есть 4 * 4 * 4 блока на кубический метр, и блоки, такие как грязь, песок и камень, имеют круглые края и вид тают вместе (как в обычных играх). Вот скриншот введите описание изображения здесь

Как это достигается?

KaareZ
источник
ты знаешь, что это за игра? как ты можешь быть уверен что это воксели? Хорошо, нашел его сам, игра называется Blockscape: indiedb.com/games/blockscape
Бабис
На procworld.blogspot.com есть блог, в котором есть все виды подробных сообщений в блоге о том, как был создан его воксельный движок. Сообщения уходят в прошлое на несколько лет с момента, когда двигатель был в зачаточном состоянии, до настоящего момента, когда он в настоящее время лицензируется для Everquest Next.
Stokastic

Ответы:

14

Это достигается путем интерполяции рамп между кубами разной высоты.

Когда у вас есть такой пейзаж (если смотреть со стороны)

  #
 ####   ##
############

Вы бы добавили полигоны, чтобы это выглядело так:

 /#\
/####\ /##\
############

Алгоритм для расчета этих рамп - алгоритм движущихся кубов .

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

Philipp
источник
Спасибо! Знаете ли вы место, которое объясняет, как это сделать в OpenGL, Облегченной Java Game Library? Изменить: И если вы знаете хорошую технику, как добавить обнаружение столкновений для марширующего ландшафта, это также будет оценено.
KaareZ
@KaareZ Извините, я никогда не работал с LWJGL.
Филипп
@ Филипп, возможно, вас заинтересует этот ответ
1
Или вы можете пропустить маршируют куб вообще и перейти к гораздо более интересной frankpetterson.com/publications/dualcontour/dualcontour.pdf менее осложненной вы можете просто добавить шум fonction как смещение к вершине финальной Chunk в. У вас все еще есть блок, но теперь у них есть свойство холмистой местности, поскольку он не выровнен строго по прямой линии ... комбинируя двойное контурирование, и это для еще более интересного результата (с модификатором на смещении вершины, чтобы контролировать более или менее органическую генерацию) ,
user29244
forum.unity3d.com/attachments/captura-jpg.23795 вот изображение «подвижного блока» (смещение применяется как вертикальное смещение) Вот еще изображение, но со смещением, примененным во всех направлениях forum.unity3d.com/attachments/t1- jpg.23871 forum.unity3d.com/attachments/t2-jpg.23872 vimeo.com/27976287
user29244
6

Есть два препятствия, с которыми вам нужно столкнуться, чтобы добиться такого же качества, как на изображении, первое - художественное, а второе - техническое (память, обработка). Сначала я предполагаю, что вы уже решили свою художественную проблему, вы можете создавать модели, искусство, шейдеры и т. Д. (Частично, потому что я не могу ответить на художественные проблемы).

Основная техническая проблема заключается в том, что при вокселизации тех моделей, которые вы создали с высокой степенью детализации, вы получите огромное количество крошечных вокселей. Обработка и рендеринг огромного количества вокселей не тривиальны. Ответ на это называется Sparse Voxel Octrees

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

Подробнее о SVO в этой статье

Вот с открытым исходным кодом с реализацией лицензии BSD SVO https://code.google.com/p/efficient-sparse-voxel-octrees/

Вот видео, которое объясняет рендеринг полигонов и SVO (плюсы и минусы).

concept3d
источник
Это круто! Кроме того, взгляните на sauerbraten.org , он использует похожую технику (но не реализует марширующие кубы, эта часть оставлена ​​для дизайнера уровней)
Kroltan