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)))
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))))
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) ])
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) ])
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) ])
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) ])
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))))
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))))
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)
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)
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()