So, I'm looking for a voxel graphic engine with C++ libraries (game oriented). Just for fun, it would be the first time I use a graphic library, so it doesn't have to be very complex or powerful, just easy to understand.
-
What kind of voxels are you talking about? Minecraft-style voxels (where the squares are big and textured) or traditional voxels (where the squares are as tiny as possible)? – Nicol Bolas Nov 05 '11 at 18:09
-
@Nicol Bolas, a Minecraft style, maybe not that big, but big enough to be sure that it's a cube. But in the end it really doesn't matter, I just want to dig a little into voxel graphics. – Ignacio Contreras Pinilla Nov 05 '11 at 22:17
4 Answers
Bear in mind that voxels are just a concept. There are several ways of handling them as data, and several ways of visualizing them (extract geometry, raycasting, ...).
It's a data point in a fixed-spaced grid, that's it. What this point represents or which geometric primitive you associate with it, that's totally implementation-specific. People usually visualize them as cubes occupying the entire cell in the fixed space grid, that's why you associate them with cubes.
The most famous/popular voxel-based application, Minecraft, visualizes them using the standard rasterization pipeline as cubes centered on a grid. (Academic) Systems like GigaVoxels perform ray-tracing into a Sparse Voxel Octree structure to generate images.
I've encountered the following voxel-oriented libraries:
- stb_voxel: Possibly the lowest-barrier-to-entry way of writing a voxel renderer. Single header include. https://github.com/nothings/stb/blob/master/stb_voxel_render.h
- Field3D: Sony Pictures library for storing voxel data: http://opensource.imageworks.com/?p=field3d
- OpenVDB: A new format released by Dreamworks Studios: http://www.openvdb.org/index.html
- Polyvox: Used for several games, in active development: http://www.volumesoffun.com/polyvox-download/
- VoxelIQ: Game-oriented block-based engine in C# - https://github.com/raistlinthewiz/voxeliq
- GigaVoxels: Ray-guided streaming library for voxels - http://gigavoxels.imag.fr/
- Binvox: Not really a library, but a voxelizer with a basic binary voxel data definition: http://www.cs.princeton.edu/~min/binvox/
- VoxelFarm: An engine for generating procedural voxel terrain: http://www.voxelfarm.com/vfweb/engine.html
- cuda_voxelizer: A tool to convert polygon models to voxel models, outputs to various formats: https://github.com/Forceflow/cuda_voxelizer
And here's a reddit post with 20 years of voxel engine code: https://www.reddit.com/r/VoxelGameDev/comments/3fvjb4/20_years_of_voxel_engines_source_code_included/

- 1,273
- 2
- 12
- 28
It is all in implementation and execution. I hope these can help you in the pursuit of what you need. However i found this one link that might be useful..
Field3D - an open source library for storing voxel data. It provides C++ classes that handle storage in memory, as well as a file format based on HDF5 that allows the C++ objects to easily be written to and read from disk.
(also)
Minetest - open source game very similiar to Minecraft
Voxel Article - graphical explanation of what a voxel is.

- 2,642
- 6
- 27
- 45
I'm involved with developing a modern voxel library called PolyVox which provides volume storage (including paging), surface extraction as well as supplementary features like ray casting and ambient occlusion calculation. It's not a game engine though but provides all the voxel stuff you need to plug into anything else. It's fully open source and there's a good developer community for it. On the forums people are always willing to answer general questions about voxel rendering etc.

- 1,474
- 3
- 21
- 30

- 61,365
- 24
- 124
- 204
-
I see it uses Voxlap. It's a good starting point. Thanks – Ignacio Contreras Pinilla Nov 05 '11 at 22:18