# -*- coding:utf-8 -*- # title :宇宙模拟场景的基类 # description :可以作为宇宙模拟场景的基类,但是不是必须的 # author :Python超人 # date :2023-11-11 # link :https://gitcode.net/pythoncr/ # python_version :3.9 # ============================================================================== from objs import CoreValagaClas import sys from ursina import application class UniverseSimScenes: """ 可以作为宇宙模拟场景的基类,但是不是必须的。 """ screen_record = False record_rate = 1 def __new__(cls, *args, **kwargs): print("参数个数", len(sys.argv)) if len(sys.argv) > 1: if hasattr(cls, "window_size"): window_size = cls.window_size else: window_size = (1920, 1079) UniverseSimScenes.set_window_size(window_size, False) cls.record_rate = 2 UniverseSimScenes.screen_record = True application.time_scale = 0.00001 instance = super().__new__(cls) return instance @staticmethod def create_camera_target(init_position=[0, 0, 0], size_scale=1e3): camera_target = CoreValagaClas(name="摄像机镜头", mass=1e30, color=(111, 140, 255), # init_position=[0, 0, 0], # init_position=[D, 0, -D], # init_position=[0, D * 1.15, -D * 2.05], init_position=init_position, init_velocity=[0, 0, 0], # texture="core_valaga_clas_light.jpg", # size_scale=self.SIZE_SCALE * 1e3 size_scale=size_scale ).set_ignore_gravity(True).set_light_disable(True) return camera_target @staticmethod def set_window_size(size=(1536, 684), fullscreen=False): from ursina import window # window.x =-20 # window.y=-20 # window.position = (-20, -20) if fullscreen: # 设置窗口为全屏模式 window.fullscreen = True else: # 设置最大分辨率 # window.maximized = True window.fullscreen = False window.position = (0, 0) # 设置窗口的宽度和高度 window.size = size # self.set_window_size((3500, 1024)) # r = 1 # self.set_window_size((1920*2, 1080*2)) # self.set_window_size((int(1920 * r), int(1080 * r))) # self.set_window_size((2376, 1080)) # self.set_window_size((520, 540), fullscreen=False) @staticmethod def show_grid_axises(scale_factor=10): """ 显示网格以及坐标线 @return: """ from simulators.ursina.entities.world_grid import WorldGrid WorldGrid().draw_axises(scale_factor)