From 17831ee0826c411800ba134d9b814756d6cacde9 Mon Sep 17 00:00:00 2001 From: march3 Date: Sat, 29 Jul 2023 15:46:55 +0800 Subject: [PATCH] =?UTF-8?q?Python=E8=B6=85=E4=BA=BA-=E5=AE=87=E5=AE=99?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sim_lab/vr_demo.py | 2 + simulators/ursina/entities/video_recorder.py | 47 ++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 simulators/ursina/entities/video_recorder.py diff --git a/sim_lab/vr_demo.py b/sim_lab/vr_demo.py index 21d8742..26513dd 100644 --- a/sim_lab/vr_demo.py +++ b/sim_lab/vr_demo.py @@ -71,6 +71,8 @@ if __name__ == '__main__': def on_ready(): from ursina import window window.size = (3840, 1920) + # 黑色背景的宇宙背景 + # SphereSky(texture='../../textures/bg_black.png') UrsinaEvent.on_ready_subscription(on_ready) diff --git a/simulators/ursina/entities/video_recorder.py b/simulators/ursina/entities/video_recorder.py new file mode 100644 index 0000000..9a8d047 --- /dev/null +++ b/simulators/ursina/entities/video_recorder.py @@ -0,0 +1,47 @@ +from ursina import * +import os, shutil +import builtins +import numpy as np + + +class VideoRecorder(Entity): + """ + from simulators.ursina.entities.video_recorder import VideoRecorder + vr = VideoRecorder() + sys.modules["__main__"].update = vr.screenshot + + app.run() + """ + def __init__(self, temp_dir="screenshot_tmp", asset_folder=None): + self.temp_dir = temp_dir + # self.save_as_dir = save_as_dir + if asset_folder is None: + asset_folder = application.asset_folder + # G:\works\gitcode\universe_sim\sim_scenes\science + self.file_path = Path(asset_folder) / self.temp_dir + self.duration = 1.0 + self.fps = 30 + self.sd = 5 + self.t = 0 + self.i = 0 + self.id_no = 0 + + if getattr(builtins, 'base', None) is not None: + if self.file_path.exists(): + # os.rmdir(self.file_path) + shutil.rmtree(self.file_path) + + self.file_path.mkdir() + + def screenshot(self): + self.t += time.dt + + if self.t >= 1 / self.fps: + base.saveCubeMap( + namePrefix=f'\\{self.temp_dir}\\cmap_' + str(self.i).zfill(self.sd) + '_#.png', + size=1024 + # namePrefix = 'cube_map_#.png' + ) + self.t = 0 + + self.i += 1 -- GitLab