From 91524f90c34ff3e9babe0798e2070bcbbff8ea4f Mon Sep 17 00:00:00 2001 From: march3 Date: Wed, 2 Aug 2023 23:36: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_scenes/tri_bodies/water_drop_01.py | 39 +++++++++++++------- simulators/ursina/entities/video_recorder.py | 4 +- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/sim_scenes/tri_bodies/water_drop_01.py b/sim_scenes/tri_bodies/water_drop_01.py index 4c096f9..2e01b6d 100644 --- a/sim_scenes/tri_bodies/water_drop_01.py +++ b/sim_scenes/tri_bodies/water_drop_01.py @@ -26,10 +26,10 @@ if __name__ == '__main__': WATER_SPEED = 400 # TODO: 可以抵消月球带动地球的力,保持地球在原地 # OFFSETTING = 0.01265 - # sun = Sun(name="太阳", size_scale=6e1, init_position=[0, 0, -AU]).set_ignore_gravity(True) + sun = Sun(name="太阳", size_scale=6e1, init_position=[0, 0, -3 * AU]).set_ignore_gravity(True) earth_size_scale = 2.5e2 earth = Earth(init_position=[0, -2500000, 0], - texture="earth_hd.jpg", + texture="earth-huge.jpg", # rotate_angle=0, rotation_speed=0, init_velocity=[OFFSETTING, 0, 0], size_scale=earth_size_scale).set_ignore_gravity( @@ -45,37 +45,44 @@ if __name__ == '__main__': texture="drops_bright.png", # trail_color=[200, 200, 255], init_velocity=[-WATER_SPEED, 0, 0], - size_scale=4e4).set_ignore_gravity(True) + size_scale=4e4).set_ignore_gravity(True).set_light_disable(True) # moon = Moon(init_position=[0, 0, 363104], # 距地距离约: 363104 至 405696 km # init_velocity=[-1.03, 0, 0], size_scale=2e1) # 月球放大 10 倍,距离保持不变 # moon.set_light_disable(True) d = 100000 - num_x = 3 + num_x = 10 + num_y = 10 + num_z = 10 + num_x = 4 num_y = 4 - num_z = 3 - x_offset = - (num_x - 1) / 2 * d + num_z = 4 + + x_offset = - (num_x) / 2 * d y_offset = - (num_y) / 2 * (d / 2) - z_offset = - (num_z - 1) / 2 * d + z_offset = - (num_z) / 2 * d ship_list = [] for x in range(num_x): for y in range(num_y): for z in range(num_z): core_valaga_clas = CoreValagaClas(size_scale=15, - init_position=[x_offset + x * d, y_offset + (2 * y + 0.5) * (d / 2), - z_offset + z * d - 20000]).set_ignore_gravity(True) + init_position=[x_offset + (x + 0.5) * d, + y_offset + (2 * y - 0.5) * (d / 2), + z_offset + (z + 0.8) * d - 20000]).set_ignore_gravity( + True) ship_list.append(core_valaga_clas) for x in range(num_x): for y in range(num_y): for z in range(num_z): sci_fi_bomber = SciFiBomber(size_scale=3.5, - init_position=[x_offset + x * d, y_offset + (2 * y - 0.5) * (d / 2), - z_offset + z * d - 20000]).set_ignore_gravity(True) + init_position=[x_offset + (x + 0.5) * d, + y_offset + (2 * y - 1.5) * (d / 2), + z_offset + (z + 0.8) * d - 20000]).set_ignore_gravity(True) ship_list.append(sci_fi_bomber) # earth.rotation_speed /= 6 # 地球的转速降低50倍 - bodies = [earth, clouds, water_drop] + ship_list + bodies = [sun, earth, clouds, water_drop] + ship_list WATER_RANGE = 2e6 @@ -103,6 +110,9 @@ if __name__ == '__main__': water_drop.planet.rotation_z = 90 + # water_drop.init_position = (0, 0, 0) + # water_drop.init_velocity = [0, 0, 0] + # 订阅事件后,上面2个函数功能才会起作用 # 运行前会触发 on_ready @@ -116,9 +126,10 @@ if __name__ == '__main__': ursina_run(bodies, SECONDS_PER_DAY / 24, # SECONDS_PER_WEEK * 4, - position=(0, 0, -220000), + # position=(0, 0, -220000), + position=(0, 0, 0), show_grid=False, - cosmic_bg="", + # cosmic_bg="", # gravity_works=False, # save_cube_map=True, timer_enabled=True, diff --git a/simulators/ursina/entities/video_recorder.py b/simulators/ursina/entities/video_recorder.py index 953c71e..65ece2d 100644 --- a/simulators/ursina/entities/video_recorder.py +++ b/simulators/ursina/entities/video_recorder.py @@ -12,6 +12,7 @@ class VideoRecorder(Entity): app.run() """ + def __init__(self, temp_dir="screenshot_tmp", asset_folder=None): self.temp_dir = temp_dir # self.save_as_dir = save_as_dir @@ -39,7 +40,8 @@ class VideoRecorder(Entity): if self.t >= 1 / self.fps: base.saveCubeMap( namePrefix=f'\\{self.temp_dir}\\cmap_' + str(self.i).zfill(self.sd) + '_#.jpg', - size=2048 + # size=8196 # 最大分辨率,用于图片 + # size=4096 # 建议动态视频用这个 # namePrefix = 'cube_map_#.png' ) self.t = 0 -- GitLab