Exemplo n.º 1
0
 def rotation(self, angle, v):
     self.translate(ut.Vect3().init_vect3(-self.look_at.x, -self.look_at.y,
                                          -self.look_at.z))
     self.position.rotate(angle, v)
     self.translate(ut.Vect3().init_vect3(self.look_at.x, self.look_at.y,
                                          self.look_at.z))
     self.set_angle_x()
Exemplo n.º 2
0
 def motion(self, x, y):
     if self.translate:
         trans_x = (x - self.startx) / 30.0
         trans_y = (y - self.starty) / 30.0
         left = self.camera.get_left()
         up = self.camera.get_up()
         self.camera.translate_all(ut.Vect3().init_vect3(
             left.x * trans_x, left.y * trans_x, left.z * trans_x))
         self.camera.translate_all(ut.Vect3().init_vect3(
             up.x * (-trans_y), up.y * (-trans_y), up.z * (-trans_y)))
         self.startx = x
         self.starty = y
     if self.zoom:
         self.camera.zoom((y - self.starty) / 10.0)
         self.starty = y
     if self.rotate:
         sensitivity = 100.0
         rot = y - self.starty
         tmp = self.camera.get_position_from_look_at()
         tmp.y = tmp.x
         tmp.x = -tmp.z
         tmp.z = tmp.y
         tmp.y = 0.0
         tmp.normalise()
         self.camera.rotate(rot * sensitivity, tmp)
     glutPostRedisplay()
Exemplo n.º 3
0
 def set_angle_x(self):
     self.angle_x = ut.Vect3().get_angle(
         ut.Vect3().init_vect3(self.position.x, self.position.y + 1,
                               self.position.z),
         ut.Vect3().init_vect3(self.position.x, self.position.y,
                               self.position.z),
         ut.Vect3().init_vect3(self.look_at.x, self.look_at.y,
                               self.look_at.z))
Exemplo n.º 4
0
 def zoom(self, z):
     dist = ut.Vect3().init_vect3(self.position.x - self.look_at.x,
                                  self.position.y - self.look_at.y,
                                  self.position.z - self.look_at.z)
     dist = dist.length(dist)
     if dist - z > z:
         self.translate(ut.Vect3().init_vect3(self.forward.x * z,
                                              self.forward.y * z,
                                              self.forward.z * z))
Exemplo n.º 5
0
 def key(self, bkey, x, y):
     key = bkey.decode("utf-8")
     if key == 'o':
         self.camera.set_position(ut.Vect3().init_vect3(2.56, 1.2, 0.6))
         self.camera.set_look_at(ut.Vect3().init_vect3(0.79, 0.02, -1.53))
     elif key == 'q' or key == 'Q' or key == 27:
         self.current_instance.run = False
         glutLeaveMainLoop()
     glutPostRedisplay()
Exemplo n.º 6
0
 def rotate(self, speed, v):
     angle = speed / 360.0
     if v.x != 0.0:
         tmp_a = self.angle_x - 90.0 + angle
     else:
         tmp_a = self.angle_x - 90.0
     if -89.5 < tmp_a < 89.5:
         self.translate(ut.Vect3().init_vect3(-self.look_at.x,
                                              -self.look_at.y,
                                              -self.look_at.z))
         self.position.rotate(angle, v)
         self.translate(ut.Vect3().init_vect3(self.look_at.x,
                                              self.look_at.y,
                                              self.look_at.z))
     self.set_angle_x()
Exemplo n.º 7
0
    def apply_transformations(self):
        self.forward.init_vect3(self.look_at.x - self.position.x,
                                self.look_at.y - self.position.y,
                                self.look_at.z - self.position.z)

        self.left = ut.Vect3().init_vect3(self.forward.z, 0, -self.forward.x)

        self.up = ut.Vect3().init_vect3(
            self.left.y * self.forward.z - self.left.z * self.forward.y,
            self.left.z * self.forward.x - self.left.x * self.forward.z,
            self.left.x * self.forward.y - self.left.y * self.forward.x)

        self.forward.normalise()
        self.left.normalise()
        self.up.normalise()
Exemplo n.º 8
0
 def __init__(self):
     self.is_init = False
     self.run = False
     self.current_instance = self
     self.camera = TrackBallCamera(ut.Vect3().init_vect3(2.56, 1.2, 0.6),
                                   ut.Vect3().init_vect3(0.79, 0.02, -1.53))
     self.translate = False
     self.rotate = False
     self.zoom = False
     self.zed_path = []
     self.path_locker = threading.Lock()
     self.zed3d = zm.Zed3D()
     self.track_state = sl.POSITIONAL_TRACKING_STATE
     self.txt_t = ""
     self.txt_r = ""
     self.startx = 0
     self.starty = 0
Exemplo n.º 9
0
    def special_key(self, key, x, y):
        sensitivity = 150.0
        tmp = self.camera.get_position_from_look_at()

        tmp.y = tmp.x
        tmp.x = -tmp.z
        tmp.z = tmp.y
        tmp.y = 0.0
        tmp.normalise()

        if key == GLUT_KEY_UP:
            self.camera.rotate(-sensitivity, tmp)
        elif key == GLUT_KEY_DOWN:
            self.camera.rotate(sensitivity, tmp)
        elif key == GLUT_KEY_LEFT:
            self.camera.rotate(sensitivity,
                               ut.Vect3().init_vect3(0.0, 1.0, 0.0))
        elif key == GLUT_KEY_RIGHT:
            self.camera.rotate(-sensitivity,
                               ut.Vect3().init_vect3(0.0, 1.0, 0.0))
Exemplo n.º 10
0
    def __init__(self, p=ut.Vect3(), la=ut.Vect3()):
        self.position = ut.Vect3()
        self.look_at = ut.Vect3()
        self.forward = ut.Vect3()
        self.up = ut.Vect3()
        self.left = ut.Vect3()

        self.position.x = p.x
        self.position.y = p.y
        self.position.z = p.z

        self.look_at.x = la.x
        self.look_at.t = la.y
        self.look_at.z = la.z

        self.angle_x = 0.0
        self.apply_transformations()
Exemplo n.º 11
0
 def get_left(self):
     return ut.Vect3().init_vect3(self.left.x, self.left.y, self.left.z)
Exemplo n.º 12
0
 def get_up(self):
     return ut.Vect3().init_vect3(self.up.x, self.up.y, self.up.z)
Exemplo n.º 13
0
 def get_forward(self):
     return ut.Vect3().init_vect3(self.forward.x, self.forward.y,
                                  self.forward.z)
Exemplo n.º 14
0
 def get_look_at(self):
     return ut.Vect3().init_vect3(self.look_at.x, self.look_at.y,
                                  self.look_at.z)
Exemplo n.º 15
0
 def get_position_from_look_at(self):
     return ut.Vect3().init_vect3(self.position.x - self.look_at.x,
                                  self.position.y - self.look_at.y,
                                  self.position.z - self.look_at.z)
Exemplo n.º 16
0
 def get_position(self):
     return ut.Vect3().init_vect3(self.position.x, self.position.y,
                                  self.position.z)