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

Python超人-宇宙模拟器

上级 d2f6b61f
...@@ -26,10 +26,10 @@ if __name__ == '__main__': ...@@ -26,10 +26,10 @@ if __name__ == '__main__':
WATER_SPEED = 400 WATER_SPEED = 400
# TODO: 可以抵消月球带动地球的力,保持地球在原地 # TODO: 可以抵消月球带动地球的力,保持地球在原地
# OFFSETTING = 0.01265 # 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_size_scale = 2.5e2
earth = Earth(init_position=[0, -2500000, 0], earth = Earth(init_position=[0, -2500000, 0],
texture="earth_hd.jpg", texture="earth-huge.jpg",
# rotate_angle=0, # rotate_angle=0,
rotation_speed=0, rotation_speed=0,
init_velocity=[OFFSETTING, 0, 0], size_scale=earth_size_scale).set_ignore_gravity( init_velocity=[OFFSETTING, 0, 0], size_scale=earth_size_scale).set_ignore_gravity(
...@@ -45,37 +45,44 @@ if __name__ == '__main__': ...@@ -45,37 +45,44 @@ if __name__ == '__main__':
texture="drops_bright.png", texture="drops_bright.png",
# trail_color=[200, 200, 255], # trail_color=[200, 200, 255],
init_velocity=[-WATER_SPEED, 0, 0], 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 # moon = Moon(init_position=[0, 0, 363104], # 距地距离约: 363104 至 405696 km
# init_velocity=[-1.03, 0, 0], size_scale=2e1) # 月球放大 10 倍,距离保持不变 # init_velocity=[-1.03, 0, 0], size_scale=2e1) # 月球放大 10 倍,距离保持不变
# moon.set_light_disable(True) # moon.set_light_disable(True)
d = 100000 d = 100000
num_x = 3 num_x = 10
num_y = 10
num_z = 10
num_x = 4
num_y = 4 num_y = 4
num_z = 3 num_z = 4
x_offset = - (num_x - 1) / 2 * d
x_offset = - (num_x) / 2 * d
y_offset = - (num_y) / 2 * (d / 2) y_offset = - (num_y) / 2 * (d / 2)
z_offset = - (num_z - 1) / 2 * d z_offset = - (num_z) / 2 * d
ship_list = [] ship_list = []
for x in range(num_x): for x in range(num_x):
for y in range(num_y): for y in range(num_y):
for z in range(num_z): for z in range(num_z):
core_valaga_clas = CoreValagaClas(size_scale=15, core_valaga_clas = CoreValagaClas(size_scale=15,
init_position=[x_offset + x * d, y_offset + (2 * y + 0.5) * (d / 2), init_position=[x_offset + (x + 0.5) * d,
z_offset + z * d - 20000]).set_ignore_gravity(True) 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) ship_list.append(core_valaga_clas)
for x in range(num_x): for x in range(num_x):
for y in range(num_y): for y in range(num_y):
for z in range(num_z): for z in range(num_z):
sci_fi_bomber = SciFiBomber(size_scale=3.5, sci_fi_bomber = SciFiBomber(size_scale=3.5,
init_position=[x_offset + x * d, y_offset + (2 * y - 0.5) * (d / 2), init_position=[x_offset + (x + 0.5) * d,
z_offset + z * d - 20000]).set_ignore_gravity(True) 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) ship_list.append(sci_fi_bomber)
# earth.rotation_speed /= 6 # 地球的转速降低50倍 # earth.rotation_speed /= 6 # 地球的转速降低50倍
bodies = [earth, clouds, water_drop] + ship_list bodies = [sun, earth, clouds, water_drop] + ship_list
WATER_RANGE = 2e6 WATER_RANGE = 2e6
...@@ -103,6 +110,9 @@ if __name__ == '__main__': ...@@ -103,6 +110,9 @@ if __name__ == '__main__':
water_drop.planet.rotation_z = 90 water_drop.planet.rotation_z = 90
# water_drop.init_position = (0, 0, 0)
# water_drop.init_velocity = [0, 0, 0]
# 订阅事件后,上面2个函数功能才会起作用 # 订阅事件后,上面2个函数功能才会起作用
# 运行前会触发 on_ready # 运行前会触发 on_ready
...@@ -116,9 +126,10 @@ if __name__ == '__main__': ...@@ -116,9 +126,10 @@ if __name__ == '__main__':
ursina_run(bodies, ursina_run(bodies,
SECONDS_PER_DAY / 24, SECONDS_PER_DAY / 24,
# SECONDS_PER_WEEK * 4, # SECONDS_PER_WEEK * 4,
position=(0, 0, -220000), # position=(0, 0, -220000),
position=(0, 0, 0),
show_grid=False, show_grid=False,
cosmic_bg="", # cosmic_bg="",
# gravity_works=False, # gravity_works=False,
# save_cube_map=True, # save_cube_map=True,
timer_enabled=True, timer_enabled=True,
......
...@@ -12,6 +12,7 @@ class VideoRecorder(Entity): ...@@ -12,6 +12,7 @@ class VideoRecorder(Entity):
app.run() app.run()
""" """
def __init__(self, temp_dir="screenshot_tmp", asset_folder=None): def __init__(self, temp_dir="screenshot_tmp", asset_folder=None):
self.temp_dir = temp_dir self.temp_dir = temp_dir
# self.save_as_dir = save_as_dir # self.save_as_dir = save_as_dir
...@@ -39,7 +40,8 @@ class VideoRecorder(Entity): ...@@ -39,7 +40,8 @@ class VideoRecorder(Entity):
if self.t >= 1 / self.fps: if self.t >= 1 / self.fps:
base.saveCubeMap( base.saveCubeMap(
namePrefix=f'\\{self.temp_dir}\\cmap_' + str(self.i).zfill(self.sd) + '_#.jpg', namePrefix=f'\\{self.temp_dir}\\cmap_' + str(self.i).zfill(self.sd) + '_#.jpg',
size=2048 # size=8196 # 最大分辨率,用于图片
# size=4096 # 建议动态视频用这个
# namePrefix = 'cube_map_#.png' # namePrefix = 'cube_map_#.png'
) )
self.t = 0 self.t = 0
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册