Sign in to follow this  
Maddibob

ROAM - easy questions

Recommended Posts

Maddibob    142
I understand the principles behind ROAM, but the literature I've read isn't that clear so I have some simple questions that I hope someone can answer: 1) Are all the levels of terrain mesh detail created at runtime or pre-computed? I'm assuming pre-computed, but I've never seen this documented anywhere. 2) Would you use an Octree with a ROAM technique? If so, how do you decide how to dissect the levels of detail? i.e. how far in front of your camera until the first detail drop and the next, etc. Is that done using the Octree leaves? 3) How does the texturing work for large landscapes. I have done something simple whereby I have a texture for grass, one for rocks and a grayscale map and by using 4 passes, I can get some nice rock/grass effects. This is rather slow though and quite limited with only two textures (and repeated over the whole landscape, a little samey). I've seen someone using a colour map and storing three texture quantities (per pixel) in the red green and blue channels. Is this easy to implement? Thanks for any help.

Share this post


Link to post
Share on other sites
s_p_oneil    443
Quote:

1) Are all the levels of terrain mesh detail created at runtime or pre-computed? I'm assuming pre-computed, but I've never seen this documented anywhere.


This is an easy question. You can do it either way. I wrote some articles on ROAM that calculate the detail at runtime. You can find the links to the articles on my home page here. GamaSutra has other articles on ROAM and adaptive quad-trees that pre-compute.

Quote:

2) Would you use an Octree with a ROAM technique? If so, how do you decide how to dissect the levels of detail? i.e. how far in front of your camera until the first detail drop and the next, etc. Is that done using the Octree leaves?


This is not an easy question. You can use it with an octree or a quad-tree, but IMO it's not very clean. There is at least one article out there that combined it with a quad-tree in order to create dynamic 2D ground textures (I'm not sure where that article is). I recently switched my planet renderer from ROAM to a chunked quad-tree because it gave me both space partitioning and dynamic 2D ground textures without requiring me to tie two separate algorithms together.

Quote:

3) How does the texturing work for large landscapes. I have done something simple whereby I have a texture for grass, one for rocks and a grayscale map and by using 4 passes, I can get some nice rock/grass effects. This is rather slow though and quite limited with only two textures (and repeated over the whole landscape, a little samey). I've seen someone using a colour map and storing three texture quantities (per pixel) in the red green and blue channels. Is this easy to implement?


This is not an easy question. People are still arguing about this. My earlier demos essentially had per-vertex color, which looked terrible. The splatting technique you described is popular, but of course it has its limitations (as does every other technique).

Now that I've switched to quad-trees and dynamic ground textures, which aren't easy to do with ROAM (they may be now, but they didn't seem to be when I was using it), I can do just about anything I want as long as it's not too expensive to calculate at run-time. I can use math/fractal/noise functions, blend other textures into one, use pre-generated ground textures from disk, or a combination of them. Because I'm actually pushing a new small texture to the video card for each new node (or using render-to-texture to generate it on the card),
it can be rendered in one pass.

I've seen other techniques that pre-generate noise textures and pass them to the video card. These textures are tiled and sampled in a fragment shader, with some mathematical magic applied to make it look like it's not repeating.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this