@@ -23,7 +23,9 @@ def __init__(self, model, data):
2323 self ._transparent = False
2424 self ._contacts = False
2525 self ._joints = False
26+ self ._shadows = True
2627 self ._wire_frame = False
28+ self ._convex_hull_rendering = False
2729 self ._inertias = False
2830 self ._com = False
2931 self ._render_every_frame = True
@@ -137,6 +139,16 @@ def _key_callback(self, window, key, scancode, action, mods):
137139 elif key == glfw .KEY_M :
138140 self ._com = not self ._com
139141 self .vopt .flags [mujoco .mjtVisFlag .mjVIS_COM ] = self ._com
142+ # Shadow Rendering
143+ elif key == glfw .KEY_O :
144+ self ._shadows = not self ._shadows
145+ self .scn .flags [mujoco .mjtRndFlag .mjRND_SHADOW ] = self ._shadows
146+ # Convex-Hull rendering
147+ elif key == glfw .KEY_V :
148+ self ._convex_hull_rendering = not self ._convex_hull_rendering
149+ self .vopt .flags [
150+ mujoco .mjtVisFlag .mjVIS_CONVEXHULL
151+ ] = self ._convex_hull_rendering
140152 # Wireframe Rendering
141153 elif key == glfw .KEY_W :
142154 self ._wire_frame = not self ._wire_frame
@@ -400,6 +412,9 @@ def add_overlay(gridpos, text1, text2):
400412 topleft ,
401413 "Center of [M]ass" ,
402414 "On" if self ._com else "Off" )
415+ add_overlay (
416+ topleft , "Shad[O]ws" , "On" if self ._shadows else "Off"
417+ )
403418 add_overlay (
404419 topleft ,
405420 "T[r]ansparent" ,
@@ -408,6 +423,11 @@ def add_overlay(gridpos, text1, text2):
408423 topleft ,
409424 "[W]ireframe" ,
410425 "On" if self ._wire_frame else "Off" )
426+ add_overlay (
427+ topleft ,
428+ "Con[V]ex Hull Rendering" ,
429+ "On" if self ._convex_hull_rendering else "Off" ,
430+ )
411431 if self ._paused is not None :
412432 if not self ._paused :
413433 add_overlay (topleft , "Stop" , "[Space]" )
0 commit comments