"""Renderers used to visualize the state of the environments.Currently three backends are supported (opencv, pytorch3d and nvdiffrast), along with a dummy renderer generating black images."""importloggingfromomegaconfimportDictConfig,OmegaConf,SCModeimporttorchdrivesim.rendering.pytorch3dfromtorchdrivesim.rendering.baseimportRendererConfig,DummyRendererConfig,BirdviewRenderer,DummyRendererfromtorchdrivesim.rendering.cv2importCV2RendererConfig,CV2Rendererfromtorchdrivesim.rendering.pytorch3dimportPytorch3DRendererConfig,Pytorch3DRendererfromtorchdrivesim.rendering.nvdiffrastimportNvdiffrastRendererConfig,NvdiffrastRenderer
[docs]defrenderer_from_config(cfg:RendererConfig,*args,**kwargs)->BirdviewRenderer:""" Construct the selected renderer from config, by default using Pytorch3DRenderer. Additional arguments are passed to the constructor. """ifisinstance(cfg,DictConfig):cfg=OmegaConf.to_container(cfg,resolve=True,structured_config_mode=SCMode.INSTANTIATE)assertisinstance(cfg,RendererConfig)ifcfg.backend=='default':iftorchdrivesim.rendering.pytorch3d.is_available:cfg=Pytorch3DRendererConfig(left_handed_coordinates=cfg.left_handed_coordinates,render_agent_direction=cfg.render_agent_direction,highlight_ego_vehicle=cfg.highlight_ego_vehicle)else:cfg=CV2RendererConfig(left_handed_coordinates=cfg.left_handed_coordinates,render_agent_direction=cfg.render_agent_direction,highlight_ego_vehicle=cfg.highlight_ego_vehicle)ifisinstance(cfg,DummyRendererConfig):returnDummyRenderer(cfg,*args,**kwargs)elifisinstance(cfg,CV2RendererConfig):returnCV2Renderer(cfg,*args,**kwargs)elifisinstance(cfg,Pytorch3DRendererConfig):returnPytorch3DRenderer(cfg,*args,**kwargs)elifisinstance(cfg,NvdiffrastRendererConfig):returnNvdiffrastRenderer(cfg,*args,**kwargs)else:raiseValueError(f'Unrecognized renderer type: {type(cfg)}')