Итак, я ищу воксельный графический движок с библиотеками C++ (ориентированный на игры). Просто для удовольствия, я впервые использую графическую библиотеку, поэтому она не должна быть очень сложной или мощной, просто простой для понимания.
Знаете какие-нибудь библиотеки C++ для воксельной графики?
Ответы (4)
Имейте в виду, что воксели — это всего лишь концепция. Существует несколько способов обработки их как данных и несколько способов их визуализации (извлечение геометрии, преобразование лучей и т. д.).
Это точка данных в сетке с фиксированным интервалом, вот и все. Что представляет собой эта точка или какой геометрический примитив вы с ней связываете, полностью зависит от реализации. Люди обычно визуализируют их как кубы, занимающие всю ячейку в фиксированной пространственной сетке, поэтому вы ассоциируете их с кубами.
Самое известное/популярное приложение на основе вокселей, Minecraft, визуализирует их с помощью стандартного конвейера растеризации в виде кубов, центрированных на сетке. (Академические) Системы, такие как GigaVoxels, выполняют трассировку лучей в структуру разреженного воксельного октодерева для создания изображений.
Я столкнулся со следующими воксельно-ориентированными библиотеками:
- Field3D: библиотека Sony Pictures для хранения воксельных данных: http://opensource.imageworks.com/?p=field3d
- OpenVDB: новый формат, выпущенный Dreamworks Studios: http://www.openvdb.org/index.html
- Polyvox: используется для нескольких игр, находящихся в активной разработке: http://www.volumesoffun.com/polyvox-download/
- VoxelIQ: игровой блочный движок на C# — https://github.com/raistlinthewiz/voxeliq
- GigaVoxels: библиотека потоковой передачи вокселей с наведением лучей — http://gigavoxels.imag.fr/
- Binvox: не совсем библиотека, а вокселизатор с базовым определением двоичных воксельных данных: http://www.cs.princeton.edu/%7Emin/binvox/
- VoxelFarm: механизм для создания процедурного воксельного ландшафта: http://www.voxelfarm.com/vfweb/engine.html
- cuda_voxelizer: инструмент для преобразования полигональных моделей в воксельные модели, вывод в различные форматы: https://github.com/Forceflow/cuda_voxelizer
А вот пост на Reddit с кодом воксельного движка за 20 лет: www.reddit.com/r/VoxelGameDev/comments/3fvjb4/20_years_of_voxel_engines_source_code_included/
Я занимаюсь разработкой современной воксельной библиотеки под названием PolyVox, которая обеспечивает хранение томов (включая подкачку) , извлечение поверхности, а также дополнительные функции, такие как литье лучей и расчет окружающего затенения. Однако это не игровой движок, но он предоставляет все воксельные элементы, необходимые для подключения к чему-либо еще. Это полностью открытый исходный код, и для него существует хорошее сообщество разработчиков. На форумах люди всегда готовы ответить на общие вопросы о рендеринге вокселей и т.д.
Это все в реализации и исполнении. Я надеюсь, что они могут помочь вам в поисках того, что вам нужно. Однако я нашел эту ссылку, которая может быть полезна.
Field3D — библиотека с открытым исходным кодом для хранения воксельных данных. Он предоставляет классы C++, которые управляют хранением в памяти, а также формат файлов на основе HDF5, который позволяет легко записывать объекты C++ на диск и считывать их с диска.
(также)
Minetest — игра с открытым исходным кодом, очень похожая на Minecraft.
Статья о вокселах — графическое объяснение что такое воксель.
http://voxelstein3d.sourceforge.net/