Exemple #1
0
    def update(self, dt):
        z = 0
        if self.action['zoom_out']: z -= 1
        if self.action['zoom_in']: z += 1
        if z != 0:
            self.camera.zoom_relative(z/10.0, self.get_key_sensitivity()/10.0)

        dx, dy, dz = 0, 0, 0
        if self.action['left']: dx -= 1
        if self.action['right']: dx += 1
        if self.action['up']: dy -= 1
        if self.action['down']: dy += 1
        if self.action['spin_left']: dz += 1
        if self.action['spin_right']: dz -= 1

        if not self.is_2D():
            if dx != 0:
                self.camera.euler_rotate(dx*dt*self.get_key_sensitivity(), *(get_direction_vectors()[1]))
            if dy != 0:
                self.camera.euler_rotate(dy*dt*self.get_key_sensitivity(), *(get_direction_vectors()[0]))
            if dz != 0:
                self.camera.euler_rotate(dz*dt*self.get_key_sensitivity(), *(get_direction_vectors()[2]))
        else:
            self.camera.mouse_translate(0, 0, dx*dt*self.get_key_sensitivity(), -dy*dt*self.get_key_sensitivity())

        rz = 0
        if self.action['rotate_z_neg'] and not self.is_2D(): rz -= 1
        if self.action['rotate_z_pos'] and not self.is_2D(): rz += 1

        if rz != 0:
            self.camera.euler_rotate(rz*dt*self.get_key_sensitivity(), *(get_basis_vectors()[2]))

        if self.action['reset_camera']:
            self.camera.reset()

        if self.action['rot_preset_xy']:
            self.camera.set_rot_preset('xy')
        if self.action['rot_preset_xz']:
            self.camera.set_rot_preset('xz')
        if self.action['rot_preset_yz']:
            self.camera.set_rot_preset('yz')
        if self.action['rot_preset_perspective']:
            self.camera.set_rot_preset('perspective')

        if self.action['toggle_axes']:
            self.action['toggle_axes'] = False
            self.camera.axes.toggle_visible()

        if self.action['toggle_axe_colors']:
            self.action['toggle_axe_colors'] = False
            self.camera.axes.toggle_colors()

        if self.action['save_image']:
            self.action['save_image'] = False
            self.window.plot.saveimage()

        return True
Exemple #2
0
    def draw_axis(self, axis, color):
        ticks = self._p._axis_ticks[axis]
        radius = self._p._tick_length / 2.0
        if len(ticks) < 2:
            return

        # calculate the vector for this axis
        axis_lines = [[0, 0, 0], [0, 0, 0]]
        axis_lines[0][axis], axis_lines[1][axis] = ticks[0], ticks[-1]
        axis_vector = vec_sub(axis_lines[1], axis_lines[0])

        # calculate angle to the z direction vector
        pos_z = get_direction_vectors()[2]
        d = abs(dot_product(axis_vector, pos_z))
        d = d / vec_mag(axis_vector)

        # don't draw labels if we're looking down the axis
        labels_visible = abs(d - 1.0) > 0.02

        # draw the ticks and labels
        for tick in ticks:
            self.draw_tick_line(axis, color, radius, tick, labels_visible)

        # draw the axis line and labels
        self.draw_axis_line(axis, color, ticks[0], ticks[-1], labels_visible)
Exemple #3
0
    def draw_axis(self, axis, color):
        ticks = self._p._axis_ticks[axis]
        radius = self._p._tick_length / 2.0
        if len(ticks) < 2:
            return

        # calculate the vector for this axis
        axis_lines = [[0, 0, 0], [0, 0, 0]]
        axis_lines[0][axis], axis_lines[1][axis] = ticks[0], ticks[-1]
        axis_vector = vec_sub(axis_lines[1], axis_lines[0])

        # calculate angle to the z direction vector
        pos_z = get_direction_vectors()[2]
        d = abs(dot_product(axis_vector, pos_z))
        d = d / vec_mag(axis_vector)

        # don't draw labels if we're looking down the axis
        labels_visible = abs(d - 1.0) > 0.02

        # draw the ticks and labels
        for tick in ticks:
            self.draw_tick_line(axis, color, radius, tick, labels_visible)

        # draw the axis line and labels
        self.draw_axis_line(axis, color, ticks[0], ticks[-1], labels_visible)
Exemple #4
0
    def update(self, dt):
        z = 0
        if self.action['zoom_out']:
            z -= 1
        if self.action['zoom_in']:
            z += 1
        if z != 0:
            self.camera.zoom_relative(z / 10.0,
                                      self.get_key_sensitivity() / 10.0)

        dx, dy, dz = 0, 0, 0
        if self.action['left']:
            dx -= 1
        if self.action['right']:
            dx += 1
        if self.action['up']:
            dy -= 1
        if self.action['down']:
            dy += 1
        if self.action['spin_left']:
            dz += 1
        if self.action['spin_right']:
            dz -= 1

        if not self.is_2D():
            if dx != 0:
                self.camera.euler_rotate(dx * dt * self.get_key_sensitivity(),
                                         *(get_direction_vectors()[1]))
            if dy != 0:
                self.camera.euler_rotate(dy * dt * self.get_key_sensitivity(),
                                         *(get_direction_vectors()[0]))
            if dz != 0:
                self.camera.euler_rotate(dz * dt * self.get_key_sensitivity(),
                                         *(get_direction_vectors()[2]))
        else:
            self.camera.mouse_translate(0, 0,
                                        dx * dt * self.get_key_sensitivity(),
                                        -dy * dt * self.get_key_sensitivity())

        rz = 0
        if self.action['rotate_z_neg'] and not self.is_2D():
            rz -= 1
        if self.action['rotate_z_pos'] and not self.is_2D():
            rz += 1

        if rz != 0:
            self.camera.euler_rotate(rz * dt * self.get_key_sensitivity(),
                                     *(get_basis_vectors()[2]))

        if self.action['reset_camera']:
            self.camera.reset()

        if self.action['rot_preset_xy']:
            self.camera.set_rot_preset('xy')
        if self.action['rot_preset_xz']:
            self.camera.set_rot_preset('xz')
        if self.action['rot_preset_yz']:
            self.camera.set_rot_preset('yz')
        if self.action['rot_preset_perspective']:
            self.camera.set_rot_preset('perspective')

        if self.action['toggle_axes']:
            self.action['toggle_axes'] = False
            self.camera.axes.toggle_visible()

        if self.action['toggle_axe_colors']:
            self.action['toggle_axe_colors'] = False
            self.camera.axes.toggle_colors()

        if self.action['save_image']:
            self.action['save_image'] = False
            self.window.plot.saveimage()

        return True
Exemple #5
0
 def update(self, a):
     z = rz = dx = dy = dz = 0.0
     if a == 'rot_preset_xy':
         self.c.setup_preset('xy')
     elif a == 'rot_preset_xz':
         self.c.setup_preset('xz')
     elif a == 'rot_preset_yz':
         self.c.setup_preset('yz')
     elif a == 'rot_preset_perspective':
         self.c.setup_preset('perspective')
     elif a == 'reset_camera':
         self.c.reset()
     elif a == 'toggle_fullscreen':
         fs = self.f.fullscreen
         self.f.set_fullscreen(not fs)
         self.f.activate()
     elif a == 'toggle_axes':
         self.a.toggle_axes()
     elif a == 'toggle_points':
         self.f.toggle_viz(['points'], 'point')
     elif a == 'toggle_cobjects':
         self.f.toggle_viz(['curves', 'surfaces'], 'cobj')
     elif a == 'toggle_curves':
         self.f.toggle_viz(['curves'], 'nurbs')
     elif a == 'toggle_surfaces':
         self.f.toggle_viz(['surfaces'], 'nurbs')
     elif a == 'toggle_volumes':
         self.f.toggle_viz(['volumes'], 'nurbs')
     elif a == 'end_selection1':
         self.m.mode.end_selection1()
     elif a == 'end_selection2':
         self.m.mode.end_selection2()
     elif a == 'undo':
         self.m.undo()
     elif a == 'toggle_translate_nurbs':
         self.m.toggle_mode('TranslateNURBSMode')
     elif a == 'toggle_compose_curve':
         self.m.toggle_mode('ComposeCurveMode')
     elif a == 'toggle_compose_surface':
         self.m.toggle_mode('ComposeSurfaceMode')
     elif a == 'toggle_split_curve':
         self.m.toggle_mode('SplitCurveMode')
     elif a == 'toggle_split_surface':
         self.m.toggle_mode('SplitSurfaceMode')
     elif a == 'toggle_split_surface2':
         self.m.toggle_mode('SplitSurface2Mode')
     elif a == 'toggle_interpolate_curve':
         self.m.toggle_mode('InterpolateCurveMode')
     elif a == 'toggle_make_cubic_bezier':
         self.m.toggle_mode('MakeCubicBezierMode')
     elif a == 'toggle_make_bilinear_coons_surface':
         self.m.toggle_mode('MakeBilinearCoonsSurfaceMode')
     elif a == 'zoom_out':
         z -= 1
     elif a == 'zoom_in':
         z += 1
     elif a == 'left':
         dx -= 1
     elif a == 'right':
         dx += 1
     elif a == 'up':
         dy -= 1
     elif a == 'down':
         dy += 1
     elif a == 'spin_left':
         dz += 1
     elif a == 'spin_right':
         dz -= 1
     elif a == 'rotate_z_neg':
         rz -= 1
     elif a == 'rotate_z_pos':
         rz += 1
     if z != 0:
         self.c.zoom_relative(z)
     elif dx != 0:
         xyz = util.get_direction_vectors()[1]
         self.c.euler_rotate(dx * self.key_sensi, *xyz)
     elif dy != 0:
         xyz = util.get_direction_vectors()[0]
         self.c.euler_rotate(dy * self.key_sensi, *xyz)
     elif dz != 0:
         xyz = util.get_direction_vectors()[2]
         self.c.euler_rotate(dz * self.key_sensi, *xyz)
     elif rz != 0:
         self.c.euler_rotate(rz * self.key_sensi, *(0, 0, 1))