Add built-in sphere mesh.
PiperOrigin-RevId: 791162850 Change-Id: I573a414727e79f1a495e0f2282b2faff48ab3443
This commit is contained in:
committed by
Copybara-Service
parent
5220767457
commit
996f0040fd
@@ -1014,6 +1014,15 @@ PYBIND11_MODULE(_specs, m) {
|
||||
},
|
||||
py::arg("resolution") = std::array<int, 2>{0, 0},
|
||||
py::arg("fov") = std::array<double, 2>{0, 0}, py::arg("gamma") = 0);
|
||||
mjsMesh.def(
|
||||
"make_sphere",
|
||||
[](raw::MjsMesh* self, int subdivision) {
|
||||
double params[1] = {static_cast<double>(subdivision)};
|
||||
if (mjs_makeMesh(self, mjMESH_BUILTIN_SPHERE, params, 1)) {
|
||||
throw pybind11::value_error(mjs_getError(mjs_getSpec(self->element)));
|
||||
}
|
||||
},
|
||||
py::arg("subdivision"));
|
||||
mjsMesh.def(
|
||||
"make_hemisphere",
|
||||
[](raw::MjsMesh* self, int subdivision) {
|
||||
|
||||
@@ -499,12 +499,16 @@ class SpecsTest(absltest.TestCase):
|
||||
mesh = spec.add_mesh(name='hemisphere')
|
||||
mesh.make_hemisphere(subdivision=4)
|
||||
|
||||
mesh = spec.add_mesh(name='sphere')
|
||||
mesh.make_sphere(subdivision=2)
|
||||
|
||||
model = spec.compile()
|
||||
self.assertEqual(model.nmesh, 4)
|
||||
self.assertEqual(model.nmesh, 5)
|
||||
self.assertEqual(model.mesh_vertnum[0], 25 * 25)
|
||||
self.assertEqual(model.mesh_vertnum[1], 10)
|
||||
self.assertEqual(model.mesh_vertnum[2], 7)
|
||||
self.assertEqual(model.mesh_vertnum[3], 2 * (4 + 1) * (4 + 2) + 2)
|
||||
self.assertEqual(model.mesh_vertnum[4], 2 + 10 * 4**2)
|
||||
|
||||
def test_compile_errors_with_line_info(self):
|
||||
spec = mujoco.MjSpec()
|
||||
|
||||
Reference in New Issue
Block a user