Git Product home page Git Product logo

ftetwild's People

Contributors

danielepanozzo avatar fabienpean avatar jdumas avatar teseoch avatar yixin-hu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ftetwild's Issues

Surface information output

Can I get the surface information of the output mesh? For example, surface triangles.
I see __sf.obj, but I want triangles with the same vertex index as in the mesh (.msh) file.

preserve stl surface solids?

Hello !
Thanks for sharing this tool!! Looks very nice. I see that you can create conformal meshes coming from multi-regions. That's amazing!!
I am curious about one thing: I would like to use this for a numerical simulation and prescribe different boundary conditions according to different regions (solids) of my .stl data files. For example: a simple cube split into top, sides, bottom would look like this:
myCube.stl:

solid red
...
some faces
...
end solid red

solid gray
...
some faces
...
end solid gray

solid blue
...
some faces
...
end solid blue

image

if I run:


$tetwild -i myCube.stl -o tetCube.msh --no-binary


I get a nice meshed cube but the patches (physical Surface in GMSH) are not shown.

image

Lets say I want to use the resulting mesh and impose BCs:

red: myBC 1
gray: myBC 2
blue: myBC 3

how do you know which elements do these patches correspond to ? I've seen that when you perform union of two objects (or stl), you keep the parent body tagged and we know to which original region the elements belong to. Do you have a similar thing for the parent surfaces? Sorry if this already exists, I could not find it.

Thanks a lot !!

Xulia

Bounding Box Size

Hi Yixin,

Thank you for this code! fTetWild runs very fast.

I was wondering if I could specify the size of the bounding box? The mesh created in this box is useful for me and I would like to control the size..

Best,
Jonathan

skip_simplify

Hi,

A quick question about the parameter "skip_simplify". What's the benefits and drawback of setting skip_simplify to be true?

Thanks!

How can we collapse non-manifold edge when preprocessing?

It seems that the current code can only collapse an edge only when it is a manifold edge. However, in some cases, to simplify a mesh, the non-manifold edges should also be collapsed. Is there a way to collapse the non-manifold edges?

fTetWild with kokkos

Hi,

I am trying to use both fTetWild and kokkos (developed by Sandia National Lab for parallel computing https://github.com/kokkos/kokkos ) in my project. I build the project with mpic++ and set OMPI_CXX to the nvcc_wrapper provided by kokkos and link fTetWild as a static library. The build process works fine but I get segmentation fault error when I run the code.

I have prepared the testing codes in this depository https://github.com/hph73/tetraWild-Kokkos. A makefile has been attached in src. Here are a few additional steps you may need before you can test.

  1. Download kokkos from https://github.com/kokkos/kokkos
  2. Install OpenMPI https://www.open-mpi.org/
  3. Install cuda library
  4. Set environment variable export OMPI_CXX=<path_to_kokkos>/bin/nvcc_wrapper
  5. You may want to replace the static libraries in lib with the ones built from tetrawild on your PC.

When the code is built by setting CXX=g++, everything works fine.
When the code is build by the kokkos nvcc wrapper (enabled by setting CXX=mpic++), the build process is successful but the code gets segmentation fault.

Thanks!

Tetwild terminating abnormally when background mesh is specified

I have a model (model.stl) to mesh and a background mesh (bg.msh) to guide the meshing. I can supply the actual model and mesh, but for now I'll just describe the behaviour.

The background mesh is basically a box that properly contains the model. So far, during the debugging phase, I've been using constant values for the nodal values of the background mesh. I understand that these values specify (or at least suggest) a maximum edge length of the tets). I invoke Tetwild as follows:

./TetWild --input model.stl --bg-mesh bg --output mesh.msh

When I use constant values >= 0.8 for the background mesh, the mesh generated by TetWild seems to work fine.

In particular, for constant values >2.0, the result resembles the mesh generated by Tetwild using default parameters:

./TetWild --input model.stl

This is expected and acceptable , since the model does have some small features.

However, using constant values of 0.6, TetWild crashes after a minute or two with the following message:

"Abnormal program termination: function terminate() was called"

Moreover, meshing with the following command:

./TetWild --input model.stl -a 0.6

succeeds!

Can you explain:
the discrepancy (using a background mesh with constant nodal values of 0.6 and using a prescribed edge length of 0.6 with no background mesh)
How can I get more information on the cause of the abnormal termination? Perhaps the .csv file that TetWild generates with the .msh file?

Thanks,

Dan

No license

The code has no license and therefore can't be used for anything.

problem of large envelop size

Hi!
Your code and article give me much help. But recently I found that large -r would lead to raised or dented mesh at borders, which is severely deviated from the output. I know that reduce input -e will solve this problem, at the cost of a substantial increase in time. So could you please give me some advice to set input -e, according to input model and meshsize.
With best regards!

Question

Can this be adapted for real time game isosurface generation and manipulation?

Inhance of algo efficiency

For the last question, I had an idea to split the solid file and then do a merging of the different meshes. In this way, a trade-off can be made between space complexity and time complexity, and even a higher degree of parallel efficiency can be achieved. My initial idea is to achieve mesh merging through local mesh re-division. However, there are still some questions that I would like to consult with Dr.
The first is the use of GEO::delaunay in the GEO library, I coded it according to your code, but the result is that I get the wrong grid, and even the node number of -1 appears in cell_to_v.
The second is that I am not sure whether finding the convex hull based on the grid elements and nodes will lead to the instability of the algorithm, that is, the grid may overlap or have holes.
My code is as follows.

GEO::CmdLine::import_arg_group("standard");
    GEO::CmdLine::import_arg_group("pre");
    GEO::CmdLine::import_arg_group("algo");
    GEO::Delaunay::initialize();
	GEO::Delaunay_var T = GEO::Delaunay::create(3, "BDEL");
    //T->set_reorder(true);
	//T->set_thread_safe(true);
	T->set_keeps_infinite(true);
	T->set_vertices(vd_.size() / 3, vd_.data());
	std::vector<Vector4i> indice;
	indice.resize(T->nb_cells());
	const auto& tet2v = T->cell_to_v();
	for (int i = 0; i < indice.size(); ++i) {
		for (int j = 0; j < 4; ++j) {
			indice[i][j] = T->cell_vertex(i, j);
		}
	}

Best wishes!

Regions and Boolean Operations

Hi,

First, fTetWild seems like an even better implementation of TetWild, which is saying a lot. Great job!

I opened a related issue on TetWild's repo earlier today, and my motivation is just as I stated over there. Fundamentally, I am trying to figure out a way to take multiple triangulated manifolds, create a tetrahedralization of the union, but still be able to identify which region each resulting tetrahedron belongs to. (see figure below for an example of the overlapping manifolds)

image

Same model with semi-transparency to make the point of intersections
image

fTetWild does a great job tetrahedralizing the union (with better performance than TetWild), though I am still stuck trying to figure out how one might determine the corresponding region. Ideally (to me) each tetrahedra would be colored by some combination of the tags of the manifolds that contain them (perhaps a hash of the list of manifold tags that contain them), though I do not understand you algorithm enough to grasp the feasibility or method to implement such a method. I dabbled with the boolean operations to see if I could perform a sequence of operations on groups of manifolds at a time to create a tetrahedralization of each region, but I am encountering runtime errors for many of the operations. So my question is two-fold:

  1. Is there a method you see to assign each tetrahedra a region ID of sorts (as I asked on the TetWild repo) or
  2. Can you point me to additional documentation on how the boolean operations and tags are expected to work? Perhaps I am misunderstanding how they ought to be used.

Thanks for your time!
Keith Ballard

Does this code completely replace TetWid?

Hello!

Thank you very much for releasing this code, I was very very excited about using it. I have been using TetWild since 2018 and have always been really happy with its performance. My question is, now that this Fast TetWild is released, is there any reason why I would still want to use the old TetWild? i.e., is there any occasion where the output or robustness of the old TetWild is preferable or should I replace it with this code entirely from now on?

Thanks! Big fan of your work!

Ubuntu cannot find gmp

Hello,

When I try to install gmp on Ubuntu by using this command:
sudo apt-get install gmp

it says:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package gmp

Does anyone know what's wrong here?

Thanks!

GMP dependency

Is GMP used only by Rational.h ? If affirmative, I believe it should be possible to remove the GMP dependency (which is LGPL) and use for example Boost.Multiprecision (which has Boost license).

Would Rational.h be the only file to modify, or more parts in the code would need to be rewritten?

Thanks!

Triangulating a 3d polygon

I have a flat 3d polygon (geojson polygon) as input data most of the time and a 3d point cloud other times.

Do I need to prepare the input data in some way, or is this library able to triangulate the input data directly?

trouble compiling on windows

Hi, I'm having trouble compiling on windows - I have installed conda and mpir, but I keep getting linker errors such as

FloatTetwild.lib(LocalOperations.obj) : error LNK2001: unresolved external symbol ___gmpq_add [D:\ftet\build\FloatTetwild_bin.vcxproj]

is there something I should try?

Best,

Libor Vasa

FR: Possibility to enter absolute values for ideal_edge_length and others

I'm using fTetWild to fix meshes coming from Simulation software.
My request: I'd like to be able to submit absolute values for ideal_edge_length, eps_simplification (unit-less, as STLs are) and others as well. Usually I don't care much about the diagonal box of my mesh, nor do I like to measure the mesh (sometimes really a pain) and calculate those values.
We're working in mm and it would make our lives much easier if we could just enter the real values.

Thanks for that awesome mesher!!

Mapping input triangles to output surface triangles

Hello,

Is it possible to map from input triangles to output surface triangles using either fTetWild or TetWild? In other words, given a face on the input mesh, can I obtain all the corresponding output surface triangles?

Thanks!

cube and cylinder "touching"

Hello,
a simple question: a cube and a cylinder touch.
Is it possible to: compute the mesh of the (non manifold) union using the triangulation of the non manifold union
and distinguish the tehreahedra of the two volume grids?
The mesh should be conformal at the interfacece.
How to using a fTetwild command line? (Or C++ code)
I attached some pictures.
Ciao
Grazie mille
Giovanni

geometry

pic00

triangulation
pic02

mesh (not done with ftetwild)
pic03

meshes with subdomains

I'm wondering if I can make fTetWild work for domains which have separate subdomains in them, e.g., a ball in a box. If I understand correctly, fTetWild's union operation dissolves subdomain boundaries. I need to have that boundary (approximately) preserved though, and also need to be able to recover the subdomain tet meshes. The mesh should be conformant across the boundaries.

error: could not find git for clone of libigl-download

Hello,

I'm getting an error when compiling with regards to the libigl library

`CMake Error at C:/cpp/cmake-3.18.0-rc2-win32-x86/cmake-3.18.0-rc2-win32-x86/share/cmake-3.18/Modules/ExternalProject.cmake:2346 (message):
  error: could not find git for clone of libigl-download
Call Stack (most recent call first):
  C:/cpp/cmake-3.18.0-rc2-win32-x86/cmake-3.18.0-rc2-win32-x86/share/cmake-3.18/Modules/ExternalProject.cmake:3224 (_ep_add_download_command)
  CMakeLists.txt:9 (ExternalProject_Add)


CMake Error at cmake/DownloadProject.cmake:171 (message):
  CMake step for libigl failed: 1
Call Stack (most recent call first):
  cmake/FloatTetwildDownloadExternal.cmake:15 (download_project)
  cmake/FloatTetwildDownloadExternal.cmake:29 (float_tetwild_download_project)
  cmake/FloatTetwildDependencies.cmake:44 (float_tetwild_download_libigl)
  CMakeLists.txt:82 (include)`

I am running on windows 10 and using visual studio 2019 command prompt to execute the commands.
Is there something I am doing wrong in regards to the installation with cmake?

Thank you,
Christopher

mpir.dll was not found

I'm building fTetWild on Windows, and after following the instructions here Yixin-Hu/TetWild#44 I succeeded in producing an .exe, but then double-clicking that .exe produces the following error:

image

By looking through this thread #12 I managed to find the required DLL in C:\ProgramData\Anaconda3\pkgs\mpir-3.0.0-hec2e145_1\Library\bin, and now the .exe seems to work, but this should probably be included in the build instructions

Bug in preprocessing: holes appears after mesh simplification

After mesh simplification, there is a probability that holes will appear. Try it a few more times, and each time the results are different: sometimes holes are produced, sometimes no holes are produced. I think it's a data race problem when parallel edge collapse.

Feature request: user-defined bounding box

Hi,

I would like to define my own bounding box for tetrahedralization. I notice that bbox_min and bbox_max are provided in the input parameters but got overwritten with the following piece of code. Is it possible to add a flag in the input parameters to avoid the overwriting behavior?

        Vector3 min, max;
        get_bb_corners(params, input_vertices, min, max);
        
        mesh.params.bbox_min = min;
        mesh.params.bbox_max = max;

Performances (speed + accuracy)

Hi dear friends,

I'm heavily testing fTetWild on a model that is well representing what kind of geometry I want to deal with.
It's a CAD produced building element, composed of many sub-elements.
The model is composed of 21k nodes and 18k triangles.
Window

I've compiled fTetWild under Windows, with VS2022, into Release.
To compute the result, I'm using the CSG approach with all sub-elements linked into a huge union chain (JSON).
On my mid range laptop (core i5 8265U + 16Go), overall process with default settings takes 200s.
The result is good at first sight, but if you zoom in :
Detail tetras 1
Detail tetras 2
Detail tetras 3

The result tretrahedralization is largely not respecting model boundaries.

Here are the computations parameters taken from early stage of process :
Default

So here are my questions ;-)

  1. Is the 200s processing time a "normal" score according to your experience ?

  2. Are there any optimizations I can do to severally reduce that processing time ?
    I've tested by increasing target edge size (x10) but processing time get worse (230s).
    I've tested increasing Min Energy threshold, but this only saved a few seconds.

  3. Is there maybe a parallelized version that could run on multiple cores / thread locally ?

  4. As far as geometric precision is concerned, you can see that with a 2E-3 effective Epsilon, many of the model sub-objects have been "swallowed" during the process, even if these objects are thicker/larger than this limit.
    Addtionnaly, you can see that there are many tetras that are protrusing/penetrating the initial model.
    To reduce this phenomenon I have to reduce envelop, but computation time seams to be quadratic from this parameter, leading to very very long process time.
    I've tested TetWild too, with better results, but with processing time that are not acceptable for my purposes (15 minutes on that model).
    Is there other thing to do to reduce that phenomenon ?

Thanks a lot !

Differences between output files?

The readme suggests that the .msh file produced by fTetWild is its "output"... but I was having a lot of trouble with the programs recommended for converting .msh files, so I took a look at some of the other files that fTetWild also outputs on every execution, but I'm not certain as to their contents...

from what I can tell (assuming an input file named debug.stl) :

  • debug.stl__sf.obj and debug.stl__tracked_surface.stl are identical to debug.stl_.msh
  • debug.stl__simplify.off and debug.stl__cutting.stl are identical to each other, but look rougher than the previous files

Is this a safe assumption, or are these results just a quirk of my input file?
i.e., if I'm struggling to convert the _.msh file to a format I can use, is it always safe to use the __sf.obj or __tracked_surface.stl file instead?

issue when compiled with tbb

When compiling with tbb, I got the following error:

Simplification.cpp:396:13: error: use of undeclared identifier 'sm_queue'
            sm_queue.push(ElementInQueue(std::array<int, 2>({{v2_id, v_id}}), weight));

It seems like sm_queue is not declared under preprocessor #ifdef FLOAT_TETWILD_USE_TBB in Simplification.cpp, or maybe I miss something? Thanks

How to make fTetWild respect the input triangles?

Hello,
this is probably just a question, not an issue, but it bugs me. I hope it can be resolved relatively easily: fTetWild generates a nice tetrahedral mesh of the volume enclosed by the watertight input surface mesh. However, the input vertices do in general not appear among the output vertices - and therefore the input triangles do not even have a chance to appear as faces of output tetrahedra. However, this effect would be very desirable.
How can one force the output tets to conform to the input points and triangles?
Thanks for help.

Source code is incomplete

A few functions in the source code look like they were generated by some tool from something else, maybe from symbolic math.

Specifically, they are AMIPS_energy_aux, AMIPS_jacobian, and AMIPS_hessian. I don’t think people write C++ code like that.

Could you please open the actual source of that code, as opposed to output of a code generator?

Thanks in advance.

How to use Boolean operation?

Hi:

Thanks for the fTetWild. It is amazing!

I want to use the Boolean operation to get the intersection of a cube and a torus. I used the command line in Windows "./FloatTetwild_bin -i cube.obj --tag torus.obj --op 1 -o res.msh". However, it gave me an error message as "Abnormal program termination: function terminate() was called". Is there anything wrong with the command line? Thank you!
Image 3
model.zip

Trouble Compiling on M1 Mac

I am trying to compile fTetWild on M1 Macbook. I got some compile errors due to the architecture.

...
/Library/Developer/CommandLineTools/usr/lib/clang/14.0.0/include/mmintrin.h:14:2: error: "This header is only meant to be used on x86 and x64 architecture"
#error "This header is only meant to be used on x86 and x64 architecture"
 ^
/Library/Developer/CommandLineTools/usr/lib/clang/14.0.0/include/mmintrin.h:37:5: error: use of undeclared identifier '__builtin_ia32_emms'; did you mean '__builtin_isless'?
    __builtin_ia32_emms();
...

I wonder whether there is a quick fix to the issue?

Thanks,
Derek

Build fTetraWild without tbb library

Hi Yixin,

I was trying to compile fTetWild without TBB library by setting the FLOAT_TETWILD_ENABLE_TBB option to OFF. However, after doing so I got quite a few error messages from cmake. It seems that TBB is required to build fast_winding_number, FloatTetwild_bin, FloatTetwild. Any clue how to fixed it?

Thanks,

Hao

error: downloading 'https://github.com/CLIUtils/CLI11/archive/v1.8.0.tar.gz' failed

hello,I got a problem when I try to run the order "cmake .."
(It seems like the same problem metioned in TetWild's Issuues which helped me inrunning TetWild but not the same in ftetwild)
here it is

[root@localhost build]# cmake ..
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test IS_SUPPORTED_-Wall
-- Performing Test IS_SUPPORTED_-Wall - Success
-- Performing Test IS_SUPPORTED_-Wextra
-- Performing Test IS_SUPPORTED_-Wextra - Success
-- Performing Test IS_SUPPORTED_-pedantic
-- Performing Test IS_SUPPORTED_-pedantic - Success
-- Performing Test IS_SUPPORTED_-Wunused
-- Performing Test IS_SUPPORTED_-Wunused - Success
-- Performing Test IS_SUPPORTED_-Wno-long-long
-- Performing Test IS_SUPPORTED_-Wno-long-long - Success
-- Performing Test IS_SUPPORTED_-Wpointer-arith
-- Performing Test IS_SUPPORTED_-Wpointer-arith - Success
-- Performing Test IS_SUPPORTED_-Wformat-2
-- Performing Test IS_SUPPORTED_-Wformat-2 - Success
-- Performing Test IS_SUPPORTED_-Wuninitialized
-- Performing Test IS_SUPPORTED_-Wuninitialized - Success
-- Performing Test IS_SUPPORTED_-Wcast-qual
-- Performing Test IS_SUPPORTED_-Wcast-qual - Success
-- Performing Test IS_SUPPORTED_-Wmissing-noreturn
-- Performing Test IS_SUPPORTED_-Wmissing-noreturn - Success
-- Performing Test IS_SUPPORTED_-Wmissing-format-attribute
-- Performing Test IS_SUPPORTED_-Wmissing-format-attribute - Success
-- Performing Test IS_SUPPORTED_-Wredundant-decls
-- Performing Test IS_SUPPORTED_-Wredundant-decls - Success
-- Performing Test IS_SUPPORTED_-Werror-implicit
-- Performing Test IS_SUPPORTED_-Werror-implicit - Success
-- Performing Test IS_SUPPORTED_-Werror-nonnull
-- Performing Test IS_SUPPORTED_-Werror-nonnull - Success
-- Performing Test IS_SUPPORTED_-Werror-init-self
-- Performing Test IS_SUPPORTED_-Werror-init-self - Success
-- Performing Test IS_SUPPORTED_-Werror-main
-- Performing Test IS_SUPPORTED_-Werror-main - Success
-- Performing Test IS_SUPPORTED_-Werror-missing-braces
-- Performing Test IS_SUPPORTED_-Werror-missing-braces - Success
-- Performing Test IS_SUPPORTED_-Werror-sequence-point
-- Performing Test IS_SUPPORTED_-Werror-sequence-point - Success
-- Performing Test IS_SUPPORTED_-Werror-return-type
-- Performing Test IS_SUPPORTED_-Werror-return-type - Success
-- Performing Test IS_SUPPORTED_-Werror-trigraphs
-- Performing Test IS_SUPPORTED_-Werror-trigraphs - Success
-- Performing Test IS_SUPPORTED_-Werror-array-bounds
-- Performing Test IS_SUPPORTED_-Werror-array-bounds - Success
-- Performing Test IS_SUPPORTED_-Werror-write-strings
-- Performing Test IS_SUPPORTED_-Werror-write-strings - Success
-- Performing Test IS_SUPPORTED_-Werror-address
-- Performing Test IS_SUPPORTED_-Werror-address - Success
-- Performing Test IS_SUPPORTED_-Werror-int-to-pointer-cast
-- Performing Test IS_SUPPORTED_-Werror-int-to-pointer-cast - Success
-- Performing Test IS_SUPPORTED_-Werror-pointer-to-int-cast
-- Performing Test IS_SUPPORTED_-Werror-pointer-to-int-cast - Success
-- Performing Test IS_SUPPORTED_-Wno-unused-variable
-- Performing Test IS_SUPPORTED_-Wno-unused-variable - Success
-- Performing Test IS_SUPPORTED_-Wunused-but-set-variable
-- Performing Test IS_SUPPORTED_-Wunused-but-set-variable - Success
-- Performing Test IS_SUPPORTED_-Wno-unused-parameter
-- Performing Test IS_SUPPORTED_-Wno-unused-parameter - Success
-- Performing Test IS_SUPPORTED_-Wno-old-style-cast
-- Performing Test IS_SUPPORTED_-Wno-old-style-cast - Success
-- Performing Test IS_SUPPORTED_-Wshadow
-- Performing Test IS_SUPPORTED_-Wshadow - Success
-- Performing Test IS_SUPPORTED_-Wstrict-null-sentinel
-- Performing Test IS_SUPPORTED_-Wstrict-null-sentinel - Success
-- Performing Test IS_SUPPORTED_-Woverloaded-virtual
-- Performing Test IS_SUPPORTED_-Woverloaded-virtual - Success
-- Performing Test IS_SUPPORTED_-Wsign-promo
-- Performing Test IS_SUPPORTED_-Wsign-promo - Success
-- Performing Test IS_SUPPORTED_-Wstack-protector
-- Performing Test IS_SUPPORTED_-Wstack-protector - Success
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing - Success
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing-2
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing-2 - Success
-- Performing Test IS_SUPPORTED_-Wswitch-default
-- Performing Test IS_SUPPORTED_-Wswitch-default - Success
-- Performing Test IS_SUPPORTED_-Wswitch-enum
-- Performing Test IS_SUPPORTED_-Wswitch-enum - Success
-- Performing Test IS_SUPPORTED_-Wswitch-unreachable
-- Performing Test IS_SUPPORTED_-Wswitch-unreachable - Failed
-- Performing Test IS_SUPPORTED_-Wcast-align
-- Performing Test IS_SUPPORTED_-Wcast-align - Success
-- Performing Test IS_SUPPORTED_-Wdisabled-optimization
-- Performing Test IS_SUPPORTED_-Wdisabled-optimization - Success
-- Performing Test IS_SUPPORTED_-Winvalid-pch
-- Performing Test IS_SUPPORTED_-Winvalid-pch - Success
-- Performing Test IS_SUPPORTED_-Wpacked
-- Performing Test IS_SUPPORTED_-Wpacked - Success
-- Performing Test IS_SUPPORTED_-Wno-padded
-- Performing Test IS_SUPPORTED_-Wno-padded - Success
-- Performing Test IS_SUPPORTED_-Wstrict-overflow
-- Performing Test IS_SUPPORTED_-Wstrict-overflow - Success
-- Performing Test IS_SUPPORTED_-Wstrict-overflow-2
-- Performing Test IS_SUPPORTED_-Wstrict-overflow-2 - Success
-- Performing Test IS_SUPPORTED_-Wctor-dtor-privacy
-- Performing Test IS_SUPPORTED_-Wctor-dtor-privacy - Success
-- Performing Test IS_SUPPORTED_-Wlogical-op
-- Performing Test IS_SUPPORTED_-Wlogical-op - Success
-- Performing Test IS_SUPPORTED_-Wnoexcept
-- Performing Test IS_SUPPORTED_-Wnoexcept - Success
-- Performing Test IS_SUPPORTED_-Wnon-virtual-dtor
-- Performing Test IS_SUPPORTED_-Wnon-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Wdelete-non-virtual-dtor
-- Performing Test IS_SUPPORTED_-Wdelete-non-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Werror-non-virtual-dtor
-- Performing Test IS_SUPPORTED_-Werror-non-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Werror-delete-non-virtual-dtor
-- Performing Test IS_SUPPORTED_-Werror-delete-non-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Wno-sign-compare
-- Performing Test IS_SUPPORTED_-Wno-sign-compare - Success
-- Performing Test IS_SUPPORTED_-Wnull-dereference
-- Performing Test IS_SUPPORTED_-Wnull-dereference - Failed
-- Performing Test IS_SUPPORTED_-fdelete-null-pointer-checks
-- Performing Test IS_SUPPORTED_-fdelete-null-pointer-checks - Success
-- Performing Test IS_SUPPORTED_-Wduplicated-cond
-- Performing Test IS_SUPPORTED_-Wduplicated-cond - Failed
-- Performing Test IS_SUPPORTED_-Wmisleading-indentation
-- Performing Test IS_SUPPORTED_-Wmisleading-indentation - Failed
-- Performing Test IS_SUPPORTED_-fno-omit-frame-pointer
-- Performing Test IS_SUPPORTED_-fno-omit-frame-pointer - Success
-- Performing Test IS_SUPPORTED_-fno-optimize-sibling-calls
-- Performing Test IS_SUPPORTED_-fno-optimize-sibling-calls - Success
CMake Error at .cache/cli11/cli11-download-prefix/src/cli11-download-stamp/downl oad-cli11-download.cmake:159 (message):
Each download failed!

error: downloading 'https://github.com/CLIUtils/CLI11/archive/v1.8.0.tar.gz'                                                                                                                               failed
     status_code: 1
     status_string: "Unsupported protocol"
     log:
     --- LOG BEGIN ---
     Protocol "https" not supported or disabled in libcurl

Closing connection -1

     --- LOG END ---
     error: downloading 'https://github.com/CLIUtils/CLI11/archive/v1.8.0.ta                                                                                                                              r.gz' failed
     status_code: 1
     status_string: "Unsupported protocol"
     log:
     --- LOG BEGIN ---
     Protocol "https" not supported or disabled in libcurl

Closing connection -1

     --- LOG END ---
     error: downloading 'https://github.com/CLIUtils/CLI11/archive/v1.8.0.ta                                                                                                                          r.gz' failed
     status_code: 1
     status_string: "Unsupported protocol"
     log:
     --- LOG BEGIN ---
     Protocol "https" not supported or disabled in libcurl

Closing connection -1

     --- LOG END ---
     error: downloading 'https://github.com/CLIUtils/CLI11/archive/v1.8.0.ta                                                                                                                              r.gz' failed
     status_code: 1
     status_string: "Unsupported protocol"
     log:
     --- LOG BEGIN ---
     Protocol "https" not supported or disabled in libcurl

Closing connection -1

     --- LOG END ---
     error: downloading 'https://github.com/CLIUtils/CLI11/archive/v1.8.0.ta                                                                                                                              r.gz' failed
     status_code: 1
     status_string: "Unsupported protocol"
     log:
     --- LOG BEGIN ---
     Protocol "https" not supported or disabled in libcurl

Closing connection -1

     --- LOG END ---
     error: downloading 'https://github.com/CLIUtils/CLI11/archive/v1.8.0.ta                                                                                                                              r.gz' failed
     status_code: 1
     status_string: "Unsupported protocol"
     log:
     --- LOG BEGIN ---
     Protocol "https" not supported or disabled in libcurl

Closing connection -1

     --- LOG END ---

gmake[2]: *** [cli11-download-prefix/src/cli11-download-stamp/cli11-download-dow nload] 错误 1
gmake[1]: *** [CMakeFiles/cli11-download.dir/all] 错误 2
gmake: *** [all] 错误 2
CMake Error at cmake/DownloadProject.cmake:179 (message):
Build step for cli11 failed: 2
Call Stack (most recent call first):
cmake/FloatTetwildDownloadExternal.cmake:15 (download_project)
cmake/FloatTetwildDownloadExternal.cmake:53 (float_tetwild_download_project)
cmake/FloatTetwildDependencies.cmake:20 (float_tetwild_download_cli11)
CMakeLists.txt:73 (include)

-- Configuring incomplete, errors occurred!
See also "/root/fTetWild/build/CMakeFiles/CMakeOutput.log".
See also "/root/fTetWild/build/CMakeFiles/CMakeError.log".

I'd be appreciated if i can get some advice. THANKS!!

Input parameters manifold_surface and input_tags

Hi,

I have difficulties in understanding the input parameters "manifold_surface" and "input_tags".

(1) Is it a better choice to set manifold_surface to true since it guarantees a 2-manifold output? Why does the author set it to false by default?

(2) What's the meaning of "input_tags" and how to use it?

Thanks!

Inquiring input mesh used in the paper

Hi,
Before all, fTetWild is much faster than regular TetWild and we are making use of this version, thank you for that.
You have mentioned an input mesh (shown below) with 93 million vertices in your paper. Is it possible that you can refer us to it so that we can use it too?
image

Sincerely.

ouput with bool does not return any elements/cells

blocks.zip
Hi, thanks for a very nice tool. I have been playing around with the --csg option but cannot seem to get any cells returned in the output file. Maybe I have compiled it or am using it wrong, but I'm calling fTetWild as:

ftetwild --csg bool.json -o o.msh --no-binary

with the file bool.json:

{
    "operation": "join",
    "left": "b1.stl",
    "right": "b2.stl"
}

where b1.stl and b2.stl are just unit blocks (b2 offset by 0.5 unit lengths). In the resulting o.msh the nodes are written but the element list is empty, that is:

$Elements
0
$EndElements

Meshing the blocks by themselves work fine, so should this work and is there anything I'm doing wrong here?

A error when generating FloatTetwild_bin in Visual Studio

Hi, after cmake, I choose Visual Studio 2019 to generate FloatTetwild_bin.
And i had this error.

D:\Mesh2Tet-main\fTetWild\build\Debug\FloatTetwild_bin.exe : fatal error LNK1169: one or more multiply defined symbols were found

CMake error for GMP prereq

Hello,

I am trying to make a VS 2017 solution using CMake, which give the following error:

Selecting Windows SDK version 10.0.17763.0 to target Windows 10.0.18363.
Version: 5.3.0
Build type: Release
CXX_STANDARD: 11
MSVC -> forcing use of statically-linked runtime.
Creating target: igl::core (igl)
Found Geogram here: C:/dev/fTetWild/3rdparty/geogram/src/lib/../..
Using local options file: C:/dev/fTetWild/3rdparty/geogram/CMakeOptions.txt
Configuring build for standalone Geogram (without Vorpaline)
Configuring 64 bits build
Doxygen >= 1.7.0 not found, cannot generate documentation
CMake Warning (dev) at C:/Program Files/CMake/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (GMP) does
  not match the name of the calling package (GMPfTetWild).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/FindGMPfTetWild.cmake:32 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:88 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

Could NOT find GMP (missing: GMP_INCLUDE_DIRS GMP_LIBRARIES) 
GMP libs: GMP_LIBRARIES-NOTFOUND GMP_INCLUDE_DIRS-NOTFOUND
CMake Error at CMakeLists.txt:90 (MESSAGE):
  Cannot find GMP


Configuring incomplete, errors occurred!
See also "C:/dev/fTetWild/bin/CMakeFiles/CMakeOutput.log".
See also "C:/dev/fTetWild/bin/CMakeFiles/CMakeError.log".

I am not used to CMake, but will try to find a solution and post here if I find it. Otherwise, any hints are welcome.

Abnormal termination on both Windows and Linux

I have built on both Windows 10 and Ubuntu 18.04. I have tried a few meshes and they all end with abnormal termination. For example, for this STL mesh: https://www.thingiverse.com/thing:11747

On Windows:

...

//////////////// postprocessing ////////////////
edge collapsing...
fixed 0 tangled element
success(env) = 17
success = 94(75311)
success(env) = 0
success = 2(9010)
success(env) = 0
success = 3(276)
success(env) = 0
success = 0(167)
edge collapsing done!
time = 16.3926s
#v = 6292
#t = 33571
max_energy = 7.924
avg_energy = 4.05864
[2020-08-01 10:38:55.925] [float-tetwild] [info] mesh optimization 302.945s
[2020-08-01 10:38:55.925] [float-tetwild] [info]
[2020-08-01 10:38:56.450] [float-tetwild] [info] correct_tracked_surface_orientation done
[2020-08-01 10:39:19.279] [float-tetwild] [info] after winding number
[2020-08-01 10:39:19.281] [float-tetwild] [info] #v = 2925
[2020-08-01 10:39:19.290] [float-tetwild] [info] #t = 8161
Abnormal program termination: [2020-08-01 10:39:19.290] [float-tetwild] [function terminate() was called
info

On Linux:

...

//////////////// postprocessing ////////////////
edge collapsing...
fixed 0 tangled element
success(env) = 12
success = 83(77850)
success(env) = 4
success = 7(7278)
success(env) = 0
success = 5(930)
success(env) = 1
success = 1(511)
success(env) = 0
success = 0(127)
edge collapsing done!
time = 0.315616s
#v = 6463
#t = 34688
max_energy = 7.8915
avg_energy = 4.03743
[2020-08-01 15:34:15.472] [float-tetwild] [info] mesh optimization 5.74474s
[2020-08-01 15:34:15.472] [float-tetwild] [info]
[2020-08-01 15:34:15.491] [float-tetwild] [info] correct_tracked_surface_orientation done
[2020-08-01 15:34:15.565] [float-tetwild] [info] after winding number
terminate called after throwing an instance of '[2020-08-01 15:34:15.565] [float-tetwild] [info] #v = 3004
std::length_error[2020-08-01 15:34:15.565] [float-tetwild] [info] #t = 8433
'
[2020-08-01 15:34:15.565] [float-tetwild] [info] winding number 0.092569s
  what():  [2020-08-01 15:34:15.565] [float-tetwild] [info]
vector::_M_default_append
Aborted (core dumped)

I also noticed how much longer it takes on Windows, and that the number of vertices and such are different. I'm chalking that up to different precision or the GMP library, but I would like to find out the reason as well.

EDIT: FloatTetwild_bin -i beam-9x1.stl was the command used, defaults only

A problem about optimizing

Hello, professor!
I recently found an issue when using this code, the code doesn't seem to remove the mesh outside the geometry in advance before optimizing the mesh. This leads to a huge increase in the time cost and space cost of mesh optimization, after all, most people only want the mesh inside the geometry. I counted the changes in the number of grids before and after filter_outside, which further confirmed my judgment.
I would like to ask if my problem is real, and if so, I would like to optimize this problem to improve the efficiency of the code.
I really hope you can give me some information about this.

build fails on gcc13

Hi,
building fTetWild fails with gcc 13 with the following error:

[  0%] Building CXX object tbb/CMakeFiles/tbb_static.dir/src/old/concurrent_queue_v2.cpp.o
[  0%] Building CXX object tbb/CMakeFiles/tbb_static.dir/src/old/concurrent_vector_v2.cpp.o
In file included from /home/marius/projects/emimesh/fTetWild/3rdparty/tbb/src/old/concurrent_vector_v2.cpp:20:
/home/marius/projects/emimesh/fTetWild/3rdparty/tbb/include/tbb/task.h:274:20: error: declaration of ‘tbb::task& tbb::internal::task_prefix::task()’ changes meaning of ‘task’ [-Wchanges-meaning]
  274 |         tbb::task& task() {return *reinterpret_cast<tbb::task*>(this+1);}
      |                    ^~~~
/home/marius/projects/emimesh/fTetWild/3rdparty/tbb/include/tbb/task.h:233:9: note: used here to mean ‘class tbb::task’
  233 |         task* next_offloaded;
      |         ^~~~
/home/marius/projects/emimesh/fTetWild/3rdparty/tbb/include/tbb/task.h:29:7: note: declared here
   29 | class task;
      |       ^~~~
cc1plus: note: unrecognized command-line option ‘-Wno-keyword-macro’ may have been intended to silence earlier diagnostics
make[2]: *** [tbb/CMakeFiles/tbb_static.dir/build.make:90: tbb/CMakeFiles/tbb_static.dir/src/old/concurrent_vector_v2.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1300: tbb/CMakeFiles/tbb_static.dir/all] Error 2

It seems there is already a fix for it in TBB:

oneapi-src/oneTBB#833

I'm running manjaro/arch linux with gcc13.

Cmake outout:

-- The C compiler identification is GNU 13.2.1
-- The CXX compiler identification is GNU 13.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- GCC >= 4.9 detected, enabling colored diagnostics
CMake Deprecation Warning at cmake/Warnings.cmake:2 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.
Call Stack (most recent call first):
  CMakeLists.txt:32 (include)


-- Performing Test IS_SUPPORTED_-Wall
-- Performing Test IS_SUPPORTED_-Wall - Success
-- Performing Test IS_SUPPORTED_-Wextra
-- Performing Test IS_SUPPORTED_-Wextra - Success
-- Performing Test IS_SUPPORTED_-pedantic
-- Performing Test IS_SUPPORTED_-pedantic - Success
-- Performing Test IS_SUPPORTED_-Wunused
-- Performing Test IS_SUPPORTED_-Wunused - Success
-- Performing Test IS_SUPPORTED_-Wno-long-long
-- Performing Test IS_SUPPORTED_-Wno-long-long - Success
-- Performing Test IS_SUPPORTED_-Wpointer-arith
-- Performing Test IS_SUPPORTED_-Wpointer-arith - Success
-- Performing Test IS_SUPPORTED_-Wformat-2
-- Performing Test IS_SUPPORTED_-Wformat-2 - Success
-- Performing Test IS_SUPPORTED_-Wuninitialized
-- Performing Test IS_SUPPORTED_-Wuninitialized - Success
-- Performing Test IS_SUPPORTED_-Wcast-qual
-- Performing Test IS_SUPPORTED_-Wcast-qual - Success
-- Performing Test IS_SUPPORTED_-Wmissing-noreturn
-- Performing Test IS_SUPPORTED_-Wmissing-noreturn - Success
-- Performing Test IS_SUPPORTED_-Wmissing-format-attribute
-- Performing Test IS_SUPPORTED_-Wmissing-format-attribute - Success
-- Performing Test IS_SUPPORTED_-Wredundant-decls
-- Performing Test IS_SUPPORTED_-Wredundant-decls - Success
-- Performing Test IS_SUPPORTED_-Werror-implicit
-- Performing Test IS_SUPPORTED_-Werror-implicit - Failed
-- Performing Test IS_SUPPORTED_-Werror-nonnull
-- Performing Test IS_SUPPORTED_-Werror-nonnull - Success
-- Performing Test IS_SUPPORTED_-Werror-init-self
-- Performing Test IS_SUPPORTED_-Werror-init-self - Success
-- Performing Test IS_SUPPORTED_-Werror-main
-- Performing Test IS_SUPPORTED_-Werror-main - Success
-- Performing Test IS_SUPPORTED_-Werror-missing-braces
-- Performing Test IS_SUPPORTED_-Werror-missing-braces - Success
-- Performing Test IS_SUPPORTED_-Werror-sequence-point
-- Performing Test IS_SUPPORTED_-Werror-sequence-point - Success
-- Performing Test IS_SUPPORTED_-Werror-return-type
-- Performing Test IS_SUPPORTED_-Werror-return-type - Success
-- Performing Test IS_SUPPORTED_-Werror-trigraphs
-- Performing Test IS_SUPPORTED_-Werror-trigraphs - Success
-- Performing Test IS_SUPPORTED_-Werror-array-bounds
-- Performing Test IS_SUPPORTED_-Werror-array-bounds - Success
-- Performing Test IS_SUPPORTED_-Werror-write-strings
-- Performing Test IS_SUPPORTED_-Werror-write-strings - Success
-- Performing Test IS_SUPPORTED_-Werror-address
-- Performing Test IS_SUPPORTED_-Werror-address - Success
-- Performing Test IS_SUPPORTED_-Werror-int-to-pointer-cast
-- Performing Test IS_SUPPORTED_-Werror-int-to-pointer-cast - Success
-- Performing Test IS_SUPPORTED_-Werror-pointer-to-int-cast
-- Performing Test IS_SUPPORTED_-Werror-pointer-to-int-cast - Failed
-- Performing Test IS_SUPPORTED_-Wno-unused-variable
-- Performing Test IS_SUPPORTED_-Wno-unused-variable - Success
-- Performing Test IS_SUPPORTED_-Wunused-but-set-variable
-- Performing Test IS_SUPPORTED_-Wunused-but-set-variable - Success
-- Performing Test IS_SUPPORTED_-Wno-unused-parameter
-- Performing Test IS_SUPPORTED_-Wno-unused-parameter - Success
-- Performing Test IS_SUPPORTED_-Wno-old-style-cast
-- Performing Test IS_SUPPORTED_-Wno-old-style-cast - Success
-- Performing Test IS_SUPPORTED_-Wshadow
-- Performing Test IS_SUPPORTED_-Wshadow - Success
-- Performing Test IS_SUPPORTED_-Wstrict-null-sentinel
-- Performing Test IS_SUPPORTED_-Wstrict-null-sentinel - Success
-- Performing Test IS_SUPPORTED_-Woverloaded-virtual
-- Performing Test IS_SUPPORTED_-Woverloaded-virtual - Success
-- Performing Test IS_SUPPORTED_-Wsign-promo
-- Performing Test IS_SUPPORTED_-Wsign-promo - Success
-- Performing Test IS_SUPPORTED_-Wstack-protector
-- Performing Test IS_SUPPORTED_-Wstack-protector - Success
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing - Success
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing-2
-- Performing Test IS_SUPPORTED_-Wstrict-aliasing-2 - Success
-- Performing Test IS_SUPPORTED_-Wswitch-default
-- Performing Test IS_SUPPORTED_-Wswitch-default - Success
-- Performing Test IS_SUPPORTED_-Wswitch-enum
-- Performing Test IS_SUPPORTED_-Wswitch-enum - Success
-- Performing Test IS_SUPPORTED_-Wswitch-unreachable
-- Performing Test IS_SUPPORTED_-Wswitch-unreachable - Success
-- Performing Test IS_SUPPORTED_-Wcast-align
-- Performing Test IS_SUPPORTED_-Wcast-align - Success
-- Performing Test IS_SUPPORTED_-Wdisabled-optimization
-- Performing Test IS_SUPPORTED_-Wdisabled-optimization - Success
-- Performing Test IS_SUPPORTED_-Winvalid-pch
-- Performing Test IS_SUPPORTED_-Winvalid-pch - Success
-- Performing Test IS_SUPPORTED_-Wpacked
-- Performing Test IS_SUPPORTED_-Wpacked - Success
-- Performing Test IS_SUPPORTED_-Wno-padded
-- Performing Test IS_SUPPORTED_-Wno-padded - Success
-- Performing Test IS_SUPPORTED_-Wstrict-overflow
-- Performing Test IS_SUPPORTED_-Wstrict-overflow - Success
-- Performing Test IS_SUPPORTED_-Wstrict-overflow-2
-- Performing Test IS_SUPPORTED_-Wstrict-overflow-2 - Success
-- Performing Test IS_SUPPORTED_-Wctor-dtor-privacy
-- Performing Test IS_SUPPORTED_-Wctor-dtor-privacy - Success
-- Performing Test IS_SUPPORTED_-Wlogical-op
-- Performing Test IS_SUPPORTED_-Wlogical-op - Success
-- Performing Test IS_SUPPORTED_-Wnoexcept
-- Performing Test IS_SUPPORTED_-Wnoexcept - Success
-- Performing Test IS_SUPPORTED_-Wnon-virtual-dtor
-- Performing Test IS_SUPPORTED_-Wnon-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Wdelete-non-virtual-dtor
-- Performing Test IS_SUPPORTED_-Wdelete-non-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Werror-non-virtual-dtor
-- Performing Test IS_SUPPORTED_-Werror-non-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Werror-delete-non-virtual-dtor
-- Performing Test IS_SUPPORTED_-Werror-delete-non-virtual-dtor - Success
-- Performing Test IS_SUPPORTED_-Wno-sign-compare
-- Performing Test IS_SUPPORTED_-Wno-sign-compare - Success
-- Performing Test IS_SUPPORTED_-Wnull-dereference
-- Performing Test IS_SUPPORTED_-Wnull-dereference - Success
-- Performing Test IS_SUPPORTED_-fdelete-null-pointer-checks
-- Performing Test IS_SUPPORTED_-fdelete-null-pointer-checks - Success
-- Performing Test IS_SUPPORTED_-Wduplicated-cond
-- Performing Test IS_SUPPORTED_-Wduplicated-cond - Success
-- Performing Test IS_SUPPORTED_-Wmisleading-indentation
-- Performing Test IS_SUPPORTED_-Wmisleading-indentation - Success
-- Performing Test IS_SUPPORTED_-fno-omit-frame-pointer
-- Performing Test IS_SUPPORTED_-fno-omit-frame-pointer - Success
-- Performing Test IS_SUPPORTED_-fno-optimize-sibling-calls
-- Performing Test IS_SUPPORTED_-fno-optimize-sibling-calls - Success
CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at /usr/share/cmake/Modules/ExternalProject.cmake:3136 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  /usr/share/cmake/Modules/ExternalProject.cmake:4345 (_ep_add_download_command)
  CMakeLists.txt:9 (ExternalProject_Add)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Deprecation Warning at 3rdparty/cli11/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at /usr/share/cmake/Modules/ExternalProject.cmake:3136 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  /usr/share/cmake/Modules/ExternalProject.cmake:4345 (_ep_add_download_command)
  CMakeLists.txt:9 (ExternalProject_Add)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Deprecation Warning at 3rdparty/fmt/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Version: 5.3.0
-- Build type: 
-- CXX_STANDARD: 11
-- Performing Test has_std_11_flag
-- Performing Test has_std_11_flag - Success
-- Performing Test has_std_0x_flag
-- Performing Test has_std_0x_flag - Success
-- Performing Test SUPPORTS_VARIADIC_TEMPLATES
-- Performing Test SUPPORTS_VARIADIC_TEMPLATES - Success
-- Performing Test SUPPORTS_INITIALIZER_LIST
-- Performing Test SUPPORTS_INITIALIZER_LIST - Success
-- Performing Test SUPPORTS_ENUM_BASE
-- Performing Test SUPPORTS_ENUM_BASE - Success
-- Performing Test SUPPORTS_TYPE_TRAITS
-- Performing Test SUPPORTS_TYPE_TRAITS - Success
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS
-- Performing Test SUPPORTS_USER_DEFINED_LITERALS - Success
-- Looking for open
-- Looking for open - found
CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at /usr/share/cmake/Modules/ExternalProject.cmake:3136 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  /usr/share/cmake/Modules/ExternalProject.cmake:4345 (_ep_add_download_command)
  CMakeLists.txt:9 (ExternalProject_Add)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


Cloning into 'libigl'...
HEAD is now at 45cfc79f Viewer crash after calling clear (#1582)
CMake Deprecation Warning at 3rdparty/libigl/cmake/libigl.cmake:1 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.
Call Stack (most recent call first):
  cmake/FloatTetwildDependencies.cmake:48 (include)
  CMakeLists.txt:73 (include)


CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


Cloning into 'eigen'...
HEAD is now at cf794d3b7 bump to 3.3.7
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Creating target: igl::core (igl)
CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


Cloning into 'predicates'...
HEAD is now at 5a1d219 Don't hide exactinit.
CMake Deprecation Warning at 3rdparty/libigl/external/predicates/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Creating target: igl::predicates (igl_predicates)
CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


Cloning into 'geogram'...
HEAD is now at b613750 fix for M1
-- Found Geogram here: /home/marius/projects/emimesh/fTetWild/3rdparty/geogram/src/lib/../..
CMake Deprecation Warning at 3rdparty/geogram/CMakeLists.txt:9 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Using local options file: /home/marius/projects/emimesh/fTetWild/3rdparty/geogram/CMakeOptions.txt
-- Configuring build for standalone Geogram (without Vorpaline)
-- Doxygen >= 1.7.0 not found, cannot generate documentation
CMake Deprecation Warning at 3rdparty/geogram/doc/CMakeLists.txt:7 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Found OpenMP_C: -fopenmp (found version "4.5") 
-- Found OpenMP_CXX: -fopenmp (found version "4.5") 
-- Found OpenMP: TRUE (found version "4.5")  
CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


Cloning into 'tbb'...
HEAD is now at ddbe45c Export config for shared TBB. (#57)
CMake Deprecation Warning at 3rdparty/tbb/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Setting build type to 'Release' as none was specified.
-- Performing Test SUPPORTS_STDCXX11
-- Performing Test SUPPORTS_STDCXX11 - Success
-- Performing Test SUPPORTS_MRTM
-- Performing Test SUPPORTS_MRTM - Success
-- Performing Test SUPPORTS_FLIFETIME
-- Performing Test SUPPORTS_FLIFETIME - Success
CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


Cloning into 'json'...
HEAD is now at 0901d33 v3.1.2
CMake Warning (dev) at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
  The package name passed to `find_package_handle_standard_args` (GMP) does
  not match the name of the calling package (GMPfTetWild).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/FindGMPfTetWild.cmake:32 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:79 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found GMP: /usr/include  
-- GMP libs: /usr/lib/libgmp.so /usr/include
CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at /usr/share/cmake/Modules/ExternalProject.cmake:3136 (message):
  The DOWNLOAD_EXTRACT_TIMESTAMP option was not given and policy CMP0135 is
  not set.  The policy's OLD behavior will be used.  When using a URL
  download, the timestamps of extracted files should preferably be that of
  the time of extraction, otherwise code that depends on the extracted
  contents might not be rebuilt if the URL changes.  The OLD behavior
  preserves the timestamps from the archive instead, but this is usually not
  what you want.  Update your project to the NEW behavior or specify the
  DOWNLOAD_EXTRACT_TIMESTAMP option with a value of true to avoid this
  robustness issue.
Call Stack (most recent call first):
  /usr/share/cmake/Modules/ExternalProject.cmake:4345 (_ep_add_download_command)
  CMakeLists.txt:9 (ExternalProject_Add)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Performing Test HAVE_FLAG__ffile_prefix_map__home_marius_projects_emimesh_fTetWild_3rdparty_Catch2__
-- Performing Test HAVE_FLAG__ffile_prefix_map__home_marius_projects_emimesh_fTetWild_3rdparty_Catch2__ - Success
-- Configuring done (32.7s)
-- Generating done (0.0s)
-- Build files have been written to: /home/marius/projects/emimesh/fTetWild/build

Compile fTetWild with MinGW

I need to compile fTetWild with mingw on windows but got the following errors. I believe some settings need to be done for geogram. Any clue?

Scanning dependencies of target geogram_third_party [ 22%] Building C object geogram/src/lib/geogram/third_party/CMakeFiles/geogram_third_party.dir/LM7/libmeshb7.c.obj gcc.exe: error: /D_SECURE_SCL=0: No such file or directory gcc.exe: error: /GS-: No such file or directory gcc.exe: error: /Ox: No such file or directory gcc.exe: error: /nologo: No such file or directory gcc.exe: error: /MP: No such file or directory gcc.exe: error: /wd4275: No such file or directory gcc.exe: error: /wd4996: No such file or directory gcc.exe: error: /wd4512: No such file or directory gcc.exe: error: /bigobj: No such file or directory gcc.exe: error: /W3: No such file or directory gcc.exe: error: /wd4245: No such file or directory gcc.exe: error: /wd4389: No such file or directory

meshing failed on floatTetWild::tetrahedralization but works with main FloatTetwild_bin

I came across following problem:
if I build fTetWild on linux ( Linux Mint 19.3, gcc 7.5.0) , then running FloatTetwild_bin -i test_surface.ply -o test_surface.msh works as expected. But if i integrate fTetWild as a library, and run the same operation , I am getting an error:

Assertion failed: Delta4_sign != ZERO.
File: ../external/fTetWild/3rdparty/geogram/src/lib/geogram/numerics/predicates.cpp,
Line: 1184

my code , based on this comment: libigl/libigl#1535 :

            floatTetWild::Parameters tetwild_par;
            GEO::Mesh       sf_mesh;

            std::vector<Eigen::Vector3d> points;
            std::vector<Eigen::Vector3i> faces;
            std::vector<int>             input_tags;

            floatTetWild::MeshIO::load_mesh("test_surface.ply",points, faces, sf_mesh, input_tags);

            Eigen::MatrixXd X;
            Eigen::MatrixXi Tet;            

            floatTetWild::tetrahedralization(sf_mesh, tetwild_par, X ,Tet);

test_surface.ply.gz

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.