@@ -590,26 +590,14 @@ def use_box_collision(sim: Sim, enable: bool = True):
590590 geometry, especially for larger swarms. It is recommended to only enable box collision
591591 geometry for small swarms or when high accuracy is required.
592592 """
593-
594- def find_geom_ids_by_prefix (model : mujoco .MjModel , prefix : str ) -> Array [int ]:
595- geom_ids = []
596- for i in range (model .ngeom ):
597- name : str | None = mujoco .mj_id2name (model , mujoco .mjtObj .mjOBJ_GEOM , i )
598- if name is not None and name .startswith (prefix ):
599- geom_ids .append (i )
600- return jnp .asarray (geom_ids )
601-
602- # Get geom ids
603- sphere_ids = find_geom_ids_by_prefix (sim .mj_model , "col_sphere" )
604- box_ids = find_geom_ids_by_prefix (sim .mj_model , "col_box" )
605- assert len (sphere_ids ) == len (box_ids ) and len (sphere_ids ) > 0 , (
606- "Number of sphere and box collision geometries must be the same, check xml files"
607- )
608-
609- # Enable/disable geoms
610- sim .mj_model .geom_contype [sphere_ids ] = 1 * (not enable )
611- sim .mj_model .geom_conaffinity [sphere_ids ] = 1 * (not enable )
612- sim .mj_model .geom_rgba [sphere_ids , 3 ] = 1 * (not enable )
613- sim .mj_model .geom_contype [box_ids ] = 1 * enable
614- sim .mj_model .geom_conaffinity [box_ids ] = 1 * enable
615- sim .mj_model .geom_rgba [box_ids , 3 ] = 1 * enable
593+ for geom in sim .spec .geoms :
594+ if geom .name .startswith ("col_sphere" ):
595+ geom .contype = 1 * (not enable )
596+ geom .conaffinity = 1 * (not enable )
597+ geom .rgba [3 ] = 1 * (not enable )
598+ if geom .name .startswith ("col_box" ):
599+ geom .contype = 1 * enable
600+ geom .conaffinity = 1 * enable
601+ geom .rgba [3 ] = 1 * enable
602+
603+ sim .build_mjx ()
0 commit comments