Skip to content

exact_geodesic Python Binding returns empty array #284

@bornexmachina

Description

@bornexmachina

I follow the last part of the tutorial Chapter 1 https://libigl.github.io/libigl-python-bindings/tut-chapter1/

The last example uses d = igl.exact_geodesic(v, f, vs, vt) and the result is unfortunately array([], dtype=float64)

I have verified it with several meshes, it is always the same result.

EDIT

Not sure if helpful, yet I have figured out one finding. I have pulled and built the C++ repo and the 2xx Chapter with the exact_geodesic was turned off. I have manually edit the CMakeCache.txt and now I see that the function is actually building
[ 46%] Building CXX object CMakeFiles/test_igl_core.dir/tests/include/igl/exact_geodesic.cpp.o

EDIT 2

Out of curiosity I have pip installed 2.5.0 version --> here exact_geodesic actually works (but unfortunately most of the example do not due to mass matrix issues)

EDIT 3

OH BOY - I FOUND IT

from the tutorial:

v, f = igl.read_triangle_mesh(os.path.join(root_folder, "data", "bunny_small.off"))

vs = np.array([0])
vt = np.arange(v.shape[0])

d = igl.exact_geodesic(v, f, vs, vt)     #, fs, ft)

well, the implementation of the binding says

m.def(
    "exact_geodesic",
    &pyigl::exact_geodesic,
    "V"_a,
    "F"_a,
    "VS"_a=Eigen::VectorXI(),
    "FS"_a=Eigen::VectorXI(),
    "VT"_a=Eigen::VectorXI(),
    "FT"_a=Eigen::VectorXI(),
    ...

So basically, by using "the short-cut" I pass V, F, VS, FS but no VT and no FT

What actually works is

d = igl.exact_geodesic(v, f, vs, np.array([]), vt, np.array([]))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions