From 72c26453a31a778c5f751b938f5dda1ab7a5b15a Mon Sep 17 00:00:00 2001 From: "Egli Adrian (IT-SCI-API-PFI)" <adrian.egli@sbb.ch> Date: Wed, 29 May 2019 10:44:53 +0200 Subject: [PATCH] demo.py: screen recordering --- examples/demo.py | 33 +++++++++++++++++++++----------- flatland/utils/graphics_layer.py | 3 +++ flatland/utils/graphics_pil.py | 7 +++++++ flatland/utils/rendertools.py | 1 + 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/examples/demo.py b/examples/demo.py index 02fae47..cc40c24 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 2598a88..7fd49af 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 40e0a92..b64d2e2 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 aa8731b..b8dd5cd 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 -- GitLab