Archived

This topic is now archived and is closed to further replies.

udragon

Best way to render high-res terain

Recommended Posts

Hi all, What''s the best way to render high-res terain with terain object-collision dectection. The plan is to make things as realistic as possible. Fe. my default level would be 1 square km large. (metric system, sorry guys ;-) ) Now if I want 1m acurracy, that would give a 1k by 1k heightmap, which would use abiyt 4Mb of mem. But I want to make it even more realistic, something like 10cm (1dm) acurracy, requireing 40Mb of mem.... too much obviously. So I was thinking of several solutions : - Pre-created mesh in (fe Max) with a heightmap extracted from it. - Pre-created mesh with octree for filtering poly''s. For collision detection I''d intersect each objects base with surrounding world poly''s and calculated angles from it .... - Dynamic created mesh based on heightmap. - ... other techniques ? What do you guys use, taking into acount memory, speed, and accuracy. Thanks, U''dragon

Share this post


Link to post
Share on other sites

Look into ChunkLod, Geomipmapping.

If you want that kind of local detail, you should be generating height data procedurally (with some kind of perlin noise or fractals). Look at the Planet-topic over at graphics Theory forum.

Edo

Share this post


Link to post
Share on other sites
::Hmmm, I was hoping for some good advice ? :/

What for?? Common sense and another indroduction into GeoMipMap,Chunking and othe rthings discussed on a weekly basis?

I tend still to go with heightmaps PLUS objects. Gives an easy way to determine the rough landscape. Overhangs etc. are objects added afterwards.

I used chhunking with multiple detail levels, so the neaf area would bereak down termendously. You could try a little fractalism to get rid of the hugh amount of data.

BTW - your calculation is totally off.

if you need 4Mb for 1mx1m, then a 0.1mx0.1m scale is NOT 40mb, it is 400Mb

Share this post


Link to post
Share on other sites
Geomipmapping isn''t really good advice in this case IMHO. Geomipmapping and chunked LOD are just that, LOD systems. They have nothing to do with Hi res vs Low rs, they just draw terrain farther away at a lower detail. Using only these algos the size of your terrain will go down if the resolution goes up.

I think to render hi res terrain you should look into procedural meshing close to the camera, and using whichever LOD system you choose as you get farther away. With procedural meshing you can have huge maps of low res heightpoints, and still render terrain close to the camera with high resolution. If you want HUGE maps like hundreds of km in each direction then look into developing a streaming system.

Share this post


Link to post
Share on other sites
Hmmm... hunderds of square km won''t be the case.
The levels would range from 1km2 up to 5km2, with an accuracy of 0.1m to minimum 1m.

I''m reading through some GeoMipmaps docs right now.... unfortunately it doesn''t support ''overhangs'' so for tunnels under rivers I have to find another sollution. (Or choose an other way to get a good resolution/speed ratio)

Also, I''m wondering how units will look if there driving up a hill from far distance.... using a low res mesh in far distance could cause flickering when a unit passes that polygon.
Or do I get it wrong ?



Share this post


Link to post
Share on other sites
storing a heightmap with 0.1 m accuracy is wasteful and crazy. There is no way you'll be able to make a landscape look good with only 256 unique height points using standard RAW data. Plus you won't be able to have any level size at all, lets say you want a 5km x 5km level which isn't too big by today's standards. You'l never be able to fit that into memory all at once, ESPECIALLY using geomipmapping which uses even more memory. That's 2.5 billion heightpoints. You'll definitely need a streaming system for this much detail. Or, you could store 10m accuracy and procedurally generate the mesh up to 0.1 m resolution. That way you can fit the whole level in memory all at once and still get the resolution that you want up close. You can also scale the detail level for performance, so a user may choose to only have 0.5 m resolution up close as a maximum.

[edited by - y2kiah on July 29, 2003 2:47:07 AM]

Share this post


Link to post
Share on other sites
I don''t know, maybe I''m setting my goals to high ?

Let''s say I want to drive a 4m x 3m tank-unit across a 5km by 5km terain, how much (animation) detail would I need ?
If it has an average speed of 50 km/h it would do 13.8 m/sec.
And, assuming the engine is locked to 50fps, that would result in a 0.3m advance per frame...
Maybe I could lower my standards and bring the detail level to 0.5m ? That could lower my mem requirements, but will it look smooth/realistic enough...

About heights...
Indeed if I only had 256 different heights for a level
ranging up to 5x5 km, in that case I can''t even create a 500m hill. And if I want to add a river/coast I need to have negative height values (below sea level).... so in the 8bit case one could generate only 128 positive and 128 negative height values.
I guess for the height map I should move from (unsigned char) to (short int) doubling mem usage again...




Share this post


Link to post
Share on other sites