2323def 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