1.2. THE BASICS – WHAT UE4 CAN (AND CAN’T) DO:
Here’s a little info you’ll need to know about UE4’s capabilities. Some of it’s a little dull, but it may well come in handy later.
Geographical Data Support
UE4 doesn’t natively have the ability to read or use the geographic component of data. It can read images (height map/masks etc.), but doesn’t support GIS formatted files like ESRI ShapeFile. The TerraForm plugins add this functionality.
The world is round, right? Wrong! Due to centrifugal force caused by the Earth’s rotation, it’s circumference is actually slightly larger at the equator than it is at the poles – it has an “equatorial bulge”. Mathematical equations are used to try to account for this and are known as “projections”. The origin (0,0 point) of a projection is known as its “datum”. Since over small distances the curvature of the Earth’s surface has minimal effect, it is reasonable to exclude its impact for small scale coordinate systems and therefore some local projections are in a Cartesian format.
The geographical position of a point on a sphere (or oblate spheroid) must be stated in terms of angles (e.g. degrees latitude/longitude) and therefore GIS data may be stored in pixel values measured in degrees. However games engines like UE4 (and most rendering engines in general) work in a Cartesian coordinate system expressed in metric values for X, Y, and Z, so we need to overcome this.
Fortunately GIS software provides fairly simple methods for ‘reprojecting’ GIS data from spherical coordinate systems to Cartesian.
Floating Point Precision
Whilst the term sounds complicated to non-programmers, it’s actually fairly straightforward. It refers to the number of bits used to define a value (e.g. a distance in metres). Single floating point precision gives you 32-bits to specify a value; double floating point gives you 64-bits.
Over small distances, the rounding errors of 32-bit are minimal and not a problem. Over large distances, they cause more significant issues. UE4 supports single floating point precision only, so you either need to specify a relatively small terrain size, or use a work-around (e.g. ‘Enable World Origin Rebasing’).
UE4’s origins are in first person shooter games where the environment maps/terrains are generally small, but highly detailed and realistic. As a result, the engine is most at home rendering smaller terrains.
Recent developments add landscape tile streaming and tiled data import. This capability is still in its infancy, so initially we’ll focus on creating a real world landscape using single tile source data.
UE4 imposes limits on the size of the single tiles you can import. The maximum is 8,129px by 8,129px, so we’ll go with this. Further information can be found in UE4’s Landscape Technical Guide.
Pixel dimensions are not pre-defined by UE4, but there are practical rendering limits caused by its single floating point precision (see above). We’re going for a high resolution terrain, so we’ll define our pixel size as 1m/pixel, giving us an overall terrain size of 8.129km by 8.129km.