Metromake docs: getting started
Build your first road network map in five minutes, then learn the keyboard shortcuts, the cross-section editor, junction controls and command-line export.
Quick start: your first map in 5 minutes
- Create a map. Metromake opens on its start menu. Press Cmd+N (or + New on the Map card), pick a terrain template, a size and a folder.
- Draw roads. Press Tab for edit mode and 2 for the Roads tool. Click to place points; Shift+click adds a curve point. Starting or ending on a road connects to it; ending on a road splits it into a junction.
- Shape the cross-section. In the Draw panel, set lane types and widths before you draw, or select a road and change it in the Inspector.
- Set junction controls. With the Select tool (1), click a junction and choose its control in the Inspector.
- Check it in 2D. Press B for the blueprint view.
- Export. File → Export → OpenDRIVE (.xodr), OpenSCENARIO, glTF, OBJ or heightmap.
Want a real place instead? Convert an OpenStreetMap area to OpenDRIVE.
Keyboard shortcuts
Editor
| Key | Action |
|---|---|
| Tab | Switch between view mode and edit mode |
| 1–7 | Pick a tool (1 Select, 2 Roads, 4 Terrain, 5 Water, 7 Delete) |
| B | 2D blueprint view |
| P | Project view |
| F | Frame the selection |
| WASD / arrows | Move the camera; in 2D, pan |
| Q / E | Rotate the camera |
| Space (hold) | View-mode mouse controls while editing |
| ↑ / ↓ in 2D | Move the height cut in 5 m steps |
| PgUp / PgDn | Elevation for new road points |
| R | Turn a sign to face the other way |
| Cmd+Z / Cmd+Shift+Z | Undo / redo |
| Cmd+S / Cmd+O | Save / open |
| Cmd+W | Back to the start menu (the map stays open) |
| F1 | Controls |
Selecting and moving
| Alt+drag | Change a point's height |
| Shift+drag a road | Move the whole road |
| Double-click a road | Insert a curve point |
| Cmd+click | Add or remove points from the selection |
| Shift+click | Select every point along the roads to this one |
| Drop a node onto a node | Merge them into a junction |
Start menu
| Cmd+N / Cmd+Shift+N | New map / new project |
| Cmd+O / Cmd+Shift+O | Open a map / a project |
| Cmd+F | Search |
| Cmd+1/2/3 | Switch pages |
Cross-section editor
The profile editor is in the Draw panel for new roads and in the Inspector for the selected road. For each lane you set:
- the type: driving, parking, bus, bike, shoulder, hatched, median, sidewalk, verge or barrier
- width, direction and height
- the line on each side: 11 marking styles
Drag lane boundaries in the cross-section preview to resize lanes. Raised lanes get curbs automatically, and road-level lanes flow into the junction surface. Custom profiles can be saved to the map's library.
Generated automatically: rounded curb corners (radius per node), crosswalks, stop lines and turn arrows on junction approaches, tapers where profiles change, smooth continuation through nodes that join two roads, street lights, traffic lights and bridge piers.
Junction controls
A junction is a point where three or more roads meet. Its control type decides what is built:
| Control | Built |
|---|---|
| Priority | Stop lines and turn arrows |
| Traffic signals | Priority plus a signal on every approach |
| All-way stop | Stop lines and STOP text on every approach |
| Give way | Dashed give-way lines |
| Uncontrolled | No stop lines or arrows |
| Roundabout | A circular carriageway with flared entries, a curbed island, a truck apron, give-way lines and a lane divider when the ring is wide enough for two lanes |
Roundabout ring and island radius are adjustable; the ring grows automatically when its roads need it. An approach too short to reach outside the ring is flagged in the Inspector. On export, see how junctions are written to OpenDRIVE.
Command-line export
Export without opening a window, for scripts and CI. On macOS the executable is inside the app bundle: MetroMake.app/Contents/MacOS/metromake.
metromake --export map.json out.xodr # OpenDRIVE
metromake --export map.json scenario.xosc [--cut-in | --junction] # OpenSCENARIO + .xodr
metromake --export map.json out.glb # or .gltf / .obj
metromake --export map.json heightmap.png # + .r16 + .json
# options: --no-terrain --no-markings --no-furniture --no-props
metromake --import-osm area.osm area.json
metromake --import-xodr network.xodr network.json
metromake --import-heightmap map.json dem.png out.json [minHeight maxHeight]
Maps are plain JSON, so you can generate or edit them before exporting.
Questions the docs don't answer?
Send us a message.