Realistic planets¶
This page is about making planets that look real and interesting: how to layer terrain the way nature does, which nodes give which landforms, and recipes from the planets that ship with Metaplanets Creator.
Canopy: tepuis with 650 m cliffs and karst towers over a jungle, built from Voronoi cells and thresholded Simplex noise on top of a simulated continent.
What makes a planet look real¶
- Scale is everything. Real planets are big and mostly smooth from space, with detail at every scale up close. Set the actual radius (Earth 6,371 km, Mars 3,390 km, the Moon 1,737 km) and keep total relief realistic: Earth's ranges are under 9 km on a 6,371 km sphere.
- Build from large to small. Continents and ocean basins, then mountain belts, then ranges, hills, gullies, and finally metre-scale bumps. Each layer should be roughly 4–10× smaller than the one before.
- Mask every layer by the one above it. Mountains belong in mountain belts, mesas on tablelands, dunes in deserts. A detail node applied everywhere at the same strength is the most common reason a planet looks procedural.
- Use erosion. Water-carved gullies that branch downhill, sharp crests and flat sediment-filled valleys are what the eye reads as "real terrain". Use Erosion Landforms (V2).
- Let climate drive the colour. Snow by latitude and altitude, deserts in the subtropics and behind mountains, forests where it's wet. The Climate Map node, or a few lines of latitude math, gives you that for free.
- Put small detail in the height. Bumps of 0.5–2 m in the terrain itself (not only in the normal map) make foliage sit correctly, cast real shadows and stop the ground looking like a smooth sheet.
- Light it properly. Real exposure, a sky light that captures the sky, and contact shadows. See Shading & Lighting.
A realistic Earth-like world, layer by layer¶
Wildlands (Planets/Examples/Wildlands, level L_Wildlands) is the
reference planet. Its script, Docs/examples/Wildlands.ps, is built like
this:
| Layer | Node(s) | Settings | Masked by |
|---|---|---|---|
| Continents, oceans, rivers | Planet Simulation V2 | Continents 5, Coverage 0.45, land 900 m, ocean 4,200 m, mountains 3,500 m, Erosion 0.6 | |
| Mountain ranges | Erosion Landforms (V2) | Scale 6,000, Amplitude 1,800, Ridged 0.7 | MountainMask + 0.35 × HillMask |
| Mesas | Erosion Landforms (V2) | Plateau 1, TerraceStep 0.16 | TablelandMask |
| Big hills | Erosion Landforms (V2) | 4.5 km landforms, 620 m relief | "Rugged" regions from an ~80 km noise |
| Lowland hills | Erosion Landforms (V2) | Scale 1,500, Amplitude 210 | Plains |
| Rivers | (from the simulation) | Every layer fades out near RiverDepth |
|
| Micro relief | FBM Noise | ±0.45 m hummocks in ~300 m patches; up to 1.5 m knobs on rock | Bare rock |
| Climate | Latitude math | Temperature falls with latitude and 6.5 °C per km of height; a desert belt at 15–35°; wetter near rivers | |
| Biomes | Biome Output | x cold, y moisture, z bare rock, w slope |
The same planet then gets a surface with 12
layers (bedrock, scree, soil, dunes, savannah, lush grass, tundra, snow and
more, using near-measured albedos) and a spawner, S_Wildlands, that places
the temperate forest kit by those biome channels.
A size rule of thumb for FBM
On an Earth-sized planet, the feature size in metres is roughly 70,000,000 / Scale. Scale 2,800,000 gives 25 m bumps; Scale 900 gives 80 km regions.
Example planets¶
Every planet below ships with Metaplanets Creator. The showcase planets are
assets in Planets/Examples with scripts in Docs/examples/showcase; the
Atlas planets are scripts in Docs/examples/atlas (Canopy is also a built
asset). Open the script next to the planet to see exactly how it's done.
Showcase¶
| Planet | How it's made |
|---|---|
| Earthlike | Planet Simulation V2 (6 continents, 32% land) + Climate Map. Biomes: snow, vegetation, arid, bare rock. The shortest path to an Earth. |
| Archipelago | About 34 small plates for island arcs; FBM near sea level breaks the coasts into islets. Climate Map with a long inland reach so islands stay green. |
| Highlands | Tall mountain belts from the simulation, plus Ridge Mountains masked by the hill, tableland and mountain masks. |
| ErosionLandforms | Simulation + two Erosion Landforms (V2) layers: drainage in the ranges, mesas on tablelands, sediment in the valleys. Pairs with surfaces/Temperate.surface.json. |
| IceWorld | Ice domes and glacial ranges; the oceans are frozen to a flat sea-ice sheet (+12 m) with pressure ridges and crevasse fields. No ocean. |
| RedPlanet | The simulation's ocean basins become dry northern lowlands; strong waterway carving leaves dry canyons and outflow channels; a Crater Field; dunes from a sine field; polar caps by latitude and height. |
| Volcanic | Crater Fields with tall, wide rims turned into shield volcanoes and calderas along belts and faults. A flat lava sea at −400 m; the river network becomes lava channels. |
| Moon | FBM highlands + four Crater Fields. Maria come from low-frequency noise flooding old craters (leaving "ghost rims"); a dense small-crater field adds close-up detail. |
Atlas¶
| Planet | Techniques |
|---|---|
| Canopy (jungle) | Simulation (low land, 1,600 m mountains) + Erosion Landforms (V2). Regions from Simplex (FBM is grid-aligned at this scale). Karst towers: one per Voronoi cell (about 900 m apart, 150–600 m tall) with outlines frayed by Simplex. Tepuis: low-frequency Simplex through a very tight SmoothStep(0.12, 0.127, n) for ~650 m vertical cliffs, plus a second terrace. Spawner S_Canopy. |
| Shoal (98% shallow sea) | A sea floor 4–30 m deep from Simplex. Channels along the zero lines of warped noise (1 - abs(n)). Atolls as a ring at a fixed Voronoi distance, with lagoon and islets. Sand banks with sand waves; rare volcanic islands with fringing reefs. Fades thin features by LOD Level so the orbit view doesn't speckle. |
| Rust (terraformed Mars) | Radius 3,390 km. Simulation with 6,500 m mountains + a Crater Field (6–110 km). Only the polar basins hold seas. An analytic Olympus-style shield volcano, about 11 km high and 320 km across, with a scarp and caldera. Dunes, basalt and dust albedo provinces, lichen green near the seas. Sky AG_Rust. |
| Veil (thick-air world) | Venus-sized (6,050 km), 92% land. Long ridge belts from 1 - abs(Simplex) with a stretched Scale vec(90, 260, 90). The whole planet is lifted +2,600 m so no ocean appears. Sky AG_Veil: thick orange smog. |
| Europa (icy moon) | Radius 1,561 km. Ten families of lineae, each the zero line of a noise field stretched along a random axis, with a double-ridge profile and darkened bands. Chaos terrain from Voronoi plus hummocks. Very few craters. |
| Io (volcanic moon) | Radius 1,822 km. Paterae: one per Voronoi cell in three size sets, with warped, scalloped outlines, halos and lobed dark flows. Named vents placed by direction: the red Pele ring with radial streaks, Loki's D-shaped lava lake, Pillan, Tvashtar, Prometheus. No craters. |
| Enceladus | Radius 252 km. A scalloped south-polar boundary at 55°S; four tiger stripes as bowed parallel lines 35 km apart; groove belts and softened craters. |
Lines and cracks
For cracks, ridges and channels, take the zero line of a noise:
1 - SmoothStep(0, w, Abs(noise)) is a band of width w along wherever the
noise crosses zero. Stretch the noise's Scale on one axis to make long,
parallel lineae (Europa, Veil). Use Cellular Edge for polygon cracks.
Real elevation data¶
The Planet DEM node (2.2.1) reads a real global elevation model and returns its height in metres. Use it to build real Mars, the Moon or Earth, and then change them: flood Mars, freeze Earth, terraform anything.
Valles Marineris from the real MOLA elevation model, as it is today and with the sea raised to −3,000 m. The terrain is identical; only the sea level, surface and sky changed.
| Pin | Meaning |
|---|---|
| Dataset | Number N: reads <Project>/DEM/dem_<N>.mpdem (or the folder in the METAPLANETS_DEM_DIR environment variable). |
| HeightScale | Multiplier on the data (1 = real). |
| HeightOffset | Metres added. Use it to set sea level: subtract the elevation you want at 0 m. |
| LongitudeOffset | Rotates the map, in degrees. |
Outputs Height (m) and Valid (0 when the file is missing, so you can fall back to procedural terrain). Sampling is bicubic, wraps in longitude and is loaded once for every planet that uses it.
A DEM gives you the shape at its own resolution (MOLA is about 1.8 km per
pixel). Add procedural detail below that, for example 60 * FBMNoise(...),
and erosion or craters masked by height, so the ground holds up close.
The .mpdem format
A small binary file you can write from any GeoTIFF or IMG with a short script:
| Field | Type |
|---|---|
Magic MPDEM001 |
8 bytes |
| width, height | int32 each |
| lon0, lat0, dlon, dlat | float64 each (degrees; first sample's position and step) |
| scale, offset | float64 each: metres = sample × scale + offset |
| samples | int16, little-endian, width × height, north row first |
Use the elevation in metres relative to the body's reference sphere, and match the actor's radius to that body.
Longitude direction
Unreal is left-handed, so longitudes on the planet run the opposite way to a map. Planet DEM accounts for this so real maps aren't mirrored, but when you place cameras by longitude, use the negated east longitude.
Oceans and water¶
- Oceans: add a Planetary Ocean component. It renders a sea sphere at Sea Level Meters with FFT waves (a wind sea plus swell), whitecaps, breaking surf along the real coastline, and shallows that fade from wet sand to turquoise. See Atmospheres & Oceans.
- Rivers and lakes: wire Water Field (from Planet Simulation V2) into Water Output. Lakes and rivers render at their own height with calmer waves and a current, rapids get white water, and foliage is kept out of the water automatically.
- No ocean on dry, frozen and airless worlds: just leave the ocean off, or lift the terrain above 0 m as Veil does.
Gas giants and rings¶
Set Planet Kind to Gas Giant (Shader Sphere) on the planet actor. It
skips the terrain and draws a procedural, volumetric banded atmosphere
(Metaplanet Gas Giant component). See the L_GasGiant level.
| Group | Settings |
|---|---|
| Bands | BandScale, BandContrast, four band colours (BandColorA–D). |
| Storms | StormCount, StormStrength, StormColor: oval storms like the Great Red Spot. |
| Volumetric | Cloud density, haze, turbulence, deck top and bottom, filaments, silver lining, powder, convective towers. |
| Lightning | Amount, speed, randomness, glow on the night side. |
| Motion | RotationSpeed (with differential rotation of the bands), AxialTiltDeg, Seed. |
| Lighting | Ambient (night side), SunIntensityScale (use 2–4 when the giant appears next to a lit moon), bPhysicalSunIntensity. |
Rings: place a Metaplanet Ring Actor around any planet. It builds a ring of real asteroid meshes on Kepler-like orbits, with a dust layer and a distant impostor disc. Set Inner/Outer Radius (in planet radii), Thickness, Tilt and Asteroid Count. Turn on Debris Profile for a young ring from a broken-up moon (one broad soft band with faint ringlets) instead of Saturn-style bands. Link the ring to a gas giant's RingSource so it shadows the planet.
Checklist for a hero planet¶
- Real radius and realistic relief.
- Continents → ranges → hills → gullies → metre bumps, each layer masked.
- Erosion Landforms (V2) on anything mountainous.
- A climate (Climate Map or latitude math) driving the biome channels.
- A surface with height, slope, latitude and biome layers and textured detail up close.
- An Atmosphere Graph matched to the planet: dust colour, haze, ground albedo.
- Foliage driven by the same biome channels.
- Check it from orbit, at 10 km and at 2 m, at noon and at sunset.