Jump to content
  • Advertisement
Sign in to follow this  
Vilem Otte

Open world terrain realisation

This topic is 2608 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 again,

currently I've been a bit thinking about rendering (and not just rendering) the terrain in open world games (and I decided to try it on my own) - what I'd like to achieve is terrain similar to game Risen. The problem I face can be divided in few parts, first is terrain creation, second terrain managing and third terrain rendering.

Terrain creation

Probably the hardest part - for now I've been using 3ds max (a bit old version) as my editor - and I actually don't know a good way to texture game terrain (modelling is not that hard to me). I thought of texturing it using huge texture (megatexture), but well - it has rather large problem with space (I've tried rather small terrain and megatexture had about 2 GB for it - and still it didn't have any normal maps, nor height maps, specular maps, etc.), so probably megatextures aren't the best way for open world terrain (yeah, they worked in Rage, but I doubt I'd be able to create so good megatexture). So I probably need another way.
Texturing using few basic textures (grass, dirt, sand, etc. etc.) is rather basic (but works!), although I'm not absolutely sure how to actually place textures - I've read about using 3D texture for this (slices of 2D textures, where each slice contains one surface) and place it based upon some vertex based value - although I'm not sure how to create that value in 3ds max, but making a little terrain texture placement editor is not such huge problem.


Terrain management

I have quite a lot experience in scene management (including those for ray tracers - high performance SAH based KD Trees, (n-ary) flattened Bounding volume hierarchies, etc.), and currently I'm using kind of BVH for scene management (frustum culling mainly). So the question is, how to manage the terrain (incl. that I want some distant terrain stuff - e.g. some LOD is necessary), I presume holding just sorrounding cells (if terrain will be cell-based? I presume cell-based is a lot better for this kind of stuff?) in high-quality in memory and others in low-quality in memory (for distant terrain). Another question is, should I drop the terrain then from my scene management (e.g. BVH), and use that just for static and dynamic objects?

Terrain rendering

Here comes the hardest part. As I mentioned the megatexturing is probably out of talk (I just don't have any idea how to create good quality megatexture with tools I have) - because then It'd be rather simple (as I have megatexturing implemented). So lets think about texture splatting, if I'd use the 3D texture, I'd save a lot of work for me - because, everything would be driven by some coordinate about which texture to use, right. But is it okay to use 3D texturing (I mean I don't want any troubles with bilinear magnification filtering and anisotropic minification filtering)? Are there better ways?

Anyway, if you got here, thanks for reading the topic, any suggestions are welcome.

Share this post


Link to post
Share on other sites
Advertisement
Hi,
What exactly is your reason for using 3ds models for the terrain?
This type approach will be very artist driven and time consuming.
You want to have overhangs and caves etc? Why dont you use marching cubes instead of 3ds models?
If today I would start to implement a terrain renderer from scratch, probably I would try to implement marching cubes based terrain

Share this post


Link to post
Share on other sites
There are some good tutorials at the bottom of this page (the texturing ones might help you). Marching Cubes is also a good idea and you can use a heightmap or 3D noise to generate the shape of the terrain.

Share this post


Link to post
Share on other sites
Actually marching cubes could work, but I have no editor to work with voxels (and I don't wanna do marching cubes in realtime (large memory footprint, eats lots of performance) - e.g. It'd also need to perform triangulization of model) ... e.g. I presume I'll stay with tri-modelling for now.


I finally managed to create sort of cell-streamer (right now it works with height maps, although I'll have to change it to triangle-based meshes). E.g. it streams the terrain data when you cross cell boundaries.

Share this post


Link to post
Share on other sites
With marching cube terrain, you could do some procedural stuff like explained here
And write an editor where you edit and texture the terrain with a sphere brush, similiar to editing heightmap terrain.
But okay, the memory footprint can be indeed an issue.

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!