Skip to content

Repository files navigation

3D ICE logo

3D ICE

CI MIT License

Interactive 3D Cryosphere Explorer for Antarctica and Greenland

3D ICE turns state-of-the-art cryosphere datasets into an explorable browser experience for research communication, teaching, and public engagement.

Website · Launch Explorer · Releases

Deploy Pages workflow Release compat bundle workflow Node 20+ WebGL browser runtime Antarctica and Greenland

Overview

3D ICE is a standalone source repository for the full 3D ICE experience: the GitHub Pages site, the interactive browser runtime, bundled cryosphere datasets, preview media, and the preparation scripts used to turn scientific source data into web-ready assets.

The project is designed to bridge rigorous glaciological research and public curiosity. It lets people rotate, zoom, and layer Antarctica and Greenland datasets directly in the browser, then jump from the visualization to the underlying source products.

Watch demo on YouTube

3D ICE demo preview. Click to watch the video on YouTube.
Click to watch the full 3D ICE demo on YouTube.

Why This Repo Exists

  • Publish static/ directly to GitHub Pages as a standalone site.
  • Preserve the legacy /tools/... public paths used by the main personal site.
  • Ship a compatibility bundle for downstream deployment into another repo.
  • Keep runtime assets, prepared data products, and data-preparation tooling together.

Experience Highlights

Capability What 3D ICE provides
Fully interactive 3D viewing Rotate, zoom, and inspect Antarctica and Greenland as if handling a physical model.
Layered cryosphere exploration Combine bed topography, surface velocity, basin boundaries, basal friction, subglacial hydrology, and ocean streamlines in one scene.
Antarctica-specific overlays Explore WAOM2 ocean circulation, IMBIE-refined basins, subglacial channels, and RISE basal melt plus thermal-driving fields.
Greenland-specific overlays Explore ITS_LIVE velocity mosaics, Greenland basin boundaries, basal friction fields, and clipped Arctic ocean circulation around Greenland.
Research-friendly workflow The runtime exposes direct links back to the source datasets, so the visual layer stays connected to the original scientific products.
Cross-platform delivery Balanced presets support mobile touchscreens, while HD options target larger desktop displays.
Flexible deployment The runtime auto-detects project-path prefixes, so it works both at a site root and under GitHub Pages project paths such as /3d-ice/tools/....

Quick Start

Preview the site locally

The site itself is static. A simple local file server is enough:

cd static
python3 -m http.server 4173

Then open:

  • http://127.0.0.1:4173/
  • http://127.0.0.1:4173/tools/3D-interactive-cryosphere-explorer.html

Build the compatibility bundle

The bundling utilities use only built-in Node APIs. Node 20+ is the expected environment because that is what the release workflow uses.

npm run bundle:compat
npm run smoke:compat

This produces:

  • dist/3d-ice-compat.tar.gz
  • dist/3d-ice-compat.tar.gz.sha256
  • dist/3d-ice-compat-manifest.json

The tarball always expands to a top-level tools/ directory so the main site can continue serving legacy /tools/... URLs unchanged.

Repository Layout

Path Purpose
static/index.html Standalone landing page for the site root.
static/css/3d-ice-home.css Vendored landing-page custom styles used by the site root.
static/tools/3D-interactive-cryosphere-explorer.html Main interactive runtime.
static/tools/data/ Web-ready cryosphere datasets and metadata packages.
static/tools/media/3d-ice/ Preview stills and loop videos used across the experience.
static/tools/vendor/three/ Vendored Three.js runtime dependencies.
scripts/ Data preparation, visualization support, trailer capture, and release utilities.
dist/ Generated compatibility bundle artifacts.
.github/workflows/ GitHub Pages deployment and compatibility release automation.

Core Data Layers

Region Layers in the experience Representative source products
Antarctica Bed topography, surface elevation, thickness, mask, refined basins, velocity, basal friction, subglacial hydrology, ocean streamlines, basal melt, thermal driving BedMachine Antarctica v4, Bedmap3 v1.0 (CC BY 4.0), MEaSUREs Antarctic Boundaries v2, MEaSUREs Phase-Based Antarctica Velocity v1, Antarctic basal friction inversions, GlaDS Antarctic subglacial hydrology, WAOM2, RISE
Greenland Bed topography, surface elevation, thickness, mask, basin boundaries, velocity, basal friction, ocean streamlines BedMachine Greenland v6, QRF Greenland subglacial topography (2025), MEaSUREs ITS_LIVE v2, Greenland basal friction ensemble inversion reference, Copernicus Marine Arctic Ocean Physics

Bedmap3 is available as a 10 km Balanced or 4 km HD Antarctica terrain alternative. Both modes support velocity, flowlines, basal friction, effective pressure, subglacial channels, refined basins, and WAOM2 ocean streamlines. The gridded velocity, basal-friction, and hydrology layers are regenerated on Bedmap3's native grid; the projected WAOM2 streamlines are clipped against the active terrain at runtime. RISE basal melt and thermal-driving fields remain exclusive to BedMachine v4.

Greenland QRF subglacial topography (2025) is available as 3 km Balanced and 1 km HD terrain alternatives. The 300 m QRF GeoTIFF is sampled at pixel centres. The package replaces bed elevation only for grounded ice where the QRF prediction is valid, keeps BedMachine Greenland v6 surface elevation and mask, derives internally consistent thickness from those two fields, and falls back to BedMachine values over QRF gaps, ocean, and floating ice. Velocity, flowlines, basal friction, basins, and ocean streamlines reuse their existing BedMachine-aligned grids. The upstream data repository does not state a standalone data licence; confirm redistribution terms with the authors before publishing derived assets.

Standalone GitHub Pages Site

This repository publishes static/ directly to GitHub Pages. That serves:

  • / as the standalone landing page
  • /css/3d-ice-home.css as the vendored landing-page stylesheet
  • /tools/3D-interactive-cryosphere-explorer.html as the main runtime
  • /tools/data/*, /tools/media/3d-ice/*, /tools/vendor/*, and /tools/3d-antarctica/ as supporting assets

The Pages workflow writes static/.nojekyll before deployment so the project-path asset layout is preserved exactly as shipped.

Release Flow

  1. Push to main to deploy static/ to GitHub Pages.
  2. Push a tag like v0.1.0 to build and publish compatibility assets to a GitHub release.
  3. Use workflow_dispatch when you want either workflow to run manually.

The release workflow uploads and optionally publishes:

  • dist/3d-ice-compat.tar.gz
  • dist/3d-ice-compat.tar.gz.sha256
  • dist/3d-ice-compat-manifest.json

Installation

Browser Runtime (no install needed)

Visit the live explorer in any WebGL-capable browser, or serve locally:

cd static
python3 -m http.server 4173
# open http://127.0.0.1:4173/tools/3D-interactive-cryosphere-explorer.html

Data Preparation Pipeline

To regenerate datasets from source NetCDF/HDF5 or GeoTIFF files:

# Python 3.10+ required
pip install h5py numpy scipy netCDF4 tifffile

# Example: prepare BedMachine Antarctica
python scripts/prepare_bedmachine_antarctica.py --input BedMachineAntarctica_V4.nc

# Example: prepare Bedmap3 Antarctica from the four official GeoTIFF grids
python scripts/prepare_bedmap3_antarctica.py --input-dir /path/to/bedmap3

# Example: prepare the Bedmap3 HD mode
python scripts/prepare_bedmap3_antarctica.py --input-dir /path/to/bedmap3 --resolution-m 4000 --basename bedmap3_antarctica_4km

# Translate the Antarctica overlay packages to Bedmap3's native grids
python scripts/prepare_bedmap3_antarctica_overlays.py

# Prepare Greenland QRF terrain alternatives from the published 300 m GeoTIFF
python scripts/prepare_qrf_greenland.py --input /path/to/QRF_greenland_ice_predictions_300m.tif

Running Tests

# Create a virtual environment
python3 -m venv .venv && source .venv/bin/activate

# Install test dependencies
pip install pytest pytest-cov h5py numpy

# Run unit tests
pytest tests/ --ignore=tests/e2e -v

# Run bundle smoke test (requires Node.js 20+)
npm run bundle:compat && npm run smoke:compat

Citation

If you use 3D ICE in your research or teaching, please cite:

@article{wang2026,
  author  = {Wang, Yu},
  title   = {3D ICE: An Interactive Browser-Based Cryosphere Explorer for Antarctica and Greenland},
  journal = {Journal of Open Source Software},
  year    = {2026}
}

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

This project follows the Contributor Covenant Code of Conduct.

License

This project is licensed under the MIT License.

Project Scope

This repo is intentionally focused on the standalone 3D ICE experience and related distribution artifacts. It is the source of truth for:

  • the browser runtime
  • the standalone landing page
  • prepared data bundles
  • preview media
  • compatibility packaging for downstream deployment

If you are looking for the broader personal site that consumes the compatibility bundle, this repo is the upstream asset and runtime source rather than the final umbrella website.

About

3D ICE: The Polar World at Your Fingertips

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages