Click the image above to see a video demo and high-level overview of this project.
Gaia, a planet visualizer in Rust
Satellite imagery from NASA Blue Marble
Elevation data from NOAA GLOBE
Political border data from Natural Earth.
This is a program that lets you view the world. You can scroll up and down and move the camera around. It's written entirely in Rust, using the Piston game engine.
Though currently tightly coupled with the specific use-case of the demo, Gaia is meant to eventually be a game engine for world-map-based applications.
The Eastern Mediterranean Sea, with the bottom of the Italian peninsula on the left, and the Nile Delta at the bottom right.
Eastern Italy and the Balkan states.
How to compile it
Gaia uses publicly-available data to present the world. First, you must download the raw data from NASA and NOAA (these amount to about a gigabyte of data), and then allow Imagemagick to convert these data into the format Gaia requires.
There's a script that does this for you. First, make sure you have Imagemagick's
convert available, and then run:
From the directory this README is in.
Warning: This script will first take up 100% of you network bandwidth as it downloads tremendous files, and then take up 100% of your CPU as it does image processing on large images. Your computer might be brought to its knees.
You'll also need to provide a vector polygon dataset. This step hasn't been
automated. The demos use the administrative map of the world from Natural
Earth. You'll need to convert the Shapefile into GeoJSON using a
ogr2ogr. I haven't automated this step because the Natural Earth
dataset is not what I ultimately intend to use Gaia for.
Once that's done, you can run the usual Cargo command: (be sure to use the release mode)
$ cargo run --release --example demo
After a few seconds of compilation and texture-loading, our beautiful planet should appear before you.