- fixed bug in APPS implicit function
- changed APSS knn from 12 to 24 to be more robust to wrong normals
TODO: remove small connected components after APSS reconstruction.
Each of these parameters is editable in the Options dialog.
The goal is to have a sensible default knn for each algorithm:
- average spacing: 7 (= 1 ring) (unchanged)
- APSS : 12 (2 rings) (as suggested by G. Guennebaud)
- MST : 12 (2 rings) (more robust as 1 ring)
- Estimate normals wrt PCA : 0.3% of points (optimized for the Chinese Dragon scan)
- Estimate normals wrt Jet Fitting : 0.05% of points (optimized for the Chinese Dragon scan)
- Smooth Jet Fitting : 0.05% of points (to be tested)
- Outliers removal : 0.05% of points (to be tested)
* These knn parameters have the same default value in examples and tests.
* Note: these settings make Estimate normals wrt PCA, Estimate normals wrt Jet Fitting and Smooth Jet Fitting O(N^2).
radial_normals_orientation_3() does a radial orientation of the normals of a point set. Normals are oriented towards exterior of the point set.
This very simple and very fast method is intended to convex objects.
- use std::vector when buffer can be reserved in advance and cannot be too large,
- else use std::deque
I expect gains in terms of speed and memory fragmentation.
Examples:
- MFC demo can now load bimba_range_images.off (range images of the Bimba con Nastrino scan, 3.8 millions points).
- Poisson reconstruction is 10 seconds shorter on Chinese_dragon_Minolta_point_set_225kpts_with_jet_normals.xyz.
Fixed potential crash (if application is launched twice) by calling tempnam() to name TAUCS out-of-core files.
Windows specific: fixed crash with TAUCS on large linear systems:
- increased stack size
- added Win32_exception_handler protection to catch stack overflows
- Added Peak_memory_sizer::count_free_memory_blocks() to track memory fragmentation.
- Added back call to Poisson_implicit_function::constrain_one_vertex_on_convex_hull().
Note that Vector_3 is the concept of a normal vector (always) oriented.
- Point_with_normal_3 is now templated by the normal type.
Types currently available are:
-> Vector_3 (the default)
-> Orientable_normal_3 (used by Point_set_3 for point cloud processing)
-> Lightweight_vector_3 = a normal whose vector is allocated only if not zero (used by Poisson 3D triangulation).
We have now 2 corresponding concepts:
-> PointWithNormal_3 = a point + a normal (always) oriented.
-> PointWithOrientableNormal_3 = a point + a normal oriented or not.
The purpose is to save memory space and to better document the requirements of algorithms processing normals.
- Added warnings about remove_outliers_wrt_avg_knn_sq_distance_3(), remove_outliers_wrt_camera_cone_angle_3(), merge_epsilon_nearest_points_3(), random_simplification_points_3() and smooth_jet_fitting_3() which are not compatible with containers sorted wrt points position.
Enforced CGAL_NDEBUG rule:
- code under include/CGAL/ and src/ must not use NDEBUG and assert(), but CGAL_NDEBUG and CGAL assertion macros.
- code under demo/, examples/ and test/ must use NDEBUG and assert().
Added _HAS_ITERATOR_DEBUGGING=0 to .vcproj makefiles to speed up VC++ 2005 debugger.
Removed CGAL_SURFACE_RECONSTRUCTION_CHECK_EXPENSIVE from .vcproj makefiles (unused).
Integrated point set simplification by clustering.
Implemented random point set simplification.
Implemented variant mutating the point set for point set simplification and outliers removal algorithms.
MFC demo:
Point set simplification and outliers removal algorithms select now the points to delete, instead of deleting them directly. This gives a chance to adjust the parameters before deletion.
2 new menu items related: "Delete selection" and "Reset selection".
Normals orientation algorithms select now flipped normals.
Fixed bug in merge_epsilon_nearest_points_3().