Pytom - Ajuda na criação de cena

1 resposta
D_santos1980

Preciso desenvolver uma cena animada em Pytom, que tenha algum tipo de interação do usuário através da teclado

Segue o código da casa animada, peguei esse código em um site.

Alguem que conhece Pytom ou ja tenha uma cena montada poderia me ajudar ?

#!/usr/bin/env python

-- coding: iso8859-1 --

“”"###################################################

Portado para Python por Jonh Edson R. de Carvalho

###################################################"""

import sys
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

Variáveis que guardam a translação que será aplicada

sobre a casinha

global Tx, Ty

Tx = 0.0
Ty = 0.0

Variáveis que guardam os valores mínimos de x e y da

casinha

global minX,maxX,minY,maxY

minX = 0.0
maxX= 0.0
minY= 0.0
maxY= 0.0

Variáveis que guardam o tamanho do incremento nas

direções x e y (número de pixels para se mover a

cada intervalo de tempo)

global xStep, yStep
xStep= 0.0
yStep= 0.0

Variáveis que guardam a largura e altura da janela

global windowXmin,windowXmax,windowYmin,windowYmax

windowXmin= 0.0
windowXmax= 0.0
windowYmin= 0.0
windowYmax= 0.0

Função responsável por inicializar parâmetros e variáveis

def Inicializa():

# Define a cor de fundo da janela de visualização como branca
glClearColor(1.0, 1.0, 1.0, 1.0)

# Inicialização das variáveis globais
xStep = 1.0
yStep = 1.0
Tx = Ty = 0.0
minX = -15.0
maxX =  15.0
minY = -15.0
maxY =  17.0
windowXmin = windowYmin = -40.0
windowXmax = windowYmax = 40.0

def Desenha():

print("*** Callback de redesenho da tela")

Altera a cor do desenho para azul

glColor3f(0.0, 0.0, 1.0)

Limpa a janela de visualização com a cor de fundo definida

glClear(GL_COLOR_BUFFER_BIT)

Muda para o sistema de coordenadas do modelo

glMatrixMode(GL_MODELVIEW)

Inicializa a matriz de transformação corrente

glLoadIdentity()

Aplica uma translação sobre a casinha

glTranslatef(Tx, Ty, 0.0)

# Altera a cor do desenho para azul
glColor3f(0.0, 0.0, 1.0)
# Desenha a casa
glBegin(GL_QUADS)
glVertex2f(-15.0,-15.0)
glVertex2f(-15.0,  5.0)
glVertex2f( 15.0,  5.0)
glVertex2f( 15.0,-15.0)
glEnd()

# Altera a cor do desenho para branco
glColor3f(1.0, 1.0, 1.0)
#// Desenha a porta e a janela
glBegin(GL_QUADS)
glVertex2f(-4.0,-14.5)
glVertex2f(-4.0,  0.0)
glVertex2f( 4.0,  0.0)
glVertex2f( 4.0,-14.5)
glVertex2f( 7.0,-5.0)
glVertex2f( 7.0,-1.0)
glVertex2f(13.0,-1.0)
glVertex2f(13.0,-5.0)
glEnd()

# Altera a cor do desenho para azul
glColor3f(0.0, 0.0, 1.0)
# Desenha as "linhas" da janela
glBegin(GL_LINES)
glVertex2f( 7.0,-3.0)
glVertex2f(13.0,-3.0)
glVertex2f(10.0,-1.0)
glVertex2f(10.0,-5.0)
glEnd()

# Altera a cor do desenho para vermelho
glColor3f(1.0, 0.0, 0.0)
# Desenha o telhado
glBegin(GL_TRIANGLES)
glVertex2f(-15.0, 5.0)
glVertex2f(	 0.0,17.0)
glVertex2f( 15.0, 5.0)
glEnd()

# Exibe o desenho na janela
glutSwapBuffers()

Função callback chamada para gerenciar eventos de teclas normais (ESC)

def Teclado (tecla, x, y):

print("*** Tratamento de teclas comuns")
print(">>> Tecla: %c",tecla)

if tecla==chr(27): # ESC ?
	sys.exit(0)

if tecla == chr(ord('a')):  # muda para tela cheia
	glutFullScreen()

if tecla == chr(ord('b')): # muda posição da janela
	glutReshapeWindow(500,400)
	glutPositionWindow(0,0)

Função callback chamada para gerenciar eventos de teclas especiais

def TeclasEspeciais (tecla, x, y):

print("*** Tratamento de teclas especiais")

if tecla == GLUT_KEY_F1:

print(">>> Tecla F1 pressionada")

elif tecla == GLUT_KEY_F2:

print(">>> Tecla F2 pressionada")

if tecla == GLUT_KEY_F3:

print(">>> Tecla F3 pressionada")

Função callback chamada quando o tamanho da janela é alterado

def AlteraTamanhoJanela (w, h):

global windowXmin, windowXmax
global windowYmin, windowYmax

print("*** Callback de redimensionamento da tela")
print(">>> Novo tamanho da janela: ", w, h)

# Evita a divisao por zero
if h == 0:
	h = 1

# Atualiza as variáveis
largura = w
altura = h

# Especifica as dimensões da Viewport
glViewport(0, 0, largura, altura)

# Inicializa o sistema de coordenadas
glMatrixMode(GL_PROJECTION)
glLoadIdentity()

# Estabelece a janela de seleção (esquerda, direita, inferior,
# superior) mantendo a proporção com a janela de visualização
if largura <= altura:
	gluOrtho2D (-40.0, 40.0, -40.0 * altura/largura, 40.0 * altura/largura)
	windowXmin = -40.0
	windowXmax =  40.0
	windowYmin = -40.0*altura/largura
	windowYmax = 40.0*altura/largura
else:
   gluOrtho2D (-40.0 * largura/altura, 40.0 * largura/altura, -40.0, 40.0)
   windowXmin = -40.0*largura/altura
   windowXmax =  40.0*largura/altura
   windowYmin = -40.0
   windowYmax =  40.0

def Anima(value):

global minX, maxX, minY, maxY
global xStep,yStep
global windowXmin, windowXmax
global windowYmin, windowYmax

#Muda a direção quando chega na borda esquerda ou direita
if( (Tx+maxX) > windowXmax or (Tx+minX) < windowXmin ):
    xStep = -xStep

# Muda a direção quando chega na borda superior ou inferior
if( (Ty+maxY) > windowYmax or (Ty+minY) < windowYmin ):
    yStep = -yStep

# Move a casinha
Tx += xStep;
Ty += yStep;

# Redesenha a casinha em outra posição
glutPostRedisplay();
glutTimerFunc(50,Anima, 1);

Função callback para eventos de botões do mouse

def GerenciaMouse (button, state, x, y):

print("*** Tratamento de Cliques de mouse")
if state == GLUT_DOWN:
	print(">>> Botao pressionado ",button)
if state == GLUT_UP:
	print(">>> Botao liberado ", button)

Programa principal

if (name == ‘main’):

# Inicializa a Biblioteca GLUT
glutInit(sys.argv)

# Define o modo de operação da GLUT
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

# Especifica a posição inicial da janela GLUT
glutInitWindowPosition(5,5)

# Especifica o tamanho inicial em pixels da janela GLUT
glutInitWindowSize(450,450)

# Cria a janela passando como argumento o título da mesma
glutCreateWindow("Desenha tela padrão do GLUT")

# Registra a função callback de redesenho da janela de visualização
glutDisplayFunc(Desenha)

# Registra a função callback de redimensionamento da janela de visualização
glutReshapeFunc(AlteraTamanhoJanela)

# Registra a função callback para eventos de botões do mouse	
glutMouseFunc(GerenciaMouse)
 
# Registra a função callback para tratamento das teclas normais
glutKeyboardFunc (Teclado)

# Registra a função callback para tratamento das teclas especiais
glutSpecialFunc (TeclasEspeciais)
 
# Chama a função responsável por fazer as inicializações
Inicializa()

# Inicia o processamento e aguarda interações do usuário
glutMainLoop()

1 Resposta

faq

Pelo amor de Deus, pytom? Cê tá de sacanagem né?

Criado 8 de maio de 2009
Ultima resposta 14 de mai. de 2009
Respostas 1
Participantes 2