Correct. Both are useful in certain circumstances.
Sorry, but this is like debating 2D pixels vs 2D vector graphics.
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.
Unless voxels can be coupled with a technology that makes creating and manipulating content easier
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.
I don't see them dominating the market anytime soon as a polygon-killer.
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?
Polygons are, first and foremost, a vector entity, aka they can be scaled up and down with no loss in quality.
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.
Voxels are just 3D pixels
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.
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.
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.
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.
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
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.
The only practical application of voxels is to fully represent the state of a truly volumetric 3D raster display
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.
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.
The moment you say "Yeah, but you can have stretchable/modifiable/variable volume etc. voxels" you're automatically talking polygons ;-)
Last edited by GooberMan on Aug 13 2011 at 16:45