From 7bb6b3e50c6d9880a7063d3177e6508b5d605cc8 Mon Sep 17 00:00:00 2001 From: march3 Date: Wed, 26 Jul 2023 19:32:44 +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 --- simulators/ursina/entities/camera3d.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/simulators/ursina/entities/camera3d.py b/simulators/ursina/entities/camera3d.py index 897311b..1a58999 100644 --- a/simulators/ursina/entities/camera3d.py +++ b/simulators/ursina/entities/camera3d.py @@ -23,39 +23,41 @@ class Camera3d(Entity): o = OCamera() is_ready = False - def __init__(self, **kwargs): + def __init__(self, eye_distance=None, **kwargs): super().__init__() for key, value in kwargs.items(): setattr(self, key, value) + if eye_distance is None: + eye_distance = 1000 + camera.parent = self self.camera_pos = "right" - # self.camera_l2r = 0.002 * AU * UrsinaConfig.SCALE_FACTOR - self.camera_l2r = 0.0005 + self.eye_distance = eye_distance * UrsinaConfig.SCALE_FACTOR def switch_position(self): if self.camera_pos == "right": # 摄像机右眼 - self.x -= 2 * self.camera_l2r + self.x -= 2 * self.eye_distance self.camera_pos = "left" elif self.camera_pos == "left": # 摄像机左眼 - self.x += 2 * self.camera_l2r + self.x += 2 * self.eye_distance self.camera_pos = "right" def update(self): pass @staticmethod - def init(init_pos=None): + def init(eye_distance=None, init_pos=None): Camera3d.is_ready = True def on_ready(): - Camera3d.init_on_ready(init_pos) + Camera3d.init_on_ready(eye_distance, init_pos) UrsinaEvent.on_ready_subscription(on_ready) UrsinaEvent.on_before_evolving_subscription(Camera3d.exec_on_before_evolving) @staticmethod - def init_on_ready(position): + def init_on_ready(eye_distance, position): if hasattr(Camera3d.o, "init_position"): position = Camera3d.o.init_position elif position is None: @@ -63,7 +65,7 @@ class Camera3d(Entity): else: position = np.array(position) * UrsinaConfig.SCALE_FACTOR - Camera3d.o.camera3d = Camera3d() + Camera3d.o.camera3d = Camera3d(eye_distance) Camera3d.o.camera3d.position = position Camera3d.o._3d_card = create_3d_card() -- GitLab