py_unproject_onto_mesh.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // COMPLETE BINDINGS ========================
  2. m.def("unproject_onto_mesh", []
  3. (
  4. const Eigen::MatrixXd & pos,
  5. const Eigen::MatrixXd & model,
  6. const Eigen::MatrixXd & proj,
  7. const Eigen::MatrixXd & viewport,
  8. const Eigen::MatrixXd& V,
  9. const Eigen::MatrixXi& F,
  10. Eigen::MatrixXi& fid, // TODO: Can we replace this with integer object reference?
  11. Eigen::MatrixXd& bc
  12. )
  13. {
  14. assert_is_Vector2("pos", pos);
  15. Eigen::Vector2f posv;
  16. if (pos.size() != 0)
  17. posv = Eigen::Vector2f(pos.cast<float>());
  18. assert_is_Matrix4("model", model);
  19. Eigen::Matrix4f modelm;
  20. if (model.size() != 0)
  21. modelm = model.cast<float>();
  22. assert_is_Matrix4("proj", proj);
  23. Eigen::Matrix4f projm;
  24. if (proj.size() != 0)
  25. projm = proj.cast<float>();
  26. assert_is_Vector4("viewport", viewport);
  27. Eigen::Vector4f viewportv;
  28. if (viewport.size() != 0)
  29. viewportv = Eigen::Vector4f(viewport.cast<float>());
  30. Eigen::VectorXd bcv;
  31. int fidi;
  32. bool ret = igl::unproject_onto_mesh(posv, modelm, projm, viewportv, V, F, fidi, bcv);
  33. fid(0, 0) = fidi;
  34. bc = bcv;
  35. return ret;
  36. }, __doc_igl_unproject_onto_mesh,
  37. py::arg("pos"), py::arg("model"), py::arg("proj"), py::arg("viewport"), py::arg("V"), py::arg("F"), py::arg("fid"), py::arg("bc"));
  38. // INCOMPLETE BINDINGS ========================
  39. //m.def("unproject_onto_mesh", []
  40. //(
  41. // Eigen::Vector2f & pos,
  42. // Eigen::Matrix4f & model,
  43. // Eigen::Matrix4f & proj,
  44. // Eigen::Vector4f & viewport,
  45. // std::function<bool (const Eigen::Vector3f &, const Eigen::Vector3f &, igl::Hit &)> & shoot_ray,
  46. // int & fid,
  47. // Eigen::MatrixXd& bc
  48. //)
  49. //{
  50. // return igl::unproject_onto_mesh(pos, model, proj, viewport, shoot_ray, fid, bc);
  51. //}, __doc_igl_unproject_onto_mesh,
  52. //py::arg("pos"), py::arg("model"), py::arg("proj"), py::arg("viewport"), py::arg("shoot_ray"), py::arg("fid"), py::arg("bc"));