From ba7f7a13b6786e6b54482eeafe4357abb780027b Mon Sep 17 00:00:00 2001 From: march3 Date: Fri, 24 Nov 2023 11:19:35 +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 --- bodies/universe_body.py | 2 +- sim_lab/wormhole_sim.py | 150 ++++++++++++++++++++-------------------- 2 files changed, 77 insertions(+), 75 deletions(-) diff --git a/bodies/universe_body.py b/bodies/universe_body.py index a6de2fc..e8634e0 100644 --- a/bodies/universe_body.py +++ b/bodies/universe_body.py @@ -74,4 +74,4 @@ def create_universe_body(name, texture, size_scale=1.0, init_position=[0, 0, 0], "texture": texture, "size_scale": size_scale, } - return UniverseBody(**params) + return UniverseBody(**params).set_resolution(50) diff --git a/sim_lab/wormhole_sim.py b/sim_lab/wormhole_sim.py index 88e101f..92d398f 100644 --- a/sim_lab/wormhole_sim.py +++ b/sim_lab/wormhole_sim.py @@ -31,105 +31,55 @@ class WormholeInfo: position: list[float] = field(default_factory=[0, 0, 0]) camera_target_init_speed: int = 100 camera_init_speed: int = 100 - camera_target_speed: int = 2000 - camera_target_max_speed: int = 2000 + camera_target_speed: int = 1200 + camera_target_max_speed: int = 1500 camera_forward_speed: int = - 0.1 - camera_max_speed: int = 4000 + camera_max_speed: int = 1500 camera_acc_speed: int = 1.02 camera_forward_acc_speed: int = 0.01 - size_factor: float = 10 + size_factor: float = 16 rotation_x: float = None rotation_y: float = None rotation_z: float = None - around_max_count: int = 300 - around_max_speed: int = -200 + around_max_count: int = 400 + around_max_speed: int = -100 around_min_speed: int = 100 around_direction: str = "right" - around_acc_speed: int = -2 + around_acc_speed: int = -1.5 class WormholeSim(UniverseSimScenes): SIZE_SCALE = 1 D = AU / 10 * SIZE_SCALE - def __init__(self): - D = self.D - self.camera_target = CoreValagaClas(name="摄像机镜头", mass=1e30, color=(111, 140, 255), - # init_position=[0, 0, 0], - init_position=[D, 0, -D], - init_velocity=[0, 0, 0], - size_scale=self.SIZE_SCALE * 1e3).set_ignore_gravity(True) - self.wormholeinfo_default_vals = None - self.camera_target.go_target = None - self.camera_target.go_target_stage = None - self.last_universe = None - self.current_universe = None - self.target_universe = None - self.universes = [] - self.fixed_stars = [] - self.wormhole_infos = {} - - self.create_universes() - self.create_fixed_stars() - self.bodies = [self.camera_target] + self.universes + self.fixed_stars - - def create_universe(self, name, idx, position): - if name is None: - name = f"宇宙{idx}" - universe_body = create_universe_body(name, texture=f'cosmic_pan_{idx + 1}.jpg', # self.textures[idx], - size_scale=self.SIZE_SCALE, - init_position=position, - init_velocity=[0, 0, 0], - ) - universe_body.set_light_disable(True) - return universe_body - - def fixed_stars_D(self): - r = random.random() - D = self.D * (2 + r) - return D - - def create_fixed_stars(self): - D = self.fixed_stars_D - positions = [[D(), D(), D()], [D(), D(), -D()], [D(), -D(), D()], - [D(), -D(), -D()], [-D(), D(), D()], [-D(), D(), -D()], - [-D(), -D(), D()], [-D(), -D(), -D()]] - - # positions = [[D, D, D], [D, D, -D], [D, -D, D], [D, 0, D], [D, 0, - D], [D, 0, D], - # [D, -D, -D], [-D, D, D], [-D, D, -D], [0, -D, -D], [0, D, D], [0, D, -D], - # [-D, -D, D], [-D, -D, -D], [-D, -D, 0], [-D, -D, 0]] - - for position in positions: - fixed_star = FixedStar(color=(200, 200, 200), size_scale=0.5, init_position=position) - fixed_star.glows = (0, 1.1, 1.08) - self.fixed_stars.append(fixed_star) - def create_universes(self): D = self.D # camera_target_init_speed: int = 100 # camera_init_speed: int = 100 - # camera_target_speed: int = 2000 + # camera_target_speed: int = 1200 + # camera_target_max_speed: int = 1500 # camera_forward_speed: int = - 0.1 - # camera_max_speed: int = 2000 + # camera_max_speed: int = 1500 # camera_acc_speed: int = 1.02 # camera_forward_acc_speed: int = 0.01 - # size_factor: float = 10 + # size_factor: float = 16 # rotation_x: float = None # rotation_y: float = None # rotation_z: float = None - # around_max_count: int = 300 - # around_max_speed: int = -200 + # around_max_count: int = 400 + # around_max_speed: int = -100 + # around_min_speed: int = 100 # around_direction: str = "right" - # around_acc_speed: int = -2 + # around_acc_speed: int = -1.5 wormhole_infos = [ - {"name": "我们宇宙", "position": [D, 0, -D], "rotation_y": -150, "around_direction": "down", + {"name": "我们宇宙", "position": [D, 0, -D], "rotation_y": 100, "around_direction": "down", "camera_forward_speed": 0, "around_max_count": 400}, - {"name": "红色宇宙", "position": [D, 0, D], "rotation_z": 30, "around_acc_speed": -20, - "around_min_speed": 150, "camera_forward_speed": -0.2, "around_max_count": 600}, - {"name": "黄色宇宙", "position": [- D, -D, D], "around_direction": "left"}, - {"name": "梦海宇宙", "position": [- D, 0, -D]}, - {"name": "金色宇宙", "position": [-D, D, D], "around_max_count": 400}, + {"name": "粉色宇宙", "position": [D, 0, D], "rotation_z": 0, "around_acc_speed": -2, + "around_min_speed": 150, "camera_forward_speed": -0.2, "around_max_count": 700}, + {"name": "蓝天宇宙", "position": [- D, -D, D], "around_direction": "left", "around_max_count": 600}, + {"name": "金色宇宙", "position": [- D, 0, -D], "around_max_count": 600}, + {"name": "深红宇宙", "position": [-D, D, D], "around_max_count": 800}, # {"position": [D, -D, D]}, # {"position": [- D, -D, -D]}, # {"position": [- D, 0, D]}, @@ -170,10 +120,62 @@ class WormholeSim(UniverseSimScenes): self.universes.append(universe) self.wormhole_infos[universe] = WormholeInfo(**ps1) + def __init__(self): + D = self.D + self.camera_target = CoreValagaClas(name="摄像机镜头", mass=1e30, color=(111, 140, 255), + # init_position=[0, 0, 0], + init_position=[D, 0, -D], + init_velocity=[0, 0, 0], + size_scale=self.SIZE_SCALE * 1e3).set_ignore_gravity(True) + self.wormholeinfo_default_vals = None + self.camera_target.go_target = None + self.camera_target.go_target_stage = None + self.last_universe = None + self.current_universe = None + self.target_universe = None + self.universes = [] + self.fixed_stars = [] + self.wormhole_infos = {} + + self.create_universes() + self.create_fixed_stars() + self.bodies = [self.camera_target] + self.universes + self.fixed_stars + + def create_universe(self, name, idx, position): + if name is None: + name = f"宇宙{idx}" + universe_body = create_universe_body(name, texture=f'cosmic_pan_{idx + 1}.jpg', # self.textures[idx], + size_scale=self.SIZE_SCALE, + init_position=position, + init_velocity=[0, 0, 0], + ) + universe_body.set_light_disable(True) + return universe_body + + def fixed_stars_D(self): + r = random.random() + D = self.D * (2 + r) + return D + + def create_fixed_stars(self): + D = self.fixed_stars_D + positions = [[D(), D(), D()], [D(), D(), -D()], [D(), -D(), D()], + [D(), -D(), -D()], [-D(), D(), D()], [-D(), D(), -D()], + [-D(), -D(), D()], [-D(), -D(), -D()]] + + # positions = [[D, D, D], [D, D, -D], [D, -D, D], [D, 0, D], [D, 0, - D], [D, 0, D], + # [D, -D, -D], [-D, D, D], [-D, D, -D], [0, -D, -D], [0, D, D], [0, D, -D], + # [-D, -D, D], [-D, -D, -D], [-D, -D, 0], [-D, -D, 0]] + + for position in positions: + fixed_star = FixedStar(color=(200, 200, 200), size_scale=0.5, init_position=position) + fixed_star.glows = (0, 1.1, 1.08) + self.fixed_stars.append(fixed_star) + def init_setting(self): - camera.clip_plane_near = 0.00005 + camera.clip_plane_near = 0.6 # camera.clip_plane_near = 0.01 - camera.clip_plane_far = 100000000 + camera.clip_plane_far = 10000000 # create_sphere_sky(scale=200000) application.time_scale = 0.001 # camera.scale = 1000 @@ -291,7 +293,7 @@ class WormholeSim(UniverseSimScenes): camera.current_universe = self.current_universe camera_look_at(self.camera_target, rotation_z=0) - # self.text_panel = create_text_panel(font="fonts/DroidSansFallback.ttf", font_scale=1.3) + self.text_panel = create_text_panel(font="fonts/DroidSansFallback.ttf", font_scale=1.3) def update_text_panel(self): """ -- GitLab