Question

Okay, i understand that voxels are just basically a volumetric version of a pixel.

After that, I have no idea what to even look for.

Googling doesn't show any tutorials, I can't find a book on it anywhere, I can't find anything even having to do with the basic idea of what a voxel really is.

I know much of the C++ library, and have the basics of OpenGL down.

Can someone point me in the right direction?

EDIT: I guess I'm just confused on how to implement them? Sorry for being a pain, it's just that I can't really find anything that I can easily correlate to... I think I was imagining a voxel being relevant to a vector in which you can actually store data.

a voxel can be represented as ANY 3D shape? For example, say I wanted the shape to be a cylinder. Is this possible, or do they have to link like cubes?

Was it helpful?

Solution

Minecraft is a good example of using voxels. In Minecraft each voxel is a cube.

To see a C++ example you can look at the Minecraft clone Minetest-c55. This is open source so you can read all of the source code to see how its done.

Being cubes is not a requirement of voxels. They could be pyramids or any other shape that can fit together.

OTHER TIPS

I suspect that you are looking for information on Volume Rendering techniques (since you mention voxels and OpenGL). You can find plenty of simple rendering code in C++, and more advanced OpenGL shaders as well with a little searching on that term.

In the simplest possible implementation, a voxel space is just a 3 dimensional Array. For solids you could use a single bit per voxel: 1 == filled and 0 == empty. You use implicit formulas to make shapes, e.g. A sphere is all the voxels within a radius from the center voxel.

Voxels are not really compatible with polygon-based 3d rendering, but they are widely used in image analysis, medical imaging, computer vision...

Let's Make a Voxel Engine on Google Sites might help one to get started creating a voxel based engine:

https://sites.google.com/site/letsmakeavoxelengine/

In addition to that there are presentations of the results on Youtube worth checking:

http://www.youtube.com/watch?v=nH_bHqury9Q&list=PL3899B2CEE4CD4687

Typically a voxel is a position in some 3D space that has a volume (analogous to the area that a pixel contains.

Just like in an image, where a pixel contains some scalar value (grayscale) or vector of values (like in a color image where the vector is either the red, green, and blue components, or hue, saturation, and value components) the entries for a voxel can have some scale or vector of values.

A couple natural examples of volumetric images that contains voxels are 3D medical imagines such as CT, MRI, 3D ultrasound etc.

Mathematically speaking a 3D image is a function from some voxel space to some set of numbers.

look for voxlap or try this http://www.html5code.com/gallery/voxel-rain/ or write your own code. Yes, a voxel can be reduced to a 3d coordinate (which can be implied by it's position in the file structure) and a graphical representation which can be anything (cube, sphere, picture, color ...). Just like a pixel is a 2D coordinate with a color index.

You only need to parse your file and render the corresponding voxels. Sadly, there is no 'right' file format although voxlaps file formats seem pretty neat.

good luck

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top