#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Image
import random
import sys
import time
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
ancho = 720
alto = 576
rotaX = 0.0
rotaY = 0.0
rotaZ = 0.0
"""
Dibuja el cubo en pantalla
"""
def drawFrame(ejex, ejey, ejez):
drawCube(ejex, ejey, ejez)
pygame.display.flip()
"""
Dibuja el cubo con animacion
"""
def drawCube(ejex, ejey, ejez):
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity()
glTranslatef(ejex, ejey, ejez)
glRotatef(rotaX,1.0,0.0,0.0)
glRotatef(rotaY,0.0,1.0,0.0)
glRotatef(rotaZ,0.0,0.0,1.0)
glPushMatrix()
glShadeModel(GL_SMOOTH)
glBegin(GL_QUADS)
glColor3f(0.0, 0.0, 1.0)
glVertex3f( 1.0, 1.0,-1.0)
glVertex3f(-1.0, 1.0,-1.0)
glVertex3f(-1.0, 1.0, 1.0)
glVertex3f( 1.0, 1.0, 1.0)
glColor3f(0.0, 1.0, 1.0)
glVertex3f( 1.0,-1.0, 1.0)
glVertex3f(-1.0,-1.0, 1.0)
glVertex3f(-1.0,-1.0,-1.0)
glVertex3f( 1.0,-1.0,-1.0)
glColor3f(1.0, 0.0, 0.0)
glVertex3f( 1.0, 1.0, 1.0)
glVertex3f(-1.0, 1.0, 1.0)
glVertex3f(-1.0,-1.0, 1.0)
glVertex3f( 1.0,-1.0, 1.0)
glColor3f(0.0, 1.0, 0.0)
glVertex3f( 1.0,-1.0,-1.0)
glVertex3f(-1.0,-1.0,-1.0)
glVertex3f(-1.0, 1.0,-1.0)
glVertex3f( 1.0, 1.0,-1.0)
glColor3f(1.0, 1.0, 0.0)
glVertex3f(-1.0, 1.0, 1.0)
glVertex3f(-1.0, 1.0,-1.0)
glVertex3f(-1.0,-1.0,-1.0)
glVertex3f(-1.0,-1.0, 1.0)
glColor3f(1.0, 0.0, 1.0)
glVertex3f( 1.0, 1.0,-1.0)
glVertex3f( 1.0, 1.0, 1.0)
glVertex3f( 1.0,-1.0, 1.0)
glVertex3f( 1.0,-1.0,-1.0)
glEnd()
glPopMatrix()
"""
Acomoda la pantalla y la camara
"""
def resizeGL(ancho, alto):
if alto == 0:
alto = 1
glViewport(0, 0, ancho, alto)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(45, float(ancho)/float(alto), 0.1, 100.0)
glMatrixMode(GL_MODELVIEW)
"""
Inicializa OpenGL
"""
def initGL():
glClearColor(0.0, 0.0, 0.0, 0.0)
glClearDepth(1.0)
glDepthFunc(GL_LESS)
glEnable(GL_DEPTH_TEST)
glEnable(GL_POLYGON_SMOOTH)
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glShadeModel(GL_SMOOTH)
resizeGL( ancho, alto)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
"""
Principal
"""
if __name__ == '__main__':
ejez = -6.0 #Alejamos, acercamos la camara
ejex = 0 #Rotamos en X la vision
ejey = 0 #Rotamos en X la vision
glutInit(sys.argv)
pygame.init()
pygame.display.set_mode((ancho, alto),(OPENGL|DOUBLEBUF|GLUT_RGB))
pygame.display.set_caption("Cubo RGB")
resizeGL(ancho, alto)
initGL()
while True:
factorCambioY = +1.0
factorCambioZ = -1.0
factorCambioX = -1.0
keys = pygame.key.get_pressed()
rotaX = rotaX + factorCambioX
rotaY = rotaY + factorCambioY
rotaZ = rotaZ + factorCambioZ
for eventos in pygame.event.get():
if eventos.type == QUIT:
sys.exit(0)
"""Manejar desde Teclado.
elif keys[K_i]:
rotaY = rotaY - 2.333
elif keys[K_d]:
rotaY = rotaY + 2.333
elif keys[K_RIGHT]:
rotaX = rotaX + 2.333
elif keys[K_LEFT]:
rotaX = rotaX - 2.333
elif keys[K_DOWN]:
rotaZ = rotaZ - 2.333
elif keys[K_UP]:
rotaZ = rotaZ + 2.333
"""
#Regresa el movimiento del cubo, evitando saltos.
if rotaX > 360 or rotaX == 0 or rotaX < -360:
factorCambioX = factorCambioX * - 1.0
if rotaY > 360 or rotaY == 0 or rotaY < -360:
factorCambioY = factorCambioY * - 1.0
if rotaZ > 360 or rotaZ == 0 or rotaZ < -360:
factorCambioZ = factorCambioZ * - 1.0
drawFrame(ejex, ejey, ejez)
Cubo realizado con la librería OpenGL.
Módulos externos:
PyOpenGL
Pygame
Módulos externos:
PyOpenGL
Pygame
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.