mikedh / trimesh

Python library for loading and using triangular meshes.
https://trimesh.org
MIT License
3k stars 580 forks source link

trimesh.registration.other_mesh does not pass kwargs to icp #1908

Open Alteration opened 1 year ago

Alteration commented 1 year ago

This issue is related to #1417

Running TriMesh 3.21.5

https://github.com/mikedh/trimesh/blob/main/trimesh/registration.py#L153 https://github.com/mikedh/trimesh/blob/main/trimesh/registration.py#L164

Both call ICP without passing **kwargs so reflection=False will never make it to procrustes

Alteration commented 1 year ago

I am unsure if this is the only issue. Even attempting a manual fix with sending kwargs to icp i am getting a transformation matrix with determinant -0.9999999999999819

The determinant in procrustes is positive, but mesh_to_other on return is negative

mesh_to_other, cost = trimesh.registration.mesh_other(
    floating_ref, fixed, samples=1500, scale=False, reflection=False
)
determinant = np.linalg.det(mesh_to_other)
print(determinant)

Latest run returned -1.0000000000000144