@@ -22,6 +22,10 @@ def __init__(self, model, data):
2222 self ._paused = False
2323 self ._transparent = False
2424 self ._contacts = False
25+ self ._joints = False
26+ self ._wire_frame = False
27+ self ._inertias = False
28+ self ._com = False
2529 self ._render_every_frame = True
2630 self ._image_idx = 0
2731 self ._image_path = "/tmp/frame_%07d.png"
@@ -108,7 +112,9 @@ def _key_callback(self, window, key, scancode, action, mods):
108112 elif key == glfw .KEY_C :
109113 self ._contacts = not self ._contacts
110114 self .vopt .flags [mujoco .mjtVisFlag .mjVIS_CONTACTPOINT ] = self ._contacts
111- self .vopt .flags [mujoco .mjtVisFlag .mjVIS_CONTACTFORCE ] = self ._contacts
115+ elif key == glfw .KEY_J :
116+ self ._joints = not self ._joints
117+ self .vopt .flags [mujoco .mjtVisFlag .mjVIS_JOINT ] = self ._joints
112118 # Display coordinate frames
113119 elif key == glfw .KEY_E :
114120 self .vopt .frame = 1 - self .vopt .frame
@@ -122,6 +128,18 @@ def _key_callback(self, window, key, scancode, action, mods):
122128 self .model .geom_rgba [:, 3 ] /= 5.0
123129 else :
124130 self .model .geom_rgba [:, 3 ] *= 5.0
131+ # Display inertia
132+ elif key == glfw .KEY_I :
133+ self ._inertias = not self ._inertias
134+ self .vopt .flags [mujoco .mjtVisFlag .mjVIS_INERTIA ] = self ._inertias
135+ # Display center of mass
136+ elif key == glfw .KEY_M :
137+ self ._com = not self ._com
138+ self .vopt .flags [mujoco .mjtVisFlag .mjVIS_COM ] = self ._com
139+ # Wireframe Rendering
140+ elif key == glfw .KEY_W :
141+ self ._wire_frame = not self ._wire_frame
142+ self .scn .flags [mujoco .mjtRndFlag .mjRND_WIREFRAME ] = self ._wire_frame
125143 # Geom group visibility
126144 elif key in (glfw .KEY_0 , glfw .KEY_1 , glfw .KEY_2 , glfw .KEY_3 , glfw .KEY_4 ):
127145 self .vopt .geomgroup [key - glfw .KEY_0 ] ^= 1
@@ -369,10 +387,26 @@ def add_overlay(gridpos, text1, text2):
369387 topleft ,
370388 "[C]ontact forces" ,
371389 "On" if self ._contacts else "Off" )
390+ add_overlay (
391+ topleft ,
392+ "[J]oints" ,
393+ "On" if self ._joints else "Off" )
394+ add_overlay (
395+ topleft ,
396+ "[I]nertia" ,
397+ "On" if self ._inertias else "Off" )
398+ add_overlay (
399+ topleft ,
400+ "Center of [M]ass" ,
401+ "On" if self ._com else "Off" )
372402 add_overlay (
373403 topleft ,
374404 "T[r]ansparent" ,
375405 "On" if self ._transparent else "Off" )
406+ add_overlay (
407+ topleft ,
408+ "[W]ireframe" ,
409+ "On" if self ._wire_frame else "Off" )
376410 if self ._paused is not None :
377411 if not self ._paused :
378412 add_overlay (topleft , "Stop" , "[Space]" )
0 commit comments