Sorry, but this is like debating 2D pixels vs 2D vector graphics.
Correct. Both are useful in certain circumstances.
Unless voxels can be coupled with a technology that makes creating and manipulating content easier
Like, say, using Mudbox or Z Brush? Nothing is just magically all polygons or all voxels, they don't have separate packages for each. Export as a low poly mesh with generated tesselation/parallax maps or export as a bunch of voxels, either way it's converting it from it's internal format.
I don't see them dominating the market anytime soon as a polygon-killer.
Neither does anyone actually researching tech for the next generation. They see it as a hand-in-hand solution. For the very reason you specify - it's significantly easier to animate a poly mesh than a group of voxels. Most geometry you see on screen in a game just doesn't animate though. Hence, voxel research.
Polygons are, first and foremost, a vector entity, aka they can be scaled up and down with no loss in quality.
Scale both up enough though and you see the jagged edges where you don't have the data capacity for the resolution you want. And therein lies the limiting factor with whatever you choose - do you have the space in memory and the memory bandwidth to use it effectively?
Voxels are just 3D pixels
I hope you're not thinking of pixels as a rigidly square object. For example, the 320x200 resolution all Doomers should be familiar with is a 16:10 aspect ratio. You most likely played Doom for the first time on a 4:3 monitor. This means that each pixel, as displayed, is 1.2 times taller than its width.
Following on from that, a voxel doesn't need to solely be a collection of RGB values. In fact, given that voxel in reality means Volumetric Picture Element, a voxel is much more analogous to a texel. Subtle but obvious difference between a pixel and a texel - a pixel is solely intended for direct rasterisation by the hardware. A voxel is rendered to a pixel just as a texel is rendered to a pixel. And just like a texel, you can store much more information for the rasterisation engine in a voxel than in a pixel.
your voxel model/scene will only have a finite resolution, and you will have to interpolate the rest. Plus, you will only have "hollow shell" voxel models.
You just exactly described a polygon mesh. Replace "voxel" with "polygon mesh". Voila. Triangles don't just get magically made out of points, the pixel that is rasterising is interpolated from the three triangles that bound that region of the screen. So, with interpolation happening either way, you then come back to the question of whether voxels or polygons are best used for the situation at hand.
And, ironically, in order to render a voxel volume as smoothly as possible, or adding a skeleton to it, you will have to go through triangulation/polygonization anyway
If you're trying to exploit the hardware that's currently found in the X360 and PS3. Got a CUDA or OpenCL capable card available to you? Your code never needs to be aware what a polygon is, and the hardware won't know the difference because all it does is crunch the numbers you give it really well.
The only practical application of voxels is to fully represent the state of a truly volumetric 3D raster display
Trufax: Crysis uses voxels for it's terrain, in combination with heightmaps. It's an example of rendering voxels via polygons to run efficiently on the target hardware.
Trufax: id's next generation geometry virtualisation technology is based on voxels. You won't see it on a PS3, X360, and probably not even the Wii U.
The moment you say "Yeah, but you can have stretchable/modifiable/variable volume etc. voxels" you're automatically talking polygons ;-)
Go back to school. A polygon samples for rasterisation in two dimensions (ie the tangential and bitangential dimensions as defined by the plane normal). A voxel samples in three dimensions.
Last edited by GooberMan on 08-13-11 at 16:45