Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ball merge reconstruction #8048

Open
wants to merge 47 commits into
base: master
Choose a base branch
from

Conversation

amaldevp
Copy link

@amaldevp amaldevp commented Feb 26, 2024

Summary of Changes

Add a new package in CGAL implementing the reconstruction algorithm described in Amal Dev Parakkat, Stefan Ohrhallinger, Elmar Eisemann, and Pooran Memari. Ballmerge: High-quality fast surface reconstruction via voronoi balls. In Computer Graphics Forum, 2024.

Release Management

TODO

  • update changes
  • check branch size (@sloriot)

@sloriot sloriot force-pushed the Ball_merge_reconstruction branch from 4167c31 to bb04afc Compare February 27, 2024 06:15
@sloriot
Copy link
Member

sloriot commented Feb 27, 2024

/build:v1

Copy link

The documentation is built. It will be available, after a few minutes, here: https://cgal.github.io/8048/v1/Manual/index.html

{ return std::sqrt(typename Traits::Compute_squared_distance_3()(p1,p2)); }

//Function that computes the Intersection Ratio (IR) given two cell handles
// AF This could become a filtered predicate if robustness might be an issue
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amaldevp Robustness IS an issue. See the spheres.xyz data set I just pushed.


In practice, the threshold \f$ \eta = 200\f$ was observed to perform well and can be adjusted - Figure \cgalFigureRef{figBMSRetatuning} shows the effect of varying \f$ \eta \f$.
The main parameter used in BallMerge is the intersection ratio \f$ > \delta \f$. By definition, the \f$ > \delta \f$ ranges from 0 to 2 - with \f$ BallMerge(0) \f being empty and \f$ BallMerge(2) \f containing all the triangles of the Delaunay Triangulation. Experiments show that the \f$ > \delta \f$ value usually lies between 1.5 and 1.95 (with 1.8 or 1.85 giving the best results in most cases). Thanks to the nice property of this intersection ratio, it is quite easy to tune this parameter based on a simple rule: if the reconstructed surface has missing parts, the threshold should be lowered, or if the reconstructed surface has additional parts, the threshold should be increased.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess there is a dollar missing at the closing "\f". Also text inside mathmode should be \textrm{..}

@afabri
Copy link
Member

afabri commented Dec 2, 2024

@amaldevp did you have a look at the data set I had committed on May 2, 2024, where my commit comment was
Add a data set that fails on an assertion ? I must say that I do not remember what it was about, and if the problem is still open.

@afabri
Copy link
Member

afabri commented Dec 2, 2024

And did you make progress on what you called "filtering" to avoid several faces of sliver cells being selected by BallMerge?


\subsection secBMSRChoose Choosing between Global and Local Variants

The Global variant, by definition, results in a watertight surface (not always manifold) and, hence, is optimal for reconstructing closed surfaces. As the algorithm tries to close the surface, it can withstand missing data up to an extent and can handle little outliers and noise.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would lowercase the words "global" and "local". Also I do not really like BallMerge in camel case. What about emphasized, capitalized but with a space between the words? @MaelRL any opinion?
Also I do not see the need for BallMerge in mathmode.

@amaldevp
Copy link
Author

amaldevp commented Dec 2, 2024

And did you make progress on what you called "filtering" to avoid several faces of sliver cells being selected by BallMerge?

@sloriot suggested a solution (and we also discussed the example you provided), but, unfortunately, I am not able to recall it now. Maybe Sebastien might be remembering?

amaldevp and others added 3 commits December 2, 2024 16:53
…struction/Ball_merge_surface_reconstruction.txt

Co-authored-by: Andreas Fabri <[email protected]>
…struction/Ball_merge_surface_reconstruction.txt

Co-authored-by: Andreas Fabri <[email protected]>
…nstruction/ball_merge_reconstruction_tests.cpp

Co-authored-by: Andreas Fabri <[email protected]>
@sloriot

This comment was marked as outdated.

This comment was marked as outdated.

@sloriot

This comment was marked as outdated.

Copy link

The documentation is built. It will be available, after a few minutes, here: https://cgal.github.io/8048/v2/Manual/index.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants