diff --git a/sim_scenes/fiction/transformed_mars_ani_3d.py b/sim_scenes/fiction/transformed_mars_ani_3d.py index e6432efec8372981b7792a7791d671b170f3311b..cb5cfeb460c15968bb83d6de015457828ee512e7 100644 --- a/sim_scenes/fiction/transformed_mars_ani_3d.py +++ b/sim_scenes/fiction/transformed_mars_ani_3d.py @@ -11,6 +11,7 @@ import os import numpy as np import sys from bodies import Earth +from objs import Satellite, Satellite2 from common.consts import SECONDS_PER_HOUR from sim_scenes.func import ursina_run from simulators.ursina.entities.body_timer import TimeData @@ -19,6 +20,28 @@ from simulators.ursina.ursina_config import UrsinaConfig from simulators.ursina.ursina_event import UrsinaEvent +def create_satellites(): + # 卫星位置和初始速度信息 + satellite_infos = [ + # {"position": [0, 0, 10002], "velocity": [6.3, 0, 0]}, + # {"position": [0, 0, -12000], "velocity": [5.75, 0, 0]}, + # {"position": [0, 8000, 0], "velocity": [7.05, 0, 0]}, + # {"position": [0, -12002, 0], "velocity": [5.75, 0, 0]}, + {"position": [0, 0, 14000], "velocity": [0, 5, 0]}, + # {"position": [0, 0, -10000], "velocity": [0, 6.3, 0]}, + ] + satellites = [] + for i, info in enumerate(satellite_infos): + # Satellite Satellite2 + satellite = Satellite(name=f'卫星{i + 1}', mass=4.4e10, + size_scale=1e2, color=(255, 200, 0), + init_position=info["position"], + init_velocity=info["velocity"]) + # info["satellite"] = satellite + satellites.append(satellite) + return satellites + + def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False): trans_texture = transformed_texture.replace(".jpg", "_trans.png") # texture = transformed_texture @@ -39,14 +62,14 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False) rotate_angle=0, init_position=[0, 0, 0], init_velocity=[0, 0, 0], - size_scale=0.999) + size_scale=0.9996).set_ignore_gravity(True) trans_mars = Earth( texture=os.path.join("transformed", trans_texture), rotate_angle=0, init_position=[0, 0, 0], init_velocity=[0, 0, 0], - size_scale=0.995) + size_scale=0.9990).set_ignore_gravity(True) bodies = [mars, transformed_mars, trans_mars] @@ -55,23 +78,27 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False) rotate_angle=0, size_scale=1.001, parent=mars) + satellites = create_satellites() + bodies = bodies + satellites bodies.append(clouds) init_pos = (1.45 * mars.radius, 0, - -30000) + -38000) if camera3d: init_pos = np.array(init_pos) * UrsinaConfig.SCALE_FACTOR Camera3d.init(init_pos) init_pos = (0, 0, 0) def on_ready(): - pass + for satellite in satellites: + satellite.planet.enabled = False def on_timer_changed(time_data: TimeData): # mars.planet.opacity = 0.01 opacity = round((time_data.total_hours - 1) / 10, 2) clouds_opacity = round(opacity - 0.5, 2) + show_satellites = False if opacity > 1.0: opacity = 1.0 elif opacity < 0.0: @@ -82,11 +109,17 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False) if clouds_opacity > 1.0: clouds_opacity = 1.0 + show_satellites = True elif clouds_opacity < 0.0: clouds_opacity = 0.0 clouds.planet.alpha = clouds_opacity # 火星云层渐渐显示 mars.planet.alpha = 1 - opacity # 原火星渐渐消失 + # show_satellites = True + if show_satellites: + for satellite in satellites: + satellite.planet.enabled = True + satellite.planet.look_at(mars.planet) # if time_data.total_hours > 10: # trans_mars.planet.enabled = True