3 unstable releases

Uses old Rust 2015

0.2.1 Mar 28, 2018
0.2.0 Mar 15, 2018
0.1.0 Mar 12, 2018

#64 in Rendering engine

MIT license

1MB
1.5K SLoC

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.

Dependencies

~19–29MB
~510K SLoC