Skip to content

Commit

Permalink
Expose mesh names. (#388)
Browse files Browse the repository at this point in the history
  • Loading branch information
MillionIntegrals authored Apr 15, 2019
1 parent 379bb19 commit 4ae0f51
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
17 changes: 14 additions & 3 deletions mujoco_py/generated/wrappers.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -1001,9 +1001,9 @@ cdef class PyMjModel(object):
cdef np.ndarray _name_keyadr
cdef np.ndarray _names

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

def body_id2name(self, id):
if id not in self._body_id2name:
Expand Down Expand Up @@ -1094,6 +1094,16 @@ cdef class PyMjModel(object):
if name not in self._tendon_name2id:
raise ValueError("No \"tendon\" with name %s exists. Available \"tendon\" names = %s." % (name, self.tendon_names))
return self._tendon_name2id[name]

def mesh_id2name(self, id):
if id not in self._mesh_id2name:
raise ValueError("No mesh with id %d exists." % id)
return self._mesh_id2name[id]

def mesh_name2id(self, name):
if name not in self._mesh_name2id:
raise ValueError("No \"mesh\" with name %s exists. Available \"mesh\" names = %s." % (name, self.mesh_names))
return self._mesh_name2id[name]
cdef public tuple userdata_names
cdef public dict _userdata_id2name
cdef public dict _userdata_name2id
Expand Down Expand Up @@ -1222,6 +1232,7 @@ cdef class PyMjModel(object):
self.actuator_names, self._actuator_name2id, self._actuator_id2name = self._extract_mj_names(p, p.name_actuatoradr, p.nu, mjtObj.mjOBJ_ACTUATOR)
self.sensor_names, self._sensor_name2id, self._sensor_id2name = self._extract_mj_names(p, p.name_sensoradr, p.nsensor, mjtObj.mjOBJ_SENSOR)
self.tendon_names, self._tendon_name2id, self._tendon_id2name = self._extract_mj_names(p, p.name_tendonadr, p.ntendon, mjtObj.mjOBJ_TENDON)
self.mesh_names, self._mesh_name2id, self._mesh_id2name = self._extract_mj_names(p, p.name_meshadr, p.nmesh, mjtObj.mjOBJ_MESH)
self.userdata_names = tuple()
self._userdata_name2id = dict()
self._userdata_id2name = dict()
Expand Down
5 changes: 4 additions & 1 deletion scripts/gen_wrappers.py
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,8 @@ def {name}(self):
'camera',
'actuator',
'sensor',
'tendon']
'tendon',
'mesh']
obj_types_names = [o + '_names' for o in obj_types]
extra += ' cdef readonly tuple ' + ', '.join(obj_types_names) + '\n'
obj_types_id2names = ['_' + o + '_id2name' for o in obj_types]
Expand Down Expand Up @@ -739,6 +740,8 @@ def __dealloc__(self):
'sensor', 'sensor', 'SENSOR')
extra_set += _set_body_identifiers('tendon',
'tendon', 'tendon', 'TENDON')
extra_set += _set_body_identifiers('mesh',
'mesh', 'mesh', 'MESH')
# userdata_names is empty at construction time
extra_set += ' self.userdata_names = tuple()\n'
extra_set += ' self._userdata_name2id = dict()\n'
Expand Down

0 comments on commit 4ae0f51

Please sign in to comment.