This release is a pre-release and may not be stable for production use.
🚧 This project is in active beta development. This means the API is unstable, features may be added or removed, and breaking changes are likely to occur frequently and without notice as the design is refined.
TerrainGen
A high-performance scientific terrain generation tool for interplanetary bodies.
TerrainGen can:
- Generate synthetic terrain from scratch, or add fine detail to existing elevation models.
- Populate craters and boulders from cumulative size-frequency distributions.
- Model each crater's profile, age, degradation, irregularity.
- Bake small boulders into the heightmap, and generate procedural 3D boulder models for the large ones.
- Produce synthetic albedo maps with crater ejecta and rays that fade with crater age.
- Model complex geologic features such as complex and secondary craters, boulder ejecta fields, dunes and wind ripples, layered strata terraced into benches and cliffs, fractured bedrock pavement, wind-carved ventifacts, and sand pooled in lows or trailing behind boulders.
- Be extended through base classes in C++ or Python with custom size-frequency distributions, crater ages, profiles and degradation, albedo, sources, and layers.
- GPU-accelerated operations for generating noise, craters, boulders, albedo, and more.
- Generate deterministic results for the same seed on any grid, tile or thread count.
- Integrate into simulations and other external workflows.
We also provide:
- A modular C++ library with Python bindings and minimal dependencies.
- Smart and tested defaults for various surface features.
- A command-line interface that generates terrain from JSON configuration files.
- A GUI for editing configurations and viewing the results in 3D.
- Examples in C++, Python and JSON.
- A standalone demo that streams TerrainGen detail into a planetary-scale renderer on the GPU while navigating around the Moon.
- Example integrations with third-party tools such as Project Chrono, IsaacLab, and Newton.
For more information on the concepts behind TerrainGen and the API, see our latest documentation.
Getting Started
We recommended getting started by installing terraingenpy from PyPi and running the GUI.
pip install terraingenpy
terraingen --gui
Python
C++
Examples
Installation
Contributing
Documentation
Code Coverage
Citation
If you use TerrainGen for published research, please cite:
@software{maietta_terraingen,
author = {Maietta, Alex},
title = {{TerrainGen}: An open-source scientific terrain generation suite for planetary surfaces},
url = {https://github.com/alexmaietta/terraingen},
version = {0.1.0},
license = {BSD-3-Clause},
year = {2026}
}
License
TerrainGen is licensed under the BSD 3-Clause License.
Third-party code and assets keep their own licenses, listed in third_party/README.md.
Acknowledgements
TerrainGen draws inspiration from existing lunar terrain generation tools:
| Name | Organization | Availability | Capabilities | Limitations |
|---|---|---|---|---|
| synthterrain | NASA Ames | Open source (Apache-2.0) | Crater and boulder populations from size-frequency distributions, crater profiles and DEMs on flat terrain | Doesn't generate surface detail or upscale existing DEMs, not actively contributed to. |
| lunasynth | NASA JPL | Open source (Apache-2.0) | Adds craters and boulders to a lunar base DEM, down to 1 cm pixels, and renders images under varying camera and sun positions | Project is not actively-maintained |
| DLES Terrain Crafting | NASA JSC | Not publicly released (paper) | Enhances LOLA and NAC-derived DEMs of the lunar south pole to 20 cm with synthetic craters and boulders, including hand-placed craters from imagery | Not publicly released, |
| PANGU | University of Dundee / STAR-Dundee | Commercial | Multi-resolution planet and asteroid surfaces from real or fractal DEMs with statistical craters and boulders; GPU camera, LiDAR and thermal sensor simulation | Commercial software |
Metadata
Release files for terraingenpy 0.1.0.dev279
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| terraingenpy-0.1.0.dev279.tar.gz | 1.2 MB | Details |
Built distributions (wheels)
Total release size: 49.2 MB
Release files / terraingenpy-0.1.0.dev279.tar.gz
| Download URL | terraingenpy-0.1.0.dev279.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9181d09f8080f8a6488a74483275fe84c4c7a4ded2218a5ba23111ba06b86efd
|
|
BLAKE2b-256 checksum How to use checksums |
a11644670b7b5591a7ccbe2c8a4c934705d12a985bef53e79adad2e7842cf323
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp312-abi3-win_amd64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
82319f7dc42a9aed0a0482d4896a5824558d6dacaf100094dd2dedb80ccc2262
|
|
BLAKE2b-256 checksum How to use checksums |
ea748b2291951ffacd34c79a25f09a571195128bb2935ab5266276cb2d309c94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp312-abi3-manylinux_2_34_x86_64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp312-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ad180e4124520fa328c9e1e7effc6def743bbbf97cfef83c9b3f7283b204ba7e
|
|
BLAKE2b-256 checksum How to use checksums |
58b0799825787dad083e114a78e745138b40a80e9ce482f6e13b8203b37fad2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp312-abi3-manylinux_2_34_aarch64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp312-abi3-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
1a0db5342b5171cdddec60d0c2fbba9dcb4e029e3f48762e5acb38692b26201f
|
|
BLAKE2b-256 checksum How to use checksums |
cd748a4dbfe4b8d8c689be147a7005b3da4af801670632834ec9f5c8bb507aac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp312-abi3-macosx_11_0_x86_64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp312-abi3-macosx_11_0_x86_64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.12 abi3 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
b21744a1eac5fef3dc6cffa26606531672f5134c9ffa28a5e1a3c7ccb07a31a7
|
|
BLAKE2b-256 checksum How to use checksums |
e7e8faed10029283c487d627cba6325c3f94059a17297e569a208af233da3f3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp312-abi3-macosx_11_0_arm64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp312-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.12 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4e443c813ee298f36824f4162fc0ff42245eb27ad04cdb5db68eb33edc78d239
|
|
BLAKE2b-256 checksum How to use checksums |
d8541f832537959e50d824f2162fc771cc05e58264bd8f5b183815d1c36ab70e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp311-cp311-win_amd64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cb805cd7f566df819592709d4175e2d818c795722e045954828679697e850c5b
|
|
BLAKE2b-256 checksum How to use checksums |
9cbca15cd8633fd66ba48f333ecd8f30299247d4d33e36eba285c97f13ef745a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp311-cp311-manylinux_2_34_x86_64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp311-cp311-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.11 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
6653651180362cd0a821edce11d9ac6fdea71240b30015a23cae43ec35d94ba6
|
|
BLAKE2b-256 checksum How to use checksums |
6c856e7563b599dccda16730a563cfbc793811b624d00c9c81ba48530485aeea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp311-cp311-manylinux_2_34_aarch64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp311-cp311-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.11 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
519b0247bcd28f72a387c3a78f6486a7663a3d6cc6a0141686ee403619e069d4
|
|
BLAKE2b-256 checksum How to use checksums |
f64e3736b26f1eb247585608c48c3690ed867ddcae15e5f22007881a62eb7125
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp311-cp311-macosx_11_0_x86_64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp311-cp311-macosx_11_0_x86_64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.11 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
cf43ec9c913b06ab276c6d9b171715b051ea533905efbacd33b972d80545dda1
|
|
BLAKE2b-256 checksum How to use checksums |
bf3b600d7fed3e5c2a4760526f2a3c723be56874b0bd3a78911e002fa23452e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ec6063386d919c37d723a551798d892941d83a6230fc5e4aecef07bb41eb7be0
|
|
BLAKE2b-256 checksum How to use checksums |
d0bef8a7b903d79d97c2d8ae4a26c5b2f255072bd10fc4ea1903df4fbb954144
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp310-cp310-win_amd64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 2.8 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1124bff172d952bec0300b52d21d3c584a8c73d4aba3571dc069cb8fdca086d8
|
|
BLAKE2b-256 checksum How to use checksums |
d63fd239c746d7fe2ba0129b2145ec64ed3153671f6f1df38a7d622c1a702fb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp310-cp310-manylinux_2_34_x86_64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp310-cp310-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
4ea71bb3bb56827e4e9d3a63c61e385cc21907130c80f4569e3221dd64d85806
|
|
BLAKE2b-256 checksum How to use checksums |
0df0cd2ee5a8e8d0a56e42b19f1a1c1497b6fdc887fa58d90aebd12fd07aa655
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp310-cp310-manylinux_2_34_aarch64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp310-cp310-manylinux_2_34_aarch64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ ARM64 |
|
SHA-256 checksum How to use checksums |
ca3379992f98016e1a70a5d5d803556a3879ce9fcd6d5eeaee80ee3f68a5a6ff
|
|
BLAKE2b-256 checksum How to use checksums |
98dea71abc145c2d5ac709bba539316c32ddb78c444cdaa2985623362f2b3c36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp310-cp310-macosx_11_0_x86_64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp310-cp310-macosx_11_0_x86_64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.10 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
5a1eb77a99139fd6c69f36995191dd4653d51e96a9f0d68c96510b58d8c61156
|
|
BLAKE2b-256 checksum How to use checksums |
64f7a1c5341caf6ce893fdb79923b8c74625a19b7b254281af48c9bfe978239a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency logRelease files / terraingenpy-0.1.0.dev279-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | terraingenpy-0.1.0.dev279-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.9 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c7ab85242300a8807f39b5f8de88bf836fbd24e34699195e9049703292953ef2
|
|
BLAKE2b-256 checksum How to use checksums |
4dcaf0fc440639f9c3e68dc8518911f7212e7928a0a1550d86a5e8574ad69582
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.
Transparency log