Skip to content

Commit 4ae0f51

Browse files
Expose mesh names. (#388)
1 parent 379bb19 commit 4ae0f51

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

mujoco_py/generated/wrappers.pxi

+14-3
Original file line numberDiff line numberDiff line change
@@ -1001,9 +1001,9 @@ cdef class PyMjModel(object):
10011001
cdef np.ndarray _name_keyadr
10021002
cdef np.ndarray _names
10031003

1004-
cdef readonly tuple body_names, joint_names, geom_names, site_names, light_names, camera_names, actuator_names, sensor_names, tendon_names
1005-
cdef readonly dict _body_id2name, _joint_id2name, _geom_id2name, _site_id2name, _light_id2name, _camera_id2name, _actuator_id2name, _sensor_id2name, _tendon_id2name
1006-
cdef readonly dict _body_name2id, _joint_name2id, _geom_name2id, _site_name2id, _light_name2id, _camera_name2id, _actuator_name2id, _sensor_name2id, _tendon_name2id
1004+
cdef readonly tuple body_names, joint_names, geom_names, site_names, light_names, camera_names, actuator_names, sensor_names, tendon_names, mesh_names
1005+
cdef readonly dict _body_id2name, _joint_id2name, _geom_id2name, _site_id2name, _light_id2name, _camera_id2name, _actuator_id2name, _sensor_id2name, _tendon_id2name, _mesh_id2name
1006+
cdef readonly dict _body_name2id, _joint_name2id, _geom_name2id, _site_name2id, _light_name2id, _camera_name2id, _actuator_name2id, _sensor_name2id, _tendon_name2id, _mesh_name2id
10071007

10081008
def body_id2name(self, id):
10091009
if id not in self._body_id2name:
@@ -1094,6 +1094,16 @@ cdef class PyMjModel(object):
10941094
if name not in self._tendon_name2id:
10951095
raise ValueError("No \"tendon\" with name %s exists. Available \"tendon\" names = %s." % (name, self.tendon_names))
10961096
return self._tendon_name2id[name]
1097+
1098+
def mesh_id2name(self, id):
1099+
if id not in self._mesh_id2name:
1100+
raise ValueError("No mesh with id %d exists." % id)
1101+
return self._mesh_id2name[id]
1102+
1103+
def mesh_name2id(self, name):
1104+
if name not in self._mesh_name2id:
1105+
raise ValueError("No \"mesh\" with name %s exists. Available \"mesh\" names = %s." % (name, self.mesh_names))
1106+
return self._mesh_name2id[name]
10971107
cdef public tuple userdata_names
10981108
cdef public dict _userdata_id2name
10991109
cdef public dict _userdata_name2id
@@ -1222,6 +1232,7 @@ cdef class PyMjModel(object):
12221232
self.actuator_names, self._actuator_name2id, self._actuator_id2name = self._extract_mj_names(p, p.name_actuatoradr, p.nu, mjtObj.mjOBJ_ACTUATOR)
12231233
self.sensor_names, self._sensor_name2id, self._sensor_id2name = self._extract_mj_names(p, p.name_sensoradr, p.nsensor, mjtObj.mjOBJ_SENSOR)
12241234
self.tendon_names, self._tendon_name2id, self._tendon_id2name = self._extract_mj_names(p, p.name_tendonadr, p.ntendon, mjtObj.mjOBJ_TENDON)
1235+
self.mesh_names, self._mesh_name2id, self._mesh_id2name = self._extract_mj_names(p, p.name_meshadr, p.nmesh, mjtObj.mjOBJ_MESH)
12251236
self.userdata_names = tuple()
12261237
self._userdata_name2id = dict()
12271238
self._userdata_id2name = dict()

scripts/gen_wrappers.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,8 @@ def {name}(self):
654654
'camera',
655655
'actuator',
656656
'sensor',
657-
'tendon']
657+
'tendon',
658+
'mesh']
658659
obj_types_names = [o + '_names' for o in obj_types]
659660
extra += ' cdef readonly tuple ' + ', '.join(obj_types_names) + '\n'
660661
obj_types_id2names = ['_' + o + '_id2name' for o in obj_types]
@@ -739,6 +740,8 @@ def __dealloc__(self):
739740
'sensor', 'sensor', 'SENSOR')
740741
extra_set += _set_body_identifiers('tendon',
741742
'tendon', 'tendon', 'TENDON')
743+
extra_set += _set_body_identifiers('mesh',
744+
'mesh', 'mesh', 'MESH')
742745
# userdata_names is empty at construction time
743746
extra_set += ' self.userdata_names = tuple()\n'
744747
extra_set += ' self._userdata_name2id = dict()\n'

0 commit comments

Comments
 (0)