C++ library for processing and visualizing polygon surface meshes; Visualization Module
This project is a build2 package repository that provides access to pmp-library
, a modern C++ open-source library for processing and visualizing polygon surface meshes.
Usage
Make sure to add the stable section of the cppget.org
repository to your project's repositories.manifest
to be able to fetch this package.
:
role: prerequisite
location: https://pkg.cppget.org/1/stable
# trust: ...
If the stable section of cppget.org
is not an option then add this Git repository itself instead as a prerequisite.
Depends (6)
|
libpmp == 3.0.0 |
|
stb_image ^2.28.0 |
|
stb_image_write ^1.16.0 |
|
glew ^2.2.0 |
|
libimgui-render-opengl3 ^1.88.0 |
|
libimgui-platform-glfw ^1.88.0 |
Builds
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-clang_16-O3 |
timestamp |
2024-05-19 10:42:21 UTC (05:04:41 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-clang_16_libc++ |
timestamp |
2024-05-19 10:42:19 UTC (05:04:44 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-clang_16_libc++-O3 |
timestamp |
2024-05-19 10:41:48 UTC (05:05:14 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-clang_16 |
timestamp |
2024-05-19 10:41:16 UTC (05:05:46 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-clang_16.0-O3 |
timestamp |
2024-05-19 10:32:01 UTC (05:15:01 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-clang_16.0_libc++-O3 |
timestamp |
2024-05-19 10:31:59 UTC (05:15:03 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-clang_16.0 |
timestamp |
2024-05-19 10:31:46 UTC (05:15:16 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-clang_16.0_libc++ |
timestamp |
2024-05-19 10:31:24 UTC (05:15:38 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-microsoft-win32-msvc14.3 |
tgt config |
windows_10-msvc_17.6-O2 |
timestamp |
2024-05-19 10:23:32 UTC (05:23:30 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-microsoft-win32-msvc14.3 |
tgt config |
windows_10-msvc_17.6 |
timestamp |
2024-05-19 10:23:27 UTC (05:23:35 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-microsoft-win32-msvc14.3 |
tgt config |
windows_10-msvc_17.6-static_O2 |
timestamp |
2024-05-19 10:23:00 UTC (05:24:02 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-microsoft-win32-msvc14.3 |
tgt config |
windows_10-clang_16.0_llvm_msvc_17.6-O2 |
timestamp |
2024-05-19 10:22:27 UTC (05:24:35 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-microsoft-win32-msvc14.3 |
tgt config |
windows_10-clang_16.0_llvm_msvc_17.6-static_O2 |
timestamp |
2024-05-19 10:22:22 UTC (05:24:40 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-microsoft-win32-msvc14.3 |
tgt config |
windows_10-clang_15.0_msvc_msvc_17.6 |
timestamp |
2024-05-19 10:22:13 UTC (05:24:49 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-microsoft-win32-msvc14.3 |
tgt config |
windows_10-msvc_17.5 |
timestamp |
2024-05-19 10:22:01 UTC (05:25:01 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-gcc_12-bindist |
timestamp |
2024-05-19 10:22:00 UTC (05:25:02 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-gcc_13.1-ndebug_O3 |
timestamp |
2024-05-19 10:21:33 UTC (05:25:29 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-gcc_13.1-O3 |
timestamp |
2024-05-19 10:21:21 UTC (05:25:41 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-gcc_13.1 |
timestamp |
2024-05-19 10:21:17 UTC (05:25:45 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-clang_15.0 |
timestamp |
2024-05-19 10:21:01 UTC (05:26:01 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-microsoft-win32-msvc14.3 |
tgt config |
windows_10-clang_16.0_llvm_msvc_17.6 |
timestamp |
2024-05-19 10:20:49 UTC (05:26:13 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-clang_15.0_libc++ |
timestamp |
2024-05-19 10:20:46 UTC (05:26:16 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_11-gcc_12.1 |
timestamp |
2024-05-19 10:20:28 UTC (05:26:34 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-clang_15_libc++ |
timestamp |
2024-05-19 10:18:09 UTC (05:28:53 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-clang_15 |
timestamp |
2024-05-19 10:17:46 UTC (05:29:16 hours ago) |
result |
success | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-gcc_13-O3 |
timestamp |
2024-05-19 10:17:21 UTC (05:29:41 hours ago) |
result |
warning (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-gcc_13-ndebug_O3 |
timestamp |
2024-05-19 10:16:51 UTC (05:30:11 hours ago) |
result |
warning (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-gcc_13 |
timestamp |
2024-05-19 10:16:50 UTC (05:30:12 hours ago) |
result |
warning (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-clang_16_libc++-static_O3 |
timestamp |
2024-05-19 10:15:58 UTC (05:31:04 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-clang_16-static_O3 |
timestamp |
2024-05-19 10:15:28 UTC (05:31:34 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-apple-darwin22.5.0 |
tgt config |
macos_13-clang_14.0 |
timestamp |
2024-05-19 10:12:29 UTC (05:34:33 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-apple-darwin22.5.0 |
tgt config |
macos_13-gcc_13_homebrew-static_O3 |
timestamp |
2024-05-19 10:11:16 UTC (05:35:46 hours ago) |
result |
error (configure) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-apple-darwin22.5.0 |
tgt config |
macos_13-gcc_13_homebrew-O3 |
timestamp |
2024-05-19 10:10:43 UTC (05:36:19 hours ago) |
result |
error (configure) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-apple-darwin22.5.0 |
tgt config |
macos_13-clang_15.0-static_O3 |
timestamp |
2024-05-19 10:10:35 UTC (05:36:27 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_12-gcc_13-static_O3 |
timestamp |
2024-05-19 10:10:09 UTC (05:36:53 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-apple-darwin22.5.0 |
tgt config |
macos_13-clang_15.0-O3 |
timestamp |
2024-05-19 10:09:58 UTC (05:37:04 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-apple-darwin22.5.0 |
tgt config |
macos_13-clang_15.0 |
timestamp |
2024-05-19 10:09:19 UTC (05:37:43 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
aarch64-linux-gnu |
tgt config |
linux_debian_11-gcc_12 |
timestamp |
2024-05-19 10:08:01 UTC (05:39:01 hours ago) |
result |
warning (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-freebsd13.2 |
tgt config |
freebsd_13-clang_14.0-O3 |
timestamp |
2024-05-19 10:05:02 UTC (05:42:00 hours ago) |
result |
error (update) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-clang_16.0_libc++-static_O3 |
timestamp |
2024-05-19 10:04:54 UTC (05:42:08 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-freebsd13.2 |
tgt config |
freebsd_13-clang_14.0 |
timestamp |
2024-05-19 10:04:46 UTC (05:42:16 hours ago) |
result |
error (update) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-freebsd13.2 |
tgt config |
freebsd_13-clang_14.0-static_O3 |
timestamp |
2024-05-19 10:04:43 UTC (05:42:19 hours ago) |
result |
error (update) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-w64-mingw32 |
tgt config |
windows_10-gcc_12.2_mingw_w64 |
timestamp |
2024-05-19 10:04:35 UTC (05:42:27 hours ago) |
result |
error (update) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-w64-mingw32 |
tgt config |
windows_10-gcc_12.2_mingw_w64-O2 |
timestamp |
2024-05-19 10:04:34 UTC (05:42:28 hours ago) |
result |
error (update) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-w64-mingw32 |
tgt config |
windows_10-gcc_12.2_mingw_w64-static_O2 |
timestamp |
2024-05-19 10:04:29 UTC (05:42:33 hours ago) |
result |
error (update) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-clang_16.0-static_O3 |
timestamp |
2024-05-19 10:04:24 UTC (05:42:38 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_fedora_38-gcc_13-bindist |
timestamp |
2024-05-19 10:04:22 UTC (05:42:40 hours ago) |
result |
error (update) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-apple-darwin22.5.0 |
tgt config |
macos_13-gcc_13_homebrew |
timestamp |
2024-05-19 10:04:07 UTC (05:42:55 hours ago) |
result |
error (configure) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_debian_12-gcc_13.1-static_O3 |
timestamp |
2024-05-19 10:03:15 UTC (05:43:47 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-linux-gnu |
tgt config |
linux_fedora_37-gcc_12.2-bindist |
timestamp |
2024-05-19 10:03:09 UTC (05:43:53 hours ago) |
result |
error (update) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-freebsd12.4 |
tgt config |
freebsd_12-clang_13.0 |
timestamp |
2024-05-19 10:03:03 UTC (05:43:59 hours ago) |
result |
error (update) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-apple-darwin22.5.0 |
tgt config |
macos_13-clang_14.0-static_O3 |
timestamp |
2024-05-19 10:02:42 UTC (05:44:20 hours ago) |
result |
error (test-installed) | log | rebuild |
toolchain |
public-0.16.0 |
target |
x86_64-apple-darwin22.5.0 |
tgt config |
macos_13-clang_14.0-O3 |
timestamp |
2024-05-19 10:01:50 UTC (05:45:12 hours ago) |
result |
error (test-installed) | log | rebuild |
Changes
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog.
This project aims to adhere to Semantic Versioning.
Unreleased
Added
- Add
mesh_to_matrices()
and matrices_to_mesh()
functions to convert to and from Eigen matrices.
- Add support to write binary STL files.
- Added
geodesics_heat()
for computing geodesics (based on the heat method) on general polygon meshes.
- Generalize curvature computation in
curvature()
to polygon meshes.
- Add
mean_edge_length(SurfaceMesh)
.
- Add
min_face_area()
to compute minimum face area of all faces.
- Add
edge_area()
to compute the area associated to an edge.
- Added circulator enumerating edges around vertex:
SurfaceMesh::edges(Vertex)
.
- Functions
laplace_matrix()
, mass_matrix()
, gradient_matrix()
, and divergence_matrix()
that compute matrix representations of those discrete differential operators. Works for both triangle meshes and general polygon meshes, based on the paper Bunge et al, "Polygon Laplacian made simple", Eurographics 2020.
- Smoothing, parameterization, and fairing are now implemented based on sparse Laplacian matrices, which generalizes to general polygon meshes.
- Add
PMP_STRICT_COMPILATION
CMake option to control treating warnings as errors. Default: On.
- Add function
flip_faces()
to reverse face orientation in a mesh (#123)
- Meshes and textures can be loaded by dropping the files onto the window, both in normal GLFW windows and browser windows (using emscripten). Thanks to Stephan Wenninger!
Changed
- Get rid of git submodules, vendor all third-party libraries for simplicity. See also #167.
- The function
voronoi_area()
now computes the barycentric Voronoi area, because this version generalizes better to polygon meshes. The mixed Voronoi area (for triangle meshes) is now computed by voronoi_area_mixed()
.
- Consistently use lowercase file names
- Rename
Timer
to StopWatch
SurfaceMeshGL
renamed to Renderer
and de-coupled from SurfaceMesh
- Replace
triangle_area(Face)
by face_area(Face)
, which now supports general polygons. surface_area(SurfaceMesh)
now also works for general polygon meshes.
- Remove max angle triangulation objective leading to fold-overs.
- Breaking change: Re-design algorithms API to use a simple function interface.
- Breaking change: Make helper classes
Heap
, Quadric
, NormalCone
, TriangleKdTree
private.
- Remove
vertex_curvature()
, VertexCurvature
, and angle_sum()
.
- Support CMake's
BUILD_SHARED_LIBS
option to control building shared libraries
- Fix
Mat3::inverse()
to use fabs()
- Remove
Matrix::allFinite()
.
- Make
SurfaceMesh::bounds()
a free function pmp::bounds()
.
- Make
SurfaceMesh::edge_length()
a free function pmp::edge_length()
.
- Remove object properties.
- Remove support for PLY format, see 1ec912b for why.
- Remove support for XYZ and AGI point set formats.
- Move
SurfaceMesh::read()
and SurfaceMesh::write()
to free functions pmp::read()
and pmp::write()
.
- Move IO functionality into its own module
- Upgrade C++ standard to C++17
- Remove
PMP_ASSERT()
macro.
- Remove
get_*_property_type()
functions from SurfaceMesh
- Move example apps from
src/apps
to examples
. Remove PMP_BUILD_APPS
CMake option.
- Rename
Simplification
to Decimation
- Rename
Factory
to Shapes
- Drop
Surface
prefix from algorithms
- Update glew to version 2.2.0.
- Update stb_image to version 2.28 and stb_image_write to version 1.16.
- Upgrade ImGui to version 1.89.8
[2.0.1] 2022-08-26
Fixed
- Fix shared library version
- Fix compilation with PMP_SCALAR_TYPE=64
- Use correct C++ standard (C++14) in public target compile options
- Fix crash in smoothing demo app
Changed
- Upgrade ImGui to version 1.88
[2.0.0] 2022-08-14
Added
- Add support for texture seams in
SurfaceSimplification
, thanks to Timo Menzel.
- Add quad/tri subdivision, thanks to Hendrik Meyer.
- Add
SurfaceFactory
class to generate basic shapes. Thanks to u/lycium on Reddit for suggesting a simplification of the icosahedron()
function.
- Add support to render colors per face
- Add support to render colors per vertex, thanks to Xiewei Zhong
- Add function to compute volume of a mesh, thanks to Xiewei Zhong
- Add post-increment iterators and make low level functions to add elements public. This makes it possible to use CGAL algorithms on a PMP
SurfaceMesh
. Thanks to Andreas Fabri for contributing the changes!
- Add PMP_INSTALL option to CMake.
- Add PMP_BUILD_VIS CMake option to enable / disable building the pmp_vis library and its dependencies.
Changed
- Bump C++ standard to C++14
TriangleKdTree
: no longer record number of tests, remove NearestNeighbor::tests
member
- Remove
SurfaceSubdivision::sqrt3()
- Remove
PMP_SHOW
macro
- Remove
pmp::Version
class and Version.h
- Build shared libraries on all platforms by default (except pmp_vis , see #87)
- Bump CMake minimum required version to 3.16.3
- Make
SurfaceTriangulation::Objective
a scoped enum
- Remove
SurfaceMesh::triangulate()
functions to avoid redundancy with SurfaceTriangulation
- Improve API by reporting errors using exceptions (see #16).
SurfaceFeatures
now returns the number of boundary / feature edges detected.
- Update Eigen to version 3.4.0
- Update GoogleTest to version 1.12.1
- Update stb_image to version 2.26 and stb_image_writer to version 1.15.
- Update GLFW to version 3.3.8
- Change CMake policy CMP0072 to "NEW" behavior preferring GLVND