diff --git a/sim_scenes/solar_system/solar_system_reality_2.py b/sim_scenes/solar_system/solar_system_reality_2.py index 4eeb6132c7a227d06689176c2dbc4ff0e9c0172a..e74d08002752bcd04f9721207a13936dd3f26d26 100644 --- a/sim_scenes/solar_system/solar_system_reality_2.py +++ b/sim_scenes/solar_system/solar_system_reality_2.py @@ -138,7 +138,7 @@ class SolarSystemRealitySim(UniverseSimScenes): @return: """ # 运行前触发 - self.set_window_size((1920, 1079), False) + self.set_window_size((1919, 1080), False) self.sky = create_sphere_sky(scale=80000) @@ -280,7 +280,8 @@ class SolarSystemRealitySim(UniverseSimScenes): lambda: self.recover_body_scale([self.jupiter, self.saturn]), lambda: self.recover_body_scale([self.uranus, self.neptune]), lambda: self.recover_sky(), - lambda: self.recover_run() + # lambda: self.recover_run(), + self.set_bodies_as_real_scale_animation ] def enabled_orbit_line(self, orbit_line): @@ -368,6 +369,26 @@ class SolarSystemRealitySim(UniverseSimScenes): ext_fun_for_method(body.planet, after_run_fun=update_scale) + def set_body_as_real_scale_animation(self, body): + UrsinaConfig.run_speed_factor = 0.01 + body.planet.origin_update = body.planet.update + size_scale, scale_x = self.body_scale_dict[body] + scale_inc = (scale_x - scale_x/size_scale) / 200.0 + # scale_inc = (scale_x / size_scale) / 10.0 + + def update_scale(): + planet_scale_x = body.planet.scale_x + planet_scale_x -= scale_inc + + if planet_scale_x <= scale_x / size_scale: + planet_scale_x = scale_x / size_scale + body.planet.update = lambda: None # body.planet.origin_update + + body.planet.scale = planet_scale_x # scale_x / size_scale + + body.planet.update = update_scale + # ext_fun_for_method(body.planet, after_run_fun=update_scale) + def set_bodies_as_real_scale(self): self.save_body_scale() for body in self.bodies: @@ -380,6 +401,18 @@ class SolarSystemRealitySim(UniverseSimScenes): self.sky.alpha = 0 + def set_bodies_as_real_scale_animation(self): + # self.save_body_scale() + for body in self.bodies: + self.set_body_as_real_scale_animation(body) + + # for orbit_line in self.orbit_lines: + # orbit_line.origin_alpha = orbit_line.alpha + # # orbit_line.alpha = 0 + # orbit_line.enabled = False + + self.sky.alpha = 0 + def save_body_scale(self): self.body_scale_dict = {} for body in self.bodies: