Library / SDK
mkazhdan/PoissonRecon avatar
mkazhdan/PoissonRecon

PoissonRecon: Adaptive Solvers for Surface Reconstruction

Poisson Surface Reconstruction

1,867 stars469 forksCMIT

At a glance

What is it?
PoissonRecon is a C++ finite-elements code base for Poisson-based reconstruction and related constraint problems, with separate tools for interpolation, screen-space reconstruction, trimming, normal scaling, and image stitching. Its mathematical scope exceeds the repository name, while its sparse usage documentation makes source inspection part of adoption.
Who is it for?
PoissonRecon suits researchers who need control over adaptive finite-element degree, dimension, derivatives, or constraints, or who intend to adapt its reconstruction components. It is a weak choice for users requiring a documented installer, stable command-line contract, or packaged API.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 177 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • mkazhdan/PoissonRecon1,867 ★ · +0
Star history
Repository2026-10-162026-10-23
mkazhdan/PoissonRecon1.9k1.9k

0 Stars in the last 7 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

PoissonRecon’s Expansion Beyond Surface Meshing

PoissonRecon began as a Poisson Surface Reconstruction code base, but the README now presents Version 18.76 as “Adaptive Multigrid Solvers.” That distinction matters. The repository is not limited to producing a triangle mesh from oriented samples. It describes a more general finite-elements framework supporting spaces in arbitrary dimensions, discretization with finite elements of arbitrary degree, arbitrary function derivatives, and constraints specified either point-wise or through integration.

This scope targets researchers who need control over the numerical formulation. A fixed reconstruction utility normally exposes a prescribed algorithm and a smaller set of controls. PoissonRecon instead appears closer to a collection of research components that can be adapted at source level. The repository includes `PoissonRecon`, `SSDRecon`, `PointInterpolant`, `SurfaceTrimmer`, `EDTInHeat`, `ImageStitching`, `ScaleNormals`, `PointsToDisks`, `ChunkPLY`, and `AdaptiveTreeVisualization` as separate build targets.

The project is therefore relevant to computational geometry, numerical methods, and scientific visualization work. It may fit someone experimenting with reconstruction beyond fixed two-dimensional or fixed-order formulations. It is less suitable for an application developer who expects a stable mesh-processing library, a current package-manager installation, and a clearly documented data model. The repository identity alone should not determine adoption; the required solver behavior and integration effort are more informative.

Adaptive Finite-Elements Formulation and Constraints

The README identifies adaptive multigrid solvers as the central subject. An adaptive multigrid implementation ordinarily solves across multiple discretization levels, using coarse levels to address larger-scale error and finer levels to represent local detail. The README does not describe the exact hierarchy, residual calculations, prolongation operators, or convergence controls, so those implementation details require examination of `Src/`. It would be inaccurate to infer them from the project name alone.

The documented abstraction supports more than scalar surface reconstruction. Spaces can exist in arbitrary dimensions, finite-element degree is not fixed by the README, and derivatives can participate in the system. Constraints may be imposed at individual points or in integrated form. Those choices matter for formulating a differential problem as a finite linear system, particularly when geometry, field derivatives, or compatibility conditions must be represented numerically.

For Poisson surface reconstruction, such a framework places surface estimation within a broader numerical solver rather than presenting only a point-cloud-to-mesh application. The related `SSDRecon` target indicates a separate screen-space reconstruction path, but the README does not explain its solver formulation or interface. `PointInterpolant` addresses a different objective from surface generation. In practice, the likely integration route is to understand the source classes, compile the required target, and then supply input through the executable or example code. The README does not publish enough interface detail to describe a complete numerical data flow.

Linux and Visual Studio Build Targets

The repository includes an `AdaptiveSolvers.sln` file and several Visual C++ project files, so the checked-in structure directly supports Visual Studio-oriented builds. It also includes a `Makefile` for Linux targets. The Makefile defines `PR_TARGET=PoissonRecon`, assigns `PoissonRecon.cpp` as its source, sets `SRC = Src/`, and names `Bin/Linux/` as the output directory.

The visible compiler configuration defaults to `gcc` and `g++`. For that selection, the Makefile adds `-fopenmp`, `-std=c++17`, `-pthread`, and related linker flags. It also contains a conditional `gcc-11` path using `gcc-11` and `g++-11`. Release configuration includes optimization and compiler flags, but the Makefile does not show the complete final command or all dependencies for every target.

The README links a Win64 executable archive and Version 18.76 source archives, while the repository itself is the primary source-code location named in the README. However, the README does not provide a complete installation command or a first reconstruction invocation. Presenting a shell command would imply that the exact invocation had been documented when it had not. A new user should instead use the checked-in `Makefile` and `AdaptiveSolvers.sln`, inspect the target dependencies, and confirm the expected binary location in `Bin/Linux/` before proceeding.

First Use Requires Undocumented Interface Checks

A first real use cannot be responsibly presented from the README because it does not document required arguments, accepted mesh formats, output filenames, or numerical tolerances. It also gives no sample dataset that would let a reader predict output. Those omissions make source inspection unavoidable.

The repository’s project and source filenames provide a practical starting point. `Reconstruction.example.cpp` appears to be the example program associated with the `ReconExample` target. The `Reconstruction.example.vcxproj` project defines its Visual Studio build context. For the principal reconstruction utility, `PoissonRecon.cpp` is the corresponding source for the `PoissonRecon` target. Reading these files should reveal command-line parsing and input handling before compilation results are interpreted.

The broader target list suggests a possible division of labor. `PointsToDisks` and `ScaleNormals` may prepare geometric samples, `PoissonRecon` or `SSDRecon` may perform reconstruction, and `SurfaceTrimmer` may process a resulting surface. Those names alone do not establish file compatibility or a supported workflow. Each target may require different coordinate conventions, headers, attributes, or mesh topology.

For a first evaluation, an engineer should therefore verify one concrete pipeline rather than assume all utilities compose automatically. Start with the argument parser in the chosen `.cpp` file, document the accepted input, identify the output it writes, and check whether preprocessing utilities emit that exact structure. The README’s linked papers explain the research background, but they do not substitute for the executable interface documented in source.

Poisson Finite Elements Versus Screen-Space Reconstruction

The repository links research on Poisson surface reconstruction, screen-space differentiable reconstruction, heat methods, signed distance fields, and geometric reconstruction. These topics overlap, but they solve different classes of problems. PoissonRecon’s documented core is an adaptive finite-elements formulation with configurable dimension, degree, derivatives, and constraints. A screen-space differentiable method instead derives surface geometry from image observations through a rendering-based objective.

`SSDRecon` is a separate target in the repository, and its name indicates a screen-space reconstruction path. Its presence is useful when comparing approaches, but the README does not document how it works or whether it shares data structures with `PoissonRecon`. The actual distinction must be established from `SSDRecon.cpp` and its project dependencies.

The finite-elements route is more relevant when inputs are geometric samples and the application requires control over the discretization. The screen-space route is conceptually closer to reconstruction from silhouettes or rendered observations. PoissonRecon should not be described as a drop-in substitute for image-based methods solely because both can produce a surface. The acquisition model, mathematical objective, expected inputs, and failure behavior differ.

Sparse Documentation, Version History, and MIT Upgrade Cost

The repository is not archived, and its last push was on 2026-04-29. That is a recent source-change signal, but it does not establish a stable release cadence. The recorded releases are also much older: `V8.0 (Version 13.0)` is dated 2015-10-12, and `V7.0 (Version 7.0)` is dated 2015-07-22. Meanwhile, the README calls the code Version 18.76. The README does not explain why release labels diverge so sharply from the displayed solver version.

This history increases the need for exact version tracking. An adopter should pin a commit and retain the corresponding `LICENSE`, Makefile settings, and source layout. Upgrading may alter compiler requirements, command-line behavior, numerical defaults, or library interfaces without a release note explaining compatibility. The absence of a formal migration guide in the README means that source review is part of upgrade cost.

The repository uses the MIT license. Its text permits modification, distribution, and sublicensing under stated conditions, including preservation of the license and copyright notice. Vendored directories such as `JPEG/`, `PNG/`, and `ZLIB/` may carry their own files, so an adopter should inspect any notices included with distributed dependencies. The MIT designation does not mean that every binary archive or third-party subtree has identical provenance. Concretely, start by comparing `LICENSE` and dependency notices at the exact commit selected for adoption.

Editorial conclusion

PoissonRecon suits researchers who need control over adaptive finite-element degree, dimension, derivatives, or constraints, or who intend to adapt its reconstruction components. It is a weak choice for users requiring a documented installer, stable command-line contract, or packaged API. Verify the current C++17 build, executable arguments, mesh formats, numerical defaults, and licensing notices before embedding it. For an initial adoption decision, source-level build compatibility on the intended platform is the first concrete gate.

Frequently asked questions

How do I build PoissonRecon on Linux?

The checked-in `Makefile` defines `PoissonRecon` as a target, uses `Bin/Linux/` as its output directory, and defaults to GCC with C++17. The README does not include a complete build or execution command, so the remaining target definition must be read in the Makefile.

Is PoissonRecon only a surface reconstruction application?

No. The README says the project evolved into adaptive finite-elements systems supporting arbitrary dimensions, finite-element degrees, function derivatives, and point-wise or integrated constraints.

Does PoissonRecon document a complete command-line reconstruction example?

No. The README links executables and source archives but does not document reconstruction arguments, sample input, output formats, or a complete first-use command.

Official sources

  1. Issues
  2. License: MIT
  3. mkazhdan/PoissonRecon on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/mkazhdan-poissonrecon.svg)](https://hysenlabs.com/projects/mkazhdan-poissonrecon)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/mkazhdan-poissonrecon.svg)](https://hysenlabs.com/projects/mkazhdan-poissonrecon)

Was this useful?