From 5c3cdc9d103d44967b3b31f343aaf9bcdb39367a Mon Sep 17 00:00:00 2001 From: march3 Date: Sun, 26 Mar 2023 20:01:48 +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 --- sim_scenes/func.py | 10 ++++++++-- sim_scenes/solar_system/hd_mercury.py | 4 +++- sim_scenes/solar_system/hd_pluto.py | 4 +++- sim_scenes/solar_system/hd_venus.py | 4 +++- simulators/ursina_simulator.py | 22 +++++++++++++++++----- 5 files changed, 34 insertions(+), 10 deletions(-) diff --git a/sim_scenes/func.py b/sim_scenes/func.py index 6a93a47..8c921ce 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 cb81dad..12b2bc4 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 d0f4ae6..42838e3 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 13925cb..fd2aa58 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 1d3477f..9343a6a 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 -- GitLab