Fix assigning bytes to texture data.

PiperOrigin-RevId: 706747323
Change-Id: I6b0ee67d4f35db3a149ba8d9979546d3c712bb8b
This commit is contained in:
Alessio Quaglino
2024-12-16 10:04:06 -08:00
committed by Copybara-Service
parent a7eb6efd4e
commit 644dfc7fb5
2 changed files with 10 additions and 3 deletions
@@ -170,11 +170,12 @@ def _ptr_binding_code(
return MjTypeVec<std::byte>(self.{fullvarname}->data(),
self.{fullvarname}->size());
}},
[]({rawclassname}& self, py::object rhs) {{
[]({rawclassname}& self, py::bytes& rhs) {{
self.{fullvarname}->clear();
self.{fullvarname}->reserve(py::len(rhs));
for (auto val : rhs) {{
self.{fullvarname}->push_back(py::cast<const std::byte>(val));
std::string_view rhs_view = py::cast<std::string_view>(rhs);
for (auto val : rhs_view) {{
self.{fullvarname}->push_back(static_cast<std::byte>(val));
}}
}}, py::return_value_policy::move);"""
elif vartype == 'mjStringVec':
+6
View File
@@ -891,6 +891,12 @@ class SpecsTest(absltest.TestCase):
with self.assertRaises(IndexError):
material.textures[-1] = 'x'
def test_assign_texture(self):
spec = mujoco.MjSpec()
texture = spec.add_texture(name='texture', height=2, width=2)
texture.data = np.zeros((2, 2, 3), dtype=np.uint8).tobytes()
spec.compile()
def test_attach_units(self):
child = mujoco.MjSpec()
parent = mujoco.MjSpec()