Skip to content

Commit 0281b11

Browse files
sbohezcopybara-github
authored andcommitted
Expose scene_option as attribute and add render_flag_overrides to MJCFCamera.
PiperOrigin-RevId: 468475294 Change-Id: I9ff6483e85e7ac3f0bf6cb9037d24c27b7e3d0ac
1 parent e100982 commit 0281b11

1 file changed

Lines changed: 27 additions & 2 deletions

File tree

  • dm_control/composer/observation/observable

dm_control/composer/observation/observable/mjcf.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ def __init__(self,
116116
corruptor=None,
117117
depth=False,
118118
segmentation=False,
119-
scene_option=None):
119+
scene_option=None,
120+
render_flag_overrides=None):
120121
"""Initializes this observable.
121122
122123
Args:
@@ -152,6 +153,12 @@ def __init__(self,
152153
scene_option: An optional `wrapper.MjvOption` instance that can be used to
153154
render the scene with custom visualization options. If None then the
154155
default options will be used.
156+
render_flag_overrides: Optional mapping specifying rendering flags to
157+
override. The keys can be either lowercase strings or `mjtRndFlag` enum
158+
values, and the values are the overridden flag values, e.g.
159+
`{'wireframe': True}` or `{mujoco.mjtRndFlag.mjRND_WIREFRAME: True}`.
160+
See `mujoco.mjtRndFlag` for the set of valid flags. Must be None if
161+
either `depth` or `segmentation` is True.
155162
156163
Raises:
157164
ValueError: if `mjcf_element` is not a <camera> element.
@@ -179,6 +186,7 @@ def __init__(self,
179186
self._depth = depth
180187
self._segmentation = segmentation
181188
self._scene_option = scene_option
189+
self._render_flag_overrides = render_flag_overrides
182190
super().__init__(update_interval, buffer_size, delay, aggregator, corruptor)
183191

184192
@property
@@ -213,6 +221,22 @@ def segmentation(self):
213221
def segmentation(self, value):
214222
self._segmentation = value
215223

224+
@property
225+
def scene_option(self):
226+
return self._scene_option
227+
228+
@scene_option.setter
229+
def scene_option(self, value):
230+
self._scene_option = value
231+
232+
@property
233+
def render_flag_overrides(self):
234+
return self._render_flag_overrides
235+
236+
@render_flag_overrides.setter
237+
def render_flag_overrides(self, value):
238+
self._render_flag_overrides = value
239+
216240
@property
217241
def array_spec(self):
218242
if self._depth:
@@ -245,7 +269,8 @@ def get_observation():
245269
camera_id=self._mjcf_element.full_identifier,
246270
depth=self._depth,
247271
segmentation=self._segmentation,
248-
scene_option=self._scene_option)
272+
scene_option=self._scene_option,
273+
render_flag_overrides=self._render_flag_overrides)
249274
return np.atleast_3d(pixels)
250275

251276
return get_observation

0 commit comments

Comments
 (0)