示例#1
0
 def __init__(self):
     while True:
         self.x, self.y = np.random.uniform(-50.0, 50.0, 2)
         if not (self.x**2+self.y**2 < 10): break
     self.s = 3
     self.z = self.s
     self.GPU = es.toGPUShape(oh.readOBJ2(os.path.join('mod','tex','obstacle.obj'), os.path.join('mod','tex','obstacle.png')), GL_REPEAT, GL_NEAREST)
     self.transform = np.matmul(tr.translate(self.x,self.y,self.z), np.matmul(tr.rotationX(np.pi), tr.uniformScale(self.s)))
示例#2
0
 def update(self):
     self.time += self.tick
     self.z = np.exp(2 * np.sin(2 * self.time)) / 4
     self.transform = np.matmul(
         tr.translate(self.x, self.y, self.z),
         np.matmul(
             tr.rotationZ(self.time * 4),
             np.matmul(tr.rotationX(np.pi / 2), tr.uniformScale(self.s))))
示例#3
0
 def update(self):
     self.theta += 0.1
     self.transform = tr.matmul([
         tr.translate(self.x, self.y, self.z),
         tr.uniformScale(0.5),
         tr.rotationZ(self.theta),
         tr.rotationX(np.pi / 4)
     ])
示例#4
0
 def update(self):
     self.GPU.append(self.GPU.popleft())
     self.tick -= 0.1 * np.exp(self.tick / 10)
     self.phi = np.exp(self.tick)
     self.transform = tr.matmul([
         tr.translate(self.x, self.y, self.z),
         tr.rotationX(2 * self.phi),
         tr.rotationZ(self.phi),
         tr.scale(self.s, self.s, 0.0001)
     ])
示例#5
0
 def __init__(self):
     self.c = 0
     self.d = 0
     self.go = True
     self.do = True
     self.GPUmenu = es.toGPUShape(
         obj_reader.readOBJ2(
             os.path.join("objects", "snok.obj"),
             os.path.join("objects", "textures", "text.png")), GL_REPEAT,
         GL_NEAREST)
     self.GPUuntitled = es.toGPUShape(
         obj_reader.readOBJ(os.path.join("objects", "untitled.obj"),
                            (1.0, 1.0, 1.0)), GL_REPEAT, GL_NEAREST)
     self.GPUover = es.toGPUShape(
         obj_reader.readOBJ2(
             os.path.join("objects", "gameover.obj"),
             os.path.join("objects", "textures", "text.png")), GL_REPEAT,
         GL_NEAREST)
     self.menuTransform = tr.matmul([
         tr.translate(0.0, 0.0, 8.0),
         tr.uniformScale(2),
         tr.rotationX(np.pi / 2),
         tr.rotationY(3 * np.pi / 2)
     ])
     self.untitledTransform = tr.matmul([
         tr.translate(-2.0, 0.0, 8.0),
         tr.uniformScale(1.5),
         tr.rotationX(np.pi / 2),
         tr.rotationY(3 * np.pi / 2)
     ])
     self.overTransform = tr.matmul([
         tr.translate(0.0, 0.0, 8.0),
         tr.uniformScale(2),
         tr.rotationX(np.pi / 2),
         tr.rotationY(3 * np.pi / 2)
     ])
示例#6
0
 def __init__(self):
     self.x, self.y, self.z = 0.0, 0.0, -4.5
     self.exists = False
     self.theta = 0.0
     self.rare = 1
     self.bans = [(None, None, None)]
     self.GPU = es.toGPUShape(
         obj_reader.readOBJ(os.path.join("objects", "record.obj"),
                            (1.0, 1.0, 1.0)), GL_REPEAT, GL_NEAREST)
     self.transform = tr.matmul([
         tr.translate(0.0, 0.0, self.z),
         tr.uniformScale(1),
         tr.rotationZ(self.theta),
         tr.rotationX(np.pi / 4)
     ])
示例#7
0
 def __init__(self):
     self.x, self.y = 0, 0
     self.z = 1
     self.time = 0
     self.tick = np.pi / 180 * 2
     self.s = 3
     self.models = {
         'charmander': Charmander(),
         'bulbasaur': Bulbasaur(),
         'squirtle': Squirtle(),
         'pikachu': Pikachu()
     }
     self.list = ['charmander', 'bulbasaur', 'squirtle', 'pikachu']
     self.prob = [0.3, 0.3, 0.3, 0.1]
     self.choice_model()
     self.transform = np.matmul(
         tr.translate(self.x, self.y, self.z),
         np.matmul(
             tr.rotationZ(self.time * 4),
             np.matmul(tr.rotationX(np.pi / 2), tr.uniformScale(self.s))))
示例#8
0
 def respawn(self, snake, obstacle):
     self.choice_model()
     x, y = self.x, self.y
     self.x, self.y = np.random.uniform(-97.9, 97.9, 2)
     if (self.x - x)**2 + (self.y - y)**2 < self.s**2:
         self.respawn(snake, obstacle)
         return
     if (self.x - obstacle.x)**2 + (self.y - obstacle.x)**2 < self.s**2:
         self.respawn(snake, obstacle)
         return
     parts = iter(snake.body)
     _ = next(parts, None)
     for part in parts:
         if (self.x - part.x)**2 + (self.y - part.y)**2 < self.s**2:
             self.respawn(snake, obstacle)
             return
     self.transform = np.matmul(
         tr.translate(self.x, self.y, self.z),
         np.matmul(
             tr.rotationZ(self.time * 4),
             np.matmul(tr.rotationX(np.pi / 2), tr.uniformScale(self.s))))
示例#9
0
    def mainMenu(self, pipeline, projection, view, phong_pipeline):
        glUseProgram(pipeline.shaderProgram)

        self.menuTransform = tr.matmul([
            tr.translate(2.0, 0.0, 8.0 + self.c * 2),
            tr.rotationY(-0.25 + self.c * 0.5),
            tr.uniformScale(2),
            tr.rotationX(np.pi / 2),
            tr.rotationY(3 * np.pi / 2)
        ])
        if self.go:
            self.c += 0.001
            if self.c >= 1.0:
                self.go = False
        else:
            self.c -= 0.001
            if self.c <= 0.0:
                self.go = True

        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "La"), 0.85,
                    0.85, 0.85)
        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Ld"), 0.0,
                    0.0, 0.0)
        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Ls"), 0.2,
                    0.2, 0.2)

        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Ka"), 1.0,
                    1.0, 1.0)
        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Kd"), 0.0,
                    0.0, 0.0)
        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Ks"), 1.0,
                    0.0, 1.0)

        glUniform3f(
            glGetUniformLocation(pipeline.shaderProgram, "lightPosition"), 0,
            0, 50)
        glUniform3f(
            glGetUniformLocation(pipeline.shaderProgram, "viewPosition"), 0.0,
            0.0, 0)
        glUniform1ui(glGetUniformLocation(pipeline.shaderProgram, "shininess"),
                     100)
        glUniform1f(
            glGetUniformLocation(pipeline.shaderProgram,
                                 "constantAttenuation"), 0.001)
        glUniform1f(
            glGetUniformLocation(pipeline.shaderProgram, "linearAttenuation"),
            0.0001)
        glUniform1f(
            glGetUniformLocation(pipeline.shaderProgram,
                                 "quadraticAttenuation"), 0.0001)

        glUniformMatrix4fv(
            glGetUniformLocation(pipeline.shaderProgram, "model"), 1, GL_TRUE,
            self.menuTransform)
        glUniformMatrix4fv(
            glGetUniformLocation(pipeline.shaderProgram, "projection"), 1,
            GL_TRUE, projection)
        glUniformMatrix4fv(
            glGetUniformLocation(pipeline.shaderProgram, "view"), 1, GL_TRUE,
            view)
        pipeline.drawShape(self.GPUmenu)

        glUseProgram(phong_pipeline.shaderProgram)

        glUniform3f(glGetUniformLocation(phong_pipeline.shaderProgram, "La"),
                    0.0, 0.0, 0.0)
        glUniform3f(glGetUniformLocation(phong_pipeline.shaderProgram, "Ld"),
                    1.0, 1.0, 1.0)
        glUniform3f(glGetUniformLocation(phong_pipeline.shaderProgram, "Ls"),
                    0.0, 0.0, 0.0)

        glUniform3f(glGetUniformLocation(phong_pipeline.shaderProgram, "Ka"),
                    0.0, 0.0, 0.0)
        glUniform3f(glGetUniformLocation(phong_pipeline.shaderProgram, "Kd"),
                    1.0, 1.0, 1.0)
        glUniform3f(glGetUniformLocation(phong_pipeline.shaderProgram, "Ks"),
                    0.0, 0.0, 0.0)

        glUniform3f(
            glGetUniformLocation(phong_pipeline.shaderProgram,
                                 "lightPosition"), 0, 0, 50)
        glUniform3f(
            glGetUniformLocation(phong_pipeline.shaderProgram, "viewPosition"),
            0.0, 0.0, 0)
        glUniform1ui(
            glGetUniformLocation(phong_pipeline.shaderProgram, "shininess"),
            100)
        glUniform1f(
            glGetUniformLocation(phong_pipeline.shaderProgram,
                                 "constantAttenuation"), 0.001)
        glUniform1f(
            glGetUniformLocation(phong_pipeline.shaderProgram,
                                 "linearAttenuation"), 0.0001)
        glUniform1f(
            glGetUniformLocation(phong_pipeline.shaderProgram,
                                 "quadraticAttenuation"), 0.0001)

        glUniformMatrix4fv(
            glGetUniformLocation(phong_pipeline.shaderProgram, "model"), 1,
            GL_TRUE, self.untitledTransform)
        glUniformMatrix4fv(
            glGetUniformLocation(phong_pipeline.shaderProgram, "projection"),
            1, GL_TRUE, projection)
        glUniformMatrix4fv(
            glGetUniformLocation(phong_pipeline.shaderProgram, "view"), 1,
            GL_TRUE, view)
        phong_pipeline.drawShape(self.GPUuntitled)
示例#10
0
    def gameOver(self, pipeline, projection, view):
        glUseProgram(pipeline.shaderProgram)

        self.overTransform = tr.matmul([
            tr.translate(0.0, 0.0, 8.0 + self.d * 2),
            tr.rotationY(-0.25 + self.d * 0.5),
            tr.rotationX(-0.25 + self.d * 0.5),
            tr.uniformScale(2),
            tr.rotationX(np.pi / 2),
            tr.rotationY(3 * np.pi / 2)
        ])
        if self.do:
            self.d += 0.001
            if self.d >= 1.0:
                self.do = False
        else:
            self.d -= 0.001
            if self.d <= 0.0:
                self.do = True

        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "La"), 0.85,
                    0.85, 0.85)
        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Ld"), 0.0,
                    0.0, 0.0)
        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Ls"), 0.2,
                    0.2, 0.2)

        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Ka"), 1.0,
                    1.0, 1.0)
        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Kd"), 0.0,
                    0.0, 0.0)
        glUniform3f(glGetUniformLocation(pipeline.shaderProgram, "Ks"), 1.0,
                    0.0, 1.0)

        glUniform3f(
            glGetUniformLocation(pipeline.shaderProgram, "lightPosition"), 0,
            0, 50)
        glUniform3f(
            glGetUniformLocation(pipeline.shaderProgram, "viewPosition"), 0.0,
            0.0, 0)
        glUniform1ui(glGetUniformLocation(pipeline.shaderProgram, "shininess"),
                     100)
        glUniform1f(
            glGetUniformLocation(pipeline.shaderProgram,
                                 "constantAttenuation"), 0.001)
        glUniform1f(
            glGetUniformLocation(pipeline.shaderProgram, "linearAttenuation"),
            0.0001)
        glUniform1f(
            glGetUniformLocation(pipeline.shaderProgram,
                                 "quadraticAttenuation"), 0.0001)

        glUniformMatrix4fv(
            glGetUniformLocation(pipeline.shaderProgram, "model"), 1, GL_TRUE,
            self.overTransform)
        glUniformMatrix4fv(
            glGetUniformLocation(pipeline.shaderProgram, "projection"), 1,
            GL_TRUE, projection)
        glUniformMatrix4fv(
            glGetUniformLocation(pipeline.shaderProgram, "view"), 1, GL_TRUE,
            view)
        pipeline.drawShape(self.GPUover)
示例#11
0
 def draw(self, pipeline):
     self.model.transform = tr.matmul(
         [tr.rotationX(2 * self.phi),
          tr.rotationZ(self.phi)])
     sg.drawSceneGraphNode(self.model, pipeline, "transform")
                                 "quadraticAttenuation"), 0.0011)

        # Setting MVP of OBJ
        glUniformMatrix4fv(
            glGetUniformLocation(pipeline.shaderProgram, "projection"),
            1,
            GL_TRUE,
            projection,
        )
        glUniformMatrix4fv(
            glGetUniformLocation(pipeline.shaderProgram, "view"), 1, GL_TRUE,
            view)
        glUniformMatrix4fv(
            glGetUniformLocation(pipeline.shaderProgram, "model"),
            1,
            GL_TRUE,
            tr.matmul([
                tr.rotationX(np.pi / 2),
                tr.translate(1.5, -0.25, 0),
                tr.uniformScale(_controller.size),
            ]),
        )

        # Drawing given OBJ.
        pipeline.drawShape(gpuOBJ)

        # Once the drawing is rendered, buffers are swap so an uncomplete drawing is never seen.
        glfw.swap_buffers(window)

    glfw.terminate()