diff --git a/sim_lab/vr_demo.py b/sim_lab/vr_demo.py index 21d8742b1986468d649e472f0c4f714d3440fead..26513dd03d0e9fa5c7cf3c6fb17d5dc07a170da1 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 0000000000000000000000000000000000000000..9a8d04718aeed4004cbcefb81dd78bee03b16d05 --- /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