Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Tobias Barendt, posted on August 06, 2000

Image Description, by Tobias Barendt

A very early shoot of the outdoor part in my next engine.

features of the moment:
  • ROAM
  • Lightmaps
  • Alphablended textures
  • a not to good looking water polygon =)
  • // Tobias Barendt

    Image of the Day Gallery


    Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
    Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
    Daniel Thoroughgood

    August 06, 2000, 04:21 AM

    I'm also working on a ROAM based engine at the moment. I'd be interested in hearing what you've come across in the way of texturing with ROAM. I want to be able to have multiple textures (ie grass, sand, rocks etc) on the same patch of landscape. The only solution I've come up with so far is to tesselate more finely around the areas where texture changes.

    Jay Lane

    August 06, 2000, 04:28 AM

    What is ROAM?

    Anders Pistol

    August 06, 2000, 10:59 AM

    ROAM is a simple and fast technique for rendering large landscapes and performing level-of-detail...


    August 06, 2000, 12:59 PM

    Why is everything night-like when the land is bright?
    Nice textures though.

    -When all is said and done, more is said than done.


    August 06, 2000, 01:54 PM

    Why does everyone have to point out every single thing in a screenshot that doesn't match their vision of reality? Isn't that one of the nicest things about 3D computer graphics, that we can mold our own realities? I would like to see those people with valid tips and pointers, give suggestions, but I'm sure my mother wasn't the only one who said "If you have nothing nice to say, then say nothing". Not everyone submitting screenshots is John Carmack, and I for one enjoy seeing all screenshots, from beginner to advanced and would hate for people not to submit their screenshots for fear of negative comments from people who I personally am starting to suspect, could do no better. Just my two cents.


    August 06, 2000, 03:48 PM

    Um, it seems to me that Mace was simply pointing out an observation


    August 06, 2000, 03:49 PM

    I agree that there is alot of crit towards 'images of the day'. I don't understand it myself, it irritates me more than people who point out every single little gramatical/spelling error you may make.

    Fu Mo

    August 06, 2000, 04:04 PM

    There is such a thing as constructive criticism
    just my 2 pence

    Chris McGuire

    August 06, 2000, 10:08 PM

    OK, I have one question and one statement.

    Where can I find out about ROAM rendering in more detail? From the sounds of it it's something like constant polygon count rendering? Just what *DOES* "ROAM" stand for anyway?

    Also, couldn't we just imagine that it's part of a panning shot of a military base at night? That would explain the night sky / bright foreground dichotomy. It's about to be broken into by someone ... :P


    Mark Friedenbach

    August 06, 2000, 10:17 PM

    it's a holographic display, dammit!

    Aside from the limiting water line (or lack there of), it *does* look very good. Heres to seeing what it looks like with full a dynamic water system!

    Victor Ho

    August 06, 2000, 11:39 PM

    "Why is everything night-like when the land is bright?"

    Seriously guys, have you all never seen this effect at the beach, when it's all cloud covered except for that one portion where a shaft of moon beam comes down?

    It didn't even occur to me there was anything wrong. Haha...


    Kurt Miller

    August 06, 2000, 11:45 PM


    ROAM stands for "Real-time Optimally Adapting Meshes", which you can read about here:

    Daniel Thoroughgood

    August 07, 2000, 12:02 AM

    I was going to post that. There is also a good paper at Gamasutra, just do a search on ROAM that explains a split-only implementation.

    Once again if anybody has any ideas on my texture problem with ROAM any and all suggestions are welcome.


    August 07, 2000, 02:06 AM

    Best thing I've come across for texturing ROAM-based landscapes is a detail texture rendered with vertex coloring. I use a color map much the same way the heightmap is used to determine vertex colors. The detail texture should be luminance/alpha. If you don't feel like using an additional map for vertex colors, you can always figure some way to calculate them based on terrain height and/or slope.

    There are two options on the detail map I've come down to. One is to use a simple texture (noise, grain or something similar) and tile it across the terrain. Of course, this limits you to one texture for the entire landscape and can appear repetitive.

    An alternative (and I like the results better, but it might not work for older cards) is to use a separate larger detail texture (I use 1024x1024) and skin it once over my landscape. The texture requirement is relatively larger and I'm not so sure how it fares with several landscapes pieced together (each with their own detail texture).

    Another option (though it's probably a heavier requirement) is to just use different rgb textures with an alpha map for each layer of textures on the terrain (dirt, grass, stone, etc). This is speculation on my part since I've not tried it. However, I suspect I'd find the second option I mentioned the most pleasing (especially since you can use vertex colors to shade the terrain).

    If I've not said enough to give you the right idea, feel free to send me an e-mail. I'll be glad to discuss it more at length.


    August 07, 2000, 02:53 AM

    That little comment on the end is my "favourite quote" i added and it is NOT ment to hurt anyones feelings and was not added for this iotd.

    If i was to submit a iotd, then i would like to get feedback about what looks great and whats to be improved... its always good to know what other people think right?

    even the bad things sometimes.... :-)

    -When all is said and done, more is said than done.


    August 07, 2000, 03:07 AM

    ok, i changed my quote now to avoid these kinds of "attacks"
    towards me :-)

    Dont pick on me bit64... pick your nose instead, hehe.
    (its really early so dont blame me for these boring jokes)

    -In theory, there is no difference between theory and practice.

    In practice, however, there is.


    August 07, 2000, 03:50 AM

    Using vertex colours for a ROAM based landscape is a bad idea since you will get *very* visible popping artifacts when a new vertex is added that is different colour than the surrounding vertices. I would suggest putting your terrain into blocks then using a unique texture for each block

    Alex J. Champandard

    August 07, 2000, 04:12 AM


    Colour popping can be reduced just as much as geometry popping by including colours in your priority calculations. Even better you could introduce geomorphing, but i'd challenge anyone to do that convincingly with ROAM as it is quite unstable. My hacks so far only partly solve the problem... more to come ;)

    That isolevels method seem the way forward.


    Daniel Thoroughgood

    August 07, 2000, 04:58 AM

    The colour map might be worth a try. I've tried seperating the terrain into blocks but this causes other complications, such as all blocks need to have the same dimensions otherwise the relationships (neighbour pointers) between the blocks don't work because there is too much difference in the levels.

    Another technique which I am trying to implement is simply to check how many different textures are within a triangle and tesselate more finely near the changes in texture.

    Finally I've also looked at creating another map, similar to the heightmap, which I call a priority map. The higher the priority values within a triangle the more likely it is to split. Then higher priorities could be set around texture changes etc.

    This would have the added advantage that if an item or object is placed on the ground (eg tree, wall, etc) then a high priority value near it's location would ensure that the landscape around it is finely tesselated and that it doesn't float.

    Phil Carlisle

    August 07, 2000, 05:52 AM

    Daniel.. on your last point.

    The priority map you talk about is used in most brute force (i.e. non split-merge que) versions of the ROAM algo, and is normally called a variance map (coined by Seumas McNally?)
    It describes the "variance" of a triangle of terrain over its surface area, this is how you get the tesselation in the area's that require it.

    I'm playing with texturing of my own roam-alike (basically sameas Seumas), so I'll see if its useful to incorporate texture information in the variance values.

    I'm favouring having "sub meshes" with individual texture tiles.. just seems more natural.. my heighfield data is basically created as a tile map, so I am thinking that the texture data
    would be equally well served by using texture tiles.

    One thing Ive seen in most good algo's for landscape, is that there is a "layered" texture system, i.e. multiple
    texture tiles are stacked up. To choose a texture, you basically look at the height of your tri, and blend between
    the correctponding textures for that height.

    Interesting area though, I'm kind of moving away from the ROAM stuff, because I really dont like the popping..


    Daniel Thoroughgood

    August 07, 2000, 06:13 AM

    I also use a varience error metric similar to Seamus McNally's implementation, the reason for such a priority map is because I each time I check if a triangle needs to be further tesselated I check it's variance against a maximum allowable variance, by adjusting this value I can adjust the detail, and also therefore the rendering speed. However I have found there are places on a patch that need to be highly tesselated regardless of the current maximum setting, for example around items placed on the ground to ensure that these do in fact look like they are on the ground.

    Really though my engine is in the really primitive stages, I quickly knocked together a renderer in a couple of hours to see how it worked, now I've spent a week trying to tidy up the code.

    I really liked the idea of using what you call "sub-meshes" however in all my research I have found that for this to work properly all these "sub-meshes" must be of the same size which can't easily be done in my engine, however I may have missed something here, if so please enlighten me.


    August 07, 2000, 07:41 AM

    I canīt read my mail ( anymore so if anyone want to mail please mail to instead.

    This thread contains 22 messages.
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.