* Default Surface Mesher parameters for Poisson are now
- triangle radius = 100 * point set average spacing and
- approximation distance = 0.25 * point set average spacing
(instead of 0.1 * point set radius and 0.002 * point set radius).
As Poisson is a function piecewise linear in the tetrahedra of the underlying triangulation, the goal of this change is to ensure that the Surface Mesher creates a mesh with triangles larger than the underlying tetrahedra.
* Default Surface Mesher parameters for APSS are now the same as Poisson to ease comparison among both methods, and simplify code maintenance
(instead of APSS distance = 1.5 * Poisson distance to get reconstructed surfaces of roughly the same number of faces).
* Fixed size of splats for nicer screenshots:
- knn parameter allows now to change the size of splats
- fixed offset by 1 in use of knn
- knn default changed from 18 (medium) to 6 (small)
- knn min changed from 6 (small) to 1 (tiny)
* Compute reconstruction error after APSS and Poisson (in fact the distance from input points to reconstructed mesh).
r50904 | lsaboret:
Fixed compilation error in cgal_test_with_cmake introduced in r50885
r50901 | lrineau:
-#include <Qt/qglobal.h>
+#include <QtCore/qglobal.h>
r50885 | lsaboret:
* Fixed compilation errors on Windows/VC++ introduced in r50866 (one needs to update a DLL's config file when renaming the DLL).
* Use "PS_demo_" prefix instead of "reconstruction_" in target names (to be coherent, and because long names break cmake on Windows - see r50533).
* Renamed polyhedron_demo_plugin() as point_set_demo_plugin() (to be coherent, and because the code diverges from Polyhedron demo).
r50877 | lsaboret:
Fixed link error on Windows (in splatting code)
r50688 | palliez:
point set demo: one attempt to solve compilation issues.
r50679 | palliez:
move point set demo
r50678 | palliez:
move point set demo
r50677 | palliez:
move point set demo
r50676 | palliez:
move point set demo
r50675 | palliez:
move point set demo
r50668 | lsaboret:
* Updated Point_set_processing_3 reference manual to describe the influence of each knn parameter.
* Fixed bug in Point_set_processing_3 examples/tests: use reasonable default knn parameters (0.1 or 0.15% of point set was overkill.* Updated the Point Set demo to use the recommended knn values by default.
r50666 | ggael:
automagically computes the slpat radii when needed
r50663 | ggael:
remove the splatting mode if it is not supported
* Fixed bug in Point_set_processing_3 examples/tests: use reasonable default knn parameters (0.1 or 0.15% of point set was overkill.* Updated the Point Set demo to use the recommended knn values by default.
Removed _HAS_ITERATOR_DEBUGGING=0 setting to go back to default settings.
This setting could create conflicts with third party libraries like _SECURE_SCL=0 crashes boost program options.
Note that no conflict with _HAS_ITERATOR_DEBUGGING was reported. This is just a safety change.
poisson_reconstruction data/sphere926.pwn sphere926_poisson_0.001.off -sm_distance 0.001:
- set dichotomy error to 1/10th of distance to surface (as suggested by MY)
- added trace
plug-ins with long name are not properly compiled (at least on CMake 2.6/VisualC++ 2005).
I am not sure if the bug is related to the plugin's name or to the full path.
The workaround is to use shorter names:
- "PS_demo_APSS_reconstruction_plugin" is renamed "PS_demo_APSS_plugin"
- "PS_demo_poisson_reconstruction_plugin" is renamed "PS_demo_poisson_plugin"
- "PS_demo_point_set_simplification_plugin" is renamed "PS_demo_simplification_plugin"
plug-ins with name longer than 48 characters are not properly compiled
(at least on CMake 2.6/VisualC++ 2005).
The workaround is to use shorter names:
Each "Point_set_demo_XXX_plugin" is renamed "PS_demo_XXX_plugin".
* Removed "Bounding Box/Sphere" and "Convex Hull" menu items and the corresponding plug-ins (never implemented).
* "Outlier removal" menu item selects now the points to remove instead of deleting them immediately.
The user may delete them with the new menu item "Delete Selection" or cancel with "Reset Selection".
* "Normal estimation" menu item selects now the points with an unoriented normal instead of deleting them immediately.
The user may delete them with "Delete Selection" or run again the algorithm with different settings.
* Implemented point set simplification plug-in (random + grid clustering).
* Added traces.
TODO:
* Add "Poisson reconstruction" algorithm.
* Add "Average Spacing" algorithm.
* Rename obsolete Mesh_3 files to avoid conflicts with new Mesh_3 implementation.
* TODO:
Modify Poisson_refine_triangulation.h to use new Mesh_3 implementation.
* cgal_test_with_cmake does not work when $MAKE_CMD environment variable exists.
* cgal_test_with_cmake returns an error when an application cannot be compiled.
Document property maps and move them to Support Lib:
* Added new chapter "CGAL abd Boost Property Maps" (Property_map) to Support Lib:
- it is located in Point_set_processing_3/doc_tex/Property_map.
- it documents Dereference_property_map, First_of_pair_property_map, Second_of_pair_property_map and Nth_of_tuple_property_map.
* Renamed point_set_property_map.h as property_map.h
* Moved Normal_vector_property_map to Point_with_normal_3.h and renamed it Normal_of_point_with_normal_pmap.
Changes requested by AF on 06/12/2009:
* Point_set_processing_3:
- Fixed description of grid_simplify_point_set()
- Fixed description of read_xyz_points(), write_xyz_points(), read_off_points(), write_off_points()
- Added grid_simplify_example.cpp. It replaces random_simplify_example.cpp in Point_set_processing_3 User Manual.
* Surface_reconstruction_points_3:
- Small fixes in the User Manual.
Removed IndexPMap parameter of mst_orient_normals():
* Removed IndexPMap parameter of mst_orient_normals(). Instead, mst_orient_normals() creates internaly an Index_property_map object.
* Index_property_map is a template class "index" property map, which associates a 0-based index (unsigned int) to Iter iterators.
2 specializations exist:
- if Iter is a random access iterator (typically vector and deque), get() just calls std::distance() and is very efficient;
- else, the property map allocates a std::map to store indices and get() requires a lookup in the map.
* Index_property_map is moved to an independent header Index_property_map.h but is not documented.
* Improvements in C++ code:
- erase_small_connected_components() is renamed keep_largest_connected_components() and takes as new parameter the number of large components to keep.
- get_polyhedron_connected_components() writes the list of components found in an output iterator.
* Improvements in the User Manuals:
- Removed page number in links.
- New images for grid simplification and normal orientation (hopefully clearer).
- Added citation of OFF file format.
* Improvements in the Reference Manuals:
- Removed output_surface_facets_to_triangle_soup() (obsolete).
- Removed get_polyhedron_connected_components() from documentation.
- Set manually the classes/structs/concepts marging to get a pretty alignment of types, constructors and methods.
* Automatic documentation improvements by generate_reference_manual 1.3:
- Reduced left margin of free functions description.
- Fixed bug: fixed vertical alignment in methods/functions description.
- Fixed bug: does not remove anymore EOLs in methods/functions description.
- Fixed bug #7515: removed "[protected]", "[static]" and "[virtual]" comments.
- is cross-platform Unix/make and Cygwin/VisualC++
- concats all log files to cgal_test_with_cmake.log
- does not clean up object files and executables (too slow when called by developer)
- is cross-platform Unix/make and Cygwin/VisualC++
- concats all log files to cgal_test_with_cmake.log
- does not clean up object files and executables (too slow when called by developer)
- is cross-platform Unix/make and Cygwin/VisualC++
- concats all log files to cgal_test_with_cmake.log
- does not clean up object files and executables (too slow when called by developer)
This forces cgal_manual to expand const keyword are avoids 2 problems:
- bad keywords in HTML
- const and non-const methods seem identical.
* Also fixed a bug in copy_doxygen_latex_doc r49560:
cgal_manual compilation error on mst_orient_normals.tex.
* The code matches the documentation and uses the new API with property maps:
- The code uses the new API with property maps.
- The test suites work.
- The MFC and Qt demos work.
- Copied Pierre's comments in Reference Manual to C++ comments.
* Renaming:
- merge_simplify_point_set -> grid_simplify_point_set.
- read_xyz_point_set split() as read_xyz_points() + read_xyz_points_and_normals().
* Gyroviz stuff:
- merge_simplify_nearest_point_set renamed as grid_simplify_nearest_point_set and moved to Poisson demo (as it is limited to Gyroviz_point_3 points).
- The code in Point_set_processing_3 uses the new API with property maps.
* extend the documentation
* update the APSS demo plugin to use property map
* change the k parameter to a more generic "smoothness" value
* add an optional RadiusPMap in the ctor
* minor changes in APSS's internal mechanism
Documentation of the new API with property maps.
* The User and Reference Manuals are updated wrt the new API with property maps.
* The examples included in the User and Reference Manuals are updated.
Warning:
* The code of these packages does not match the documentation!
* Do not call generate_reference_manual on these packages. This would remove the new API documentation.
TODO:
* Modify the code to match the documentation.
Proof of concept of the new API with property maps.
* Proof of concept:
- mst_orient_normals() is implemented using the new API with property maps. It returns an iterator over the first non oriented normal.
- Same thing for radial_orient_normals() [private API].
- the test suite works fine.
- removed Orientable_normal_3 class.
* point_set_property_map.h contains all property map classes of Point_set_processing_3:
- Former property maps in property_map.h are modified to take an iterator as key instead of a value type. This is more general (works if key = int), safer (no bug if key passed by value) and coherent with Boost Graph Library.
- identity_property_map and Point_set_vertex_point_const_map are merged as Dereference_property_map.
- Point_set_vertex_normal_map is moved from Point_set_3.h and renamed Normal_vector_property_map.
- Random_access_container_index_pmap is moved from Random_access_container_index_pmap.h and renamed Index_property_map.
- added free functions make_*() to create these property maps.
- removed get() functions to create these property maps.
* Demos:
- fixed Poisson MFC demo.
Gyroviz code is limited to containers of Gyroviz_point_3 (no property maps):
- removed class class Point_set_vertex_cameras_const_map.
- changed implementation of orient_normal_wrt_cameras().
TODO:
- update documentation.
- change API of all other functions of these packages to use property maps.
- removed obsolete images in Point_set_processing_3
- reduced size of remaining images in Point_set_processing_3 and Surface_reconstruction_points_3
- removed test meshes and point sets in Surface_reconstruction_points_3
Updated the documentation wrt the next changes:
- removed OrientableNormal_3, PointWithOrientableNormal_3, ReconstructionTriangulation_3, Reconstructio
nVertexBase_3 concepts.
- classes Orientable_normal_3, Reconstruction_triangulation_3 abd Reconstruction_vertex_base_3 are not
documented anymore.
- For free functions provided with 2 variants mutable/non mutable, removed the non mutable one.
Simplified the API:
- removed OrientableNormal_3, PointWithOrientableNormal_3, ReconstructionTriangulation_3, ReconstructionVertexBase_3 concepts.
- classes Orientable_normal_3, Reconstruction_triangulation_3 abd Reconstruction_vertex_base_3 are not documented anymore.
- For free functions provided with 2 variants mutable/non mutable, removed the non mutable one.
TODO:
- remove Orientable_normal_3 class.
- modify mst_orient_normals() to return an iterator over the first non oriented normal.
- fix Poisson MFC demo which does not compile anymore.
- delaunay_refinement(), solve_Poisson.rc(), set_contouring_value() and median_value_at_input_vertices() are declared private.
- Poisson MFC demo calls compute_implicit_function() instead of these methods.
- Removed cut_plugin from makefile because it does not compile
Splatting:
- Moved rendering mode list string from Scene.cpp to Scene_item.cpp
- Changed indentation
* add a "radius from density" plugin
* add a radius attribute to UI_Point
* add a svn externals to my GlSplat library (also on gforge)
Note that it requires glew, otherwise it is disabled.
Removed obsolete code and simplified the API of:
- Poisson_reconstruction_function
- ReconstructionTriangulation_3 and Reconstruction_triangulation_3
- APSS_reconstruction_function
* Moved Lightweight_vector_3 from Point_set_processing_3 to Surface_reconstruction_points_3. It is now undocumented.
* Point_set_processing_3 User Manual does not have a structure of "pipeline" anymore.
* New introduction figures for Surface_reconstruction_points_3 and Point_set_processing_3.
* Deleted poisson.jpg/eps in Surface_reconstruction_points_3.
* INPUT and STEINER constants are now an enum.
* Removed obsolete code:
- mst_normal_orientation(max_angle)
* PointWithNormal_3::set_position() renamed as position().
* Fixed misspellings.
* and many other improvements to the documentation (and C++ comments).
- added new function get_polyhedron_connected_components() that computes the connected components of a polyhedron.
- added new function erase_small_polyhedron_connected_components() that removes the *small* connected components of a polyhedron (leaves only the largest).
- call erase_small_polyhedron_connected_components() after APSS reconstruction
- added new function get_polyhedron_connected_components() that computes the connected components of a polyhedron.
- added new function erase_small_polyhedron_connected_components() that removes the *small* connected components of a polyhedron (leaves only the largest).
- call erase_small_polyhedron_connected_components() after APSS reconstruction
* Reduced Implict_surface_3 radius for APSS reconstruction => smaller "cones" => faster reconstruction.
* Removed debugging traces during the package review.
* Removed Oni example as the package does not reconstruct (yet) surfaces with boundaries.
- Rename back Point_set_demo_types.h as Polyhedron_type.h and Point_set_demo_types_fwd.h as Polyhedron_type_fwd.h (=> ease comparison).
- Move kernel declaration to new Kernel_type.h (=> avoid duplicating code).
* New OpenGL rendering modes:
- New modes "points", "points+normals" and "Gouraud".
- "fill" mode is renamed "flat".
- "Superimpose edges" menu item replaced by "flat+edges" mode.
* New Scene_item::supportsRenderingMode() method allows or not each rendering mode for each item.
- Point_set_scene_item supports "points" and "points+normals".
- Scene_polyhedron_item supports new modes points" and "Gouraud".
* New Scene_item::draw_points() and draw_normals() methods to implement the "points" and "points+normals" modes.
* New Scene_item::renderingModeName() method to factorize code to write the "rendering mode" field.
Step 3:
- Revert filenames of files identical in the Polyhedron demo (=> easier comparison)
- Merge changes in Polyhedron_demo-refactoring up to r48617
Step 3:
- Revert filenames of files identical in the Polyhedron demo (=> easier comparison)
- Merge changes in Polyhedron_demo-refactoring up to r48617
* Point_set_processing_3 IO functions take now as parameter a std::istream instead of a filename.
* Removed read/write_pwn_point_set() which are replaced by read/write_xyz_point_set().
* Removed read_pnb_point_set() which obsolete.
Step 1:
This is a subset of experimental-packages/Polyhedron_demo-refactoring r48588 with only the features that make sense for the Point Set demo.
- 'Polyhedron demo' renamed as 'Point Set demo'.
- Removed Nef support.
- Removed boolean operations, curvature estimation, parameterization, kernel, orientation, self-intersection, subdivision algorithms.
- Kept PCA plug-in. Will change it to compute bounding sphere, bounding box, centroid and min ellipsis.
- Kept mesh simplification plug-in. Will change it to simplify point sets.
- Kept remeshing plug-in. Will change it to Poisson and APSS plug-ins.
- Kept Scene_polygon_soup class. Will change it to a point set class.
* Move/rename files and folders.
* Rename point set IO functions.
Status:
* Both packages compile on Unix/g++ 4.1.2. The test suite is OK.
* The documentation compiles for both packages.
TODO:
* Update the documentation and package_info
* Update Groviz
* Delete Surface_reconstruction_3