diff --git a/sim_scenes/func.py b/sim_scenes/func.py index 6a93a47e3dcd23d74c7076c58bcb4b74ad1311f1..8c921ce6c59b9e0f1c75616cd1ce05e70bfefe15 100644 --- a/sim_scenes/func.py +++ b/sim_scenes/func.py @@ -64,7 +64,8 @@ def ursina_run(bodies, show_grid=True, show_trail=False, show_name=False, - save_as_json=None): + save_as_json=None, + view_closely=False): """ :param bodies: 天体 @@ -144,7 +145,12 @@ def ursina_run(bodies, sys.modules["__main__"].update = callback_update if show_trail: UrsinaConfig.show_trail = show_trail - simulator.run(dt, light=light, cosmic_bg=cosmic_bg, show_grid=show_grid, bg_music=bg_music) + simulator.run(dt, + light=light, + cosmic_bg=cosmic_bg, + show_grid=show_grid, + bg_music=bg_music, + view_closely=view_closely) def mpl_run(bodies, dt=SECONDS_PER_WEEK, gif_file_name=None, gif_max_frame=200): diff --git a/sim_scenes/solar_system/hd_mercury.py b/sim_scenes/solar_system/hd_mercury.py index cb81dad122f2074e0e8978078ee2782aa0315c95..12b2bc43a5afb588aa837137d80b4a181fdf6acf 100644 --- a/sim_scenes/solar_system/hd_mercury.py +++ b/sim_scenes/solar_system/hd_mercury.py @@ -22,4 +22,6 @@ if __name__ == '__main__': # 使用 ursina 查看的运行效果 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # position = 左-右+、上+下-、前+后- - ursina_run(bodies, SECONDS_PER_DAY, position=(0, 30000, -800000), cosmic_bg="textures/cosmic1.jpg") + ursina_run(bodies, SECONDS_PER_DAY, position=(0, 30000, -800000), + # cosmic_bg="textures/cosmic1.jpg", + view_closely=True) diff --git a/sim_scenes/solar_system/hd_pluto.py b/sim_scenes/solar_system/hd_pluto.py index d0f4ae644340ec8c993c5e46b721b96c87ebc55b..42838e363ee4a0b202963458c4b863652b95f97c 100644 --- a/sim_scenes/solar_system/hd_pluto.py +++ b/sim_scenes/solar_system/hd_pluto.py @@ -22,4 +22,6 @@ if __name__ == '__main__': # 使用 ursina 查看的运行效果 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # position = 左-右+、上+下-、前+后- - ursina_run(bodies, SECONDS_PER_DAY, position=(0, 10000, -450000), cosmic_bg="textures/cosmic1.jpg") + ursina_run(bodies, SECONDS_PER_DAY, position=(0, 10000, -450000), + # cosmic_bg="textures/cosmic1.jpg", + view_closely=True) diff --git a/sim_scenes/solar_system/hd_venus.py b/sim_scenes/solar_system/hd_venus.py index 13925cb7cdb52c0a254db92b52cdaddf1845924a..fd2aa5838ad5f994d1b3f497915483694fad0586 100644 --- a/sim_scenes/solar_system/hd_venus.py +++ b/sim_scenes/solar_system/hd_venus.py @@ -22,4 +22,6 @@ if __name__ == '__main__': # 使用 ursina 查看的运行效果 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # position = 左-右+、上+下-、前+后- - ursina_run(bodies, SECONDS_PER_DAY, position=(0, 30000, -1500000), cosmic_bg="textures/cosmic1.jpg") + ursina_run(bodies, SECONDS_PER_DAY, position=(0, 30000, -1500000), + # cosmic_bg="textures/cosmic1.jpg", + view_closely=True) diff --git a/simulators/ursina_simulator.py b/simulators/ursina_simulator.py index 1d3477fce946006c5f9a21cc0e510093f0f5bea6..9343a6af4d4b339618dd0cb8901847df9ebf6e50 100644 --- a/simulators/ursina_simulator.py +++ b/simulators/ursina_simulator.py @@ -164,7 +164,12 @@ class UrsinaSimulator(Simulator): """ # Add skybox from ursina import Sky - Sky(texture=texture).scale = 10000 + + sky_scale = 50000 + Sky(texture=texture).scale = sky_scale + # 一定要够大,如果小于 Sky(texture=texture).scale = 50000,宇宙背景就会出现黑色方洞 + if camera.clip_plane_far < sky_scale * 2: + camera.clip_plane_far = sky_scale * 2 # texture = load_texture(texture) # sky_dome = Entity(model='sky_dome', texture=texture, scale=10000, @@ -232,11 +237,18 @@ class UrsinaSimulator(Simulator): def run(self, dt, **kwargs): window.title = '宇宙模拟器' + view_closely = False + if "view_closely" in kwargs: + view_closely = kwargs["view_closely"] + + if view_closely: + # 设置 camera 的裁剪面和位置 + camera.clip_plane_near = 0.01 + camera.fov = 60 + + # 一定要够大,如果小于 Sky(texture=texture).scale = 50000,宇宙背景就会出现黑色方洞 + # camera.clip_plane_far = 100000 - # 设置 camera 的裁剪面和位置 - camera.clip_plane_near = 0.01 - camera.fov = 60 - camera.clip_plane_far = 50000 # camera.position = (0, 10, -20) # camera.rotation_x = -30