diff --git a/examples/demo.py b/examples/demo.py index 02fae475039578e09fbd885d0bde0275b8aa6ac9..cc40c24906cf1c2c4766b583b48a740a965332ac 100644 --- a/examples/demo.py +++ b/examples/demo.py @@ -126,6 +126,10 @@ class Demo: self.create_renderer() self.action_size = 4 self.max_frame_rate = 60 + self.record_frames = None + + def set_record_frames(self,record_frames): + self.record_frames = record_frames def create_renderer(self): self.renderer = RenderTool(self.env, gl="PILSVG") @@ -151,7 +155,7 @@ class Demo: for iAgent in range(self.env.get_num_agents()): action = 2 - if True: + if False: if not ((step) % 2 == 0): if iAgent == 3: action = 0 @@ -179,6 +183,10 @@ class Demo: break + + im = self.renderer.getImage() + self.renderer.gl.saveImage(self.record_frames.format(step)) + # ensure that the rendering is not faster then the maximal allowed frame rate end_frame_time_stamp = datetime.now() frame_exe_time = end_frame_time_stamp - begin_frame_time_stamp @@ -212,18 +220,21 @@ if False: demo_002.run_demo() demo_002 = None -demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_000.pkl')) -demo_flatland_000.renderer.resize() -demo_flatland_000.run_demo(60) -demo_flatland_000 = None + demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_000.pkl')) + demo_flatland_000.renderer.resize() + demo_flatland_000.run_demo(60) + demo_flatland_000 = None + + + demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_network_003.pkl')) + demo_flatland_000.renderer.resize() + demo_flatland_000.set_max_framerate(5) + demo_flatland_000.run_demo(30) + demo_flatland_000 = None + demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_001.pkl')) demo_flatland_000.renderer.resize() +demo_flatland_000.set_record_frames('./rendering/frame_{:04d}.bmp') demo_flatland_000.run_demo(60) demo_flatland_000 = None - -demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_network_003.pkl')) -demo_flatland_000.renderer.resize() -demo_flatland_000.set_max_framerate(5) -demo_flatland_000.run_demo(30) -demo_flatland_000 = None diff --git a/flatland/utils/graphics_layer.py b/flatland/utils/graphics_layer.py index 2598a8893cf47ac9be526a7c8809f55ca2bb8ddf..7fd49af8aaa4d8f95151ddc5ef4bd8c6704444da 100644 --- a/flatland/utils/graphics_layer.py +++ b/flatland/utils/graphics_layer.py @@ -43,6 +43,9 @@ class GraphicsLayer(object): def getImage(self): pass + def saveImage(self,filename): + pass + def adaptColor(self, color, lighten=False): if type(color) is str: if color == "red" or color == "r": diff --git a/flatland/utils/graphics_pil.py b/flatland/utils/graphics_pil.py index 40e0a9270ede53de13174203a40972fdf540b61e..b64d2e252f93e4ee4124bc9312d93898a50ee33c 100644 --- a/flatland/utils/graphics_pil.py +++ b/flatland/utils/graphics_pil.py @@ -160,6 +160,13 @@ class PILGL(GraphicsLayer): img = self.alpha_composite_layers() return array(img) + + def saveImage(self,filename): + print(filename) + img = self.alpha_composite_layers() + img.save(filename) + + def create_image(self, opacity=255): img = Image.new("RGBA", (self.widthPx, self.heightPx), (255, 255, 255, opacity)) return img diff --git a/flatland/utils/rendertools.py b/flatland/utils/rendertools.py index aa8731b1135326586117be2bd8e8bf6da97ea146..b8dd5cdead98162de3c6618604fb1260d5caf89b 100644 --- a/flatland/utils/rendertools.py +++ b/flatland/utils/rendertools.py @@ -703,6 +703,7 @@ class RenderTool(object): def getImage(self): return self.gl.getImage() + def plotTreeObs(self, gObs): nBranchFactor = 4