コード例 #1
0
ファイル: make_scene.py プロジェクト: codedragon/re_creation
    def __init__(self):

        with open('../play_data/pickle_data') as variable:
            start_time = pickle.load(variable)
            banana_pos = pickle.load(variable)
            #print(banana_pos)
            banana_h = pickle.load(variable)
            #print(banana_h)
            gone_bananas = pickle.load(variable)
            #print(gone_bananas)
            #print(int(gone_bananas[0][-2:]))
            self.avatar_h = float(pickle.load(variable)[-1])
            #print(avatar_h)
            apl = pickle.load(variable)[-1]
            #print(avatar_pos)

        self.avatar_pos = Point3(float(apl[0]), float(apl[1]), float(apl[2]))
        #print(self.avatar_pos)
        #config =
        #data_file =
        #time_stamp =
        # using log.txt in this directory (gobananas), Yummy banana09
        #avatar_head = -23.0306647431 
        #avatar_pos = Point3(-0.499429, 4.01372, 1)
        #banana_pos = Point3(-0.461612, 4.1383, 1)
        #banana_h = 35

        # using giz_bananarchy.txt in this directory Yummy banana4
        #avatar_h = 32.6150996909
        #avatar_pos = Point3(-2.53202, 3.98558, 1)
        #banana_pos = Point3(-2.88193, 4.38051, 1)
        #banana_h = -418

        # Things that can affect camera:
        # options resolution resW resH
        base = ShowBase()
        lens = PerspectiveLens()
        # Fov is set in config for 60
        lens.setFov(60)
        # aspectratio should be same as window size
        # this was for 800x600
        # field of view 60 46.8264...
        # aspect ratio 1.3333
        lens.setAspectRatio(800.0 / 600.0)
        base.cam.node().setLens(lens)
        print lens.getFov()
        print lens.getAspectRatio()
        # set near to be same as avatar's radius
        lens.setNear(0.1)
        print 'near camera', lens.getNear()
        #base.cam.setPos(0, 0, 1)
        base.cam.setPos(self.avatar_pos)
        base.cam.setH(self.avatar_h)
        #print(base.cam.getHpr())
        #self.smiley = base.loader.loadModel('smiley')
        #self.smiley.setPos(Point3(0, 6, 0))
        #self.smiley.reparentTo(render)
        #print 'smiley', self.smiley.getPos()
        terrainModel = base.loader.loadModel('../goBananas/models/towns/field.bam')
        terrainModel.setPos(Point3(0, 0, 0))
        terrainModel.reparentTo(render)
        #print 'terrain', terrainModel.getPos()
        skyModel = base.loader.loadModel('../goBananas/models/sky/sky.bam')
        skyModel.setPos(Point3(0, 0, 0))
        skyModel.setScale(1.6)
        skyModel.reparentTo(render)
        #print 'sky', skyModel.getPos()
        treeModel = base.loader.loadModel('../goBananas/models/trees/palmTree.bam')
        treeModel.setPos(Point3(13, 13, 0))
        treeModel.setScale(0.0175)
        treeModel.reparentTo(render)
        skyscraper = base.loader.loadModel('../goBananas/models/skyscraper/skyscraper.bam')
        skyscraper.setPos(Point3(-13, -13, 0))
        skyscraper.setScale(0.3)
        skyscraper.reparentTo(render)
        stLightModel = base.loader.loadModel('../goBananas/models/streetlight/streetlight.bam')
        stLightModel.setPos(Point3(-13, 13, 0))
        stLightModel.setScale(0.75)
        stLightModel.reparentTo(render)
        windmillModel = base.loader.loadModel('../goBananas/models/windmill/windmill.bam')
        windmillModel.setPos(Point3(13, -13, 0))
        windmillModel.setScale(0.2)
        windmillModel.setH(45)
        windmillModel.reparentTo(render)

        # get rid of bananas already gone
        ind = range(len(banana_h))
        for i in gone_bananas:
            ind.pop(int(i[-2:]))

        for i in ind:
            #print('go', i)
            bananaModel = base.loader.loadModel('../goBananas/models/bananas/banana.bam')
            bananaModel.setPos(Point3(float(banana_pos[i][0]), float(banana_pos[i][1]), float(banana_pos[i][2])))
            bananaModel.setScale(0.5)
            bananaModel.setH(float(banana_h[i]))
            bananaModel.reparentTo(render)

        # Create Ambient Light
        #ambientLight = AmbientLight('ambientLight')
        #ambientLight.setColor(Vec4(0.2, 0.2, 0.2, 1))
        #ambientLightNP = render.attachNewNode(ambientLight)
        #render.setLight(ambientLightNP)

        #self.spot = Spotlight("spot")
        #self.spot.setColor(Vec4(1, 1, 1, 1))
        #self.lens = PerspectiveLens()
        #self.lens.setFov(10)
        #self.spot.setLens(self.lens)
        #self.spotNP = render.attachNewNode(self.spot)
        #render.setLight(self.spotNP)
        #self.spotNP.setPos(self.avatar_pos)
        #print('spotlight position', self.avatar_pos)
        #self.spotNP.setHpr(90, 5, 90)

        # A dictionary of what keys are currently being pressed
        self.keys = {"right" : 0,
                     "left" : 0}
        self.accept("escape", sys.exit)
        self.accept("arrow_right", self.setKey, ['right', 1])
        self.accept("arrow_left", self.setKey, ['left', 1])
        self.accept("arrow_right-up", self.setKey, ['right', 0])
        self.accept("arrow_left-up", self.setKey, ['left', 0])

        self.playTask = base.taskMgr.add(self.frame_loop, "frame_loop")
        self.playTask.last = 0
コード例 #2
0
    def __init__(self):
        # this will be in the config file usually
        path_to_models = '../goBananas/'
        # using log.txt in this directory (gobananas), Yummy banana09
        #avatar_head = -23.0306647431 
        #avatar_pos = Point3(-0.499429, 4.01372, 1)
        #banana_pos = Point3(-0.461612, 4.1383, 1)
        #banana_h = 35

        # using giz_bananarchy.txt in this directory Yummy banana4
        avatar_head = 32.6150996909
        avatar_pos = Point3(-2.53202, 3.98558, 1)
        banana_pos = Point3(-2.88193, 4.38051, 1)
        banana_h = -418

        # Things that can affect camera:
        # options resolution resW resH
        base = ShowBase()
        wp = WindowProperties()
        wp.setFullscreen(True)
        base.win.requestProperties(wp)
        lens = PerspectiveLens()
        # Fov is set in config for 60
        lens.setFov(60)
        # aspectratio should be same as window size
        # this was for 800x600
        # field of view 60 46.8264...
        # aspect ratio 1.3333
        #lens.setAspectRatio(800.0 / 600.0)
        lens.setAspectRatio(1024.0 / 768.0)
        base.cam.node().setLens(lens)
        print lens.getFov()
        print lens.getAspectRatio()
        # set near to be same as avatar's radius
        lens.setNear(0.1)
        print 'near camera', lens.getNear()
        #base.cam.setPos(0, 0, 1)
        base.cam.setPos(avatar_pos)
        base.cam.setH(avatar_head)
        #self.smiley = base.loader.loadModel('smiley')
        #self.smiley.setPos(Point3(0, 6, 0))
        #self.smiley.reparentTo(render)
        #print 'smiley', self.smiley.getPos()
        
        # load environment
        load_models()
        for item in PlaceModels._registry:
            if 'original' in item.group:
            #if 'better' in item.group:
                item.model = path_to_models + item.model
                model = base.loader.loadModel(item.model)
                model.setPos(item.location)
                model.setScale(item.scale)
                model.reparentTo(render)
                #if item.name is not 'sky':
                #if item.name is not 'sky' and item.name is not 'terrain':
                    #item.model = path_to_models + item.model
                    #model = base.loader.loadModel(item.model)
                    #model.setPos(item.location)
                    #model.setScale(item.scale)
                    #model.reparentTo(render)

        #sky = base.loader.loadModel('models/sky.egg')
        #sky = base.loader.loadModel('models/good_sky_hole.egg')
        #scale = 6  # 6 gets you just outside the walls. The further
        # back you go after that the more it cuts off, opposite of
        # what I had assumed
        #sky.setPos(0, 0, 0)
        #sky.setPos(-5.89054 * scale, 3.23145 * scale, -0.8 * scale)
        # z = 0 is too high. weird. -0.8 seems about even

        #sky.setScale(scale)
        #sky.reparentTo(render)
        #sky.setHpr(0, 0, 0)
        #terrain = base.loader.loadModel('models/courtyard_one.egg')
        #terrain.setPos(0, 0, 0.5)
        #terrain.setScale(2.5)
        #terrain.reparentTo(render)
        #b=OnscreenImage(image="models/pics/Mount_Rainier_6874h.jpg")
        #b.parent = base.cam
        #b.scale = (640, 0, 360)
        #b.pos = (20, 20, 10)
        #base.cam.node().getDisplayRegion(0).setSort(20)
        #imageObject = OnscreenImage(image = 'models/pics/Mount_Rainier_6874h.jpg', pos = (-0.5, 0, 0.02))
        #imageObject.parent = camera
        # A dictionary of what keys are curently being pressed
        self.keys = {"right" : 0,
                     "left" : 0}
        self.accept("escape", sys.exit)
        self.accept("arrow_right", self.setKey, ['right', 1])
        self.accept("arrow_left", self.setKey, ['left', 1])
        self.accept("arrow_right-up", self.setKey, ['right', 0])
        self.accept("arrow_left-up", self.setKey, ['left', 0])

        self.playTask = base.taskMgr.add(self.frame_loop, "frame_loop")
        self.playTask.last = 0