Skip to content

Commit 6eb8259

Browse files
committed
Patch: huge blue cube (joint) when rendering certain worlds using the single frame renderer --> disable viz mjVIS_JOINT
1 parent 8c04e52 commit 6eb8259

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

src/ariel/utils/renderers.py

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
def single_frame_renderer(
2424
model: mujoco.MjModel,
2525
data: mujoco.MjData,
26-
steps: int = 10,
26+
steps: int = 1,
2727
width: int = 480,
2828
height: int = 640,
29-
fovy: float = 7,
29+
cam_fovy: float | None = None,
30+
cam_pos: tuple[float] | None = None,
31+
cam_quat: tuple[float] | None = None,
3032
*,
3133
show: bool = False,
3234
save: bool = False,
@@ -36,8 +38,29 @@ def single_frame_renderer(
3638
mujoco.mj_resetData(model, data)
3739

3840
# Enable joint visualization option:
39-
scene_option = mujoco.MjvOption()
40-
scene_option.flags[mujoco.mjtVisFlag.mjVIS_JOINT] = True
41+
viz_options = mujoco.MjvOption()
42+
viz_options.flags[mujoco.mjtVisFlag.mjVIS_JOINT] = False
43+
viz_options.flags[mujoco.mjtVisFlag.mjVIS_TRANSPARENT] = False
44+
viz_options.flags[mujoco.mjtVisFlag.mjVIS_ACTUATOR] = False
45+
viz_options.flags[mujoco.mjtVisFlag.mjVIS_BODYBVH] = False
46+
47+
# Update rendering engine
48+
camera = mujoco.mj_name2id(
49+
model,
50+
mujoco.mjtObj.mjOBJ_CAMERA,
51+
"ortho-cam",
52+
)
53+
54+
# If camera not found, use default camera
55+
if camera == -1:
56+
msg = "Camera 'ortho-cam' not found. Using default camera."
57+
log.debug(msg)
58+
camera = None
59+
else:
60+
model.cam_fovy[camera] = cam_fovy or model.cam_fovy[camera]
61+
model.cam_pos[camera] = cam_pos or model.cam_pos[camera]
62+
model.cam_quat[camera] = cam_quat or model.cam_quat[camera]
63+
model.cam_sensorsize[camera] = [width, height]
4164

4265
# Call rendering engine
4366
with mujoco.Renderer(
@@ -46,26 +69,12 @@ def single_frame_renderer(
4669
height=height,
4770
) as renderer:
4871
# Move simulation forward one iteration/step
49-
mujoco.mj_step(model, data, nstep=steps)
50-
51-
# Update rendering engine
52-
camera = mujoco.mj_name2id(
53-
model,
54-
mujoco.mjtObj.mjOBJ_CAMERA,
55-
"ortho-cam",
56-
)
57-
58-
# If camera not found, use default camera
59-
if camera == -1:
60-
log.debug("Camera 'ortho-cam' not found. Using default camera.")
61-
camera = None
62-
else:
63-
model.cam_fovy[camera] = fovy
72+
mujoco.mj_forward(model, data)
6473

6574
# Update the renderer's camera
6675
renderer.update_scene(
6776
data,
68-
scene_option=scene_option,
77+
scene_option=viz_options,
6978
camera=camera,
7079
)
7180

@@ -114,8 +123,11 @@ def video_renderer(
114123
video_recorder = VideoRecorder()
115124

116125
# Enable joint visualization option:
117-
scene_option = mujoco.MjvOption()
118-
scene_option.flags[mujoco.mjtVisFlag.mjVIS_JOINT] = True
126+
viz_options = mujoco.MjvOption()
127+
viz_options.flags[mujoco.mjtVisFlag.mjVIS_JOINT] = False
128+
viz_options.flags[mujoco.mjtVisFlag.mjVIS_TRANSPARENT] = False
129+
viz_options.flags[mujoco.mjtVisFlag.mjVIS_ACTUATOR] = False
130+
viz_options.flags[mujoco.mjtVisFlag.mjVIS_BODYBVH] = False
119131

120132
# Reset state and time of simulation
121133
mujoco.mj_resetData(model, data)
@@ -137,7 +149,7 @@ def video_renderer(
137149
mujoco.mj_step(model, data, nstep=math.floor(steps_per_frame))
138150

139151
# Update rendering engine
140-
renderer.update_scene(data, scene_option=scene_option)
152+
renderer.update_scene(data, scene_option=viz_options)
141153

142154
# Save frame
143155
video_recorder.write(frame=renderer.render())

0 commit comments

Comments
 (0)