/UnrealLandscape

Landscape synthesis for UE4 using landcover maps and digital elevation models.

Primary LanguageC++MIT LicenseMIT

Real Landscape Synthesis for UE4

Landscape synthesis from landcover maps generated by the LCC.net tool and heightmodels. To automatically synthesise real landscape we use use low resultion globally and freely available satellite imagery and heightmodels combined with machine learning. Note that "Download ZIP" does not work for this project as the sample scene is stored using GIT LFS.

Sample Scene

The project contains a sample scene (Sentinel_32TLS_20160823) with generated landcover maps from the Swiss Alps. Following a screenshot of this scene:

valley2

More screenshots here. By using the generated landcover maps we can drastically improve the visualization as with only using the low resolution satellite imagery as shown in the following screenshot:

comp

Landscape Material

The landscape material supports tree and grass placement using the landcover maps. Different models for the trees or grass can be added if desired. The models used for the sample scene are from the Unreal Kite demo. The landcover types use geotypical textures which are blended together and can optionally also be blended partially with the satellite imagery to achieve higher fidelity. The blending parameters can be changed in the material instance.

Workflow

To generate new scenes the steps described in the LCC.net readme must be followed first. After following these steps we should have landcover maps for each desired landcover type as well as a heightmap. First we import the heightmap into the Unreal Engine and set the material to an instance of MAT_Landscape. Note that the landscape has to be scaled according to the resoltution of the heightmap. GDEM v2 has a spatial resolution of 30 meters and therfore our landscape should have scale factor of 3000 for the x and y coordinates. The z scale must be calculated using the difference of the minimum altitude and maximum altitude of the heightmap divided by 512 as described here.

The default material supports grass, rock, gravel, snow, water, tree, agriculture and builtup land cover types. If other landcover maps were generated using the LCC.net tool, the material has to be adapted accordingly. The landcovermaps can then be imported using the "Landscape Paint Tool" using the "Import from File" menu.

landscape import landscape import heightmap

Landscape Grass Bug

Due to the large scale factor of the landscape, the grass tool seems to spawn grass at wrong locations (UE4.14). I have posted a simple fix to the LandscapeGrass.cpp class (the Engine needs to be cloned and rebuilt as described on the UnrealEngine Github page) in an official forum thread.

Future Work

  • Support level streaming for arbitrary large landscapes
  • Add support for 3D building models using the StreetMap Plugin
  • Add the classification algorithms from LCC.net directly into UE4 as a plugin
  • Add more grass nodes for clutter such as rocks and gravel

Sample Scene Screenshots

Note that the scene was not modified by hand, everything is generated automatically.

lake

valley

field

snow