An OpenGL world visualizer, written in Rust
Switch branches/tags
Nothing to show
Clone or download
Latest commit 3aaedf5 Mar 28, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assetgen mkdirp the tiles dir Mar 28, 2018
quadtree Update Cargo.toml files Mar 12, 2018
screenshots Update README Dec 11, 2017
scripts Change gen_world_assets to download_* Dec 10, 2017
src Draw labels on non-origin tiles Mar 14, 2018
.gitignore Render using NASA Blue Marble data as texture May 27, 2017
Cargo.toml Release assetgen 0.2.1 Mar 28, 2018
FiraSans-Regular.ttf First attempt at monorepo Mar 12, 2018
README.md Update video Mar 28, 2018

README.md

YouTube Demo Video

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.

Screenshots

Screenshot 1

The Eastern Mediterranean Sea, with the bottom of the Italian peninsula on the left, and the Nile Delta at the bottom right.

Screenshot 2

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:

$ ./scripts/download_world_assets

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 tool like 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.