This section shows how terrain is represented, sourced, authored, and organized for a level, with quality and performance considerations.
Terrain is a heightfield. Elevation is driven by a 16‑bit grayscale heightmap image.
Terrain materials are different from asset materials and have a specific setup. Terrain materials are used to paint the terrain mesh.
Water is mainly represented with water planes. The tools used to place water objects are: Water block, River editor and Water plane
The terrain is composed by different square tiles and is automatically optimized by the system.
Heightmaps must be 16‑bit PNG to preserve elevation details. Choose a heightmap resolution coherent with the world size
Shown below are the main parameters to check when placing a terrain for the first time.
Terrain block parameters in the Inspector
position: determines the position of the terrain block in the world based on the lower left angle
terrainFile: shows the file path of your saved terrain block
minimapImage: used to set up the mini map image which shows roads
materialTextureSet: references the TerrainMaterialTextureSet object that defines the required pixel dimensions for base, macro, and detail texture arrays.
CastShadows: ON by default. When active. the Terrain block will cast shadows
squareSize: this parameter defines the smallest square dimension specified in mt/pixel
maxHeight: this parameter controls the total height of the terrain block
baseTexSize: legacy terrain base texture resolution. For v1.5 terrain materials, texture array dimensions come from the referenced TerrainMaterialTextureSet.
lightMapSize: lightmap dimensions in pixels (legacy terrain lightmap; has no effect under the current deferred lighting)
World scale uses meters with Z-up. Terrain size and height range should match intended outcome.
Terrain material textures should be in PNG format. Naming conventions used for normal materials can be ignored for terrain.
Relative path for terrain textures is usually located in: YourMap/art/terrains
Always keep the number of painted layers manageable to avoid memory overload and favor clear material separation (e.g., soil, rock, grass, sand).
See also: TerrainBlock class , Water class .
When generating or editing heightmaps externally, maintain 16‑bit precision and avoid resampling artifacts or the terrain will be visibly affected.
When using in-editor sculpting tools, establish broad forms first, then add local variations. Favor gentle slopes for general driveability. MeshRoad and road tools can help conform terrain around roads.
Terrain driving behavior comes from each painted material’s groundmodelName. The v1.5 terrain height textures control visual layer blending; they are not a terrain-wide driving-depth map. See Terrain format
and Groundmodels
.
A hole map (theTerrain_holemap.png) lets you cut holes in the terrain surface, which is useful for caves, tunnel entrances, basements, or anywhere geometry needs to pass through the ground. It is a mask that matches the terrain resolution: masked areas remove the terrain surface (and its collision) so other meshes can show through. Holes can be painted directly with the Terrain Editor hole brush or supplied as an image during terrain import.
/levels/.levels/template/ level into the new folder and opens it. You do not need to open the Template level first.theTerrain references a TerrainMaterialTextureSet.The TerrainMaterialTextureSet defines the required pixel dimensions for base, macro, and detail textures. Every texture assigned to the same slot type must match its corresponding texture-set size; these dimensions do not need to match the terrain heightmap.
Time to import the terrain heightmap
Go to Terrain tools and click on Import terrain icon
theTerrainAfter clicking on Import you should see your terrain in place
Right now you will see black terrain. Let’s fix this.
+ sign beside Material Library to add a new terrain materialTerrain system works with a combination of 3 material type: Base texture, Macro texture and Detail texture
Base Material (BeamNG specific workflow)
Too much difference of normal values or normal textures intensity between each terrain material creates a bad fade and really noticeable transitions between terrain materials
Normals are not additives between macro and detail. A higher macro normal value than detail normal value will reduce the normal intensity of detail
Terrain global roughness is very intense. The base terrain roughness influences a lot the intensity of macro and detail roughness. Middle values of gray for base terrain roughness makes terrain render very shiny For instance, dirt and grass areas of base terrain need to have gray values close to white. Asphalt should have middle values of gray and darker gray values are for wet areas like wet sand, mud, etc.
Roughness map are not additives between macro and detail. A higher macro roughness value than detail roughness value will reduce the roughness intensity of detail
TerrainMaterialTextureSet. See Terrain format: v1.5 terrain materials
for exact fields and blending behavior.The game uses water planes to simulate lakes, reservoirs, pond and river surfaces as well as ocean you see in different legacy map of BeamNG.drive
There are 3 different tools to simulate water objects.
The best choice to create rivers/creeks. Placement of river object works like decalroads placement, just press ALT+click to place nodes of the river spline. Mind that the spline grid indicates the water flow direction with an arrow.
Ensure edges integrate with banks to blend them with terrain in a believable way.
Represents a large body of water that stretches to the horizon in all directions. Best suited to oceans and sea-level water. Reflections are typically driven by a cubemap (see Materials, section 6.2).
A box-shaped water volume defined by a 3D scale and orientation. Best suited to bounded/contained water such as pools, reservoirs and tanks. The gridElementSize parameter controls the tessellation of the water surface.
Terrain data and settings are stored in YourMap/ as theTerrain.ter and theTerrain.terrain.json. The companion heightmap generated when the terrain is saved is theTerrain.terrainheightmap.png.
Terrain export presets use theTerrain_holemap.png and per-layer files named theTerrain_layerMap_*.png.
Terrain materials and level-local terrain textures are stored in YourMap/art/terrains.
See also: Terrain format , Groundmodels .
Was this article helpful?