> The IRMA algorithm in Gizmo3D can be used for arbitrary geometry. It is
> faster than The ROAM algorithm. In version 0.96 you will get 28 bytes per
> height value for the internal structure wich gives you a very fast renderer
> but that require som extra memory.
> In version 0.97 we will problably have a caching system ready for the
> terrain to eliminate the memory requirements...
Ok Anders, I'm afraid I am going to have to call you on this one. Time and
time again I have seen you post and talk about "IRMA," and the only conclusion
I can come to is that you do not know what you're talking about. This is not
meant as a personal attack in any way, I'm sure you are a very nice guy, but we
need to get some facts straight.
Quote:> The IRMA algorithm in Gizmo3D can be used for arbitrary geometry.
This is a new one - how so? Could you model a building or a quake-like
level with it? "arbitrary geometry" does not just mean any heightfield, it
means any geometry.
Quote:> It is faster than The ROAM algorithm.
Are you still working under the assumption that the original ROAM algorithm
is O(n^2) ? My implimentation is O(n). The dual-queue system is certainly not
easy to make fast, but if you have the skills and patience it can really
scream. I do no sorting of any kind and only a once-thru, linear, top-down
search of the queues each frame.
I haven't seen IRMA run anything even resembling 'fast.' It requres sooooo
much memory, that it drags my system to a near-standstill (and my box is no
slouch, 128mb ram should be PLENTY for a fast terrain algorithm). A normal
ROAM implimentation needs to additionally store only 1 byte/heightfield-element
if you use variance tables (assuming local vertical changes within a
diamond-patch are less than 255).
Finally, I challenge the assumption that IRMA is ROAM at all. The whole
point of ROAM is to make the *optimal* mesh update with every split & merge,
which you yourself told me that IRMA does not do because it only considers the
parent & children of each active triangle when making split/merge decisions for
that triangle, instead of choosing the triangle with the most or least error
from the split/merge queues of the entire active mesh triangle set. This is
clearly *not* optimal, because it only optimizes the mesh with extreme locality
and not globally.
Please don't take all this the wrong way. I'm not trying to start a flame
war, I just want to debate your claims. I've spoken to many people about
terrain engines, and those I know who have seen your work agree that you make a
lot of assumptions which you never back up.
Your algorithm may very well do certain things better or at least
differently, but noone can tell because it runs very slowly on most people's
systems, and the test-case you provide is terrible. A repeated
continuously-undulating red&purple parametric surface is *not* "terrain" in any
sense of the word. It would be a very very poor test of *any* LOD-terrain
algorithm, because it does not show any sharp details near or far, and the
curvature of the surface is continuous. How can anyone tell how well your
algorithm optimizes the mesh if the mesh looks the same everywhere? To put it
simply, they can't, and using this as your test case really makes it look very
poor. I suggest you find some real terrain to test with, be it the Grand
Canyon or Mt. Everest or whatever, so long as it has 1) some flat areas, 2)
areas of sharp high-detail, and 3) clearly shows your algorithm's ability to
optimize the terrain mesh under different viewing conditions.
I should also suggest that you find a new name for your terrain algorithm,
but this is, of course, up to you. Calling your system "Improved RoaM
Algorithm", IRMA, only hurts your credibility when nobody can tell if it is
improved or not (because of the poor test case), and because it is obviously
not ROAM to begin with. Many people borrow some parts of ROAM (like the mesh
structure & split/merge operations), or any algorithm for that matter, but
don't use all of it because it does not completely suit them. It is fine to do
so, and is very commonly done, but you shouldn't call it ROAM because it isn't.
Again, this is not meant to be an attack on your person or your skills. I
just want to help. If you clarify these issues it will be better for everyone,