FlightObserver 3D — Live Flight Tracker on a Fully 3D Eart

Hi everyone,

I’ve been working on a project called FlightObserver 3D and I’m excited to share it with the community here. It’s a real-time flight tracking visualization that renders live aircraft positions on an interactive 3D globe, all running in the browser with three.js.

What it does:

  • Tracks live flights worldwide using ADS-B data from the OpenSky Network API

  • Renders a detailed 3D Earth with satellite imagery and elevation data

  • Shows aircraft positions, altitude, and tracks in real time as they move

  • Includes interactive controls for zooming, panning, and adjusting the view

  • Displays airports, terrain relief, and flight paths over the globe

A bit about the tech:

  • Built entirely with three.js for the 3D rendering pipeline

  • Uses satellite tile imagery and geospatial data from Esri, Maxar, and OpenStreetMap

  • Live flight data comes from the OpenSky Network API

  • The globe supports multiple zoom levels and smooth camera transitions

Screenshots:

Link: Airports, Relief, OpenSky, Tracks

I’d love to hear your thoughts — especially on performance optimization for rendering large numbers of moving objects, and any ideas for improving the visual experience. Feedback is very welcome.

Thanks for checking it out!

1 Like

Pretty cool. Tile download is a bit chuggy.. but I suppose that’s your hosting. The globe glitches a bunch during loading.. you might want to cover that initial load with a load screen.

When you zoom in, and it switches to a different tile resolution, it’s clearing the globe first before streaming the new tiles in, resulting in lots of flashing.

The mousewheel zoom is rather slow, and reversed from what is normally used in 3d apps of this kind.

Play and pause doesn’t seem to do much. I can see it starts sort of playing a new frame of position data one in a while, but you should make it “interpolate” so you can see them actually moving in realtime.

The online indicator keeps switching between CONNECT/ONLINE. That doesn’t seem ideal.

Your drawcall count and polygon count looks decent: ( take a look at this.renderer.info.render to see this info )

Overall, not bad for vibeslop, but could use more vibes. :smiley:

Also.. idk if it’s the data source you’re using but my local airspace only shows like 2 planes, but adsbexchange shows tons: