提交 ba7f7a13 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 6aa88f03
...@@ -74,4 +74,4 @@ def create_universe_body(name, texture, size_scale=1.0, init_position=[0, 0, 0], ...@@ -74,4 +74,4 @@ def create_universe_body(name, texture, size_scale=1.0, init_position=[0, 0, 0],
"texture": texture, "texture": texture,
"size_scale": size_scale, "size_scale": size_scale,
} }
return UniverseBody(**params) return UniverseBody(**params).set_resolution(50)
...@@ -31,105 +31,55 @@ class WormholeInfo: ...@@ -31,105 +31,55 @@ class WormholeInfo:
position: list[float] = field(default_factory=[0, 0, 0]) position: list[float] = field(default_factory=[0, 0, 0])
camera_target_init_speed: int = 100 camera_target_init_speed: int = 100
camera_init_speed: int = 100 camera_init_speed: int = 100
camera_target_speed: int = 2000 camera_target_speed: int = 1200
camera_target_max_speed: int = 2000 camera_target_max_speed: int = 1500
camera_forward_speed: int = - 0.1 camera_forward_speed: int = - 0.1
camera_max_speed: int = 4000 camera_max_speed: int = 1500
camera_acc_speed: int = 1.02 camera_acc_speed: int = 1.02
camera_forward_acc_speed: int = 0.01 camera_forward_acc_speed: int = 0.01
size_factor: float = 10 size_factor: float = 16
rotation_x: float = None rotation_x: float = None
rotation_y: float = None rotation_y: float = None
rotation_z: float = None rotation_z: float = None
around_max_count: int = 300 around_max_count: int = 400
around_max_speed: int = -200 around_max_speed: int = -100
around_min_speed: int = 100 around_min_speed: int = 100
around_direction: str = "right" around_direction: str = "right"
around_acc_speed: int = -2 around_acc_speed: int = -1.5
class WormholeSim(UniverseSimScenes): class WormholeSim(UniverseSimScenes):
SIZE_SCALE = 1 SIZE_SCALE = 1
D = AU / 10 * SIZE_SCALE 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): def create_universes(self):
D = self.D D = self.D
# camera_target_init_speed: int = 100 # camera_target_init_speed: int = 100
# camera_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_forward_speed: int = - 0.1
# camera_max_speed: int = 2000 # camera_max_speed: int = 1500
# camera_acc_speed: int = 1.02 # camera_acc_speed: int = 1.02
# camera_forward_acc_speed: int = 0.01 # camera_forward_acc_speed: int = 0.01
# size_factor: float = 10 # size_factor: float = 16
# rotation_x: float = None # rotation_x: float = None
# rotation_y: float = None # rotation_y: float = None
# rotation_z: float = None # rotation_z: float = None
# around_max_count: int = 300 # around_max_count: int = 400
# around_max_speed: int = -200 # around_max_speed: int = -100
# around_min_speed: int = 100
# around_direction: str = "right" # around_direction: str = "right"
# around_acc_speed: int = -2 # around_acc_speed: int = -1.5
wormhole_infos = [ 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}, "camera_forward_speed": 0, "around_max_count": 400},
{"name": "红色宇宙", "position": [D, 0, D], "rotation_z": 30, "around_acc_speed": -20, {"name": "粉色宇宙", "position": [D, 0, D], "rotation_z": 0, "around_acc_speed": -2,
"around_min_speed": 150, "camera_forward_speed": -0.2, "around_max_count": 600}, "around_min_speed": 150, "camera_forward_speed": -0.2, "around_max_count": 700},
{"name": "黄色宇宙", "position": [- D, -D, D], "around_direction": "left"}, {"name": "蓝天宇宙", "position": [- D, -D, D], "around_direction": "left", "around_max_count": 600},
{"name": "梦海宇宙", "position": [- D, 0, -D]}, {"name": "金色宇宙", "position": [- D, 0, -D], "around_max_count": 600},
{"name": "金色宇宙", "position": [-D, D, D], "around_max_count": 400}, {"name": "深红宇宙", "position": [-D, D, D], "around_max_count": 800},
# {"position": [D, -D, D]}, # {"position": [D, -D, D]},
# {"position": [- D, -D, -D]}, # {"position": [- D, -D, -D]},
# {"position": [- D, 0, D]}, # {"position": [- D, 0, D]},
...@@ -170,10 +120,62 @@ class WormholeSim(UniverseSimScenes): ...@@ -170,10 +120,62 @@ class WormholeSim(UniverseSimScenes):
self.universes.append(universe) self.universes.append(universe)
self.wormhole_infos[universe] = WormholeInfo(**ps1) 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): 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_near = 0.01
camera.clip_plane_far = 100000000 camera.clip_plane_far = 10000000
# create_sphere_sky(scale=200000) # create_sphere_sky(scale=200000)
application.time_scale = 0.001 application.time_scale = 0.001
# camera.scale = 1000 # camera.scale = 1000
...@@ -291,7 +293,7 @@ class WormholeSim(UniverseSimScenes): ...@@ -291,7 +293,7 @@ class WormholeSim(UniverseSimScenes):
camera.current_universe = self.current_universe camera.current_universe = self.current_universe
camera_look_at(self.camera_target, rotation_z=0) 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): def update_text_panel(self):
""" """
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册