Как визуализировать воксельную модель .vox в OpenGL?

Мне нужна помощь с визуализацией модели .vox в OpenGL.

Формат файла .VOX описан здесь.

Вот пример программы чтения файлов VOX.

И вот здесь я столкнулся с проблемой - как мне сделать рендеринг модели .vox в OpenGL? Я знаю, как визуализировать стандартные модели .obj с текстурами, используя модель отражения Фонга, но как мне обрабатывать воксельные данные? Какие данные я должен передавать шейдерам? Должен ли я как-то анализировать данные, чтобы получить индекс каждого отдельного вокселя для анализа? Как мне создавать вершины на основе воксельных данных (должен ли я вообще это делать)? Должен ли я передавать все куски или есть простой способ отфильтровать те, которые не будут видны?

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

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


person SpruceCat    schedule 22.10.2016    source источник
comment
Как вы хотите визуализировать воксельное изображение?   -  person Nicol Bolas    schedule 23.10.2016
comment
Гугл объемный рендеринг   -  person Spektre    schedule 23.10.2016
comment
Кажется, формат просто поддерживает сплошные кубы (которые они называют вокселями). Таким образом, самый простой способ — создать куб для каждого вокселя и визуализировать его.   -  person Nico Schertler    schedule 23.10.2016


Ответы (1)


После еще нескольких поисков я решил визуализировать кубы двумя способами:

1) На основе воксельных данных я буду генерировать вершины и скармливать их пайплайну. 2) Используя геометрический шейдер, я буду испускать вершины на основе индексов вокселей для рендеринга, которые я подаю в конвейер. Я буду хранить всю модель как 3D-текстуру.

person SpruceCat    schedule 23.10.2016