All Projects → OpenDroneMap → dem2mesh

OpenDroneMap / dem2mesh

Licence: GPL-3.0 license
Quickly generate 2.5D meshes from elevation models.

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
c
50402 projects - #5 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to dem2mesh

bmx7
BMX7 / SEMTOR Securely Entrusted Mesh Routing Protocol
Stars: ✭ 55 (+3.77%)
Mutual labels:  mesh
RubyTextMeshPro
Unity Text Mesh Proでルビ(フリガナ)のタグを追加しました.
Stars: ✭ 61 (+15.09%)
Mutual labels:  mesh
jismesh
Utilities for the Japanese regional grid square system defined in Japanese Industrial Standards (JIS X 0410 地域メッシュ).
Stars: ✭ 33 (-37.74%)
Mutual labels:  mesh
mini-map-maker
A tool for automatically generating 3D printable STLs from freely available lidar scan data.
Stars: ✭ 51 (-3.77%)
Mutual labels:  dem
PyGran
A DEM toolkit for rapid simulation & quantitative analysis of granular systems
Stars: ✭ 50 (-5.66%)
Mutual labels:  dem
fulgurite
A library to read and write GeoTIFF images using Apache Spark
Stars: ✭ 16 (-69.81%)
Mutual labels:  geotiff
nycmeshnet.github.io
NYC Mesh Website
Stars: ✭ 18 (-66.04%)
Mutual labels:  mesh
vyatta-cjdns
A cjdns package for Ubiquiti EdgeOS and VyOS, allowing cjdns to be used on EdgeRouters
Stars: ✭ 39 (-26.42%)
Mutual labels:  mesh
Py BL MeshSkeletonization
Mesh Skeleton Extraction Using Laplacian Contraction
Stars: ✭ 32 (-39.62%)
Mutual labels:  mesh
merbridge
Use eBPF to speed up your Service Mesh like crossing an Einstein-Rosen Bridge.
Stars: ✭ 469 (+784.91%)
Mutual labels:  mesh
classy blocks
Python classes for easier creation of OpenFOAM's blockMesh dictionaries.
Stars: ✭ 53 (+0%)
Mutual labels:  mesh
meshname
Meshname, a universal naming system for all IPv6-based mesh networks, including CJDNS and Yggdrasil
Stars: ✭ 65 (+22.64%)
Mutual labels:  mesh
particle-cookbook
A collection of programming snippets, tips, and tricks for developing with Particle IoT devices
Stars: ✭ 20 (-62.26%)
Mutual labels:  mesh
AniFormer
Source code of our BMVC 2021 paper: AniFormer: Data-driven 3D Animation with Transformer
Stars: ✭ 24 (-54.72%)
Mutual labels:  mesh
GA SLAM
🚀 SLAM for autonomous planetary rovers with global localization
Stars: ✭ 40 (-24.53%)
Mutual labels:  dem
xdem
Analysis of digital elevation models (DEMs)
Stars: ✭ 50 (-5.66%)
Mutual labels:  dem
intersection-wasm
Mesh-Mesh and Triangle-Triangle Intersection tests based on the algorithm by Tomas Akenine-Möller
Stars: ✭ 17 (-67.92%)
Mutual labels:  mesh
fastai sparse
3D augmentation and transforms of 2D/3D sparse data, such as 3D triangle meshes or point clouds in Euclidean space. Extension of the Fast.ai library to train Sub-manifold Sparse Convolution Networks
Stars: ✭ 46 (-13.21%)
Mutual labels:  mesh
georaster-layer-for-leaflet
Display GeoTIFFs and soon other types of raster on your Leaflet Map
Stars: ✭ 168 (+216.98%)
Mutual labels:  geotiff
IrregularGradient
Create animated irregular gradients in SwiftUI.
Stars: ✭ 127 (+139.62%)
Mutual labels:  mesh

dem2mesh

Fast generation of 2.5D meshes from elevation models.

image

image

Quickstart

docker run -it --rm -v /path-your-data:/data kladess/dem2mesh dem2mesh -rtc -verbose -inputFile /data/dem.tif -outputFile /data/mesh.ply

Dependencies

GDAL and OpenMP are the only dependencies. To install it run:

sudo apt-get install -y libgdal-dev libomp-dev

Building

mkdir build && cd build
cmake ..
make

Running

./dem2mesh -rtc -verbose -inputFile dem.tif -outputFile mesh.ply

⚠️ The DEM should use a coordinate reference system (CRS) that has matching horizontal and vertical units (for example, UTM). If you are getting stretched or deformed results, double check your CRS and use gdalwarp to reproject the raster DEM. https://www.gdal.org/gdalwarp.html

Options

Flag Description Required
-inputFile Path to DEM raster datasource (GDAL compatible)
-outputFile Path to PLY mesh output
-maxVertexCount Target number of vertices for the output mesh. This number is not always guaranteed to be reached. Defaults to 100000
-maxTileLength Max length of a tile. Smaller values take longer to process but reduce memory usage by splitting the meshing process into tiles. Defaults to 1000.
-aggressiveness Value between 1 and 10 that specifies how "aggressive" the mesh simplification process should be at each iteration. Higher values simplify the mesh more aggressively but can decrease the fidelity of the mesh. Defaults to 5.
-bandNum Raster band # to use. Defaults to 1.
-maxConcurrency Maximum number of threads to use. Defaults to all CPUs available.
-edgeSwapThreshold Dot product threshold (between 0-1) to perform edge collapses. Performing edge collapses can violate the 2.5D constraints, but leads to better triangles for vertical structures. Defaults to disabled.
-rtc Use Relative To Center (RTC) X/Y coordinates in the output PLY mesh. This can be useful since most 3D visualization software use floating coordinate precision to represent vertices and using absolute coordinates might lead to jittering artifacts.
-verbose Print verbose output.

FAQ

How does it compare to https://github.com/heremaps/tin-terrain ?

The main difference is the meshing approach and output type. Tin-terrain uses a greedy approach, dem2mesh uses a gridding + simplification approach. Tin-terrain can output to quantized-mesh format (useful for displaying in Cesium), dem2mesh does not.

The meshing approach changes the way triangles are placed in the mesh. Greedy approaches tend to generate areas with large triangles in flat parts of the mesh, which is something we wanted to avoid in dem2mesh. The gridding approach generates more evenly sized and distributed triangles. Good sized triangles are important in OpenDroneMap for generating good orthophotos during the texturing step.

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].