Exemple #1
0
class PyAgar(object):
    title = "PyAgar"
    def __init__(self, args):
        self.args = args

        pyglet.resource.path.append(os.path.join(dname,'resources'))
        pyglet.resource.reindex()
        pyglet.font.add_file('resources/DejaVuSans.ttf')
        pyglet.font.add_file('resources/unifont.ttf')

        director.set_show_FPS(False)
        w = director.init(fullscreen=True, caption=self.title, visible=True, resizable=True)

        # width = director.window.width
        # height = director.window.height
        # wnew, hnew = int(width * .75), int(height * .75)
        # director.window.set_fullscreen(False)
        # director.window.set_size(wnew, hnew)
        # w.set_location((width-wnew)/2, (height-hnew)/2)

        director.window.pop_handlers()
        director.window.push_handlers(Handler())

        self.gameScene = Scene()
        self.gameLayer = AgarLayer()
        self.gameScene.add(self.gameLayer)

        director.replace(self.gameScene)

        director.window.set_visible(True)
Exemple #2
0
def interesting_problems():
    sc = Scene()
    locales = [(6, 2, 0), (6, -2, 0), (-5, -2, 0)]
    fermat = Mobject(*TexMobjects(["x^n","+","y^n","=","z^n"]))
    fermat.scale(0.5).shift((-2.5, 0.7, 0))
    face = SimpleFace()
    tb = ThoughtBubble().shift((-1.5, 1, 0))
    sb = SpeechBubble().shift((-2.4, 1.3, 0))
    fermat_copies, face_copies, tb_copies, sb_copies = (
        Mobject(*[
            deepcopy(mob).scale(0.5).shift(locale)
            for locale in locales
        ])
        for mob in [fermat, face, tb, sb]
    )

    sc.add(face, tb)
    sc.animate(ShowCreation(fermat, run_time = 1))
    sc.add(fermat)
    sc.dither()
    sc.animate(
        Transform(
            deepcopy(fermat).repeat(len(locales)),
            fermat_copies
        ),
        FadeIn(face_copies, run_time = 1.0)
    )
    sc.animate(FadeIn(tb_copies))
    sc.dither()
    sc.animate(
        Transform(tb, sb),
        Transform(tb_copies, sb_copies)
    )
    return sc
Exemple #3
0
def different_points(radians1, radians2):
    sc = Scene()
    circle = Circle(density = CIRCLE_DENSITY).scale(RADIUS)
    sc.add(circle)
    points1, points2 = (
        [
            (RADIUS * np.cos(angle), RADIUS * np.sin(angle), 0)
            for angle in radians
        ]
        for radians in (radians1, radians2)
    )
    dots1, dots2 = (
        Mobject(*[Dot(point) for point in points])
        for points in (points1, points2)
    )
    lines1, lines2 = (
        [
            Line(point1, point2)
            for point1, point2 in it.combinations(points, 2)
        ]
        for points in (points1, points2)
    )
    sc.add(dots1, *lines1)
    sc.animate(
        Transform(dots1, dots2, run_time = 3),
        *[
            Transform(line1, line2, run_time = 3)
            for line1, line2 in zip(lines1, lines2)
        ]
    )
    sc.dither()
    return sc
Exemple #4
0
def summarize_pattern(*radians):
    sc = Scene()
    circle = Circle(density = CIRCLE_DENSITY).scale(RADIUS)
    sc.add(circle)
    points = [
        (RADIUS * np.cos(angle), RADIUS * np.sin(angle), 0)
        for angle in radians
    ]
    dots = [Dot(point) for point in points]
    last_num = None
    for x in xrange(len(points)):
        new_lines = Mobject(*[
            Line(points[x], points[y]) for y in xrange(x)
        ])
        num = TexMobject(str(moser_function(x + 1))).center()
        sc.animate(
            Transform(last_num, num) if last_num else ShowCreation(num),
            FadeIn(new_lines),
            FadeIn(dots[x]),
            run_time = 0.5,
        )
        sc.remove(last_num)
        last_num = num
        sc.add(num, dots[x], new_lines)
        sc.dither()
    return sc
Exemple #5
0
def main():
    # Defines global elements to use 
    global window
    global shape
    global scene
    global camera
    global camera_pos
    global camera_front
    global camera_up
    global camera_speed

    # Initiate scene
    scene = Scene()

    # Change coordinates of camera_pos and camera_up to change camera properties
    camera_pos = Vec3d(0, 0, 2, 1)
    camera_front = Vec3d(0, 0, -1, 1)
    camera_up = Vec3d(0, 1, 0, 1)
    camera_speed = 0.05

    # The second argument is for target. Change for target object. Add camera to the scene
    camera = Camera(camera_pos, Vec3d(0, 0, 0, 1), camera_up, camera_front)
    scene.add(camera)

    # Create a generic shape
    shape = Shape()

    # Read shape from the file and add to the scene
    input_ops = InputOperations()
    input_ops.read_file()
    shape.vertices_list, shape.faces = input_ops.parse_contents()
    scene.add(shape)

    glutInit(sys.argv)

    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)

    glutInitWindowSize(640, 480)

    glutInitWindowPosition(0, 0)

    window = glutCreateWindow("Bugrahan Donmez - Computer Graphics")

    glutDisplayFunc(scene.draw_scene)

    # Uncomment this line to get full screen.
    # glutFullScreen()

    glutIdleFunc(scene.draw_scene)

    glutReshapeFunc(ReSizeGLScene)

    glutSpecialFunc(keyPressed)
    glutKeyboardFunc(keyPressed)

    InitGL(640, 480)

    glutMainLoop()
Exemple #6
0
def logo_to_circle():
    from generate_logo import DARK_BROWN, LOGO_RADIUS
    sc = Scene()
    small_circle = Circle(density=CIRCLE_DENSITY,
                          color='skyblue').scale(LOGO_RADIUS).highlight(
                              DARK_BROWN, lambda (x, y, z): x < 0 and y > 0)
    big_circle = Circle(density=CIRCLE_DENSITY).scale(RADIUS)
    sc.add(small_circle)
    sc.dither()
    sc.animate(Transform(small_circle, big_circle))
    return sc
Exemple #7
0
    def addPathRow(self, path, row, start_date=None, end_date=None):
        # start_date (str), YYYY-MM-DD
        # end_date (str): YYYY-MM-DD
        if not self.index_db_defined:
            return 0

        sql_query_str = """
        SELECT 
         {0:s}, 
         {1:s} """.format(self._colnames["target_id"], 
                          self._colnames["url"])

        sql_query_str = sql_query_str + """
        FROM
         "{0:s}" """.format(self.index_tb_name)

        sql_query_str = sql_query_str + """
        WHERE
         {0:s} == {1:d}
         AND {2:s} == {3:d} """.format(self._colnames["wrs_path"], path, 
                                       self._colnames["wrs_row"], row)

        if start_date is not None:
            sql_query_str = sql_query_str + """
             AND {0:s} >= datetime("{1:s}")"""
            sql_query_str = sql_query_str.format(self._colnames["acq_date"], 
                                                 start_date)
        if end_date is not None:
            sql_query_str = sql_query_str + """
             AND {0:s} <= datetime("{1:s}")"""
            sql_query_str = sql_query_str.format(self._colnames["acq_date"], 
                                                 "{0:s} 23:59:59".format(end_date))

        if (self.bucket_id == "GOOGLE"):
            sql_query_str = sql_query_str + """
             AND {0:s} != "PRE" 
             AND {1:s} == "{2:s}" """.format(self._colnames["c_number"], 
                                             self._colnames["sc_id"], 
                                             self.spacecraft_id)
        sql_query_str = sql_query_str + ";"

        search_result = pd.read_sql_query(sql_query_str, self.index_db_engine)
        if len(search_result) > 0:
            for idx, row in search_result.iterrows():
                one_scn = Scene(row[self._colnames["target_id"]])
                file_urls = self._indexUrlToFileUrls(row[self._colnames["url"]])
                for f in file_urls:
                    one_scn.add(f)
                self.add(one_scn)
                self._saved_scenes[one_scn.name] = False

        return len(search_result)
Exemple #8
0
def logo_to_circle():
    from generate_logo import DARK_BROWN, LOGO_RADIUS
    sc = Scene()
    small_circle = Circle(
        density = CIRCLE_DENSITY,
        color = 'skyblue'
    ).scale(LOGO_RADIUS).highlight(
        DARK_BROWN, lambda (x, y, z) : x < 0 and y > 0
    )
    big_circle = Circle(density = CIRCLE_DENSITY).scale(RADIUS)
    sc.add(small_circle)
    sc.dither()`
    sc.animate(Transform(small_circle, big_circle))
    return sc
Exemple #9
0
def response_invitation():
    sc = Scene()
    video_icon = VideoIcon()
    mini_videos = Mobject(
        *
        [deepcopy(video_icon).scale(0.5).shift((3, y, 0)) for y in [-2, 0, 2]])
    comments = Mobject(*[
        Line((-1.2, y, 0), (1.2, y, 0), color='white')
        for y in [-1.5, -1.75, -2]
    ])

    sc.add(video_icon)
    sc.dither()
    sc.animate(Transform(deepcopy(video_icon).repeat(3), mini_videos))
    sc.add(mini_videos)
    sc.dither()
    sc.animate(ShowCreation(comments, run_time=1.0))
    return sc
Exemple #10
0
    def addScene(self, scn_name, scn_index_url):
        if scn_name not in self.scenes:
            _sc_id = self._scnIdToSpacecraftId(scn_name)
            _bkt_id = self._indexUrlToBucketId(scn_index_url)
            if _sc_id is None or _bkt_id is None:
                return None
            if _sc_id != self.spacecraft_id:
                return None
            if _bkt_id != self.bucket_id:
                return None

            one_scn = Scene(scn_name)
            file_urls = self._indexUrlToFileUrls(scn_index_url)
            for f in file_urls:
                one_scn.add(f)
            self.add(one_scn)
            self._saved_scenes[one_scn.name] = False
        return scn_name
Exemple #11
0
def count_sections(*radians):
    sc = Scene()
    circle = Circle(density = CIRCLE_DENSITY).scale(RADIUS)
    sc.add(circle)
    points = [
        (RADIUS * np.cos(angle), RADIUS * np.sin(angle), 0)
        for angle in radians
    ]
    dots = [Dot(point) for point in points]
    interior = Region(lambda x, y : x**2 + y**2 < RADIUS**2)    
    for x in xrange(1, len(points)):
        if x == 1:
            sc.animate(ShowCreation(dots[0]), ShowCreation(dots[1]))
            sc.add(dots[0], dots[1])
        else:
            sc.animate(ShowCreation(dots[x]))
            sc.add(dots[x])
        new_lines = Mobject(*[
            Line(points[x], points[y]) for y in xrange(x)
        ])
        sc.animate(Transform(deepcopy(dots[x]), new_lines, run_time = 2.0))
        sc.add(new_lines)
        sc.dither()
        regions = plane_partition_from_points(*points[:x+1])
        for reg in regions:
            reg.intersect(interior)
        regions = filter(lambda reg : reg.bool_grid.any(), regions)

        last_num = None
        for reg, count in zip(regions, it.count(1)):
            number = TexMobject(str(count)).shift((RADIUS, 3, 0))
            sc.highlight_region(reg)
            rt = 1.0 / (x**0.8)
            sc.add(number)
            sc.remove(last_num)
            last_num = number
            sc.dither(rt)
            sc.reset_background()
        sc.remove(last_num)
        sc.animate(Transform(last_num, deepcopy(last_num).center()))
        sc.dither()
        sc.remove(last_num)
    return sc
Exemple #12
0
def response_invitation():
    sc = Scene()
    video_icon = VideoIcon()
    mini_videos = Mobject(*[
        deepcopy(video_icon).scale(0.5).shift((3, y, 0))
        for y in [-2, 0, 2]
    ])
    comments = Mobject(*[
        Line((-1.2, y, 0), (1.2, y, 0), color = 'white')
        for y in [-1.5, -1.75, -2]
    ])

    sc.add(video_icon)
    sc.dither()
    sc.animate(Transform(deepcopy(video_icon).repeat(3), mini_videos))
    sc.add(mini_videos)
    sc.dither()
    sc.animate(ShowCreation(comments, run_time = 1.0))
    return sc
Exemple #13
0
def next_few_videos(*radians):
    sc = Scene()
    circle = Circle(density=CIRCLE_DENSITY).scale(RADIUS)
    points = [(RADIUS * np.cos(angle), RADIUS * np.sin(angle), 0)
              for angle in radians]
    dots = Mobject(*[Dot(point) for point in points])
    lines = Mobject(*[
        Line(point1, point2) for point1, point2 in it.combinations(points, 2)
    ])
    thumbnail = Mobject(circle, dots, lines)
    frame = VideoIcon().highlight("black",
                                  lambda point: np.linalg.norm(point) < 0.5)
    big_frame = deepcopy(frame).scale(SPACE_WIDTH)
    frame.shift((-5, 0, 0))

    sc.add(thumbnail)
    sc.dither()
    sc.animate(
        Transform(big_frame, frame),
        Transform(thumbnail,
                  deepcopy(thumbnail).scale(0.15).shift((-5, 0, 0))))
    sc.add(frame, thumbnail)
    sc.dither()
    last = frame
    for x in [-2, 1, 4]:
        vi = VideoIcon().shift((x, 0, 0))
        sc.animate(
            Transform(deepcopy(last), vi),
            Animation(thumbnail)  #Keeps it from getting burried
        )
        sc.add(vi)
        last = vi
    return sc
Exemple #14
0
def connect_points(*radians):
    sc = Scene()
    circle = Circle(density=CIRCLE_DENSITY).scale(RADIUS)
    sc.add(circle)
    points = [(RADIUS * np.cos(angle), RADIUS * np.sin(angle), 0)
              for angle in radians]
    dots = [Dot(point) for point in points]
    sc.add(*dots)
    anims = []
    all_lines = []
    for x in xrange(len(points)):
        lines = [Line(points[x], points[y]) for y in range(len(points))]
        lines = Mobject(*lines)
        anims.append(Transform(deepcopy(dots[x]), lines, run_time=3.0))
        all_lines.append(lines)
    sc.animate(*anims)
    sc.add(*all_lines)
    sc.dither()
    return sc
Exemple #15
0
def next_few_videos(*radians):
    sc = Scene()
    circle = Circle(density = CIRCLE_DENSITY).scale(RADIUS)
    points = [
        (RADIUS * np.cos(angle), RADIUS * np.sin(angle), 0)
        for angle in radians
    ]
    dots = Mobject(*[
        Dot(point) for point in points
    ])
    lines = Mobject(*[
        Line(point1, point2)
        for point1, point2 in it.combinations(points, 2)
    ])
    thumbnail = Mobject(circle, dots, lines)
    frame = VideoIcon().highlight(
        "black",
        lambda point : np.linalg.norm(point) < 0.5
    )
    big_frame = deepcopy(frame).scale(SPACE_WIDTH)
    frame.shift((-5, 0, 0))

    sc.add(thumbnail)
    sc.dither()
    sc.animate(
        Transform(big_frame, frame),
        Transform(
            thumbnail, 
            deepcopy(thumbnail).scale(0.15).shift((-5, 0, 0))
        )
    )
    sc.add(frame, thumbnail)
    sc.dither()
    last = frame
    for x in [-2, 1, 4]:
        vi = VideoIcon().shift((x, 0, 0))
        sc.animate(
            Transform(deepcopy(last), vi),
            Animation(thumbnail)#Keeps it from getting burried
        )
        sc.add(vi)
        last = vi
    return sc
Exemple #16
0
def connect_points(*radians):
    sc = Scene()
    circle = Circle(density = CIRCLE_DENSITY).scale(RADIUS)
    sc.add(circle)
    points = [
        (RADIUS * np.cos(angle), RADIUS * np.sin(angle), 0)
        for angle in radians
    ]
    dots = [Dot(point) for point in points]
    sc.add(*dots)
    anims = []
    all_lines = []
    for x in xrange(len(points)):
        lines = [Line(points[x], points[y]) for y in range(len(points))]
        lines = Mobject(*lines)
        anims.append(Transform(deepcopy(dots[x]), lines, run_time = 3.0))
        all_lines.append(lines)
    sc.animate(*anims)
    sc.add(*all_lines)
    sc.dither()
    return sc
Exemple #17
0
 def add(self, *mobjects):
     Scene.add(self, *list(mobjects) + self.foreground_mobjects)
Exemple #18
0
 def add_foreground_mobjects(self, *mobjects):
     self.foreground_mobjects += list(mobjects)
     Scene.add(self, *mobjects)
Exemple #19
0
class WhackAMole(object):
    
    title = "Whack A Mole"
        
    def __init__(self):
        
        if not os.path.exists("data"): os.mkdir("data")
            
        pyglet.resource.path.append('resources')
        pyglet.resource.reindex()
        pyglet.resource.add_font('cutouts.ttf')
        pyglet.resource.add_font('scoreboard.ttf')
        
        director.init(width=int(1024*1.0), height=int(768*1.1),
                  caption=self.title, visible=False, resizable=True)
        director.window.set_size(int(1024*1.0), int(768*1.1))
        
        director.window.pop_handlers()
        director.window.push_handlers(DefaultHandler())
                    
        director.settings = {'overlay': False,
                             'eyetracker': True,
                             'eyetracker_ip': '127.0.0.1',
                             'eyetracker_out_port': '4444',
                             'eyetracker_in_port': '5555',
                             'calibration_speed': 1,
                             'calibration_wait': 1,
                             'calibration_random': 1,
                             'calibration_level': 3,
                             'calibration_auto': 1,
                             'calibration_points': 2,
                             'calibration_eye': 0
                            }
        
        self.client = None
        
        self.client = iViewXClient(director.settings['eyetracker_ip'], int(director.settings['eyetracker_out_port']))
        self.listener = reactor.listenUDP(int(director.settings['eyetracker_in_port']), self.client)

        director.set_show_FPS(False)
        director.window.set_fullscreen(False)
        if director.settings['eyetracker']:
            director.window.set_mouse_visible(False)
        else:
            director.window.set_mouse_visible(True)
                
        # Intro scene and its layers        
        self.introScene = Scene()
                    
        self.mainMenu = MainMenu()
        self.optionsMenu = OptionsMenu()
        self.eyetrackerScrim = EyetrackerScrim()
        
        self.mplxLayer = MultiplexLayer(self.mainMenu, self.optionsMenu)
        self.introScene.add(self.mplxLayer, 1)
        
        self.introScene.register_event_type('start_task')
        self.introScene.register_event_type('eyetracker_info_changed')
        self.introScene.push_handlers(self)
                
        # Task scene and its layers
        self.taskScene = Scene()
        self.taskLayer = Task(self.client)

        self.calibrationLayer = CalibrationLayer(self.client)
        self.calibrationLayer.register_event_type('show_headposition')
        self.calibrationLayer.register_event_type('hide_headposition')
        self.calibrationLayer.push_handlers(self)
        
        self.taskLayer.register_event_type('new_trial')
        self.taskLayer.register_event_type('start_calibration')
        self.taskLayer.register_event_type('stop_calibration')
        self.taskLayer.push_handlers(self)
                
        self.taskScene.add(self.taskLayer, 1)
        
        self.taskScene.register_event_type('show_intro_scene')
        self.taskScene.push_handlers(self)
            
        director.window.set_visible(True)
        
    def start_calibration(self, on_success, on_failure):
        self.calibrationLayer.on_success = on_success
        self.calibrationLayer.on_failure = on_failure
        self.calibrationLayer.points = director.settings['calibration_points']
        self.calibrationLayer.eye = director.settings['calibration_eye']
        self.calibrationLayer.level = director.settings['calibration_level']
        self.calibrationLayer.speed = director.settings['calibration_speed']
        self.calibrationLayer.auto = director.settings['calibration_auto']
        self.calibrationLayer.wait = director.settings['calibration_wait']
        self.calibrationLayer.random = director.settings['calibration_random']
        self.taskScene.add(self.calibrationLayer, 2)
        
    def stop_calibration(self):
        self.taskScene.remove(self.calibrationLayer)
            
    def eyetracker_listen(self, _):
        self.listener = reactor.listenUDP(int(director.settings['eyetracker_in_port']), self.client)
        self.introScene.remove(self.eyetrackerScrim)
        self.introScene.enable_handlers(True)
        
    def eyetracker_info_changed(self):
        if self.client.remoteHost != director.settings['eyetracker_ip'] or \
        self.client.remotePort != int(director.settings['eyetracker_out_port']):
            self.client.remoteHost = director.settings['eyetracker_ip']
            self.client.remotePort = int(director.settings['eyetracker_out_port'])
        else:
            self.introScene.add(self.eyetrackerScrim, 2)
            self.introScene.enable_handlers(False)
            d = self.listener.stopListening()
            d.addCallback(self.eyetracker_listen)
        
    def show_intro_scene(self):
        self.mplxLayer.switch_to(0)
        director.replace(self.introScene)
        
    def start_task(self):
        director.replace(SplitRowsTransition(self.taskScene))
Exemple #20
0
        Point(3, -5, -4),
        2,
        Phong(
            Color.BLACK,
            Color.BLACK,
            Color.BLACK,
            50,
            transmittance=0.8,
            ior=1.5,
            reflect_bg=True
        )
    ),
]


for o in objects:
    scene.add(o)
for l in lights:
    scene.add_light(l)

result = scene.render()

img = Image.new('RGB', (scene.width, scene.height), tuple(scene.background))
pixels = img.load()

for u in range(img.size[0]):
    for v in range(img.size[1]):
        pixels[u, v] = tuple(result[v][u])

img.save('output.png')
Exemple #21
0
class WilliamsEnvironment(object):
    
    title = "The Williams' Search Task"
        
    def __init__(self):
        
        if not os.path.exists("data"): os.mkdir("data")
        
        pyglet.resource.path.append('resources')
        pyglet.resource.reindex()
        pyglet.resource.add_font('Pipe_Dream.ttf')
        pyglet.resource.add_font('cutouts.ttf')
        
        director.set_show_FPS(False)
        director.init(fullscreen=True, caption=self.title, visible=True, resizable=True)

        width = director.window.width
        height = director.window.height

        director.window.set_fullscreen(False)
        director.window.set_size(int(width * .75), int(height * .75))

        director.window.pop_handlers()
        director.window.push_handlers(Handler())

        director.settings = {'seed':'1',
                             'eyetracker': True,
                             'eyetracker_ip': '127.0.0.1',
                             'eyetracker_out_port': '4444',
                             'eyetracker_in_port': '5555',
                             'player': 'Human',
                             'players': ['Human'],
                             'mode': 'Insane',
                             'modes': ['Easy', 'Moderate', 'Hard', 'Insane', 'Experiment']}
        
        self.client = None
        self.client_actr = None
        
        if ACTR6:
            director.settings['players'].append("ACT-R")
            #director.settings['player'] = "ACT-R"
            director.settings['eyetracker'] = False
            self.client_actr = JNI_Server(self)
            self.listener_actr = reactor.listenTCP(6666, self.client_actr)
        elif eyetracking:
            self.client = iViewXClient(director.settings['eyetracker_ip'], int(director.settings['eyetracker_out_port']))
            self.listener = reactor.listenUDP(int(director.settings['eyetracker_in_port']), self.client) 
        
        if platform.system() != 'Windows':
            director.window.set_icon(pyglet.resource.image('logo.png'))
            cursor = director.window.get_system_mouse_cursor(director.window.CURSOR_HAND)
            director.window.set_mouse_cursor(cursor)
        
        # Intro scene and its layers        
        self.introScene = Scene()
                    
        self.mainMenu = MainMenu()
        self.optionsMenu = OptionsMenu()
        self.participantMenu = ParticipantMenu()
        self.introBackground = BackgroundLayer()
        self.eyetrackerScrim = EyetrackerScrim()
        
        self.introScene.add(self.introBackground)
        self.mplxLayer = MultiplexLayer(self.mainMenu, self.optionsMenu, self.participantMenu)
        self.introScene.add(self.mplxLayer, 1)
        
        self.introScene.register_event_type('start_task')
        self.introScene.register_event_type('eyetracker_info_changed')
        self.introScene.push_handlers(self)
        
        # Task scene and its layers
        self.taskScene = Scene()
        
        self.taskBackgroundLayer = TaskBackground()
        self.taskLayer = Task(self.client, self.client_actr)
        self.actrScrim = ACTRScrim()
        
        if self.client:
            self.calibrationLayer = CalibrationLayer(self.client)
            self.calibrationLayer.register_event_type('show_headposition')
            self.calibrationLayer.register_event_type('hide_headposition')
            self.calibrationLayer.push_handlers(self)
            self.headpositionLayer = HeadPositionLayer(self.client)
        
        self.taskLayer.register_event_type('new_trial')
        self.taskLayer.push_handlers(self.taskBackgroundLayer)
        self.taskLayer.register_event_type('start_calibration')
        self.taskLayer.register_event_type('stop_calibration')
        self.taskLayer.register_event_type('show_headposition')
        self.taskLayer.register_event_type('hide_headposition')
        self.taskLayer.register_event_type('actr_wait_connection')
        self.taskLayer.register_event_type('actr_wait_model')
        self.taskLayer.register_event_type('actr_running')
        self.taskLayer.push_handlers(self)
        
        self.taskScene.add(self.taskBackgroundLayer)
        self.taskScene.add(self.taskLayer, 1)
        self.actrScrim.visible = False
        self.taskScene.add(self.actrScrim, 3)
        
        self.taskScene.register_event_type('show_intro_scene')
        self.taskScene.push_handlers(self)
            
        director.window.set_visible(True)
    
    def actr_wait_connection(self):
        self.actrScrim.setWaitConnection()
        self.actrScrim.visible = True
        
    def actr_wait_model(self):
        self.actrScrim.setWaitModel()
        self.actrScrim.visible = True
    
    def actr_running(self):
        self.actrScrim.visible = False

    def start_calibration(self, on_success, on_failure):
        self.calibrationLayer.on_success = on_success
        self.calibrationLayer.on_failure = on_failure
        self.taskScene.add(self.calibrationLayer, 2)
        
    def stop_calibration(self):
        self.taskScene.remove(self.calibrationLayer)
    
    def show_headposition(self):
        self.taskScene.add(self.headpositionLayer, 3)
        
    def hide_headposition(self):
        self.taskScene.remove(self.headpositionLayer)
        
    def eyetracker_listen(self, _):
        self.listener = reactor.listenUDP(int(director.settings['eyetracker_in_port']), self.client)
        self.introScene.remove(self.eyetrackerScrim)
        self.introScene.enable_handlers(True)
        
    def eyetracker_info_changed(self):
        if self.client.remoteHost != director.settings['eyetracker_ip'] or \
        self.client.remotePort != int(director.settings['eyetracker_out_port']):
            self.client.remoteHost = director.settings['eyetracker_ip']
            self.client.remotePort = int(director.settings['eyetracker_out_port'])
        else:
            self.introScene.add(self.eyetrackerScrim, 2)
            self.introScene.enable_handlers(False)
            d = self.listener.stopListening()
            d.addCallback(self.eyetracker_listen)
        
    def show_intro_scene(self):
        director.window.set_mouse_visible(True)
        self.mplxLayer.switch_to(0)
        director.replace(self.introScene)
        
    def start_task(self):
        director.window.set_mouse_visible(False)
        director.replace(SplitRowsTransition(self.taskScene))
Exemple #22
0
from scene import Scene
from player import Player
from ia import Ia
from ball import Ball

WIDTH = 800
HEIGHT = 600
BG = (255, 67, 0)

pygame.init()

screen = pygame.display.set_mode((WIDTH, HEIGHT))
scene = Scene(screen, BG)

scene.add(Player("player", 5, (WIDTH / 2) - 50, 10, 50))
scene.add(Ia("ia", WIDTH - 5 - 10, (HEIGHT / 2) - 50, 10, 50))
scene.add(Ball("ball", (WIDTH / 2) - (10 / 2), (HEIGHT / 2) - (10 / 2), 10, 10))

scene.draw()

clock = pygame.time.Clock()
totalTime = pygame.time.get_ticks()

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

    timeChange = pygame.time.get_ticks() - totalTime
    totalTime = pygame.time.get_ticks()
Exemple #23
0
 def add(self, *mobjects):
     Scene.add(self, *list(mobjects)+self.foreground_mobjects)
Exemple #24
0
 def add_foreground_mobjects(self, *mobjects):
     self.foreground_mobjects += list(mobjects)
     Scene.add(self, *mobjects)
Exemple #25
0
def main():
    Config.load()
    keepper = Keeper()
    scene = Scene(Config.SceneConfig.DeltaTime, keepper,
                  Config.SceneConfig.BlastRadius)

    #Primary conditions for rocket
    rX = np.array([
        Config.RocketConfig.x, Config.RocketConfig.y, Config.RocketConfig.z,
        Config.RocketConfig.vx, Config.RocketConfig.vy, Config.RocketConfig.vz,
        Config.RocketConfig.FuelMass
    ])

    #Primary conditions for  attack Aircraft
    aX = np.array([
        Config.AtackAircraftConfig.x, Config.AtackAircraftConfig.y,
        Config.AtackAircraftConfig.z, Config.AtackAircraftConfig.vx,
        Config.AtackAircraftConfig.vy, Config.AtackAircraftConfig.vz,
        Config.AtackAircraftConfig.FuelMass
    ])

    #Primary conditions for target Aircraft
    tX = np.array([
        Config.TargetAircraftConfig.x, Config.TargetAircraftConfig.y,
        Config.TargetAircraftConfig.z, Config.TargetAircraftConfig.vx,
        Config.TargetAircraftConfig.vy, Config.TargetAircraftConfig.vz,
        Config.TargetAircraftConfig.FuelMass
    ])

    #thrustcoff, FuelMassPerSecond, MassWithoutFuel, Vector, mediator
    atackAircraft = Aircraft(Config.AtackAircraftConfig.thrustCoff,
                             Config.AtackAircraftConfig.FuelMassPerSecond,
                             Config.AtackAircraftConfig.MassWithoutFuel, aX,
                             keepper)

    #:46,47s/AtackAircraft/TargetAircraft/g
    targetAircraft = Aircraft(Config.TargetAircraftConfig.thrustCoff,
                              Config.TargetAircraftConfig.FuelMassPerSecond,
                              Config.TargetAircraftConfig.MassWithoutFuel, tX,
                              keepper)

    for _ in range(Config.AtackAircraftConfig.rockets):
        atackAircraft.add(
            Rocket(Config.RocketConfig.thrustCoff,
                   Config.RocketConfig.FuelMassPerSecond,
                   Config.RocketConfig.MassWithoutFuel, rX, keepper))

    scene.add(atackAircraft)
    scene.add(targetAircraft)
    scene.add(atackAircraft.dettachRocket())

    while not scene.simulate():
        print("Target: {}".format(keepper.X[7:10]))
        print("Rocket: {}".format(keepper.X[14:17]))
    #    pass

    print("The Target is striked\n")
    print("Last Vector:")
    print(
        "---------------------------------------------------------------------"
    )
    print(scene.res[-1])
    print(
        "---------------------------------------------------------------------"
    )
    print("Target Coordinates:")
    print(
        "---------------------------------------------------------------------"
    )
    print(keepper.X[7:10])
    print(
        "---------------------------------------------------------------------"
    )
    print("Rocket Coordinates:")
    print(
        "---------------------------------------------------------------------"
    )
    print(keepper.X[14:17])
    print(
        "---------------------------------------------------------------------"
    )
    print("time: {}\n".format(scene.T[-1]))

    T = np.linspace(0, float(scene.T[-1]), scene.count + 1)
    a = 221
    plt.subplot(a)
    plt.plot(scene.res[:, 14], scene.res[:, 15], 'r', scene.res[:, 7],
             scene.res[:, 8])
    plt.title('Rocket X, Target X')

    plt.subplot(222)
    plt.plot(scene.res[:, 14], scene.res[:, 16], 'r', scene.res[:, 7],
             scene.res[:, 9])
    plt.title('Rocket Y, Target Y')

    plt.subplot(223)
    plt.plot(scene.res[:, 15], scene.res[:, 16], 'r', scene.res[:, 8],
             scene.res[:, 9])
    plt.title('Rocket Z, Target Z')

    mpl.rcParams['legend.fontsize'] = 10
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    ax.plot(
        scene.res[:, 14], scene.res[:, 15],
        scene.res[:,
                  16])  #, scene.res[:, 7], scene.res[:, 8], scene.res[:, 9])
    ax.plot(scene.res[:, 7], scene.res[:, 8], scene.res[:, 9])
    ax.legend()

    plt.show()
Exemple #26
0
class SnakeEnvironment(object):
    
    title = "Snake"
        
    def __init__(self):
        
        if not os.path.exists("data"): os.mkdir("data")
        
        pyglet.resource.path.append('resources')
        pyglet.resource.reindex()
        pyglet.resource.add_font('Pipe_Dream.ttf')
        pyglet.resource.add_font('cutouts.ttf')
        pyglet.resource.add_font('scoreboard.ttf')
        
        p = pyglet.window.get_platform()
        d = p.get_default_display()
        s = d.get_default_screen()
        
        director.init(width=s.width, height=s.height,
                  caption=self.title, visible=False, resizable=True)
        director.window.set_size(int(s.width * .75), int(s.height * .75))
        
        director.window.pop_handlers()
        director.window.push_handlers(DefaultHandler())
            
        director.settings = {'eyetracker': True,
                             'eyetracker_ip': '127.0.0.1',
                             'eyetracker_out_port': '4444',
                             'eyetracker_in_port': '5555',
                             'board_size': '31',
                             'speed_factor': '0.990',
                             'fixation_overlay': False,
                             'player': 'Human',
                             'players': ['Human']}
        
        self.client = None
        self.client_actr = None
        
        if ACTR6:
            director.settings['players'].append("ACT-R")
            #director.settings['player'] = "ACT-R"
            director.settings['eyetracker'] = False
            self.client_actr = JNI_Server(self)
            self.listener_actr = reactor.listenTCP(6666, self.client_actr)
        if eyetracking:
            self.client = iViewXClient(director.settings['eyetracker_ip'], int(director.settings['eyetracker_out_port']))
            self.listener = reactor.listenUDP(int(director.settings['eyetracker_in_port']), self.client) 
        
        director.fps_display = clock.ClockDisplay(font=font.load('', 18, bold=True))
        #fps_display = FPSDisplay(director.window)
        #fps_display.label.font_size = 12
        #director.fps_display = fps_display

        director.set_show_FPS(True)
        director.window.set_fullscreen(False)
        director.window.set_mouse_visible(False)
        
        if platform.system() != 'Windows':
            director.window.set_icon(pyglet.resource.image('logo.png'))
        
        # Intro scene and its layers        
        self.introScene = Scene()
                    
        self.mainMenu = MainMenu()
        self.optionsMenu = OptionsMenu()
        self.participantMenu = ParticipantMenu()
        self.introBackground = BackgroundLayer()
        self.eyetrackerScrim = EyetrackerScrim()
        
        self.introScene.add(self.introBackground)
        self.mplxLayer = MultiplexLayer(self.mainMenu, self.optionsMenu, self.participantMenu)
        self.introScene.add(self.mplxLayer, 1)
        
        self.introScene.register_event_type('start_task')
        self.introScene.register_event_type('eyetracker_info_changed')
        self.introScene.push_handlers(self)
        
        # Task scene and its layers
        self.taskScene = Scene()
        
        self.taskBackgroundLayer = TaskBackground()
        self.taskLayer = Task(self.client, self.client_actr)
        self.scoreLayer = self.taskLayer.score_layer
        self.actrScrim = ACTRScrim()
        
        if self.client:
            self.calibrationLayer = CalibrationLayer(self.client)
            self.calibrationLayer.register_event_type('show_headposition')
            self.calibrationLayer.register_event_type('hide_headposition')
            self.calibrationLayer.push_handlers(self)
            self.headpositionLayer = HeadPositionLayer(self.client)
            self.fixationLayer = FixationLayer(self.client)
        
        self.taskLayer.register_event_type('new_trial')
        self.taskLayer.push_handlers(self.taskBackgroundLayer)
        self.taskLayer.register_event_type('start_calibration')
        self.taskLayer.register_event_type('stop_calibration')
        self.taskLayer.register_event_type('show_headposition')
        self.taskLayer.register_event_type('hide_headposition')
        self.taskLayer.register_event_type('show_fixation')
        self.taskLayer.register_event_type('hide_fixation')
        self.taskLayer.register_event_type('actr_wait_connection')
        self.taskLayer.register_event_type('actr_wait_model')
        self.taskLayer.register_event_type('actr_running')
        self.taskLayer.push_handlers(self)
        
        self.taskScene.add(self.taskBackgroundLayer)
        self.taskScene.add(self.taskLayer, 1)
        self.taskScene.add(self.scoreLayer, 1)
        self.actrScrim.visible = False
        self.taskScene.add(self.actrScrim, 3)
        
        self.taskScene.register_event_type('show_intro_scene')
        self.taskScene.push_handlers(self)
            
        director.window.set_visible(True)
    
    def actr_wait_connection(self):
        self.actrScrim.setWaitConnection()
        self.actrScrim.visible = True
        
    def actr_wait_model(self):
        self.actrScrim.setWaitModel()
        self.actrScrim.visible = True
    
    def actr_running(self):
        self.actrScrim.visible = False

    def start_calibration(self, on_success, on_failure):
        self.calibrationLayer.on_success = on_success
        self.calibrationLayer.on_failure = on_failure
        self.taskScene.add(self.calibrationLayer, 2)
        
    def stop_calibration(self):
        self.taskScene.remove(self.calibrationLayer)
    
    def show_headposition(self):
        self.taskScene.add(self.headpositionLayer, 3)
        
    def hide_headposition(self):
        self.taskScene.remove(self.headpositionLayer)
        
    def show_fixation(self):
        self.taskScene.add(self.fixationLayer, 4)
        
    def hide_fixation(self):
        self.taskScene.remove(self.fixationLayer)
        
    def eyetracker_listen(self, _):
        self.listener = reactor.listenUDP(int(director.settings['eyetracker_in_port']), self.client)
        self.introScene.remove(self.eyetrackerScrim)
        self.introScene.enable_handlers(True)
        
    def eyetracker_info_changed(self):
        if self.client.remoteHost != director.settings['eyetracker_ip'] or \
        self.client.remotePort != int(director.settings['eyetracker_out_port']):
            self.client.remoteHost = director.settings['eyetracker_ip']
            self.client.remotePort = int(director.settings['eyetracker_out_port'])
        else:
            self.introScene.add(self.eyetrackerScrim, 2)
            self.introScene.enable_handlers(False)
            d = self.listener.stopListening()
            d.addCallback(self.eyetracker_listen)
        
    def show_intro_scene(self):
        self.mplxLayer.switch_to(0)
        director.replace(self.introScene)
        
    def start_task(self):
        director.replace(SplitRowsTransition(self.taskScene))
Exemple #27
0
class Renderer(object):
    def __init__(self):
        self.scene = Scene()
        self.scene.add(Snowman())
        sn2 = Snowman()
        sn3 = Snowman()
        sn2.x = 3
        sn3.z = 2
        self.scene.add(sn2)
        self.scene.add(sn3)
        self.scene.camera.translate(0, -.5, -4)

    def setup(self):
        """Set up the OpenGL environment."""
        # Initialize the drawing environment (create main windows, etc)
        glutInit(sys.argv)
        glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH)
        glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT)
        glutCreateWindow(name)

        glShadeModel(GL_SMOOTH)

        glClearDepth(1.0)
        glDepthFunc(GL_LESS)                                # The Type Of Depth Test To Do
        glEnable(GL_DEPTH_TEST)                             # Enables Depth Testing
        glShadeModel(GL_SMOOTH)                             # Enables Smooth Color Shading

        glMatrixMode(GL_PROJECTION)
        glLoadIdentity()                                    # Reset The Projection Matrix

        # Calculate The Aspect Ratio Of The Window
        gluPerspective(45.0, float(WINDOW_WIDTH)/float(WINDOW_HEIGHT), 0.1, 100.0)

        glMatrixMode(GL_MODELVIEW)

        # Set up keyboard listeners.
        glutKeyboardFunc(self.on_key)

    def start(self):
        """Begin the render."""
        glutDisplayFunc(self.render)
        glutMainLoop()

    def render(self):
        """Render the scene."""
        self.scene.render()

    def on_key(self, key, x, y):
        """Handle a keypress."""
        print "Received", key
        if key == "a":
            self.scene.camera.translate(x=0.05)
        elif key == "d":
            self.scene.camera.translate(x=-0.05)
        elif key == "s":
            self.scene.camera.translate(y=0.05)
        elif key == "w":
            self.scene.camera.translate(y=-0.05)
        elif key == "e":
            self.scene.camera.translate(z=0.05)
        elif key == "q":
            self.scene.camera.translate(z=-0.05)
        elif key == "j":
            self.scene.camera.rotate(y=-5)
        elif key == "l":
            self.scene.camera.rotate(y=5)
        elif key == "k":
            self.scene.camera.rotate(x=5)
        elif key == "i":
            self.scene.camera.rotate(x=-5)
        elif key == "u":
            self.scene.camera.rotate(z=5)
        elif key == "o":
            self.scene.camera.rotate(z=-5)

        self.render()