Re: [Plib-devel] ROAM for plib
Brought to you by:
sjbaker
From: Sam S. <sa...@fp...> - 2000-04-05 19:38:35
|
Hi, Steve Baker wrote: > I don't think it would be inappropriate to write a ROAM node for SSG. Cool. > I agree that it seems like a rather higher level feature than SSG would > normally implement - but it's a feature that would be VERY hard to implement > using only the existing SSG API - and it's popular enough to warrant being > something that SSG should not prohibit. > > I havn't played much with ROAM - but the general wisdom seems to be > that implementing the entire algorithm is counter-productive - something > about one of the optimisations that - erm - pessimises. Yes. I think you're refering to that fact that the original ROAM paper uses a metric based on nested world- space bounds to work out the visible error in the grid. The gamasutra implementation uses a variance tree to do this instead (as does Seumas McNally's Treadmarks's engine), which is a LOT quicker :) You can set up the visible error you wish to allow in different ways to do some clever stuff. The default implementation increases the allowed visible error with distance (so less triangles get drawn the futher away thay are) to implement the standard LOD for example. But you could have some landscape features always drawn with a high LOD if you wish - although to do this from one API will require a fair bit of tinkering with gamasutra's ROAM engine. I was thinking of having a second height-map style thing that would specify error tolerance for this sort of stuff (but that can come in the future :) ). > Anyway - I think it's not a bad idea - but to steal an acronym from the > PPE group: NIV12. (Not In Version 1.2) Heh.. Certainly not... I do have to have a life as well. This'll take a week or so to do I think (including the time needed to adjust the gamasutra implementation to use fan-strips rather than drawing lots of individual triangles. And then I'd like to add frame coherence to it would be would nice, and doesn't sound that hard. (Basically instead of recalculating your triangle mesh every frame you adjust the previous one to fit. If it's taking to long to do you just draw the mesh anyway - this way when there's a lot of other stuff getting drawn (i.e.. you're in a fire-fight), the LOD of the landscape will degrade fairly gracefully). And at some point in the future I'd really like to adjust ROAM to work in 3D rather than just 2D so I can add stuff like caves and tunnels to the landscape engine, but that's a far way off at the moment. Sam |