# polygon mesh from voxels

This topic is 2411 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

ive got a binary voxel grid, stored as 3 dimensional array of boolean values.
does anyone have an idea how to create a polygon mesh out of such a grid?

##### Share on other sites
"Marching cubes" is the standard answer here. "Marching tetrahedra" is a slightly simpler version of the same (fewer special cases). Both are for triangulating level sets of scalar fields. There are various ways you can produce a scalar field from your voxel grid. The standard answer here is linear interpolation; then you'd use marching cubes/tetrahedra to compute the 0.5-level-set. Linear interpolation, however, will create some artifacts, so you may want to use a higher-order scheme. Alternatively (or maybe equivalently, depending), you could consider blurring your data first.

##### Share on other sites
You could take a look at [url="http://thermite3d.org/joomla/"]PolyVox[/url] for a library that can do it for you.

##### Share on other sites
He didn't say how we wanted to interpolate his data. You suggested linear or higher order, but for all we know he wants to keep it stepwise, a la Minecraft.

##### Share on other sites
[quote name='A Brain in a Vat' timestamp='1308004072' post='4822957']
He didn't say how we wanted to interpolate his data. You suggested linear or higher order, but for all we know he wants to keep it stepwise, a la Minecraft.
[/quote]

And everytime MC is brought up in a Voxel topic I want to voice my personal opinion that just because a game is limiting its geometry to cubes and rectangles doesn't make it a voxel game or engine. Voxels are the 3D equivalent of pixels and in my eyes that makes textured cubes as much a voxel as a textured rectangle is a pixel: not at all. It's drawing building blocks in a completely non-voxel way which just so happen to be >90% cubes. At no point will you see anything in MC where actual voxel data is converted to regular geometry for rendering, because everything already IS regular geometry from the start.

##### Share on other sites
[quote name='Trienco' timestamp='1308024395' post='4823037']
And everytime MC is brought up in a Voxel topic I want to voice my personal opinion that just because a game is limiting its geometry to cubes and rectangles doesn't make it a voxel game or engine. Voxels are the 3D equivalent of pixels and in my eyes that makes textured cubes as much a voxel as a textured rectangle is a pixel: not at all. It's drawing building blocks in a completely non-voxel way which just so happen to be >90% cubes. At no point will you see anything in MC where actual voxel data is converted to regular geometry for rendering, because everything already IS regular geometry from the start.
[/quote]

At no point in Super Mario Bros. will you see anything where actual pixel data is converted to anything. They're just shown on the screen.

I think you're attaching too much meaning to the term "voxel".

##### Share on other sites
[quote name='A Brain in a Vat' timestamp='1308064418' post='4823238']
I think you're attaching too much meaning to the term "voxel".
[/quote]

Well, since the term is hiding "volumetric picture _element_" in it, I simply don't consider a regular 3D mesh that happens to be cube shaped a "voxel", just like I don't consider a square sprite a "pixel" and calling it a "textured pixel" wouldn't help either. Besides, I doubt Notch at any point had the word "voxel" on his mind when he did MC. If it was supposed to be a voxel engine, it would be sad to see a 20 year old game like Comanche pushing a ton more "voxels" in software on a 50Mhz machine.

By watering down the word voxel to mean "anything with a lot of right angles and unit length edges" it just distracts from the more interesting "real voxel" topic that usually deals with a massive amount of data and ironically isn't even limiting itself to cubes when converting voxel data to geometry for rendering (or uses point sprites... can they still be sprites if they have no texture?) So technically I guess I simply feel that it hurts the actual voxel discussion by pretending that replacing every single voxel with a textured 3D mesh is a viable or even valid approach, especially when the only special handling is in culling the blocked faces of a cube.