Я разрабатываю воксельную игру, но думаю, что использую неправильную технику. В настоящее время я использую плоские плитки, чтобы сделать блоки, и я думаю, что есть лучший и более эффективный способ.
Я видел воксельную игру, которая естественно выглядит на местности. Под этим я подразумеваю не блочные. В игре есть 4 * 4 * 4 блока на кубический метр, и блоки, такие как грязь, песок и камень, имеют круглые края и вид тают вместе (как в обычных играх). Вот скриншот
Как это достигается?
Ответы:
Это достигается путем интерполяции рамп между кубами разной высоты.
Когда у вас есть такой пейзаж (если смотреть со стороны)
Вы бы добавили полигоны, чтобы это выглядело так:
Алгоритм для расчета этих рамп - алгоритм движущихся кубов .
Если вы хотите, чтобы он был еще красивее, не просто используйте отдельные многоугольники для интерполяции между кубами, используйте кривые из нескольких многоугольников. Но имейте в виду, что это добавит довольно много полигонов к вашей сцене, поэтому вы должны делать это только для тех кубов, которые находятся близко к камере.
источник
Есть два препятствия, с которыми вам нужно столкнуться, чтобы добиться такого же качества, как на изображении, первое - художественное, а второе - техническое (память, обработка). Сначала я предполагаю, что вы уже решили свою художественную проблему, вы можете создавать модели, искусство, шейдеры и т. Д. (Частично, потому что я не могу ответить на художественные проблемы).
Основная техническая проблема заключается в том, что при вокселизации тех моделей, которые вы создали с высокой степенью детализации, вы получите огромное количество крошечных вокселей. Обработка и рендеринг огромного количества вокселей не тривиальны. Ответ на это называется Sparse Voxel Octrees
SVO даст вам возможность рендерить высокодетализированные модели без обработки всех вокселей, но только видимых. Обратите внимание, что для рендеринга SVO вам нужно будет использовать приведение лучей, а не обычную технику растеризации.
Подробнее о SVO в этой статье
Вот с открытым исходным кодом с реализацией лицензии BSD SVO https://code.google.com/p/efficient-sparse-voxel-octrees/
Вот видео, которое объясняет рендеринг полигонов и SVO (плюсы и минусы).
источник