示例#1
0
文件: stamp.py 项目: frog/salone-f3
    def __init__(self, outcome, gameWindow):
        self.outcome = outcome
        if outcome is "fact":
            self.filename = "fact.png"
            self.endpoint = "voteFact"
        elif outcome is "fiction":
            self.filename = "fiction.png"
            self.endpoint = "voteFiction"
        else:
            raise ValueError("Invalid stamp outcome: %s" % outcome)

        self.texture_data = glesutils.TextureData.from_file(
            "images/" + self.filename, True)
        self.texture = glesutils.Texture.from_data(self.texture_data)

        self.matrix = transforms.translation(0, 0, 0)

        #precompute rotoscale
        self.rotoscaleIn = transforms.stretching(
            1, 1 / gameWindow.actual_w_to_h_ratio, 1)

        scaleX = self.texture_data.width / 2 / float(gameWindow.width)
        scaleY = self.texture_data.height / 2 / float(gameWindow.height)
        self.rotoscaleIn = transforms.compose(
            transforms.stretching(scaleX, scaleY, 1), self.rotoscaleIn)

        self.rotoscaleOut = transforms.stretching(
            1, gameWindow.actual_w_to_h_ratio, 1)

        #intial values
        self.alpha = 1.0
        self.rot = 0
        self.zoom = 1.0
示例#2
0
    def on_frame(self, ftime):
        global start_time
        global data

        self.angle_y = self.angle_y + .5

        self.program1.uniform.eye_matrix.value = transforms.compose(
            transforms.rotation_degrees(self.angle_z, "z"),
            transforms.rotation_degrees(self.angle_y, "y"),
            transforms.rotation_degrees(self.angle_x, "x"),
            transforms.translation(0.0, -0.9, 0.0))

        frame_position = int((pygame.time.get_ticks() - start_time) * 44.1 * 4)

        #        print("haow far through ", frame_position/len(data))
        #        print("time: ", pygame.time.get_ticks() - start_time)

        scale_factor = 0
        if frame_position + 1000 < len(data):
            for i in range(1, 500):
                scale_factor1 = scale_factor + int.from_bytes(
                    data[frame_position + 2 * i:frame_position + (2 * i) + 1],
                    byteorder='little',
                    signed=True)**2

            scale_factor1 = scale_factor1 / 500

            self.sound_matrix[self.counter % 20] = transforms.stretching(
                1.0, scale_factor1, 1.0)

            self.program1.uniform.point_size.value = float(scale_factor1 / 4)

            self.counter = self.counter + 1

        self.redraw()
示例#3
0
	def draw(self, ts=None, pos=None):
		ts = ts if ts else self.target_size
		pos = pos if pos else self.pos
		### a scale value of 2 covers whole window
		sx = 2.0
		sy = 2.0

		tx = 0
		ty = 0

		if ts:
			sx *= float(ts[0])/float(self.booth.width)
			sy *= float(ts[1])/float(self.booth.height)

		if pos:
			tx = (2.0*float(pos[0])/float(self.booth.width))-1.0
			ty = (2.0*float(pos[1])/float(self.booth.height))-1.0

		Tm = transforms.translation((-0.5,-0.5,0))
		### correct inverted texture
		R = transforms.rotation_degrees(180, "z")
		### shift texture to center of rotation before rotating
		S = transforms.stretching(sx, sy, 0)
		T = transforms.translation((tx,-ty,0))
		self.booth.mvp_mat.value = T.dot(S).dot(R).dot(Tm)
		#print("Texture size: %dx%d" % (texture_data.width, texture_data.height))
		self.booth.program.use()
		self.texture.bind(self.booth.program.uniform.texture.value)
		self.booth.drawing.draw()
    def on_frame(self, ftime):
        global start_time
        global data

        self.angle_y = self.angle_y + .5

        self.program1.uniform.eye_matrix.value = transforms.compose(transforms.rotation_degrees(self.angle_z, "z"), 
                transforms.rotation_degrees(self.angle_y, "y"), 
                transforms.rotation_degrees(self.angle_x, "x"),
                transforms.translation(0.0, -0.9, 0.0))

        frame_position = int((pygame.time.get_ticks() - start_time) * 44.1 * 4)

#        print("haow far through ", frame_position/len(data))
#        print("time: ", pygame.time.get_ticks() - start_time)



        scale_factor = 0
        if frame_position + 1000 < len(data):
            for i in range(1,500):
                scale_factor1 = scale_factor + int.from_bytes(data[frame_position+2*i:frame_position+(2*i)+1], byteorder='little', signed=True)**2

            scale_factor1 = scale_factor1 / 500

            self.sound_matrix[self.counter%20] = transforms.stretching(1.0,scale_factor1,1.0)

            self.program1.uniform.point_size.value = float(scale_factor1/4)

            self.counter = self.counter+1

        self.redraw()
示例#5
0
    def init(self):

        self.angle = 10
        self.framerate = 20

        self.vertex_shader = glesutils.VertexShader(vertex_glsl)
        self.fragment_shader = glesutils.FragmentShader(fragment_glsl)

        self.program1 = glesutils.Program(self.vertex_shader, self.fragment_shader)
        self.program1.use()

        glClearDepthf(1.0)
        glDepthFunc(GL_LESS)
        glEnable(GL_DEPTH_TEST)
        glFrontFace(GL_CW)

        glClearColor(0.5, 0.5, 0.5, 1)

        self.program1.uniform.light_dir.value = ((0, 1, -1))

        self.verteces_buffer = array_spec.create_buffer(vertex_attrib=vertices)
        for face in faces:
            face["element_buffer"] = glesutils.ElementBuffer(face["vertex_index"])

        self.outer_matrix = transforms.compose(transforms.rotation_degrees(20, "z"), 
                transforms.rotation_degrees(20, "y"), 
                transforms.rotation_degrees(20, "x"),
                transforms.scaling(1.2))

        self.points_matrix = transforms.compose(transforms.stretching(0.1, 1, 1.5),
                             transforms.translation(-0.5, -0.5, -0.5))
示例#6
0
    def draw(self, ts=None, pos=None):
        ts = ts if ts else self.target_size
        pos = pos if pos else self.pos
        ### a scale value of 2 covers whole window
        sx = 2.0
        sy = 2.0

        tx = 0
        ty = 0

        if ts:
            sx *= float(ts[0]) / float(self.booth.width)
            sy *= float(ts[1]) / float(self.booth.height)

        if pos:
            tx = (2.0 * float(pos[0]) / float(self.booth.width)) - 1.0
            ty = (2.0 * float(pos[1]) / float(self.booth.height)) - 1.0

        Tm = transforms.translation((-0.5, -0.5, 0))
        ### correct inverted texture
        R = transforms.rotation_degrees(180, "z")
        ### shift texture to center of rotation before rotating
        S = transforms.stretching(sx, sy, 0)
        T = transforms.translation((tx, -ty, 0))
        self.booth.mvp_mat.value = T.dot(S).dot(R).dot(Tm)
        #print("Texture size: %dx%d" % (texture_data.width, texture_data.height))
        self.booth.program.use()
        self.texture.bind(self.booth.program.uniform.texture.value)
        self.booth.drawing.draw()
示例#7
0
 def draw(self):
     m = transforms.compose(transforms.rotation_degrees(self.angle, "y"), transforms.stretching(-1, 1, 1))
     self.program.uniform.texcoord_mat.value = m[:3,:3]
     self.drawing.draw()
示例#8
0
 def draw(self):
     m = transforms.compose(transforms.rotation_degrees(self.angle, "y"), transforms.stretching(-1, 1, 1))
     self.program.uniform.texcoord_mat.value = m[:3,:3]
     self.drawing.draw()