MIT License

项目介绍

hhoppe/Mesh-processing-library 是一个托管在 GitHub 上的开源项目,主要使用 C++ 编写,采用 MIT License 许可证,目前获得 980 个 Star、139 次 Fork。

仓库全名
hhoppe/Mesh-processing-library
开源许可证
MIT License
Star 数
980
Fork 数
139

README 摘要

Mesh Processing Library This package contains C++ libraries and programs demonstrating mesh processing research published from 1992 to 2003, mostly in ACM SIGGRAPH: surface reconstruction from unorganized points, mesh optimization, subdivision surface fitting, mesh simplification, progressive meshes and geomorphs, view-dependent mesh refinement, smooth terrain level-of-detail, progressive simplicial complexes,…

完整内容见 GitHub 原始 README 或本页 。

常见问题

Mesh-processing-library 用什么语言开发?

主要使用 C++ 编写,采用 MIT License 许可证,目前有 980 个 Star。

Mesh-processing-library 可以免费商用吗?

仓库采用 MIT License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 Mesh-processing-library 的源码?

可以直接克隆仓库:git clone https://github.com/hhoppe/Mesh-processing-library.git,默认分支为 main;安装与运行步骤见仓库 README。

Mesh-processing-library 最近还在维护吗?

仓库最近一次更新为 1 天前,当前没有未关闭的 Issue;Star 数为 980,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

C++ libraries and programs demonstrating mesh processing research published in ACM SIGGRAPH (1992-2003)

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
1291
价值分
633
活跃状态
活跃

语言占比

Batchfile
C
C++
Dockerfile
GLSL
Makefile
Perl
Python
Shell

README

Mesh Processing Library

CI Demos Sanitizers C++23 Platforms License: MIT

This package contains C++ libraries and programs demonstrating mesh processing research published from 1992 to 2003, mostly in ACM SIGGRAPH: surface reconstruction from unorganized points, mesh optimization, subdivision surface fitting, mesh simplification, progressive meshes and geomorphs, view-dependent mesh refinement, smooth terrain level-of-detail, progressive simplicial complexes, optimized mesh traversal, and spherical parameterization. The source code has been updated to modern C++ style and for cross-platform use.

Renderings of results: reconstruction of a mannequin head from points, a bunny parameterized on a sphere, a drum set approximated using simplices of mixed dimension, an airplane at two levels of detail, and a terrain shown with its mesh on the left half.

Results rendered by the viewer G3dOGL. Top: a set of points, an initial mesh reconstruction, and an optimized subdivision surface; a spherical parameterization of a bunny; a progressive simplicial complex (showing ~2,500 mixed-dim. simplices). Bottom: a progressive mesh at coarse (800 faces) and full resolution; view-dependent refinement of a terrain, showing its mesh on the left half.

The programs page shows these and other results together with the commands that create them.

Publications and associated programs/demos

Hugues Hoppe, Tony DeRose, Tom Duchamp, John McDonald, Werner Stuetzle.
ACM SIGGRAPH 1992 Proceedings. (2023 Seminal Paper.)
Signed-distance field estimated from a set of unoriented noisy points.
Programs: Recon
Demos: {create,view}_reconstruction_*
Hugues Hoppe, Tony DeRose, Tom Duchamp, John McDonald, Werner Stuetzle.
ACM SIGGRAPH 1993 Proceedings.
Exploration of the space of triangle meshes to balance model fidelity and conciseness.
Programs: Meshfit
Demos: {create,view}_reconstruction_*, {create,view}_simplified_using_meshopt
Hugues Hoppe, Tony DeRose, Tom Duchamp, Michael Halstead, Hubert Jin, John McDonald, Jean Schweitzer, Werner Stuetzle.
ACM SIGGRAPH 1994 Proceedings.
Subdivision surfaces with sharp features, and their automatic creation by data fitting.
Programs: Subdivfit
Demos: {create,view}_reconstruction_mannequin
Hugues Hoppe.
ACM SIGGRAPH 1996 Proceedings. (2023 Seminal Paper.)
Efficient, lossless, continuous-resolution representation of surface triangulations.
Demos: {create,view}_geomorphs
Hugues Hoppe.
Computers & Graphics, 22(1), 1998.
Progressive mesh data structures compatible with GPU vertex buffers.
Programs: FilterPM, G3dOGL
Demos: {create,view}_progressive_mesh_club, determine_approximation_error
Hugues Hoppe.
ACM SIGGRAPH 1997 Proceedings.
Lossless multiresolution structure for incremental selective refinement/coarsening.
Programs: FilterPM, G3dOGL
Demos: {create,view}_selectively_refined_office
Hugues Hoppe.
IEEE Visualization 1998 Conference. (2023 Test of Time Award.)
Visually smooth adaptation of mesh refinement using cascaded temporal geomorphs.
Programs: StitchPM, G3dOGL
Demos: {create,view}_terrain_hierarchy, {create,view}_selectively_refined_terrain, view_gcanyon_*
Jovan Popovic, Hugues Hoppe.
ACM SIGGRAPH 1997 Proceedings.
Progressive encoding of both topology and geometry.
Programs: G3dOGL
Demos: view_psc_drumset
Hugues Hoppe.
ACM SIGGRAPH 1999 Proceedings.
Face reordering for efficient GPU vertex cache, advocating a FIFO policy.
Programs: MeshReorder
Demos: {create,view}_vertex_cached_bunny
Pedro Sander, Xianfeng Gu, Steven Gortler, Hugues Hoppe, John Snyder.
ACM SIGGRAPH 2000 Proceedings.
Efficient computation of mesh silhouette, used to clip coarse geometry.
Programs: MeshSimplify
Demos: {create,view}_progressive_hulls_*
Emil Praun, Hugues Hoppe.
ACM SIGGRAPH 2003 Proceedings.
Robust mapping of a surface onto a sphere, allowing 2D-grid resampling.
Demos: {create,view}_spherical_param_bunny

Building

The code compiles with recent C++23 compilers (gcc, clang, or Microsoft Visual C++) on most platforms (Windows, Linux, WSL, macOS), or within a Docker container. The steps are summarized below; see make/README.md for the requirements, the build configurations and options, the unit tests, and more on the demos.

  • On Linux, WSL, or macOS, using GNU make:

    make -j        # Build all programs (into bin/unix) and run the unit tests.
    make -j demos  # Also create, check, and view the demo results.
    

    Prerequisites:

    • Ubuntu: sudo apt install make clang libgl-dev libx11-dev libjpeg-dev libpng-dev zlib1g-dev ffmpeg
    • macOS: brew install --cask xquartz && brew install ffmpeg
  • On Windows, open mesh_processing.sln in Microsoft Visual Studio and build the solution (typically as ReleaseMD - x64, into bin/msbuild), then create and view the demo results:

    demos\all_demos_create_results.bat
    demos\all_demos_view_results.bat
    

    The make commands also work on Windows, in a Cygwin or MSYS2 shell, with a choice of four configurations.

  • With Docker, on any platform:

    docker build -f make/Dockerfile -t mesh-processing .  # Build programs and run the unit tests.
    docker run -it --rm mesh-processing                   # Start a shell with programs in the PATH.
    

Pressing the Esc key closes any open program window. The demo scripts are in demos.

Programs

The programs read from stdin (or from files) and write to stdout, so that they combine into pipelines. For example, the command

FilterPM demos/data/standingblob.pm -info -nfaces 1000 -outmesh |
  Filtermesh -info -signeddistcontour 60 -genus |
  G3dOGL -key DmDe

extracts a mesh with 1000 faces from a progressive mesh, remeshes it as the zero isocontour of its signed-distance function on a 603 grid, reports the genus of the new mesh, and shows it in an interactive viewer.

Program Purpose
Recon Reconstruct a triangle mesh from unorganized 3D points (or a curve from 2D points).
Meshfit Optimize the connectivity and geometry of a mesh to fit a set of points.
Polyfit Optimize a polyline to fit a set of 2D points.
Subdivfit Fit a piecewise smooth subdivision surface to a set of points.
MeshDistance Measure the differences (in geometry, color, and normals) between two meshes.
MeshSimplify Simplify a mesh using a sequence of edge collapses, and record them.
Filterprog Encode a base mesh and its recorded edge collapses as a progressive mesh.
FilterPM Process a progressive mesh (*.pm), e.g., to create level-of-detail meshes and geomorphs.
StitchPM Stitch the progressive meshes of adjacent terrain tiles into one.
MinCycles Remove topological noise from a mesh by pinching off its smallest nonseparating cycles.
MeshReorder Reorder the faces (and vertices) of a mesh for efficient GPU vertex caching.
SphereParam Parameterize a mesh onto the sphere while minimizing stretch.
SphereSample Resample a spherically parameterized mesh, to create remeshes and texture images.
Filtermesh Process a mesh (*.m).
Filterimage Process an image, or assemble images into a grid.
Filtervideo Process a video, or assemble videos into a grid.
Filtera3d Process a geometry stream of polygons, polylines, and points (*.a3d).
Filterframe Process a stream of coordinate frames (*.frame).
G3dOGL Show meshes, progressive meshes, and geometry streams interactively; save images and videos.
G3dVec Show hidden-line-removed wireframe renderings; save vector figures as SVG or PostScript.
VideoViewer Show images and videos in an interactive viewer, with simple editing.

The directory bin also contains scripts: mesh_to_pm creates a progressive mesh from a mesh (using MeshSimplify and Filterprog), pm_simplify further simplifies the base mesh of a progressive mesh, and obj_to_mesh, ply_to_mesh, mesh_to_obj, and mesh_to_ply convert between the mesh format (*.m) and Wavefront *.obj or Stanford *.ply files.

All programs recognize the argument --help (or -?) to show their many options. See progs/README.md for a description of each program with example commands, and for the file formats.

Libraries

The library libHh contains the main reusable classes. All files include Hh.h which sets up a common cross-platform environment.

The libraries libHwWindows and libHwX implement a simple windowing interface (class Hw), under Win32 and the X Window System, respectively. Both implementations support OpenGL rendering.

Each program (e.g., Filtermesh) lives in its own subdirectory of progs and links against these libraries.

License

See LICENSE. This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

评论

暂无评论