Download

Creating a map dynamically from heightmap tiles

Hi Guys,

I’ve got some topographical data which I’ve turned into a height map. Right now the image is 86401 x 43201 pixels, which reflects a very high level of detail. The source data (for anyone who’s interested) was 14GB in size, and the resulting image 2GB in size.

I’m in the process of tiling this into more manageable sizes, but my ultimate goal is to build something into Unreal Engine which will dynamically load the parts that are visible, and will wrap around so you can continue in one continuous circuit around the ‘world’ so to speak.

I’m not new to programming, but I am completely new to game programming. Can anyone suggest some resources to help me get started with this?

The main challenges I see from this are:

  • Since the image is square, it means some portions of the world are stretched. I’m not sure if there’s an easy way to work around that, although I might be able to work on turning the data into a cube projection (which might work better).
  • All of the ‘level streaming’ stuff I’ve seen to date seems to focus around streaming hand built levels. It’s not practical to craft this many tiles by hand, so I’m looking for resources on producing them through procedural means.

Thanks

I don’t think you are going to be able to do much of this in blueprint, unless landscape lets you import raw height maps. There might be a process where you take your height map, create your landscape in another program, and then import that into the editor. Search the forums, answerhub, and the docs for landscape.

If you get the height map imported into the editor you could certainly make use of the world browser and level streaming, but if you want something more on-the-fly during runtime you will need C++. I don’t think it really matters how you create the landscape once have it to play around with in the editor.

If you are savvy in C++ I would suggest searching for any C++ forum and documentation you can find because you can pretty much cover any shortfalls in the editor/blueprint with C++.