Jump to content
  • Advertisement
Sign in to follow this  
BrianH

Terrain discussion - large areas with high altitudes

This topic is 4155 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello, I am not new to 3D graphics however I am a relative noob when it comes to terrain rendering. One thing that has always dissappointed me about past, present and upcoming games (rpg / mmorpg specifically) is the terrain seems relatively "flat". Now, by that I don't mean everything looks like an open meadow, but rather that the mountains and hills feel artifically small. I am taking a guess here, but I assume this is because most terrain systems use heightmaps, which have an obvious limitation to their height resolution - basically, 256 levels? So, if I wanted to create a mountain that was actually 10,000 ft high, my height resolution would be around 39ft/level... which would be pretty crappy. So, are there terrain systems out there that have overcome this limitation? I know there has been a good amount of work in 'planet rendering' but do they do well down to the ground level? Would it require forgoing heightmaps for procedurally generated terrain? Or, could each heightmap carry a height offset value with it? What would be/are some of the obstacles? One I can see would be just rendering the view from up high, where you would generally need to show further distances (ie more polys) to have the desired impact. Also, what about lakes and rivers? You couldnt just set a water plane, becuase what good are enormous mountains without those pristene glacial lakes? I am guessing they would need a more sophisticated placement method. Well, those are my ramblings for the moment. Would love to hear other's ideas. -BrianH

Share this post


Link to post
Share on other sites
Advertisement
Quote:
Original post by BrianH
heightmaps, which have an obvious limitation to their height resolution - basically, 256 levels? So, if I wanted to create a mountain that was actually 10,000 ft high, my height resolution would be around 39ft/level... which would be pretty crappy.


Bear in mind images don't have to be 8bit. You could use 16 bit unsigned short, 16 bit floating point, 32 bit floating point, etc to get more resolution.

Share this post


Link to post
Share on other sites
mrbastard:

Good point, ultimately a heightmap is just a datafile. Although at those bitdepths I guess you might lose some ability to edit the heightmap via a standard photoshop-esque package and would need more of a wysiwyg terrain editor...

Well that begs the question even more then, why dont we see more realistic terrains, in terms of altitudes, in games? Maybe I am just a sucker for big mountains and the gameplay value would actually be minimal. Or is there some other technical limitation that I am completely missing.


-BrianH

Share this post


Link to post
Share on other sites
Quote:

Well that begs the question


Oh oh, run and hide!


Well on topic:
Id love to see big mountains as well. However I think the reason they dont exist is that it would require loads of vertices to render a mountain. Its not only a height resolution issue, a mountain needs a lot of space in which it gets higher and higher. Now since mountains tend to not fir into the gameplay well the vertices are saved for gameplay relevant stuff.

Share this post


Link to post
Share on other sites
You can edit raw files in photoshop, so you can use that to edit 16 bit unsigned short at least. In general though, you'll probably want some kind of wysiwyg editor eventually anyway.

Worldmachine is a great app for generating heightmap test data in higher precision formats.

Most games don't have good enough LOD systems to draw far enough into the distance for the scale of mountains to be relevant. Like you say, it's not too relevant to the gameplay, and like CProgrammer says, that means it's not worth them investing a lot of time in. Also, mountains without caves and overhangs look a bit weird close up, so while you might start with a heightmap, you'd probably convert it to a generic mesh for your artists to prettify.

Share this post


Link to post
Share on other sites
For games where you dont fly above terrain, huge mountains serve only as a background. Actually, if the background is the terrain itself, it can look really good ;) (and I disagree with the LOD thing, it can look cool with LOD too.)

And yes, raw heightmap data can be any format... like even 64bit integers or floats.

But if you generate terrain on the fly, it can be as high or steep as you want ;)

And you can handle overhangs with irregular heightmaps (or how are they called), where you dont only specify the Y coordinate, but the X and Z too.

Share this post


Link to post
Share on other sites
WoW certainly doesn't have this limitation. The difference in elevation between say Winterspring and Ungoro Crater is substantial. I believe that they use 32-bit floating point elevation data. All serious game engines do not use image elevation maps instead they have built-in terrraform editors - even Torque has this. WoW also has support for multiple layers of terrain geometry, which is how water is implemented. As you can see by looking at it, the water in that game isn't always a flat plane.

Share this post


Link to post
Share on other sites
Elder Scrolls: Oblivion has a decent amount of height variance, especially when you're going up into the northern mountain range. However, it does illustrate why large elevation changes are uncommon in games where the action is on the ground level:

1. The higher you go, the further away you can see (in real life). It's possible to write a terrain engine that renders all the way to the horizon, but it's not as easy to do that in a game because you'd have to display all manner of other things (roads, bridges, buildings, entire cities) besides the terrain as well. To make it run at a decent speed you end up making compromises like fogging and drastic LOD reduction at a distance, which is pretty obvious in Oblivion.

2. As was pointed out, it's difficult to work really big terrain into gameplay as well. A real-scale mountain is not just tall, it's also got a huge footprint. It can take several days of real time to walk/climb to the top, which you wouldn't put up with in a game. Unusually steep slopes compress this, but are ultimately not fun to walk around on. This also makes it difficult for the AI to pathfind in a realistic way.

Anyway, 16-bit should be enough for just about any heightmap. If your largest mountains are at an altitude of 16000ft, this gives you a resolution of 3 inches. Considering the bases of Mauna Kea or Mauna Loa (around 14000ft high) are tens of miles in diameter, you're unlikely to have mountains bigger than this in an interactive game world. Even the "huge" mountains in Oblivion are probably less than a mile high.

Share this post


Link to post
Share on other sites
Quote:
Original post by BrianH
Good point, ultimately a heightmap is just a datafile. Although at those bitdepths I guess you might lose some ability to edit the heightmap via a standard photoshop-esque package and would need more of a wysiwyg terrain editor...


I don't know why anyone would want to edit terrain using photoshop. I guess it was convenient at one point in time. Try something like L3DT if you want quality terrain.


BTW, people that don't know what "begs the question" means should not use the phrase.

Share this post


Link to post
Share on other sites
Hey is this Brian Higby? Either way let me lay this down for you. Height data read from a raw map or even a bit map can be 8 bit and still get good heights. It doesnt really matter how many bits are used unless you want smooth degrees of height. All you really need for extra height is a fScale value to scale the byte you read out of the height map by. As I mentioned before more bits will allow you to have more varying degrees of height for smoother transitions. Since mountains are high but their faces are gradual. I believe this is why games in the past suffered from having to choose between high mountains (need lots of varying degree of height for smooth high mt) hence more resolution is needed in the heightmap which leads to memory consumption. It was that choice or have lower mountains and not waste as much mem on height data and vertices. A properly implementated terrain engine could handle this in multiple ways, if you want suggestions just hit me back

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!