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: Tue, 10 Jul 2018 17:34:21 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=Pass ; spf=None
- Ironport-phdr: 9a23:CxEmABbiwzZ1BzG92jCqdlr/LSx+4OfEezUN459isYplN5qZrsm4bnLW6fgltlLVR4KTs6sC17KI9fi4EUU7or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCa8bL9oMBm6sRjau9ULj4dlNqs/0AbCrGFSe+RRy2NoJFaTkAj568yt4pNt8Dletuw4+cJYXqr0Y6o3TbpDDDQ7KG81/9HktQPCTQSU+HQRVHgdnwdSDAjE6BH6WYrxsjf/u+Fg1iSWIdH6QLYpUjmk8qxlSgLniD0fOjAk7m/XhMx+gqFVrh2vqBNwwZLbbo6OOfpifK7QZ88WSXZPU8tTUSFKH4Oyb5EID+oEJetUoZTzqEUVohSkHgmsGOLvxSFOhnTr26M61P4hEQDB3Aw8AtkCtHXao8vyNKcXT++10LPIzDXDYfxMxTj99I/IcgohoP2JU757bM3cyVIrFwPClFWQqIvlPy+P2uQIt2iW9OVgVee1hG4mrwF9uCSgxsApioTQgI8e117K9SJ8wIkvJN24TlZ2Ydi+H5RLrC6aM5V5Ttk+TGFvvSY20rIGuZm8fCgFzJQo2QTTZOCAc4iN+h7jVeCRIS15hH1/Yr6/iQyy/VC8xe3zTMa01ExGri1fktnDsH0Gyh/d6tCfR/Z/8UqtwyuD2x7T5+1eIk04i7DXJp8iz7IolZcfrV7PEjHrlEj2lqOaa1ko9vKq5unkZLjtu4WSOJVuig7kN6Qjgsy/Dvo8MggJR2Wb/P6z1Lzn/UHgTrRKi+E6nrDXsJ3bJskXvKG5AwhS0oYs7xawES2q38gfnXkCNF5FeRSHgJb1O1zWIv31Au2zj0mynDpr3fzLPaPtDo/MI3XAiLvheKxy609YyAo919Bf4JdUB6kaIPL3XU/xrt3YDhglMwCuxubnDM5w1owbWW2VA6+ZNLnevkOP5uIqO+WMfpMauC7hK/g54P7jlWM2mVAHcqmtxJcYdXG4Hu96LEWEenrsmcwMEXwKvwo7VOzlkkeOUT9VZ3aoXqIz/Cs3CIy8DdSLe4a2nbbU3DunBoYEISddG1WUGDHpcZ+FUrECcmWJM8p5m3sFU7amDIQu3BXruA7hwKd8Nbno/XgTupvnkdR0/ObOjgoa9DpuDs3b3XveYXtzmzZCfDI81btjoEF7gnOEy6l/n7QYOtFU4v5VSBYUPJXAyPZrSpq6DhnFec2IT0rgR9GODjQ4T9Z3yNgLNRUuU+6+hwzOinL5S4QekKaGUcRto/DsmkPpLsM48E7okawojl0oWMxKbDT0iat29gyVDInMwRzAy/SaMJ8E1SuIz1+tiHKUtRgBAgF1WKTBG3sYYxmO9Imr1gb5V7arTI8fHE5BxMqFcPYYb9ToiRBZQa+mNoqOJW22nGi0CFCDwbbeNIc=
I never used MeshFix as I don't think there is a linux version.
If you have some hard to fix self-intersections I'm interested in
having a look and I'll let you know if CGAL can fix those.
You can send me the file off list if you don't want to spam the whole list.
Thanks,
Sebastien.
On 07/10/2018 12:12 PM, Zesen Qian wrote:
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
- [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.