예제 #1
0
파일: freelook.py 프로젝트: asceth/devsyn
  def activate(self, position = Vec3(5.0, 5.0, 5.0)):
    print "Activating FreeLook Camera"
    # No moar cursor!
    wp = WindowProperties()
    wp.setCursorHidden(True)
    # does not exist panda 1.3.2 / but is reqired for osx-mouse movement
    try: wp.setMouseMode(WindowProperties.MAbsolute)
    except: pass
    base.win.requestProperties(wp)

    # initialize camera
    base.camLens.setFov(70) # field of view
    base.camera.reparentTo(base.render) # attach it to the render
    ## set position
    base.camera.setPos(position)
    base.camera.setR(0)

    # initialize mouse controls
    ## walking and stopping if input is lost
    self.accept("s" , self.set_walk, [self.BACK])
    self.accept("s-up" , self.set_walk, [self.STOP])
    self.accept("w" , self.set_walk, [self.FORWARD])
    self.accept("w-up" , self.set_walk, [self.STOP])
    self.accept("d" , self.set_strafe, [self.RIGHT])
    self.accept("d-up" , self.set_strafe, [self.STOP])
    self.accept("a" , self.set_strafe, [self.LEFT])
    self.accept("a-up" , self.set_strafe, [self.STOP])

    # initialize camera task
    base.taskMgr.add(self.update, "update_camera_task")
예제 #2
0
파일: mouse.py 프로젝트: ekiefl/pooltool
    def absolute(self):
        props = WindowProperties()
        props.setMouseMode(WindowProperties.M_absolute)
        base.win.requestProperties(props)

        if self.relative_requested:
            self.relative_requested = False
예제 #3
0
파일: mouse.py 프로젝트: ekiefl/pooltool
 def relative(self):
     if self.mouse.hasMouse():
         props = WindowProperties()
         props.setMouseMode(WindowProperties.M_relative)
         base.win.requestProperties(props)
         self.relative_requested = False
     else:
         self.relative_requested = True
예제 #4
0
    def __init__(self):
        ShowBase.__init__(self)

        #Disable mouse controls
        self.disableMouse()

        #Load enviromnment model
        self.scene = self.loader.loadModel("models/environment")

        #Reparent model top renderer
        self.scene.reparentTo(self.render)

        #Apply scale and position transforms on the model
        self.scene.setScale(0.25, 0.25, 0.25)
        self.scene.setPos(-8, 42, 0)

        #Add task spinCameraTask procedure to task manager
        self.taskMgr.add(self.setCameraTask, "setCameraTask")
        self.taskMgr.add(self.keyInput, "keyInput")
        self.taskMgr.add(self.moveCharacter, "movecharacter")
        self.taskMgr.add(self.mouseInput, "mouseInput")
        self.taskMgr.add(self.lookCharacter, "lookCharacter")



        #Positions of character/camera
        self.xpos = 0
        self.ypos = 0
        self.zpos = 10

        self.angleH = 0
        self.angleP = 0

        self.xInterval = 0.0
        self.yInterval = 0.0

        #Speed at which the character/camera moves
        self.movementInterval = 1
        
        self.lookInterval = 2

        #Dictionary of key states
        self.keys = {"w" : False,
                     "s" : False,
                     "a" : False,
                     "d" : False,
                     "arrow_right" : False,
                     "arrow_left": False}

        #Configuring cursor settings
        wp = WindowProperties()
        wp.setMouseMode(WindowProperties.MRelative)
        wp.setCursorHidden(True)
        self.win.requestProperties(wp)

        self.mw = self.mouseWatcherNode
 def togglePause(self):
     print ("pause pressed")
     if MyApp.paused:
         self.makeMouseRelative()
         MyApp.paused = False
     else:
         props = WindowProperties() # initiates window node
         props.setCursorHidden(False) # cursor shows
         props.setMouseMode(WindowProperties.M_absolute) # cursor moves
         self.win.requestProperties(props) # window accepts changes
         MyApp.paused = True
예제 #6
0
 def finish(self):
   """ Invoke this before this class object will be off duty """
   self.ignoreAll()
   if self.mouseTask:
     taskMgr.remove(self.mouseTask)
     self.mouseTask=None
   if self.pyga_joytask:
     taskMgr.remove(self.pyga_joytask)
     self.pyga_joytask=None
   props = WindowProperties()
   props.setCursorHidden(False)
   props.setMouseMode(WindowProperties.MAbsolute)
   base.win.requestProperties(props)
예제 #7
0
  def set_mouse_read(self, readmouse, activate):
    if self.mouseTask:
      taskMgr.remove(self.mouseTask)
      self.mouseTask=None

    if activate:
      if not self.readmouse_binds:
        for xy in ['mouse-x', 'mouse-y']:
          self.readmouse_binds[xy]=readmouse.get(xy, self._foo)
      taskName = "_esnptmo-%s" % id(self)
      self.mouseTask = taskMgr.add(self._read_mouse, taskName, sort=40)

    props = WindowProperties()
    props.setCursorHidden(activate)
    props.setMouseMode(
      [WindowProperties.MAbsolute, WindowProperties.MRelative][activate])
    base.win.requestProperties(props)
예제 #8
0
 def disable( self ):
   ''' disable first person camera rotation of mouse and free/show the mouse
   '''
   self.rotationSpeed = 0
   # disable the mouse rotation task
   taskMgr.remove('cameraRotationTask')
   
   # show mouse cursor
   wp = WindowProperties()
   wp.setCursorHidden(False)
   # does not exist panda 1.3.2 / but is reqired for osx-mouse movement
   try: wp.setMouseMode(WindowProperties.MAbsolute)
   except: pass
   base.win.requestProperties(wp)
   
   # remove the cross from the window
   self.aimingCross.detachNode()
   
   self.enabled = False
예제 #9
0
파일: freelook.py 프로젝트: asceth/devsyn
  def deactivate(self):
    print "Deactivating FreeLook Camera"
    # No moar cursor!
    wp = WindowProperties()
    wp.setCursorHidden(True)
    # does not exist panda 1.3.2 / but is reqired for osx-mouse movement
    try: wp.setMouseMode(WindowProperties.MAbsolute)
    except: pass
    base.win.requestProperties(wp)

    self.ignore("s")
    self.ignore("s-up")
    self.ignore("w")
    self.ignore("w-up")
    self.ignore("d")
    self.ignore("d-up")
    self.ignore("a")
    self.ignore("a-up")

    base.taskMgr.remove("update_camera_task")
예제 #10
0
 def enable( self ):
   ''' enable first person camera rotation by mouse and bind/hide the mouse
   '''
   # the mouse is not centered
   self.mouseCentered = False
   # enable the mouse rotation task
   taskMgr.add(self.rotationTask, 'cameraRotationTask')
   
   # hide mouse cursor
   wp = WindowProperties()
   wp.setCursorHidden(True)
   # does not exist panda 1.3.2 / but is reqired for osx-mouse movement
   try: wp.setMouseMode(WindowProperties.MRelative)
   except: pass
   base.win.requestProperties(wp)
   
   # add the cross to the window
   self.aimingCross.reparentTo( render2d )
   
   self.enabled = True
예제 #11
0
    def __init__(self):
        ShowBase.__init__(self)
        self.title = "Monkeys"
        self.setFrameRateMeter(True)

        # Disable the camera trackball controls.
        self.disableMouse()
        props = WindowProperties()
        props.setCursorHidden(True)
        props.setTitle("Stay Away From The Monkeys")
        props.setMouseMode(WindowProperties.M_relative)
        self.win.requestProperties(props)
        # set scene
        self.scene = self.loader.loadModel("models/skyTest.egg")
        self.scene.reparentTo(self.render)
        m = 37
        self.scene.setScale(m, m, m)
        self.scene.setPos(0, 0, -5)
        # set camera
        self.camera.setPos(0, 0, 1)
        self.camera.setHpr(0, 0, 0)
        self.cameraSpeed = (0, 0, 0)
        self.maxSpeed = 0.09
        self.lastKeyPressed = ""
        self.blockList = []
        self.mobMax = 0
        self.player = Player(self.camera)
        self.loadModel()
        self.createBars()
        self.die = False
        self.paused = True
        self.helpScreen()
        self.accept("p", self.flipPause)
        self.accept("h", self.helpFlip)
        self.accept("escape", sys.exit)
        self.taskMgr.add(self.update, "updateAll")
예제 #12
0
    def __init__(self):
        ShowBase.__init__(self)
        self.title = "Monkeys"
        self.setFrameRateMeter(True)

        # Disable the camera trackball controls.
        self.disableMouse()
        props = WindowProperties()
        props.setCursorHidden(True)
        props.setTitle("Stay Away From The Monkeys")
        props.setMouseMode(WindowProperties.M_relative)
        self.win.requestProperties(props)
        # set scene
        self.scene = self.loader.loadModel("models/skyTest.egg")
        self.scene.reparentTo(self.render)
        m = 37
        self.scene.setScale(m, m, m)
        self.scene.setPos(0, 0, -5)
        # set camera
        self.camera.setPos(0, 0, 1)
        self.camera.setHpr(0, 0, 0)
        self.cameraSpeed = (0, 0, 0)
        self.maxSpeed = 0.09
        self.lastKeyPressed = ""
        self.blockList = []
        self.mobMax = 0
        self.player = Player(self.camera)
        self.loadModel()
        self.createBars()
        self.die = False
        self.paused = True
        self.helpScreen()
        self.accept("p",self.flipPause)
        self.accept("h",self.helpFlip)
        self.accept("escape",sys.exit)
        self.taskMgr.add(self.update, "updateAll")
예제 #13
0
    def __init__(self):
        homedir = '/Users/nightcrawler2/PreycapMaster/'
        sim_text = raw_input('Simulation Type: ')
        if sim_text[0] == 's':
            simulation = True
        if sim_text == 'r' or sim_text == 't':
            simulation = False
        if not simulation:
            if sim_text == 't':
                para_cont_window = np.load(homedir +
                                           'para_continuity_window.npy')
                para_cont_window = int(para_cont_window)
            else:
                para_cont_window = 0
            para_positions = np.load(homedir +
                                     '3D_paracoords.npy')[:, para_cont_window:]
            fish_position = np.load(homedir + 'ufish_origin.npy')
            fish_orientation = np.load(homedir + 'ufish.npy')
            try:
                self.strikelist = np.load(homedir + 'strikelist.npy')
            except IOError:
                self.strikelist = np.zeros(fish_position.shape[0])
        elif simulation:
            para_positions = np.load(homedir + 'para_simulation' +
                                     sim_text[1] + '.npy')
            fish_position = np.load(homedir + 'origin_model' + sim_text[1] +
                                    '.npy')
            fish_orientation = np.load(homedir + 'uf_model' + sim_text[1] +
                                       '.npy')
            if para_positions.shape[1] != fish_position.shape[0]:
                end_fp = [
                    fish_position[-1] for i in range(para_positions.shape[1] -
                                                     fish_position.shape[0])
                ]
                end_fo = [
                    fish_orientation[-1]
                    for i in range(para_positions.shape[1] -
                                   fish_orientation.shape[0])
                ]
                fish_position = np.concatenate((fish_position, end_fp))
                fish_orientation = np.concatenate((fish_orientation, end_fo))
            try:
                self.strikelist = np.load(homedir + 'strikelist' +
                                          sim_text[1] + '.npy')
                print self.strikelist.shape
            except IOError:
                self.strikelist = np.zeros(fish_position.shape[0])
                print self.strikelist.shape

        else:
            self.exitmodel()
        self.numpara = para_positions.shape[0]
        self.numframes = para_positions.shape[1]
        self.para_positions = para_positions

        dfx = gaussian_filter([x[0] for x in fish_position], 1)
        dfy = gaussian_filter([y[1] for y in fish_position], 1)
        dfz = gaussian_filter([z[2] for z in fish_position], 1)
        fish_position_filt = np.array([[x, y, z]
                                       for x, y, z in zip(dfx, dfy, dfz)])
        self.fish_position = fish_position_filt

        fox = gaussian_filter([x[0] for x in fish_orientation], 1)
        foy = gaussian_filter([y[1] for y in fish_orientation], 1)
        foz = gaussian_filter([z[2] for z in fish_orientation], 1)
        fish_orientation_filt = np.array([[x, y, z]
                                          for x, y, z in zip(fox, foy, foz)])
        self.fish_orientation = fish_orientation_filt

        print fish_orientation.shape
        print fish_position.shape
        print para_positions.shape

        print('numframes')
        print self.numframes
        ShowBase.__init__(self)
        self.accept("escape", self.exitmodel)
        #        self.accept("escape", sys.exit)
        props = WindowProperties()
        props.setCursorHidden(False)
        props.setMouseMode(WindowProperties.M_absolute)
        self.win.requestProperties(props)
        self.lens1 = pandac.PandaModules.PerspectiveLens()
        self.lens1.setFov(90, 90)
        self.lens1.setNearFar(.1, 10000)
        #        self.lens1.setAspectRatio(1920/1080.)
        self.lens1.setAspectRatio(1280 / 800.)
        self.cam.node().setLens(self.lens1)
        pivot = render.attachNewNode("pivot")
        #        pivot.setPos(-1200, -1200, 944)
        pivot.setPos(3000, 3000, 944)
        self.cam.reparentTo(pivot)
        #        self.cam.setH(100)

        #        self.cam.setPos(-450, 944, 944)
        self.setBackgroundColor(1, 1, 1, 1)

        # Some Lines That Define Tank Boundaries
        self.d2 = pandac.PandaModules.LineSegs()
        self.d2.setColor(.5, .5, .5, 1)
        self.d2.setThickness(2)
        self.d2.moveTo(0, 0, 0)
        self.d2.drawTo(1888, 0, 0)
        self.d2.moveTo(0, 0, 0)
        self.d2.drawTo(0, 0, 1888)
        self.d2.moveTo(0, 0, 0)
        self.d2.drawTo(0, 1888, 0)
        self.d2.moveTo(1888, 1888, 0)
        self.d2.drawTo(1888, 1888, 1888)
        self.d2.moveTo(0, 1888, 1888)
        self.d2.drawTo(1888, 1888, 1888)
        self.d2.moveTo(1888, 0, 1888)
        self.d2.drawTo(1888, 1888, 1888)
        self.d2.moveTo(1888, 0, 0)
        self.d2.drawTo(1888, 1888, 0)
        self.d2.moveTo(1888, 0, 0)
        self.d2.drawTo(1888, 0, 1888)
        self.d2.moveTo(0, 1888, 0)
        self.d2.drawTo(1888, 1888, 0)
        self.d2.moveTo(0, 1888, 0)
        self.d2.drawTo(0, 1888, 1888)
        self.d2.moveTo(0, 0, 1888)
        self.d2.drawTo(0, 1888, 1888)
        self.d2.moveTo(0, 0, 1888)
        self.d2.drawTo(1888, 0, 1888)
        self.reference = self.loader.loadModel("sphere-highpoly")
        self.reference.reparentTo(self.render)
        self.reference.setScale(.01, .01, .01)
        self.reference.setColor(1, 1, 1)
        self.reference.setPos(944, 944, 944)
        self.cam.lookAt(self.reference)

        drawtank = True
        scale = 1888
        if drawtank:
            self.tank = self.loader.loadModel("rgbCube.egg")
            self.tank.reparentTo(self.render)
            self.tank.setScale(scale, scale, scale)
            self.tank.setTransparency(1)
            self.tank.setAlphaScale(0.2)
            self.tank.setColor(.3, .6, .9)
            self.tank.setPos(scale / 2, scale / 2, scale / 2)

# #
        geom2 = self.d2.create()
        self.nodegeom2 = self.render.attachNewNode(geom2)
        # Load the environment model.

        self.fishcone = self.loader.loadModel("Spotlight.egg")
        self.fishcone.setTexture(self.loader.loadTexture("white.png"), 1)
        self.fishcone.reparentTo(self.render)
        self.fishcone.setPos(0, 0, 0)
        self.fishcone.setScale(10, 10, 10)
        self.fishcone.setTransparency(1)
        self.fishcone.setAlphaScale(.5)
        self.fishcone.setColor(0, 0, 1)
        ''' These three lines make sure this is drawn before the tank.
        If you don't do this, tank blocks out the fishcone.'''
        self.fishcone.setBin("fixed", 0)
        self.fishcone.setDepthTest(False)
        self.fishcone.setDepthWrite(False)

        self.fishcone.show()

        self.spheres = dict({})
        for i in range(int(self.numpara / 3)):
            self.spheres[i] = self.loader.loadModel("sphere.egg")
            # self.spheres[i] = Actor("models/panda-model",
            #                 {"walk": "models/panda-walk4"})
            self.spheres[i].reparentTo(self.render)
            self.spheres[i].setScale(15, 15, 15)
            self.spheres[i].setColor(.25, .25, .25)
            # text = pandac.PandaModules.TextNode('node name')
            # text.setText(' ' + str(i))
            # textNodePath = self.spheres[i].attachNewNode(text)
            # textNodePath.setScale(10)
            # textNodePath.setTwoSided(True)
            # textNodePath.setPos(-10, 0, 0)
            # textNodePath.setHpr(180, 0, 0)

#        self.sphere_fish = self.loader.loadModel("sphere-highpoly.egg")
        self.sphere_fish = self.loader.loadModel("sphere.egg")
        self.sphere_fish.reparentTo(self.render)
        self.sphere_fish.setScale(35, 35, 35)
        self.sphere_fish.setColor(1, 0, 0)
        self.sphere_fish.setTransparency(0)
        self.sphere_fish.setAlphaScale(.9)

        self.fish_uvec = self.loader.loadModel("sphere-highpoly")
        self.fish_uvec.reparentTo(self.render)
        self.fish_uvec.setScale(.01, .01, .01)
        self.fish_uvec.setColor(1, 1, 1)

        # Add the spinCameraTask procedure to the task manager.
        self.iteration = 0
        self.complete = False
        self.taskMgr.add(self.movepara, "movepara")
 def makeMouseRelative(self):
     props = WindowProperties() # initates window node
     props.setCursorHidden(True) # hides cursor
     props.setMouseMode(WindowProperties.M_relative) # cursor stays
     self.win.requestProperties(props) # window accepts changes
예제 #15
0
 def resetCursor(self):
     # To revert to normal mode:
     props = WindowProperties()
     props.setCursorHidden(False)
     props.setMouseMode(WindowProperties.M_absolute)
     self.win.requestProperties(props)
예제 #16
0
 def absolute():
     props = WindowProperties()
     props.setMouseMode(WindowProperties.M_absolute)
     base.win.requestProperties(props)
예제 #17
0
 def relative():
     props = WindowProperties()
     props.setMouseMode(WindowProperties.M_relative)
     base.win.requestProperties(props)
예제 #18
0
파일: proj.py 프로젝트: PlumpMath/panda3d-4
from direct.showbase.ShowBase import ShowBase
import sys
import math
from pandac.PandaModules import WindowProperties
from direct.gui.OnscreenText import OnscreenText
props = WindowProperties()
props.setCursorHidden(True)
props.setMouseMode(WindowProperties.M_relative)


class MyApp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        self.win.requestProperties(props)
        self.disableMouse()
        self.bunny = self.loader.loadModel('./models/bvw-f2004--bunny/bunny')
        self.bunny.reparentTo(self.render)
        self.bunny.setPos(0, 20, 0)

        self.env = self.loader.loadModel(
            './models/bvw-f2004--streetscene/street-scene')
        self.env.reparentTo(self.render)
        self.env.setPos(-20, 20, 0)
        self.call1 = OnscreenText(text='Position (Bunny):',
                                  pos=(-.85, .8),
                                  scale=.09,
                                  fg=(1, 1, 1, 1))
        self.call2 = OnscreenText(text='Position (Camera):',
                                  pos=(-.85, .7),
                                  scale=.09,
                                  fg=(1, 1, 1, 1))
예제 #19
0
    def __init__(self):
        ShowBase.__init__(self)

        props = WindowProperties()
        props.setCursorHidden(True)
        props.setMouseMode(WindowProperties.MRelative)
        self.win.requestProperties(props)
        self.disableMouse()

        self.environ = self.loader.loadModel('models/environment')
        self.environ.reparentTo(self.render)
        self.environ.setScale(.25, .25, .25)
        self.environ.setPos(-8, 42, 0)

        self.taskMgr.add(self.move_camera_task, 'move_camera_task')
        self.taskMgr.add(self.move_projectiles_task, 'move_projectiles_task')
        self.taskMgr.add(self.print_fps_task, 'print_fps_task')

        self.key_map = {
            'cam-forward': False,
            'cam-backward': False,
            'cam-left': False,
            'cam-right': False,
        }

        self.accept('w', self.set_key, ['cam-forward', True])
        self.accept('w-up', self.set_key, ['cam-forward', False])

        self.accept('s', self.set_key, ['cam-backward', True])
        self.accept('s-up', self.set_key, ['cam-backward', False])

        self.accept('a', self.set_key, ['cam-left', True])
        self.accept('a-up', self.set_key, ['cam-left', False])

        self.accept('d', self.set_key, ['cam-right', True])
        self.accept('d-up', self.set_key, ['cam-right', False])

        self.accept('escape', sys.exit)

        self.accept('mouse1', self.set_teapot)

        self.panda = Actor('models/panda-model',
                           {'walk': 'models/panda-walk4'})
        self.panda.setScale(.01, .01, .01)
        self.panda.reparentTo(self.render)
        self.panda.loop('walk')

        point_a = Point3(0, -10, 0)
        point_b = Point3(0, 10, 0)
        point_c = Point3(180, 0, 0)
        point_d = Point3(0, 0, 0)

        self.panda_pace = Sequence(self.panda.posInterval(3,
                                                          point_a,
                                                          startPos=point_b),
                                   self.panda.hprInterval(1,
                                                          point_c,
                                                          startHpr=point_d),
                                   self.panda.posInterval(3,
                                                          point_b,
                                                          startPos=point_a),
                                   self.panda.hprInterval(1,
                                                          point_d,
                                                          startHpr=point_c),
                                   name='panda_pace')
        self.panda_pace.loop()

        self.teapot = self.loader.loadModel('teapot')
        self.projectiles = []
        self.fps_time = 0
        self.fps = OnscreenText(text='0',
                                style=1,
                                fg=(1, 1, 1, 1),
                                pos=(1.75, .95),
                                align=TextNode.ARight,
                                scale=.05)
예제 #20
0
 def cursorShit(self):
     # To set relative mode and hide the cursor:
     props = WindowProperties()
     props.setCursorHidden(True)
     props.setMouseMode(WindowProperties.M_confined)
     self.win.requestProperties(props)