@@ -15,6 +15,35 @@ using namespace sapien;
1515using namespace sapien ::sapien_renderer;
1616
1717namespace pybind11 ::detail {
18+
19+ template <> struct type_caster <CameraMode> {
20+ PYBIND11_TYPE_CASTER (CameraMode, _(" typing.Literal['perspective', 'orthographic']" ));
21+
22+ bool load (py::handle src, bool convert) {
23+ std::string name = py::cast<std::string>(src);
24+ if (name == " perspective" || name == " pers" ) {
25+ value = CameraMode::ePerspective;
26+ return true ;
27+ } else if (name == " orthographic" || name == " ortho" ) {
28+ value = CameraMode::eOrthographic;
29+ return true ;
30+ }
31+ return false ;
32+ }
33+
34+ static py::handle cast (CameraMode const &src, py::return_value_policy policy,
35+ py::handle parent) {
36+ switch (src) {
37+ case CameraMode::ePerspective:
38+ return py::str (" perspective" ).release ();
39+ case CameraMode::eOrthographic:
40+ return py::str (" orthographic" ).release ();
41+ default :
42+ return py::str (" none" ).release ();
43+ }
44+ }
45+ };
46+
1847template <> struct type_caster <svulkan2::renderer::RTRenderer::DenoiserType> {
1948 PYBIND11_TYPE_CASTER (svulkan2::renderer::RTRenderer::DenoiserType,
2049 _ (" typing.Literal['none', 'oidn', 'optix']" ));
@@ -933,10 +962,26 @@ This function waits for any pending CUDA operations on cuda stream provided by :
933962 .def (" get_skew" , &SapienRenderCameraComponent::getSkew)
934963 .def (" set_skew" , &SapienRenderCameraComponent::setSkew, py::arg (" skew" ))
935964
965+ .def_property_readonly (" mode" , &SapienRenderCameraComponent::getMode)
966+ .def (" get_mode" , &SapienRenderCameraComponent::getMode)
936967 .def (" set_perspective_parameters" , &SapienRenderCameraComponent::setPerspectiveParameters,
937968 py::arg (" near" ), py::arg (" far" ), py::arg (" fx" ), py::arg (" fy" ), py::arg (" cx" ),
938969 py::arg (" cy" ), py::arg (" skew" ))
939970
971+ .def (" set_orthographic_parameters" ,
972+ py::overload_cast<float , float , float >(
973+ &SapienRenderCameraComponent::setOrthographicParameters),
974+ py::arg (" near" ), py::arg (" far" ), py::arg (" top" ))
975+ .def (" set_orthographic_parameters" ,
976+ py::overload_cast<float , float , float , float , float , float >(
977+ &SapienRenderCameraComponent::setOrthographicParameters),
978+ py::arg (" near" ), py::arg (" far" ), py::arg (" left" ), py::arg (" right" ), py::arg (" bottom" ),
979+ py::arg (" top" ))
980+ .def_property_readonly (" ortho_left" , &SapienRenderCameraComponent::getOrthoLeft)
981+ .def_property_readonly (" ortho_right" , &SapienRenderCameraComponent::getOrthoRight)
982+ .def_property_readonly (" ortho_bottom" , &SapienRenderCameraComponent::getOrthoBottom)
983+ .def_property_readonly (" ortho_top" , &SapienRenderCameraComponent::getOrthoTop)
984+
940985 .def (" get_intrinsic_matrix" , &SapienRenderCameraComponent::getIntrinsicMatrix,
941986 " Get 3x3 intrinsic camera matrix in OpenCV format." )
942987 .def (" get_extrinsic_matrix" , &SapienRenderCameraComponent::getExtrinsicMatrix,
@@ -1118,6 +1163,12 @@ consumer library. Make a copy if needed.
11181163 .def (" set_intrinsic_parameters" , &SapienRendererWindow::setCameraIntrinsicParameters,
11191164 py::arg (" near" ), py::arg (" far" ), py::arg (" fx" ), py::arg (" fy" ), py::arg (" cx" ),
11201165 py::arg (" cy" ), py::arg (" skew" ))
1166+
1167+ .def (" set_camera_orthographic_parameters" , &SapienRendererWindow::setCameraOrthoParameters,
1168+ py::arg (" near" ), py::arg (" far" ), py::arg (" top" ))
1169+ .def_property_readonly (" camera_mode" , &SapienRendererWindow::getCameraMode)
1170+ .def_property_readonly (" ortho_top" , &SapienRendererWindow::getCameraOrthoTop)
1171+
11211172 .def (" set_camera_pose" , &SapienRendererWindow::setCameraPose, py::arg (" pose" ))
11221173 .def (" set_camera_position" , &SapienRendererWindow::setCameraPosition, py::arg (" position" ))
11231174 .def (" set_camera_rotation" , &SapienRendererWindow::setCameraRotation, py::arg (" quat" ))
0 commit comments