Example #1
0
def cap_loop(ver, rb, sleep_time):
    global lock, STATE
    key = KeyControl()
    cap = ImgCap(ver)
    if ver == 0:
        key.first_run()
    key.start()
    while True:
        if STATE == -1:
            cap.create_dir()
            print('clean save dir')
            while key.get_key() != 10:
                pass
            # rb.start_simulation()
            STATE = 10
        if STATE == -2:
            print('thread exit')
            key.end()
            sys.exit(0)
        state = key.get_key()
        if state is not None:
            STATE = state
        lock.acquire()
        try:
            cap.capture(rb.get_image(), STATE)
        except Exception as e:
            time.sleep(sleep_time)
            continue
        finally:
            lock.release()
        time.sleep(sleep_time)
def thread_loop():
    global STATE
    key = KeyControl()
    key.start()
    while True:
        state = key.get_key()
        if state is not None:
            STATE = state
Example #3
0
def only_control_loop(ver, rb, sleep_time):
    global lock, STATE
    key = KeyControl()
    key.start()
    while True:
        state = key.get_key()
        if state is not None:
            STATE = state
        time.sleep(0.2)
Example #4
0
    def __init__(self):
        """ Constructs the World """
        self.sky = SkyDome("Resources/Models/skydome.egg")
        self.sky.sky.setScale(Vec3(10, 10, 10))
        self.setupPhysX()
        self.setup3DAudio()

        self.car = Car(self.physxScene, self.audio3d, "defender.xml")
        self.car.setActiveAudioProfile('outside')

        self.setupLight()
        self.initTrack()
        taskMgr.add(self.simulate, 'PhysX Simulation')

        # To to use Steering Wheel change inputHandler to SteeringControl
        self.inputHandler = KeyControl(self.car)
        #self.inputHandler = SteeringControl( self.car )

        self.cameraControl = CameraControl(self.car)
        self.cameraControl.enableTowerCamera()
        self.speedometer = Speedometer()
        render.setShaderAuto()
        self.accept('escape', sys.exit)
Example #5
0
 def __init__(self):
     """ Constructs the World """
     self.sky = SkyDome( "Resources/Models/skydome.egg" )
     self.sky.sky.setScale( Vec3( 10,10,10))
     self.setupPhysX()
     self.setup3DAudio()
     
     self.car = Car( self.physxScene, self.audio3d, "defender.xml" )
     self.car.setActiveAudioProfile( 'outside' )
     
     self.setupLight()
     self.initTrack()
     taskMgr.add(self.simulate, 'PhysX Simulation')
     
     # To to use Steering Wheel change inputHandler to SteeringControl 
     self.inputHandler = KeyControl( self.car )
     #self.inputHandler = SteeringControl( self.car )
     
     self.cameraControl = CameraControl( self.car )
     self.cameraControl.enableTowerCamera()
     self.speedometer = Speedometer();
     render.setShaderAuto() 
     self.accept( 'escape', sys.exit )
Example #6
0
class World( DirectObject ):
    """ Dynamic world """
    
    def __init__(self):
        """ Constructs the World """
        self.sky = SkyDome( "Resources/Models/skydome.egg" )
        self.sky.sky.setScale( Vec3( 10,10,10))
        self.setupPhysX()
        self.setup3DAudio()
        
        self.car = Car( self.physxScene, self.audio3d, "defender.xml" )
        self.car.setActiveAudioProfile( 'outside' )
        
        self.setupLight()
        self.initTrack()
        taskMgr.add(self.simulate, 'PhysX Simulation')
        
        # To to use Steering Wheel change inputHandler to SteeringControl 
        self.inputHandler = KeyControl( self.car )
        #self.inputHandler = SteeringControl( self.car )
        
        self.cameraControl = CameraControl( self.car )
        self.cameraControl.enableTowerCamera()
        self.speedometer = Speedometer();
        render.setShaderAuto() 
        self.accept( 'escape', sys.exit )
        
        # To turn on physx visual debugging, uncomment below
        #self.enablePhysxDebug()
        
    def initTrack(self):
        """ Loads the track model and the collision model for it. """
        kitchen = PhysxKitchen()
        
        trackCollision = loader.loadModel( "Resources/Models/TrackCollision.egg" )
        fenceCollision = loader.loadModel( "Resources/Models/FenceCollision.egg")
        self.track = loader.loadModel( "Resources/Models/Track.egg" )

        triMeshDesc = PhysxTriangleMeshDesc()
        triMeshDesc.setFromNodePath( trackCollision )
        triMesh = kitchen.cookTriangleMesh( triMeshDesc )
        triMeshShapeDesc = PhysxTriangleMeshShapeDesc()
        triMeshShapeDesc.setMesh( triMesh )
        
        triMeshDesc2 = PhysxTriangleMeshDesc()
        triMeshDesc2.setFromNodePath( fenceCollision )
        triMesh2 = kitchen.cookTriangleMesh( triMeshDesc2 )
        triMeshShapeDesc2 = PhysxTriangleMeshShapeDesc()
        triMeshShapeDesc2.setMesh( triMesh2 )
        
        actor = PhysxActorDesc()
        actor.setName( 'trackcollision' )
        actor.addShape( triMeshShapeDesc )
        actor.addShape( triMeshShapeDesc2 )
        self.physxtrack = self.physxScene.createActor( actor )
        
        self.track.reparentTo( render )
        loader.loadModel( "Resources/Models/Fence.egg" ).reparentTo( self.track )
        loader.loadModel( "Resources/Models/Rocks.egg" ).reparentTo( self.track )
        
        linfog = Fog( "Fog" )
        linfog.setColor( Vec4( 0.8, 0.85, 0.8, 1 ) )
        linfog.setExpDensity( 0.003 )
        self.track.attachNewNode(linfog)
        render.setFog(linfog)
        
    def enablePhysxDebug(self):
        """ Turns on physx visual debuggging """
        self.debugNP = render.attachNewNode(self.physxScene.getDebugGeomNode())
        self.debugNP.node().on()
        self.debugNP.node().visualizeWorldAxes(True)
        
    def setupPhysX(self):
        """ Sets up the physx world """
        self.physx = PhysxManager.getGlobalPtr()
        sceneDesc = PhysxSceneDesc()
        sceneDesc.setGravity(Vec3(0, 0, -9.81))
        self.physxScene = self.physx.createScene(sceneDesc)
        
        mGround = self.physxScene.getMaterial( 0 )
        mGround.setRestitution(0.0)
        mGround.setStaticFriction(0.8)
        mGround.setDynamicFriction(0.2)
        
    def setup3DAudio(self):
        """ Initializes the 3D audio manager """
        self.audio3d = Audio3DManager( base.sfxManagerList[0], base.cam )
    
    def setupLight(self):
        """ Sets up the scene lighting """
        ambient_source = AmbientLight('ambient')
        ambient_source.setColor(Vec4( 0.6, 0.65, 0.7, 1 ))
        ambient = render.attachNewNode(ambient_source.upcastToPandaNode())
        render.setLight( ambient )
        
        sun = render.attachNewNode( DirectionalLight( 'sun' ) )
        sun.node().setScene( render )
        render.setLight( sun )
        sun.reparentTo( self.car.chassisModel )
        sun.setH( -60 )
        sun.setP( -60 )
        sun.setPos( 0, 0, 10 )
        sun.node().getLens().setFov( 70 )
        sun.node().getLens().setNearFar( 1, 20 )
        sun.node().getLens().setFilmSize( 16, 16 )
        sun.node().setColor( Vec4( 1, 0.96, 1, 1 ))
        sun.node().setShadowCaster( True )
        self.sun = sun
        
        
    def simulate(self, task):
        """ Simulation loop, called every frame """
        dt = globalClock.getDt()
        self.physxScene.simulate(dt)
        self.physxScene.fetchResults()
        self.car.simulate(dt)
        self.cameraControl.simulate(dt)
        self.sun.setH( render, -60 )
        self.sun.setP( render, -60 )
        self.speedometer.updateSpeedometer( self.car.speed )
        self.inputHandler.simulate( dt )
        return task.cont
Example #7
0
class World(DirectObject):
    """ Dynamic world """
    def __init__(self):
        """ Constructs the World """
        self.sky = SkyDome("Resources/Models/skydome.egg")
        self.sky.sky.setScale(Vec3(10, 10, 10))
        self.setupPhysX()
        self.setup3DAudio()

        self.car = Car(self.physxScene, self.audio3d, "defender.xml")
        self.car.setActiveAudioProfile('outside')

        self.setupLight()
        self.initTrack()
        taskMgr.add(self.simulate, 'PhysX Simulation')

        # To to use Steering Wheel change inputHandler to SteeringControl
        self.inputHandler = KeyControl(self.car)
        #self.inputHandler = SteeringControl( self.car )

        self.cameraControl = CameraControl(self.car)
        self.cameraControl.enableTowerCamera()
        self.speedometer = Speedometer()
        render.setShaderAuto()
        self.accept('escape', sys.exit)

        # To turn on physx visual debugging, uncomment below
        #self.enablePhysxDebug()

    def initTrack(self):
        """ Loads the track model and the collision model for it. """
        kitchen = PhysxKitchen()

        trackCollision = loader.loadModel(
            "Resources/Models/TrackCollision.egg")
        fenceCollision = loader.loadModel(
            "Resources/Models/FenceCollision.egg")
        self.track = loader.loadModel("Resources/Models/Track.egg")

        triMeshDesc = PhysxTriangleMeshDesc()
        triMeshDesc.setFromNodePath(trackCollision)
        triMesh = kitchen.cookTriangleMesh(triMeshDesc)
        triMeshShapeDesc = PhysxTriangleMeshShapeDesc()
        triMeshShapeDesc.setMesh(triMesh)

        triMeshDesc2 = PhysxTriangleMeshDesc()
        triMeshDesc2.setFromNodePath(fenceCollision)
        triMesh2 = kitchen.cookTriangleMesh(triMeshDesc2)
        triMeshShapeDesc2 = PhysxTriangleMeshShapeDesc()
        triMeshShapeDesc2.setMesh(triMesh2)

        actor = PhysxActorDesc()
        actor.setName('trackcollision')
        actor.addShape(triMeshShapeDesc)
        actor.addShape(triMeshShapeDesc2)
        self.physxtrack = self.physxScene.createActor(actor)

        self.track.reparentTo(render)
        loader.loadModel("Resources/Models/Fence.egg").reparentTo(self.track)
        loader.loadModel("Resources/Models/Rocks.egg").reparentTo(self.track)

        linfog = Fog("Fog")
        linfog.setColor(Vec4(0.8, 0.85, 0.8, 1))
        linfog.setExpDensity(0.003)
        self.track.attachNewNode(linfog)
        render.setFog(linfog)

    def enablePhysxDebug(self):
        """ Turns on physx visual debuggging """
        self.debugNP = render.attachNewNode(self.physxScene.getDebugGeomNode())
        self.debugNP.node().on()
        self.debugNP.node().visualizeWorldAxes(True)

    def setupPhysX(self):
        """ Sets up the physx world """
        self.physx = PhysxManager.getGlobalPtr()
        sceneDesc = PhysxSceneDesc()
        sceneDesc.setGravity(Vec3(0, 0, -9.81))
        self.physxScene = self.physx.createScene(sceneDesc)

        mGround = self.physxScene.getMaterial(0)
        mGround.setRestitution(0.0)
        mGround.setStaticFriction(0.8)
        mGround.setDynamicFriction(0.2)

    def setup3DAudio(self):
        """ Initializes the 3D audio manager """
        self.audio3d = Audio3DManager(base.sfxManagerList[0], base.cam)

    def setupLight(self):
        """ Sets up the scene lighting """
        ambient_source = AmbientLight('ambient')
        ambient_source.setColor(Vec4(0.6, 0.65, 0.7, 1))
        ambient = render.attachNewNode(ambient_source.upcastToPandaNode())
        render.setLight(ambient)

        sun = render.attachNewNode(DirectionalLight('sun'))
        sun.node().setScene(render)
        render.setLight(sun)
        sun.reparentTo(self.car.chassisModel)
        sun.setH(-60)
        sun.setP(-60)
        sun.setPos(0, 0, 10)
        sun.node().getLens().setFov(70)
        sun.node().getLens().setNearFar(1, 20)
        sun.node().getLens().setFilmSize(16, 16)
        sun.node().setColor(Vec4(1, 0.96, 1, 1))
        sun.node().setShadowCaster(True)
        self.sun = sun

    def simulate(self, task):
        """ Simulation loop, called every frame """
        dt = globalClock.getDt()
        self.physxScene.simulate(dt)
        self.physxScene.fetchResults()
        self.car.simulate(dt)
        self.cameraControl.simulate(dt)
        self.sun.setH(render, -60)
        self.sun.setP(render, -60)
        self.speedometer.updateSpeedometer(self.car.speed)
        self.inputHandler.simulate(dt)
        return task.cont