The renderer behind GeoStory
GeoStory is the language. Motion is what draws it — every frame, in the browser and in the exported video, from the same code. It needs a map about as much as a document needs one.
What the renderer actually does
A frame is derived entirely from the document and a timestamp, so the same arguments give the same picture. That is what makes an export reproducible — and what lets it run faster than realtime.
One renderer, two spaces
Annotations are addressed in degrees or in percentages of the frame, per annotation, in the same document. A line can be projected onto the ground while the panel beside it is composed against the picture — which is what lets a Motion frame sit over a live map instead of replacing it.
Vehicles locked to the narration
A marker that travels a path as a function of the clock rather than a speed, measured along cumulative great-circle distance so a constant rate is a constant ground speed. One waypoint per scene, so the aircraft is where the sentence being spoken says it is.
Seven themes, four type roles
Colour and type as one set of decisions rather than a palette. Display, title, body and caption each take their own face and size, and label ink follows the basemap underneath it, so a story can fly from a dark canvas to a street map without losing its labels.
The preview is the export
The player and the MP4 exporter call the same drawing code with the same arguments, so what you watch in the browser is what the file contains. Frame-accurate, reproducible, and rendered locally — nothing is uploaded.
A panel over a live map
space is set per annotation, so one document can argue in both registers at once. The map keeps the frame; the panel takes a margin.
annotations:
# Projected onto the ground, with an aircraft travelling it.
- id: rt_flown
kind: line
style: { color: "#3E4753", weight: 2 }
animate:
vehicle: plane
vehicle_keys: [0.04, 0.80, 1.0, 1.0] # one per scene it appears in
vehicle_color: "#F4F7F9"
vehicle_label: "N722BD"
geometry:
type: LineString
coordinates: [[-97.6699, 30.1945], [-80.1131, 26.6329]]
# Composed against the frame, in percentages, over the same map.
- id: pn5_plate
space: canvas
kind: polygon
style: { color: "#0B0F14", weight: 1, fill_opacity: 0.90 }
geometry:
type: Polygon
coordinates: [[[2, 42], [33, 42], [33, 84], [2, 84], [2, 42]]]Documentation and demos
GeoStudio is the reference host for both packages — it plays documents, exports them, and documents the renderer.
Play a .ov document in the browser — real basemaps, moving cameras, narration.
The same renderer with the basemap suppressed, so you can see what is left on the canvas.
All seven presets in their real colours, the four type roles, and pairings worth stealing.
Every bundled document, and what each one demonstrates that the others do not.
Every annotation kind, its geometry, and the fields it reads.
The document language Motion renders — scenes, places, basemaps and cameras.