libigl / libigl-python-bindings

libigl python bindings
https://libigl.github.io/libigl-python-bindings/
GNU General Public License v3.0
318 stars 63 forks source link

"Error: Numerical Issue" on ARAP #217

Open Alex-ThermoMind opened 1 year ago

Alex-ThermoMind commented 1 year ago

I am attempting to perform parameterization using the ARAP class provided by igl.

I start with an open3d mesh generated from a scan (Note it is partial scan of object -- not watertight). I then extract the vertices and triangles from the mesh:

v = np.asarray(mesh.vertices) f = np.asarray(mesh.triangles)

From there I follow the procedure as written in the igl python bindings chapter 4 example for ARAP: I generate an initial guess using harmonic_weights to find circular parameterization, and from there plug this into the arap.solve function.

This works most of the time, however there is occasionally a "Numerical Issue" leading to a failed parameterization.

I tried looking into reasons why this could be happening but I am still unsure. I have tried filling small holes in the mesh, checking the mesh is vertex manifold and edge manifold, but the parameterization fails regardless.

Does anyone know the conditions required from the mesh to ensure stable parameterization?

Any advice would be greatly appreciated

MengtingWang1 commented 8 months ago

It seems I'm having the same problem,Running Obj Marching Cubes ,and vertices.shape and triangles.shape is (0, 3) and (0, 3)

alecjacobson commented 8 months ago

if you're triangle has no vertices or faces then arap won't work

yizhangphd commented 7 months ago

I am attempting to perform parameterization using the ARAP class provided by igl.

I start with an open3d mesh generated from a scan (Note it is partial scan of object -- not watertight). I then extract the vertices and triangles from the mesh:

v = np.asarray(mesh.vertices) f = np.asarray(mesh.triangles)

From there I follow the procedure as written in the igl python bindings chapter 4 example for ARAP: I generate an initial guess using harmonic_weights to find circular parameterization, and from there plug this into the arap.solve function.

This works most of the time, however there is occasionally a "Numerical Issue" leading to a failed parameterization.

I tried looking into reasons why this could be happening but I am still unsure. I have tried filling small holes in the mesh, checking the mesh is vertex manifold and edge manifold, but the parameterization fails regardless.

Does anyone know the conditions required from the mesh to ensure stable parameterization?

Any advice would be greatly appreciated

I had the same problem and this answer solved my problem https://github.com/libigl/libigl-python-bindings/issues/210#issuecomment-1738733309