https://github.com/mapbox/martini
A JavaScript library for real-time RTIN terrain mesh generation
https://github.com/mapbox/martini
Last synced: 3 months ago
JSON representation
A JavaScript library for real-time RTIN terrain mesh generation
- Host: GitHub
- URL: https://github.com/mapbox/martini
- Owner: mapbox
- License: isc
- Created: 2019-08-14T14:18:19.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2022-10-28T14:44:31.000Z (over 2 years ago)
- Last Synced: 2025-01-08T21:43:35.188Z (5 months ago)
- Language: JavaScript
- Homepage: https://observablehq.com/@mourner/martin-real-time-rtin-terrain-mesh
- Size: 1.31 MB
- Stars: 614
- Watchers: 109
- Forks: 41
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MARTINI
[](https://travis-ci.com/mapbox/martini) [](https://github.com/mourner/projects)
MARTINI stands for **Mapbox's Awesome Right-Triangulated Irregular Networks, Improved**.
It's an experimental JavaScript library for **real-time terrain mesh generation** from height data. Given a (2k+1) × (2k+1) terrain grid, it generates a hierarchy of triangular meshes of varying level of detail in milliseconds. _A work in progress._
See the algorithm in action and read more about how it works in [this interactive Observable notebook](https://observablehq.com/@mourner/martin-real-time-rtin-terrain-mesh).
Based on the paper ["Right-Triangulated Irregular Networks" by Will Evans et. al. (1997)](https://www.cs.ubc.ca/~will/papers/rtin.pdf).

## Example
```js
// set up mesh generator for a certain 2^k+1 grid size
const martini = new Martini(257);// generate RTIN hierarchy from terrain data (an array of size^2 length)
const tile = martini.createTile(terrain);// get a mesh (vertices and triangles indices) for a 10m error
const mesh = tile.getMesh(10);
```## Install
```bash
npm install @mapbox/martini
```### Ports to other languages
- [pymartini](https://github.com/kylebarron/pymartini) (Python)