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: "Sebastien Loriot (GeometryFactory)" <>
- 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: Mon, 9 Jul 2018 10:27:17 +0200
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=Pass ; spf=None
- Ironport-phdr: 9a23:YJr/JBCNBHJUcVU4SZjqUyQJP3N1i/DPJgcQr6AfoPdwSPTzoMbcNUDSrc9gkEXOFd2Cra4c1ayO6+jJYi8p2d65qncMcZhBBVcuqP49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6JvjvGo7Vks+7y/2+94fcbglUhTexe69+IAmrpgjNq8cahpdvJLwswRXTuHtIfOpWxWJsJV2Nmhv3+9m98p1+/SlOovwt78FPX7n0cKQ+VrxYES8pM3sp683xtBnMVhWA630BWWgLiBVIAgzF7BbnXpfttybxq+Rw1DWGMcDwULs5Xymp4aV2Rx/ykCoJKiA38G/XhMJzgqxUrh2uqB5jzIDbe4yVKPhzc7nBcd8GS2dMXMBcXDFBDIOmaIsPCvIMMehFoYbjvFQBtwC+BRWtBOzxzD9Dm3n43aog0+QgFgHGwBErE9YPvnvKq9X1MbkdUfyvzKjIzTvMde9Z2Sv66IjSchEtpP+AVq93fMrKzUkvEBnFjlSXqYz5JT+V0+ANvnOU7+plT+2vimonpxttrTiow8chk4/EjZ8bxFDD8CV22oc1JdugRU59e9GrC4BftyWEOIdsXswiRGRotD41yr0Bvp67cywKx4o9yxHDbPyHdpCE7Q7sVOmLJTd0nnVleKiwhxu07EOuyfX8W9Gq3FpWqidJiNrBu3AX2xDN9MSLV+Fx80i81TqX1Q3e6ftILV47mKfaMZIt37o9m5QJvUnBHiL7nlj9grWMeUU+4Oeo7vzqYrX4qZ+YMI95kgT+Pb4vmsy7GOg5PBIOU3WC9eSy27Dv4Ff1QLpNjv0xnanZtI7VKd4Hqa6+Bg9Zyocj6xChADe6yNkUg2ULIVZfdB+Ej4XlIU/CLO7lAfuljFmgjS9nx/XcMb3gBpXNIGLDkLDkfbtl8E5czA0zzcpe55JTFrENOvfzWkvqudzXCx82KQ20w+L9BNph0YMeXHqDArWFP6PKrV+I+uUvLvGQa48aojn9L+Ep6OPvjX8ihVAdYLKp3YAMZXCjHvVmJl2ZbmD2jtcAF2cKpAs+Q/bwhF2MSz4AL0q1Cqkz7zV+BIO9BprYXaishqaA1WG1BM54fGdDXxq3HH3hbJmFVvFETCWII8h92nwrWL+kRpM7xD+nvxP90asmZKKA4Skfr5PkyJ5w48XckBgz8Xp/CMHLgDLFdH19gm5dH2x+56t4u0Eokg7Sg5g9uORREJlo390MVw47MZDGyOkjUoL9XwvAepGCT1P0G4z6UwF0dco4xpo1W2g4A8+r10mR0C+jArtTnLuOVsRtr/DsmkPpLsM48E7okaksi158H5lKPGyiw7Flrk3dW9ePnEKemKKnM68b2XyV+Q==
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
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
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
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
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/
- [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, sergio, 07/04/2018
- 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, Sebastien Loriot (GeometryFactory), 07/09/2018
- 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, sergio campo, 07/09/2018
- 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, Sebastien Loriot (GeometryFactory), 07/09/2018
- 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, Zesen Qian, 07/10/2018
- 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, Sebastien Loriot (GeometryFactory), 07/10/2018
- 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, sergio campo, 07/10/2018
- 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, Zesen Qian, 07/15/2018
- 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, sergio campo, 07/16/2018
- 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, sergio campo, 07/10/2018
- 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, Sebastien Loriot (GeometryFactory), 07/10/2018
- 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, Zesen Qian, 07/10/2018
- 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, Sebastien Loriot (GeometryFactory), 07/09/2018
- 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, sergio campo, 07/09/2018
- 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, Sebastien Loriot (GeometryFactory), 07/09/2018
Archive powered by MHonArc 2.6.18.