Metadata-Version: 2.4
Name: forge3d
Version: 1.24.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Rust
Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: numpy>=1.21
Requires-Dist: rasterio>=1.3.0 ; extra == 'all'
Requires-Dist: pyproj>=3.4.0 ; extra == 'all'
Requires-Dist: xarray[complete]>=2023.1.0 ; extra == 'all'
Requires-Dist: rioxarray>=0.13.0 ; extra == 'all'
Requires-Dist: dask[array]>=2023.1.0 ; extra == 'all'
Requires-Dist: matplotlib>=3.5.0 ; extra == 'all'
Requires-Dist: pillow>=9.0.0 ; extra == 'all'
Requires-Dist: cartopy>=0.21.0 ; extra == 'all'
Requires-Dist: ipywidgets>=8.0 ; extra == 'all'
Requires-Dist: pooch>=1.6 ; extra == 'all'
Requires-Dist: cartopy>=0.21.0 ; extra == 'cartopy'
Requires-Dist: matplotlib>=3.5.0 ; extra == 'cartopy'
Requires-Dist: cmcrameri>=1.7 ; extra == 'colormaps'
Requires-Dist: cmocean>=3.0 ; extra == 'colormaps'
Requires-Dist: colorcet>=3.0.0 ; extra == 'colormaps'
Requires-Dist: palettable>=3.3.3 ; extra == 'colormaps'
Requires-Dist: pycpt>=0.5.0 ; extra == 'colormaps'
Requires-Dist: pooch>=1.6 ; extra == 'datasets'
Requires-Dist: ipywidgets>=8.0 ; extra == 'jupyter'
Requires-Dist: matplotlib>=3.5.0 ; extra == 'matplotlib'
Requires-Dist: rasterio>=1.3.0 ; extra == 'raster'
Requires-Dist: pyproj>=3.4.0 ; extra == 'raster'
Requires-Dist: xarray[complete]>=2023.1.0 ; extra == 'raster'
Requires-Dist: rioxarray>=0.13.0 ; extra == 'raster'
Requires-Dist: dask[array]>=2023.1.0 ; extra == 'raster'
Requires-Dist: pillow>=9.0.0 ; extra == 'tiles'
Provides-Extra: all
Provides-Extra: cartopy
Provides-Extra: colormaps
Provides-Extra: datasets
Provides-Extra: jupyter
Provides-Extra: matplotlib
Provides-Extra: raster
Provides-Extra: tiles
License-File: LICENSE
License-File: LICENSE-APACHE
Summary: forge3d: Rust/WebGPU 3D maps with diagnostics, labels, and reproducible scene bundles
Keywords: graphics,rendering,webgpu,rust,3d,terrain,visualization
Home-Page: https://forge3d.dev
Author: forge3d authors
License: Apache-2.0 OR MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Bug Tracker, https://github.com/milos-agathon/forge3d/issues
Project-URL: Documentation, https://milos-agathon.github.io/forge3d/
Project-URL: Homepage, https://github.com/milos-agathon/forge3d
Project-URL: Repository, https://github.com/milos-agathon/forge3d

<p align="center">
  <img src="https://raw.githubusercontent.com/milos-agathon/forge3d/main/docs/assets/logo/forge3d_dark.svg" alt="forge3d" width="320">
</p>

<p align="center">
  <strong>Python-first terrain and scene rendering on top of Rust + WebGPU.</strong><br>
  Interactive viewer, offscreen rendering, overlays, point clouds, notebooks, and production outputs.
</p>

<p align="center">
  <a href="https://pypi.org/project/forge3d/"><img src="https://img.shields.io/pypi/v/forge3d?color=EFA026&style=flat-square" alt="PyPI"></a>
  <a href="https://pypi.org/project/forge3d/"><img src="https://img.shields.io/pypi/pyversions/forge3d?color=D0C8BA&style=flat-square" alt="Python 3.10+"></a>
  <a href="https://github.com/milos-agathon/forge3d/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0%20%2F%20MIT-blue?style=flat-square" alt="License"></a>
  <a href="https://milos-agathon.github.io/forge3d/"><img src="https://img.shields.io/badge/docs-online-blue?style=flat-square" alt="Docs"></a>
</p>

---

<p align="center">
  <img src="https://raw.githubusercontent.com/milos-agathon/forge3d/main/docs/assets/highres.png" alt="forge3d hero render" width="720">
</p>

## Install

```bash
pip install forge3d
```

Optional extras:

```bash
pip install "forge3d[jupyter]"   # notebook widget support
pip install "forge3d[datasets]"  # on-demand sample datasets
pip install "forge3d[all]"       # everything
```

## Quick Start

```python
import forge3d as f3d

dem_path = f3d.fetch_dem("rainier")

with f3d.open_viewer_async(terrain_path=dem_path, width=1440, height=900) as viewer:
    viewer.set_z_scale(0.1)
    viewer.set_orbit_camera(phi_deg=28, theta_deg=49, radius=5400, fov_deg=42)
    viewer.set_sun(azimuth_deg=302, elevation_deg=24)
    viewer.snapshot("rainier.png", width=1920, height=1080)
```

## What forge3d Covers

Open-source workflow:

- Interactive terrain viewing through `open_viewer_async()` and `ViewerHandle`
- Terrain snapshots from GeoTIFF or `numpy` DEM inputs
- Raster overlays, vector overlays, labels, and camera automation
- LAZ/COPC/EPT point-cloud loading
- COG access, CRS helpers, datasets, presets, and notebook widgets
- Native/offscreen rendering with `Scene`, `Session`, `TerrainRenderer`, and `TerrainRenderParams`
- Geometry, mesh, vector, SDF, path-tracing, lighting, and terrain scatter helpers

Pro workflow:

- `MapPlate`, `Legend`, `ScaleBar`, and `NorthArrow` for cartographic composition
- SVG/PDF vector export
- Building import pipelines for GeoJSON, CityJSON, and 3D Tiles workflows
- Mapbox-style import and scene bundles

## Documentation Map

- [Quickstart](https://milos-agathon.github.io/forge3d/start/quickstart.html): install, first viewer session, first overlay, first notebook widget
- [Feature Map](https://milos-agathon.github.io/forge3d/guides/feature_map.html): repo-wide overview of the supported workflows
- [Examples Catalog](https://milos-agathon.github.io/forge3d/examples/index.html): every script and notebook in `examples/`
- [Tutorials](https://milos-agathon.github.io/forge3d/tutorials/index.html): guided GIS and Python tracks
- [Gallery](https://milos-agathon.github.io/forge3d/gallery/index.html): finished recipes and visuals
- [API Reference](https://milos-agathon.github.io/forge3d/api/api_reference.html): the full public Python surface

## Examples

The repo ships a broad set of runnable examples in [`examples/`](examples/), including:

- interactive terrain scenes and raster overlays
- Mapbox-style, labels, and picking demos
- point-cloud and building viewers
- camera animation and terrain camera rigs
- COG streaming and offscreen terrain rendering
- pure-Python composition examples and notebooks

Run any script with `python examples/<name>.py --help` when it exposes CLI options.

## License

The open-source core is released under Apache-2.0 OR MIT. Pro-gated features require a commercial license key set with `forge3d.set_license_key(...)`.

