← Portfolio

Demo 02 · For global brands, NGOs, and oceanographic platforms

Planetary currents, in motion.

A real-time ocean-current field rendered on a 3D earth. Twelve thousand fluid particles, each advected by a sum of major gyre rotations and the Antarctic Circumpolar zonal band. Drag to rotate. Scroll to zoom. The full simulation runs in your browser at sixty frames per second; the dataset behind it could be your reanalysis, your salinity field, your shipping traffic.

Ocean current simulation

FPS
Frame ms
Avg speed
Particles
Slow → Fast
0cm/s · norm100+
drag · ctrl + scroll to zoom
Hold Ctrl (or ) and scroll to zoom

If you publish

Climate research · oceanographic platforms · maritime shipping · global-mission NGOs

Your data lives in netCDF files and academic papers. The board, the press, the donor base, the public — they need to *feel* the planet you're describing. Static maps die in the seventh scroll of a quarterly report; a globe with the data flowing on it crosses the room.

The problem we solve

Planetary-scale data doesn't compress to a screenshot. An ocean current is a thousand trajectories. A wind field is a moving texture. A shipping route is a story over time. The right substrate is an interactive WebGL globe; the right execution is a particle simulation that runs client-side, instantly, on the visitor's phone.

What we'd build for you

  1. Ingest your dataset: CMEMS ocean reanalysis, HYCOM, ECMWF wind, AIS vessel tracks, salinity, chlorophyll-a, sea-surface temperature, whatever you publish.
  2. Project onto a Three.js earth tuned to your brand surface: texture, atmospheric tone, type.
  3. Run the particle integration on the client, GPU-accelerated for large fields. We can also render in a worker thread so the rest of the page stays interactive.
  4. Encode additional variables by color, particle size, or trail length. The model in this demo is analytical; yours would be data-driven.

Stakes

Without it: your data sits behind a download link. Most visitors never read the paper. The story stays in the abstract.

With it: the visitor moves the globe and feels what your science describes. The next click is usually a donation, a partnership inquiry, or a press request.

Discuss a planetary-data globe →

How it's built

  • Vector field: analytical model combining five major gyres (North/South Atlantic, North/South Pacific, Indian) modeled as 2D rotations falling off with distance from each center, plus the Antarctic Circumpolar Current as a strong eastward zonal band at 60° S, plus the equatorial counter-current at 5° N.
  • Particle integration: 12,000 particles each carrying (lat, lon, age). Every frame: sample the field, Euler-step on the sphere, increment age, respawn when age expires or speed stalls. ~1.2 million field evaluations per second sustained.
  • Rendering: THREE.Points with vertex colors and additive blending. Speed is mapped through a deep-sea → hot-magenta gradient. Particle size attenuates with distance from camera.
  • Trail effect: the renderer's autoClearColor is disabled and a low-alpha quad is drawn each frame, so previous-frame pixels persist briefly. Adjustable via the Trail length slider.
  • Earth surface: Three.js SphereGeometry with NASA Blue Marble texture (equirectangular). Fresnel-style atmospheric halo via a back-side sphere shader.
  • Orbit: hand-rolled spherical orbit control (no OrbitControls dependency). Drag rotates azimuth/elevation, ctrl+wheel adjusts the camera radius.