Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] remove_self_intersections changes the mesh and the reparation is less when it is build in Release than when i build my application in Debug

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] remove_self_intersections changes the mesh and the reparation is less when it is build in Release than when i build my application in Debug


Chronological Thread 
  • From: Zesen Qian <>
  • To:
  • Subject: Re: [cgal-discuss] remove_self_intersections changes the mesh and the reparation is less when it is build in Release than when i build my application in Debug
  • Date: Tue, 10 Jul 2018 06:12:23 -0400
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
  • Ironport-phdr: 9a23:wKpskRYcC9d06oCGJXbSLun/LSx+4OfEezUN459isYplN5qZr8m4bnLW6fgltlLVR4KTs6sC17KI9fi4EUU7or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCa8bL9oMBm6sRjau9ULj4dlNqs/0AbCrGFSe+RRy2NoJFaTkAj568yt4pNt8Dletuw4+cJYXqr0Y6o3TbpDDDQ7KG81/9HktQPCTQSU+HQRVHgdnwdSDAjE6BH6WYrxsjf/u+Fg1iSWIdH6QLYpUjmk8qxlSgLniD0fOjE7/mHZisJ+gqFGrhy/uxNy2JLUbJ2POfZiYq/RYdEXSGxcVchRTSxBBYa8YpMMAOUfJuZXsY/9rEYVoxu/HwasAv7kxzhJh3Doxq01zeIhHRvf3AwhBd0Otm/ZrNrwNKgIUOC1yLPEwinEb/NTwDrw7pXDfB4mofGJR71wcMzRxFEpFwzflVqfsojlMC2P2usRtGib6vJsVe2oi24gpAFxpiagyt0whYnOg4IZ0lHE9SNjwIY0P9K0UkB7YcS8HJRMuCGVLY92TtklQ2FytyY3zKANt52jfCUS1pgr2xrSZ+aEfoWI+B7vSeKcLSliiH54fL+yiBC/+lW6xOLmTMm7ylNKozJFktbSsnAN0ATe6s2dRft8+ketwC6P1w7P5u1dL0A4iK7WJpE7zr4/kZoTtkvDHivol0nskKCWcUAk9vCp6+ThfLrmuoeRO5Fohgz6KKgjmcyyDf4lPgUKQWSX4/mw2bns8EHhRbVFlPw2kq3XsJDAIsQbo7a0Ag5L3YY49Rm/CS2q0M0ZnXYdKlJIYx2Hj43zNFHPJPD0F+uwg1OpkDtz3fDJIqXhAonRLnjEiLruYbl95FRYyAYq0N9f5olUBa0cIPLoQU/8r8fYDx88Mwys2enrEtR91oUEWWKOGKCVKq3SsUXbrt8pOPSGMY8JpC7meb9i/O/rlXZ/mFkHfKDv04FQc2G9Bv0hIkOXZj3njd4FVGsLpQEjV/e5tFrXWjFaYzO+Xrk3+yogIIOgF4bKAI6305Kb2yLuLJBNa2YOM1GFFz+8ZYifVvFKcSObJOdulzUFUf6qTIp3hkLmjxPz17cydrmcwSYfr5+2jIEktd2Wrgk78HlPN+rY1miMS29umWZRHm052al+pQp2zVLRiPEk0cwdLsRa4rZyail/LYTVlrUoBNX7WwaHddCMGg7/H4eWRAopR9d0+OcgJkZwH9L40ELG1iuuRqcbz/mFXc1otK3b2Hf1KoB2zHOUjKQ=

sorry, not try to hijack the thread, but how is this self-intersection
fix method compared to MeshFix? I'm using the latter and it can't fix
meshes with SI that's too complex.

Best,
Zesen

On Mon, Jul 9, 2018 at 5:43 AM, Sebastien Loriot (GeometryFactory)
<>
wrote:
> No on linux. The precompiled demo on windows is available here:
> https://www.cgal.org/demo/4.12/polyhedron_3.zip
> with common dlls (to be put in the same directy as Polyhedron_3.exe
> in the aforementioned archive):
> https://www.cgal.org/demo/4.12/CGAL-demoDLLs.zip
>
> Sebastien.
>
> On 07/09/2018 11:40 AM, sergio campo wrote:
>>
>> Thanks for your fast answer! :). I set std::setprecision(17) with the
>> same results. Have you execute the demo with Windows? In my case I executed
>> the program in Windows 10.
>>
>> On Mon, Jul 9, 2018 at 10:27 AM, Sebastien Loriot (GeometryFactory)
>> <
>>
>> <mailto:>>
>> wrote:
>>
>> No idea what you did, if I open the polyhedron demo, load your model
>> call orient polygon soup and remove self intersections, everything
>> is done in less than a minute on my computer and the output model
>> does not
>> contain any self-intersection.
>>
>> Do you have intermediate writing to "string" with a rounding of the
>> coordinates of the point not using the max precision
>> (std::setprecision(17) for the ostream)?
>>
>> Sebastien.
>>
>>
>> On 07/04/2018 11:33 AM, sergio wrote:
>>
>> This is may application that i compile in windows in Release
>> with the showed
>> CMakeList.txt and cgal_vtk_test.cpp files. When I try to repair
>> this file:
>>
>> Number intersection: 290
>>
>> https://drive.google.com/file/d/1uqcbZqgtbiiXYjKnzzb5d-OXm4JAHqdx/view?usp=sharing
>>
>> <https://drive.google.com/file/d/1uqcbZqgtbiiXYjKnzzb5d-OXm4JAHqdx/view?usp=sharing>
>>
>> 1. my application build in Release generate the following file:
>>
>> Number intersections: 179
>> Add some visible holes and some deformations.
>> Repairing time:..................201.128 seconds.
>>
>>
>> https://drive.google.com/file/d/13Vfw0pP5Ymw0oo4RnfRjKTI_aTndb6P4/view?usp=sharing
>>
>> <https://drive.google.com/file/d/13Vfw0pP5Ymw0oo4RnfRjKTI_aTndb6P4/view?usp=sharing>
>>
>>
>> 2. my application compiled in Debug, it generate the following
>> file:
>>
>> Number intersections: 4
>> Repairing time:..................1072.96 seconds.
>>
>>
>> https://drive.google.com/file/d/1x1Z7qaNcnfGC8a24qzJI-DZEF3qqeLqq/view?usp=sharing
>>
>> <https://drive.google.com/file/d/1x1Z7qaNcnfGC8a24qzJI-DZEF3qqeLqq/view?usp=sharing>
>>
>>
>> with warnings:
>>
>> Expression : !"Returning no output. Filling hole with extra
>> triangles is not
>> successful!"
>> File :
>>
>> C:\dev\CGAL-4.12\include\CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h
>> Line : 1103
>> Explanation:
>> Refer to the bug-reporting instructions at
>> https://www.cgal.org/bug_report.html
>> <https://www.cgal.org/bug_report.html>
>>
>> The problem is that in debug build it takes around 17 min for
>> reparacion and
>> in Release it only takes 3 minutes, but in relese build it
>> modify the
>> original mesh and add a big hole(pleas check links to files)
>>
>> What's wrong?
>>
>>
>>
>>
>>
>>
>> -------------------------------------------------------------------------------
>> CMakeList.txt
>>
>> -------------------------------------------------------------------------------
>>
>> cmake_minimum_required(VERSION 2.8.4)
>>
>> project( cgal_vtk_test )
>>
>> # Find CGAL
>> find_package(CGAL REQUIRED COMPONENTS Core) # If the dependency
>> is required,
>> use REQUIRED option - if it's not found CMake will issue an error
>> include( ${CGAL_USE_FILE} )
>>
>> # Find VTK
>> find_package(VTK REQUIRED)
>> include(${VTK_USE_FILE})
>>
>>
>> # Setup your executable
>> #include_directories (BEFORE "include")
>>
>> include( CGAL_CreateSingleSourceCGALProgram )
>> create_single_source_cgal_program( "cgal_vtk_test.cpp" ) # This
>> will create
>> an executable target with name 'cgal_vtk_test'
>>
>> # Add VTK link libraries to your executable target
>> target_link_libraries(cgal_vtk_test ${VTK_LIBRARIES})
>> #target_link_libraries(cgal_vtk_test)
>>
>>
>> -------------------------------------------------------------------------------
>> cgal_vtk_test.cpp
>>
>> -------------------------------------------------------------------------------
>>
>> #include <fstream>
>> #include <iomanip>
>> #include <ctime>
>>
>> //
>>
>> ----------------------------------------------------------------------------
>> // CGAL
>> //
>>
>> ----------------------------------------------------------------------
>>
>>
>>
>> #include <limits>
>>
>> #include <CGAL/Polygon_mesh_processing/repair.h>
>> #include <CGAL/Polygon_mesh_processing/internal/repair_extra.h>
>> #include <CGAL/Polygon_mesh_processing/corefinement.h>
>>
>>
>> #include
>> <CGAL/Polygon_mesh_processing/polygon_soup_to_polygon_mesh.h>
>> #include <CGAL/Polyhedron_3.h>
>> #include <CGAL/Surface_mesh/Surface_mesh.h>
>> #include <CGAL/Polygon_mesh_processing/corefinement.h>
>> #include <CGAL/IO/print_wavefront.h>
>> #include <CGAL/IO/OBJ_reader.h>
>> #include <CGAL/IO/print_wavefront.h>
>> #include <CGAL/assertions.h>
>>
>> #include <CGAL/IO/STL_reader.h>
>> #include <CGAL/IO/STL_writer.h>
>>
>>
>> typedef CGAL::Exact_predicates_inexact_constructions_kernel
>> Kernel;
>> typedef CGAL::Surface_mesh<Kernel::Point_3> Mesh;
>> typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
>>
>> void addStringToFileName(std::string & fileName, const
>> std::string & str)
>> {
>> size_t lastindex = fileName.find_last_of(".");
>> std::string name = fileName.substr(0, lastindex);
>>
>> fileName = name + str;
>> }
>>
>> bool repairOBJFile(std::string & fileName)
>> {
>> clock_t begin = clock();
>>
>> std::cout << std::endl;
>> std::cout << std::endl;
>>
>> std::cout <<
>> "..........................................................."
>> << std::endl;
>> std::cout << ". Repairing
>> ."
>> << std::endl;
>> std::cout <<
>> "..........................................................."
>> << std::endl;
>>
>> std::ifstream input(fileName);
>> if (!input)
>> {
>> std::cerr << "Cannot open file " << std::endl;
>> return false;
>> }
>>
>> std::vector<Kernel::Point_3> points;
>> std::vector< std::vector<std::size_t> > polygons;
>> if (!CGAL::read_OBJ(input, points, polygons))
>> {
>> std::cerr << "Error parsing the OFF file " <<
>> std::endl;
>> return false;
>> }
>> //Mesh mesh;
>> Polyhedron mesh;
>>
>> CGAL::Polygon_mesh_processing::orient_polygon_soup(points,
>> polygons);
>>
>> CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh(points,
>> polygons, mesh);
>>
>> bool solved =
>> CGAL::Polygon_mesh_processing::remove_self_intersections(mesh);
>>
>> if (!solved)
>> {
>> std::cout << "Some self-intersection could not
>> be fixed" << std::endl;
>> //return false;
>> }
>>
>> addStringToFileName(fileName, "_fixed.obj");
>> std::ofstream ofs(fileName);
>> CGAL::print_polyhedron_wavefront(ofs, mesh);
>>
>> clock_t end = clock();
>> double elapsed_secs = double(end - begin) /
>> CLOCKS_PER_SEC;
>>
>> std::cout << std::endl;
>> std::cout << std::endl;
>>
>> std::cout << "Repairing time:.................." <<
>> elapsed_secs << "
>> seconds."<< std::endl;
>>
>> return true;
>> }
>> int main(int argc, char* argv[])
>> {
>> std::string fileName = argv[1];
>> repairOBJFile(fileName);
>> return 0;
>> }
>>
>>
>>
>>
>> --
>> Sent from: http://cgal-discuss.949826.n4.nabble.com/
>> <http://cgal-discuss.949826.n4.nabble.com/>
>>
>>
>> -- You are currently subscribed to cgal-discuss.
>> To unsubscribe or access the archives, go to
>> https://sympa.inria.fr/sympa/info/cgal-discuss
>> <https://sympa.inria.fr/sympa/info/cgal-discuss>
>>
>>
>>
>
> --
> You are currently subscribed to cgal-discuss.
> To unsubscribe or access the archives, go to
> https://sympa.inria.fr/sympa/info/cgal-discuss
>
>



Archive powered by MHonArc 2.6.18.

Top of Page