I was wandering how it’s possible to create a large terrain in opengl. My first idea was using blender and create a plane, subdevide it, create the terrain and export it as .obj. After taking a look at blender I thought this should be possible but soon I realized that my hexacore + 8GB RAM aren’t able too keep up the subdeviding in order to support the required precision for a very large terrain.
So my question is, what is the best way to do this?
- Maybe trying another 3D rendering software like cinema4d?
- Creating the terrain step-by-step in blender and put it together later? (might be problematic to maintain the ratio between the segments)
- Some methods I don’t know about?
I could create a large landscape with a random generation algorithm but I don’t want a random landscape I need a customized landscape with many details. (heights, depth, paths)
Edit
What I’ll do is:
- Create 3 different heightmaps (1. cave ground (+maybe half of the wall height), 2. inverted heightmap for cave ceiling, 3. standard surface heightmap)
- Combine all three heightmaps
- Save them in a obj file or whatever format required
- do some fine tuning in 3d editing tool (if it’s too large to handle I’ll create an app with LOD algorithm where I can edit some minor stuff)
- save it again as whatever is required (maybe do some optimization)
- be happy
Edit2
The map I’m creating is so big that Photoshop is using all of my 8GB Ram so I have to split all 3 heightmaps in smaller parts and assemble them on the fly when moving over the map.
I believe you would just want to make a height map. The larger you make the image, the further it can stretch. Perhaps if you made the seams match up, you could tile it, but if you want an endless terrain it’s probably worth the effort to generate a terrain.
To make a height map, you’ll make an image where each pixel represents a set height (you don’t really have to represent it as an image, but it makes it very easy to visualize) which becomes a grey-scaled color. You can then scale this value to the desired maximum height (precision is decided by the bit-depth of the image).
If you wanted to do this with OpenGL, you could make an interface where you click at points to raise the height of particular points or areas.
Once you have this image, rendering it isn’t too hard, because the X and Y coordinates are set for your space and the image will give you the Z coordinate.
This would have the downside of not allowing for caves and similar features (because there is only one height given for a point). If you needed these features, they might be added with meshes or a 2nd