Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Koko Ricky

The future: Voxels or polygons?

Recommended Posts

Sorry, but this is like debating 2D pixels vs 2D vector graphics.

Unless voxels can be coupled with a technology that makes creating and manipulating content easier, I don't see them dominating the market anytime soon as a polygon-killer. Polygons are so successful in CGI because they could be combined with skeleton animation and motion capture, and allowed defining rigid/mobile structures in models.


Polygons are, first and foremost, a vector entity, aka they can be scaled up and down with no loss in quality. Voxels are just 3D pixels: even if you develop a "voxel motion capture" camera of sorts (kinda possible, even using a consumer-grade XBox Kinect), 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.

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 :-p

Polygons are also used in engineering and scientific modeling and simulations, where surface and length-wise properties are more important than volumetric ones (e.g. it's pointless to simulate the behavior of a sail, a wing or a car/building frame with particles, when an area-based approach will be easier to model).

The only practical application of voxels is to fully represent the state of a truly volumetric 3D raster display, such as this cube: http://www.davidwyatt.me.uk/ledcube/ where every pixel matters.

The moment you say "Yeah, but you can have stretchable/modifiable/variable volume etc. voxels" you're automatically talking polygons ;-)

Share this post


Link to post
Maes said:

Sorry, but this is like debating 2D pixels vs 2D vector graphics.

Correct. Both are useful in certain circumstances.

Maes said:

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.

Maes said:

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.

Maes said:

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?

Maes said:

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.

Maes said:

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.

Maes said:

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.

Maes said:

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.

Maes said:

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.

Share this post


Link to post
GooberMan said:

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.


I sure hope you're just trolling there. So how would you call a 3D polygon? The moment that you forsake fixed volume and shapes for voxels (which simplify certain aspects of spatial representation but complicate other), they are not voxels anymore, but full 3D polygonal objects. Aka, polygons. Ya know, these things with pure, absolute mathematical properties.

And what does the limited resolution of a raster display have to do with the mathematical properties of a vector, either in 2, 3 or N dimensions? They are infinitely scalable and distortable. That's why I compared 2D pixels with 2D vectors: a pixel is a convenience discrete entity which does not even have standardized dimensions in actual pysical displays. A vector OTOH has precise and absolute mathematical properties, which are independent of its representation.

Share this post


Link to post

ITT: A random gamer argues about programming with a professional programmer.

It's about to get real.

Share this post


Link to post
Maes said:

So how would you call a 3D polygon?

Do try and pay attention. I stated exactly what a polygon is several posts before you chimed in.

GooberMan said:

A polygon is literally a plane with its surface defined by a series of vectors.

This is the mathematically 100% correct explanation of a polygon. And that's exactly what it is in modern polygon rendering hardware. The three vectors that define a triangle specify exactly a plane, and delimit the surface area of that plane to a polygon. There is no deformity of any sort whatsoever. So, following on from that:

Maes said:

The moment that you forsake fixed volume and shapes for voxels (which simplify certain aspects of spatial representation but complicate other), they are not voxels anymore, but full 3D polygonal objects. Aka, polygons.

100% incorrect. A voxel representation of a 3D object is a series of sampled points with volumes. A polygonal representation of a 3D object is mathematically a series of intersecting planes with vectors delimiting the surface of said planes. As described above.

You seem to be confused though. So, you're making a voxel representation of a 3D object that you intend on displaying in real time on severely limiting hardware. You're never going to see inside these voxel objects, you're only ever going to see the outside of them. Why would you then keep the voxels in memory that you're never going to see? Discarding those voxels doesn't suddenly turn it in to a polygon mesh. It's an optimisation. A thoroughly valid one. You're still rendering point data instead of planes. And you've saved memory (and most likely the processing time needed to pick the voxel you want to raster to a pixel out of your voxel soup as there's significantly less data to parse).

Maes said:

And what does the limited resolution of a raster display have to do with the mathematical properties of a vector, either in 2, 3 or N dimensions? They are infinitely scalable and distortable.

That's nice. It's still just data sitting around somewhere unused until you try to represent it in a human understandable format. Until the day that you can neurally interface directly with your computer hardware, your infinitely scalable vector is useless until you do something about it. This discussion is about computer graphics, thus the limited resolution of a raster display and the limited hardware which exists at a consumer level has everything to do with the mathematical properties of a vector. Infinite resolution without infinite storage to back it up will only ever give you a finite representation of what it is you're trying to present.

Maes said:

That's why I compared 2D pixels with 2D vectors: a pixel is a convenience discrete entity which does not even have standardized dimensions in actual pysical displays. A vector OTOH has precise and absolute mathematical properties, which are independent of its representation.

And that's precisely why I corrected you and tried to steer the conversation towards texels rather than pixels. But to make it clearer and to tie it in to the above paragraph: a pixel is the finite representation of a vector. It is also the finite representation of a texel. And it is also the finite representation of a voxel. All these statements are true and do not contradict what I previously said about a pixel.

A vector is an absolute mathematical representation of a point - or, to be more mathematically correct, a vector is an absolute mathematical representation of a distance and direction from a point. It's precisely this distinction from a point that conceptually gives it the transformation properties we all know and love.

A texel, however, has no absolute mathematical representation of itself. However, a texel does represent sampled data at an absolute offset from the origin of a texture.

A voxel, if we take a step back from real-time optimisations for a second and think about a full volume voxel cloud, is conceptually similar to a 3 dimensional texture. Which I know may be hard for you to grasp as you've had previous problems understanding 3 dimensional textures under the guise of mipmaps before. The voxel itself contains no absolute spatial data, but is a representation of absolute offset from the origin of the voxel map. And just like a texture map, where you render it and at what scale is completely inconsequential.

We all dream of the day when we have enough memory to replace textures mapped to polygons with actualy polygonal representations of the colour and tesselation data. But modern polygon rendering hardware isn't that simple. It doesn't render vectors. It renders vertices which is a collection of data including vectors, surface normals, and a whole heap of other tidbits I won't get in to. Voxels, being natively a relative collection of absolute samples, will take up far less memory for, say, a massive 3D terrain than a vertex mesh of the same resolution. Thus, all the research.

Share this post


Link to post

You are making the mistake of restricting the definition of polygons to two dimensions. By its own etymology, a "polygon" is any shape composed of many angles (from Greek πολύς (many, multiple) and γωνία (angle)). The proper 3D extension of that would be a polyhedron ("many facets"), and practically all 3D models are polyhedra. Composed of polygons. In a 3D space.

Call them 3D polygons, polyhedra, polyobjects, 3D models etc. but their essence won't change. We're really stooped as low as "discussing" semantics here, which is never a good sign (PROTIP: someone of us is trolling here).

Voxels OTOH, imply that there's a "spatial grid" of fixed volume and fixed shape entities which you consider as the base unit for your world. It offers certain advantages in that you can define a 3D environment as a simple extension of a 2D-raster in 3 dimensions (without going trough vector analogues at all), but it lacks seriously in others.

The moment that you say "Oh no man, I want them to be flexible/infinitely scalable/textureable olololol" then you're talking about a classic poly-whatever model, not voxels. Otherwise there's no practical difference between a voxel world and one based on point/polygon meshes with a slightly different interpretation.

I'm waiting for the "peace man, just trollin'" tagline anytime now...anytime....

Share this post


Link to post

I haven't read all of the recent posts, but I'm quite pleased to see people discussing this in a serious and technical manner. I'm actually learning a good deal just from skimming over this page. Anyway, thought I'd add my two cents. One advantage a voxel "data set" would have over a polygonal mesh is the ability to cross-section easily. Let's say the technology reaches a point that data sets can be animated as easily as skeletal meshes. The enemy comes at you, and you fire a couple of slugs into its face. The chunks of face affected by ballistics would be blown off according to the angle of trajectory, rather than relying on a few fixed, scripted explodey face animations. Additionally, if you were to slice someone with a sword, you would see dynamic cross sections as well.

Share this post


Link to post
Maes said:

PROTIP: someone of us is trolling here

Hint: it's you.

It's cute that you're still trying to sound like you know what you're talking about. Where exactly has anyone ever specified that a volume is a rigidly flat thing? I've made the distinction of a voxel map being a series of sampled points with a volume. A sphere is a point with a radius, it is a volume, and is substantially easier and higher quality to render as a volume than if you tried representing it with a polygon mesh. Overlapping spheres as a voxel map? Well, that sounds like a fantastically novel idea for doing high quality volumetric fog.

(This is where you state a sphere is a polygon with infinite sides and try to ramble on about infinite resolution of vectors again, right?)

A texel is also a point with a fixed two-dimensional volume. Yet to find values in between texels, they are treated solely as points with the volumes implying distance between them, and interpolated with many different algorithms. Scale up a texel, and it suddenly doesn't become a polygon. Conversely, if you extend that in to the third dimension (as you seem so fond of), scale up a voxel and it suddenly doesn't become a polyhedron.

Not everything fits in to a model that Greeks created a few milennia ago. It's cute that you've got national pride and all, but as a geometric model it's only good for superficial comparisons to voxels. Interpolating between a set of voxels doesn't suddenly create a flat surface that you can squeeze in to the definition of a polytope (unless someone's decided to take that "optimisation" at the expense of visual quality).

Share this post


Link to post
GooberMan said:

(This is where you state a sphere is a polygon with infinite sides and try to ramble on about infinite resolution of vectors again, right?)


No, more like you trying to overlap the concepts of "voxel clusters" and "point meshes" with some (pretty weak) sophistry. There are some technical similarities (both are made by points, after all), maybe even some representation similarities (they both represent bunches of points, no?) but different semantics.

An easily understood 2D analogue would be 2D gridded data (with implicit, fixed grid positions and therefore point dimensions) vs free-form 2D data (where each point can have its free-floating X,Y coordinates, with overlaps and free-form inter-point voids).

The gridded data has the advantage of not needing to store positional information for each data point (since it's implicit) but OTOH imposes a rigid spatial quantisation. Expand the concept to 3 dimensions, and
you have the MORE TRADITIONAL DEFINITION OF A VOXEL SPACE. The ungridded data would correspond to traditional points/vectors/polygons/polyhedra/models (in hierarchical order).

Gridded data (and therefore voxels) can be seen as a special subset of the latter, that's why whenever you try describing "rich voxels" or "ungridded voxels" of any kind, mathematically speaking you are implying that they are promoted to full polygons/vectors/whatever. Even if you try denying it. Reminds me of this ;-)

Share this post


Link to post

Voxel-like techniques might turn out to be useful for certain scenarios but anyone who seriously imagines a "voxels vs. polygons" battle is deluding themselves.

Share this post


Link to post

Maes said:

Why are you still talking?

Maes said:

Pretty much what GooberMan has spent several posts trying to get you to understand

Okay, progress. But then you go and do this:

Maes said:

Gridded data (and therefore voxels) can be seen as a special subset of the latter, that's why whenever you try describing "rich voxels" or "ungridded voxels" of any kind, mathematically speaking you are implying that they are promoted to full polygons/vectors/whatever. Even if you try denying it.

You are literally retarded. Let go of polygons. It only becomes a series of polygons if you assume the points form connected planes. Which, if you're interpolating between them with quadratic or cubic equations to find a voxel in between voxels, is just is not the case.

I take it back though - don't go back to school. You'll just waste your money to get a failed report card.

Share this post


Link to post

Are you finished? Yeah? good:

fraggle said:
Voxel-like techniques might turn out to be useful for certain scenarios but anyone who seriously imagines a "voxels vs. polygons" battle is deluding themselves.


Couldn't have said it better myself. I dare you to rebuke fraggle like you did with me, based on your undoubtedly sound and rational arguments, based on facts and not on personal attacks[/sarcasm].

BTW, throwing ad hominens at me or anyone else doesn't really make your point (assuming you ever had one) appear in any better light. In case you don't know what that means, it means that you keep attacking the person making a statement, rather than the statement itself (and, in fact, you didn't oppose any of my initial points. You simply threw in a mix of irrelevant facts, lots of hand-waving, and most of the time you kept insulting me.

That, in my book, indicates a troll/sore loser/someone losing an argument and trying to make up for it by pretending to be a Tough Internet Guy or whatnot. For what regards me, you lost this argument. And don't even think of flattering yourself: you're neither the first, nor the last.

Share this post


Link to post

Goddamit interwebs, stop turning interesting discussions to a flamewar.

Been checking that euclideon thing every now and then since they first came up more than year ago. We'll see if it's more than just words. Big claims at least.

Share this post


Link to post

GooberMan said:

Maes said:

Sorry, but this is like debating 2D pixels vs 2D vector graphics.

Correct. Both are useful in certain circumstances.

If you're going to try to use someone else's quote to prove you're right, don't quote a rewording of what I've already said. And also don't ignore the mountains of mathematical facts, hardware details, and technical know how I've listed and that you've conveniently decided to ignore in favour of the handful of insults I have thrown at your intelligence. It really annoys you that you're not the authority on all subjects, doesn't it?

So here's another fact that I only touched on in my last post. Interpolation between voxels to find subvoxels. Most people can only visualise it as the blocky collection of 3D cubes. Your argument from the start is that any scaling or transformation of voxels immediately turns it in to polygons. Something that is simply incorrect. You can represent it with polygons, but it does not immediately turn it in to polygons.

Small related pop quiz: What's the difference between scaling up and object, and moving the viewpoint closer to an object in a 3D transformation pipeline as seen in modern video cards?

Answer: almost nothing. The matrices used to perform the transformations will have different values, but it's literally the difference between 2 + 3 and 3 + 2.

So, going back to your argument that scaling a voxel automatically makes it a polygon. If we're talking absolute mathematical properties, you can represent a single voxel as a polyhedron. But that's completely inefficient, and it's why voxels avoid polygons as a concept. To create a box as a polyhedron, you need to define 12 edges and six polygons. To create a box as a volume, you need a point and a distance from that point in three dimensions. Further, as an absolute mathematical function, there are far easier ways to determine where a ray (ie a line with a beginning and end point; or as is more generally used in computers, a point with a vector specifying distance and direction) intersects with a box volume than converting it to polygons. Specifically, from a point with distance you can extrapolate a mathematical plane (ax + by + cz + d = 0) and do a series of plane tests for each side without having to add the additional overhead of finding edges so you can do polygon tests.

Volume tests such as this are also an area where traditional mathematics and mathematics as employed on computer hardware diverge slightly. Whereas you'd keep all the data intact on paper, it is far more efficient to transform the line to the local space of the volume and perform axis aligned bounding volume tests.

So, that's conceptually a mathematical model of a 3 dimensional scene consisting of box volumes and avoiding the unnecessary cruft that comes with polygons. But what about the interpolation between voxels that I started this with?

Rather than rendering as solid volumes, we take a page from how texels are subsampled and interpolate between voxels with quadratic and cubic functions to give us smooth surfaces. Intersections of lines and other lines are mathematical concepts that don't require polygonal representation, as are the intersections of lines and curved surfaces. The results of these functions are a point. You know, those abstract concepts that don't have volume, surface area, or anything else like that. And that's exactly what you sample when you're rendering a voxel map. From there, it does have an analog as a 0-dimensional polytope. But why go to the effort of making that distinction? You've mathematically modeled and sampled your three dimensional scene without even touching the concept of a polygon. The second you convert, you're just a dick trying to make a point - except mathematically you're not trying to make a point, you're trying to make a vertex. I just made an English language pun.

Computer graphics and simulations require a fair degree of abstract thinking. Any more questions?

Share this post


Link to post

Ever heard of "too little, too late"? That's more like "TL; DR, too late".

Even if you do have any valid points in there, any at all, I won't bother reading them because by now you shot yourself in the foot and whenever I see your name I will think "Troll. Ad hominems. Don't feed. Avoid".

Go work for a hologram bracelet infomercial or something, I'm sure your bamboozling, technobabble spewing and (when needed) stream-of-conciousness flaming will come in handy when you're in the scam business. Assuming you remember the correct timing. You see, flaming too early sells no bracelets and drives suck....errr... clients away!

Let's put it another way: if voxels were a product, they would be hologram balance bracelets. Good if you are the scammer pushing them out of the window, bad if you're the mark suckered into buying them.

Share this post


Link to post

Pity. Everyone else playing at home can read my posts and read what is probably a fairly accurate reverse engineering of the unlimited detail video above.

At least you won't waste anyone else's time now.

Share this post


Link to post
GooberMan said:


What is this I dont even

Oh and I want this completely filled out on my desk by 7:30 am SHARP tomorrow. Now about face 137 times and marsch.

Share this post


Link to post
Mr. T said:

Interesting that Crysis uses voxels for terrain. Why?


There's an excellent thread about it at GameDEV

Spoiler

Gooberman, don't read it! It will cause butthurt because it says something I said that you don't agree with ! For God's Sake nooooooooooooooo.....!!!!!!!!!!!

Share this post


Link to post

Remember how I said you're retarded?

Read over what I wrote and tell me where I disagreed that voxels can be represented with polygons, and then tell me how I disputed your claim that voxels automatically mean polygons.

But again, let's have a recap:

GooberMan said:

Maes said:

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.


If you're going to keep going on like a moron, at least keep up with your own shit.

Share this post


Link to post

You really think I'd bother reading anything you wrote now and then we could be best friends or something, no offense taken? Boy, are you naive.

If I were you I'd be fillin' that butthurt report form, knowhatumsayin'? (with a Southern accent)

Now go away or I shall taunt you another time.

Share this post


Link to post

Keep on looking like a dick then. It's impossible to sound like you know what you're talking about when you won't read about what you're talking about.

(Meanwhile, I either see posts being deleted or this thread visiting hell. Way to derail a technical discussion.)

EDIT: Took you three tries to get that post right, eh?

Share this post


Link to post

Dude, I'm not looking like a goddamned mutherfuking thing ... quit the bullshit word weasel ploy. You trolled first.

(Yeah, it came as an afterthought to take a pic of your "deed" so that you don't alter it or anything. Sue me)

Edit: holy shit, your forum registering date must be messed up. 2001? Can't be right. That would make you like -7 yo when you registered!

Share this post


Link to post
Guest
This topic is now closed to further replies.
×