quote:Original post by Coder
quote:Original post by superpig
One thing that puzzles me: Progressive Meshes seem to be able to do something very much like this (using a simple chain of operations instead of a tree) with no speed issues. They''re still modifying topology and geometry every time the LOD changes - how are they doing that at a reasonable framerate?
D3DX''s progressive meshes are view-independent, no? I think based on the research by Hugues Hoppe. He''s got a paper on VIPM''s, but I don''t think I''ve read it.
Yup, I''ve been reading those; he''s got a view-dependent one there too. The little VDPM video on that page (with the teapot) is what I''m thinking about, but there''s no detail there as to the framerate that''s running at (or the hardware it''s running on).
quote:Off the top of my head: With view-independent meshes, I think you can order your mesh so that the least-effective triangles are at the end of the index buffer, and then just don''t draw them as the LOD decreases.
Ahhh.... mmm, that makes sense. IIRC each step in the view-independent mesh is an edge collapse, which guarantees one or two triangles lost per step (because you can''t have more than two triangles sharing an edge). So all he has to do is decrease the number of triangles rendered by one or two. The actual vertices aren''t being replaced with a single one.. they''re being moved so that all the other indices remain the same. So same number of transforms, but 2 fewer triangles to be rendered...
That seems a bit off, though. The screen space of the result is roughly the same, so the fillrate''s not being fixed up... perhaps I''m right in thinking that a vertex will only be transformed if an index refers to it? (That way, even though the total amount of geometry is the same, the fraction of it being used and thus transformed would be decreasing).
In any case, the problem is that I don''t think that can be used for VDPMs. While a standard VIPM can be modelled as a chain of edge-collapses - with two triangles per node, and thus a nice easy list of triangles, where you work along the chain to increase/decrease the LOD - a VDPM is more like a tree ("vertex hierarchy"). There is no simple way to order the primitives accordingly.
There might be room for compromise, though. What if the model were broken up into polygon clusters, and each cluster treated as a VIPM? Heck, even as discrete LODs with geomorphing? That would turn a single 100,000 tri-list call into one-per-cluster, but it should allow a pretty significant change in detail across the model... there''s also problems with cracking, but perhaps by constraining clusters so that their LOD is +/- 1 all adjacent cluster''s LOD... it may well work.
I think it might lend itself neatly to animation, too. Cool! Has anyone tried this?