Renders the scene to the specified viewport. Args: viewport: Instance of Viewport. scene: Instance of MjvScene. Returns: A 3-dimensional array of shape (viewport.width, viewport.height, 3), with the contents of the front buffer.
(self, viewport, scene)
| 150 | self._pixels = np.zeros((1, 1, 3), dtype=np.uint8) |
| 151 | |
| 152 | def render(self, viewport, scene): |
| 153 | """Renders the scene to the specified viewport. |
| 154 | |
| 155 | Args: |
| 156 | viewport: Instance of Viewport. |
| 157 | scene: Instance of MjvScene. |
| 158 | Returns: |
| 159 | A 3-dimensional array of shape (viewport.width, viewport.height, 3), |
| 160 | with the contents of the front buffer. |
| 161 | """ |
| 162 | if not np.array_equal(self._prev_viewport, viewport.dimensions): |
| 163 | self._prev_viewport = viewport.dimensions |
| 164 | if self._mujoco_context: |
| 165 | self._mujoco_context.free() |
| 166 | self._mujoco_context = None |
| 167 | if not self._mujoco_context: |
| 168 | # Ensure that MuJoCo's offscreen framebuffer is large enough to |
| 169 | # accommodate the viewport. |
| 170 | new_offwidth = max(self._model.vis.global_.offwidth, viewport.width) |
| 171 | new_offheight = max(self._model.vis.global_.offheight, viewport.height) |
| 172 | self._model.vis.global_.offwidth = new_offwidth |
| 173 | self._model.vis.global_.offheight = new_offheight |
| 174 | font_scale = _HIDPI_FONT_SCALE if _has_high_dpi() else _DEFAULT_FONT_SCALE |
| 175 | self._mujoco_context = wrapper.MjrContext( |
| 176 | model=self._model, |
| 177 | gl_context=self._surface, |
| 178 | font_scale=font_scale) |
| 179 | self._rgb_buffer = np.empty( |
| 180 | (viewport.height, viewport.width, 3), dtype=np.uint8) |
| 181 | |
| 182 | with self._surface.make_current() as ctx: |
| 183 | ctx.call(self._render_on_gl_thread, viewport, scene) |
| 184 | self._pixels = self._surface.to_pixels(self._rgb_buffer) |
| 185 | |
| 186 | def _render_on_gl_thread(self, viewport, scene): |
| 187 | mujoco.mjr_setBuffer(mujoco.mjtFramebuffer.mjFB_OFFSCREEN, |
nothing calls this directly
no test coverage detected