- 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).
- 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.
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.
- The Surface_mesher distance parameter is set to 0.005 for APSS (0.002 for Poisson). Both values are editable in the Options dialog.
- Removed the "APPS projection error" field in the Options dialog (unused).
- APSS kd-tree contains Point_with_normal_3 points instead of Gyroviz_point_3 objects (faster copy constructor).
- The number of neighbors is 7 by default (was 10).
- APSS caches the previous nearest neighbor to speed up the isValid() method (test if close to surface).
- If point is far from surface, APSS computes only the nearest neighbor (used to compute twice K nearest neighbors).
Fixed bug in bounding sphere computation.
Deleted ApssOracle.
Renamed class APSS as APSS_implicit_function.
Code cleaning: store normals in Vector_3 objects instead of Point_3.