GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Hoje à(s) 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som

2 participantes

Ir para baixo

Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som Empty Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som

Mensagem por guilhermemig17 Sáb 09 Jul 2011, 23:26

Tutorial de Panda 3D – Conceitos, Estrutura, Inputs e Sons
Requisitos:
*Panda 3D instalado
*Editor de Python
*Caso você trabalhe com Linux , navegue pelo Terminal até a pasta Panda-project/src, e execute: python Panda-tut-00.py
Caso você trabalhe com Mac , navegue pelo Terminal até a pasta Panda-project/src, e execute: python Panda-tut-00.py
Caso você trabalhe com Windows , Você precisará lembrar como navegar pelas pastas do seu sistema pelo Prompt de Comando, usando o comando ‘cd’. Para abrir o prompt de commando, vá ao menu iniciar, e na pesquisa digite “command”, e então navegue até a pasta Panda-project/src, e execute: python Panda-tut-00.py
*Pesquisar na internet

Bom gente, nessa primeira aula quero dedicar a explicar os conceitos do panda. E da programação em si.
O panda é uma engine poderosa, mas como qualquer outra ferramenta existe conceitos simples/fáceis e conceitos difíceis. Não desanime, conceitos são coisas que precisamos saber e não ser profissionais.
Assim, qualquer pessoa pode saber o que significa GUI, é uma coisa Simples, E a interface do usuário. Mas não precisamos criar uma GUI para entender. Mas em minha opinião se quisermos entender bem como um jogo funciona precisamos criar um.
Eu nunca fiz um jogo no panda. Eu admito, eu nem sei modelar bem. Mas isso nunca me impediu de fazer pequenas aplicações na quais eu aprendi muito.
Primeiro quero dar os conceitos básicos. Eu pesquisei para falar o que é cada. Um dos conceitos mais importantes é o node e Nodepath.
Node (Ou nó em português):
Mas afinal, o que é node?
Node é uma palavra que teve origem na segunda metade do século XVI (1565–75; < L nōdus knot), de origem inglesa, significa basicamente nó. Isso mesmo, um nó.
Nó no sentido de ser um ponto único, porém, acessível de vários outros lugares, como os nós da malha de uma rede. Não confundir com "nó", no sentido figurado de problema, coisa de difícil solução... @Smile
Entretanto, particularmente, prefiro manter a expressão original em inglês, node, ao invés de nó, mas, podemos utilizar tanto uma quanto a outra (dispensando a tradução corretíssima de nodo do latim nodus como sinônimo de nódulo, mais utilizado em termos anatômicos.
Retirado do site: http://drupal-br.org/manual/guia-do-usuario/conceitos-basicos/o-que-e-um-node
Nota: eu vou retirar bastantes sites como fontes, para as pessoas poderem se aprofundar.
NodePath é o caminho do nó.
Logo depois vem o Termo Árvore. Eu acho que é um termo muito especial.
Arvore:
[/b]Árvore[/b], no contexto da programação e ciência da computação, é uma estrutura de dados que herda as características das topologias em árvore. Conceitualmente diferente das listas encadeadas, em que os dados se encontram numa sequência, nas árvores os dados estão dispostos de forma hierárquica.
A árvore é composta por um elemento principal chamado raiz, que possui ligações para outros elementos, que são denominados de ramos ou filhos. Estes ramos levam a outros elementos que também possuem outros ramos. O elemento que não possui ramos é conhecido como folha ou nó terminal.
Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som 300px-Binary_tree
Retirado do site:
http://pt.wikipedia.org/wiki/%C3%81rvore_%28estrutura_de_dados%29
E como se fosse uma arvore genealógica de dados.
Assim na estrutura de dados da arvore temos o Pai e o filho. Pai é como se fosse um código/dado na árvore que tem suas características. Filho está dentro da classe do pai, herdando suas características.
Ex:
O meu pai na vida real tem olhos castanhos.
O filho (Eu) também tenho. Eu herdei os conceitos físicos dele.
Entendeu agora?
Ótimo!
O que é API?
Agora vou explicar o que é API.
API, de Application Programming Interface (ou Interface de Programação de Aplicações) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos que não querem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.[1]
De modo geral, a API é composta por uma série de funções acessíveis somente por programação, e que permitem utilizar características do software menos evidentes ao utilizador tradicional.[2]
Por exemplo, um sistema operacional possui uma grande quantidade de funções na API, que permitem ao programador criar janelas, acessar arquivos, criptografar dados, etc. Mas as APIs dos sistemas operacionais costumam serem dissociadas de tarefas mais essenciais, como manipulação de blocos de memória e acesso a dispositivos. Essas tarefas são atributos do núcleo de sistema, e raramente são programáveis.[3] Outro exemplo: programas de desenho geométrico que possuem uma API específica para criar automaticamente entidades de acordo com padrões definidos pelo utilizador.
Retirado do site: http://pt.wikipedia.org/wiki/API
O que é Scene Graph

Muitas engines 3D mantém uma lista de modelos 3D para renderizar a cada frame. Nessas engines simples, primeiro o modelo 3D deve ser alocado (ou carregado), e então inserido numa lista de modelos a renderizar. O modelo não é 'visível' até ele ser inserido na lista.

O Panda3D é um pouco mais sofisticado. Em vez de manter uma lista de objetos a renderizar, ele mantém uma árvore de objetos a renderizar. Um objeto não é visível até ele ser inserido na árvore.

A árvore consiste de objetos da classe PandaNode. Esta é na verdade uma superclasse para um número de outras classes: ModelNode, GeomNode, LightNode, e por ai vai. Através deste manual, vai ser comum nos referirmos aos objetos dessas classes simplesmente como nós. A raiz da árvore é um nó chamado render

'A árvore de coisas para renderizar' do Panda3D é chamada de scene graph
Retirado do site: http://panda3d.forumeiros.com/t5-a-scene-graph-sendo-revisado

O que é Frame?
Apesar de ser um conceito cinematográfico também é valido:
Em inglês, fala-se em "film frame" ou "video frame", conforme o produto em questão tenha sido realizado em película (tecnologia cinematográfica) ou vídeo (tecnologia eletrônica, seja ela analógica ou digital). Em português, em geral usa-se o termo fotograma para as imagens individuais de um filme, reservando a palavra frame apenas para as imagens de vídeo, e utilizando quadro ou imagem para produtos audiovisuais genéricos, produzidos em qualquer tecnologia.

O que é Tasks?
Bem, “Tarefas” (Tasks), é uma nomenclatura usada no Panda3D, que se refere: “A necessidade de prover a certos objetos de jogo, loops de execução.”
Por exemplo, ao se criar um personagem em um jogo, a programação desse personagem pode ter uma série de funções que devem ser checadas, e executadas, a cada frame do jogo.


Agora temos Conceitos importantes vamos iniciar o nosso trabalho no Panda.
O primeiro passo é importar ferramentas. O panda 3D tem vários tipos de ferramentas diferentes, como não precisamos de todas de uma vez, nós selecionamos aquelas que nós precisamos no momento. A forma de fazer isso é através de códigos. Códigos de importações.
O mais básico de todos é:
Código:
import direct.directbase.DirectStart
Ele incia o Panda junto com:
run()
Código:
Código:
import direct.directbase.DirectStart
run()
Nota: Para executar os códigos é necessário um editor de Python. Você vai salvar em uma pasta, exemplo: Panda3D do seu computador. Depois você vai acessa-la usando prompt de comando usando CD:
>>> cd C:\Panda3D
E por ultimo executar o arquivo salvo.
>>> python nome_do_meu_arquivo.py
Isso vai iniciar o Panda. Vai aparecer uma janela Cinza.
O que e isso?
Essa janela é o nosso jogo. O que fizemos foi executar o jogo. Como não colocamos nada nele, acontece isso:
Uma janela cinza sem nada.
A medida que criamos o jogo, vamos acrescentando coisas, e o nosso jogo vai ficando mais rico.
Mas a importação básica que você precisa saber de co é essa:
Código:
 from direct.showbase.ShowBase import ShowBase
Você pode estar pensando:
Credo, que código feio! E impossível memorizar isso.
E infelizmente eu tenho que aceitar isso. A parte que a sintaxe é mais complicada no Panda é exatamente a parte de importações. Existem muitos códigos para importar funções, e todos são pouco complicados de lembrar. Mas isso é o básico. Com tempo se acostuma. E não há problema algum copiar eles enquanto você não sabe de co.
Só vamos usar esse nessa aula de hoje. Depois usaremos outros.
Eu vou ensinar hoje como criar um Objeto e cenário.
Criando Modelos
E muito simples criar modelos no Panda. A primeira parte é modelar eles no blender ou qual seja seu modelador e passar para o Panda. Também é possível fazer jogos 2D com imagens e GUIs que vem com o Panda.
Ele aceita:
.Egg – Exporte de .blend para .egg usando um softaware chamado Chicken
.Bam – Exporte do .egg para .bam usando um código no Panda que ensinaremos depois!
.X
.lwo
.dxf
.flt
.wrl
.obj
Todos esses (.X, .lwo, .dxf, .flt, .wrl, .obj) podem ser exportados através de plugins que vem com Blender. Se você não os tem, então baixe a ultima versão do Blender que com certeza deve ter.
Agora vamos importar um cenário (os modelos vêm com Panda já instalado).
Código:

from direct.showbase.ShowBase import ShowBase
 
#cria a classe do jogo:
class jogo(ShowBase):
 
    def __init__(self):
        ShowBase.__init__(self)
 
        #Carregando o modelo:
        self.environ = self.loader.loadModel("models/environment")
        #Renderiza o modelo:
        self.environ.reparentTo(self.render)
        # Define a posição e Escala do modelo:
        self.environ.setScale(0.25, 0.25, 0.25)
        self.environ.setPos(-8, 42, 0)
 
 
app = jogo()
app.run()# Executa o jogo usando a classe criada
1º) Self é uma variável, e possível substituí-la. Se você quer aprender mais sobre estrutura do python aprenda a Tkinter. Ajudará bastante.
2º)environ é o nome do nosso modelo. Também é variável
3º)Renderizamos o modelo usando:
Nome_do_modelo.reparentTo(self.render) #ligando o nosso modelo ao nó do render
É importante Renderizar, porque sem isso o nosso objeto não vai aparecer em cena.
4º)Definimos a escala do nosso objeto usando:
Nome_do_objeto.setScale(X,Y,Z)
Usamos o plano cartesiano para definir a escala e posição do objeto.
Depois veremos que é possível definir isso junto ao mesmo tempo.
5º) Por ultimo definiremos a Posição também usando o plano cartesiano.
Dica: Mude as posições para ver diferentes resultados.
O resultado inicial da sua tela deve ser isso:
Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som Tutorial1
E normal aparecer o objeto assim. Perceba que se a gente usar o mouse nós mudamos a posição do modelo. São os controles para visualizar a cena.
Veja os controles:
Botão Esquerdo >> esquerda e direita.
Botão direito >> Avançar e recuar.
Botão do meio Girar em torno da origem do pedido.
Botões direita e Médio >> Rolar o ponto de vista em torno do eixo vista.
Não se preocupe. Depois aprenderemos como deixar a câmera fixa. Enquanto isso vamos fazer outro ‘teste’. Desta vez vou ensinar a fazer ‘inputs’.
Abra o editor e começe a programar!
Código:

class Jogo(ShowBase):
 
    def __init__(self):
        ShowBase.__init__(self)
        self.cubo = self.loader.loadModel("box");
        self.cubo.reparentTo(self.render)
        self.cubo.setScale(0.5)
        self.cubo.setPos(-3,15,-2)
app = jogo()
app.run()
O panda vem com vários modelos. Um deles é o Box. Uma caixa colorida.
Vamos trabalhar com ela!
Feito a importação vou ensinar a fazer inputs. Inputs do usuário, é quando pressionamos a tecla e ela ativa alguma função do panda. Veja bem como isso vai funcionar:
Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som Classejj
Veja que se não pressionarmos a tecla não vai acontecer nada. Mas é possível mudar isso. Quando uma tecla parar de ser pressionada algo aconteça.
Isso é só um esquema básico ^.
A maneira mais fácil de usar inputs é usando accepts.
Accept é o comando do panda que permite colocar:
Que caminho a tecla pressionada vai percorrer. Vamos ver isso com um código.
Código:

self.accept('w', self.capturaTecla)
1º) Ligamos self á accept.
2º)Definimos ‘w’ como a tecla a ser pressionada.
3º)Se apertarmos ‘w’, o programa vai levar a(s) seguinte(s) função(ões):
CapturaTecla.
Agora basta criar CapturaTecla com Def.
Código:
def CapturaTecla(self):
   Print(‘Você apertou W’)
Simples não?
Depois de montar tudo, cada vez que o usuário apertar W, vai aparecer essa mensagem no prompt de comando! Depois aprenderemos como criar Textos 2D e 3D na tela do Panda ;)
Agora vamos fazer o cubo mover cada vez que o usuário apertar ‘E’.
Código:

self.accept(‘e’, self.MoverBox)
def MoverBox(self):
   print ‘O cubo vai andar’
   self.cubo.setX(self.cubo.getX()+0.01)

self.accept(‘e-up’,self.Pare)
def Pare(self):
   print ‘O cubo vai parar’
1º)Nome_da_Tecla-up é quando o usuário não apertar a tecla.
2º)Usamos mais uma vez o plano Cartesiano. É simples, usamos primeiro setX e getX. O valor é +0.01, ou seja, a cada frame o modelo vai “andar” mais 0.01 posição em relaxão ao eixo X.
Dica: Mude totalmente, teste colocando setY, setZ, e assim vai... Mude os valores!
Como montar Som.
Agora vou ensinar a colocar ‘som’ no jogo. É simples.
Veja o processo abaixo:
Código:

Def MySound(self):
mySound = loader.loadSfx("models/audio/sfx/GUI_rollover.wav")
 mySound.setLoop(True)
 mySound.play()
1º)Fizemos outro conjunto de código usando def.
2º)Carregamos um som que vem junto com Panda
3º)Definimos que aquele som vai ter um nó infinito. Ou seja, o som nunca vai acabar.
4º)Executamos o som.
Para parar o som usamos:
Código:
mySound.stop()
Veja mais sobre som na nossa apostila:
http://panda3d.forumeiros.com/t4-audio-no-panda-revisado
Por hoje é so.
Dever de Casa:
Faça um jogo em que quando o usuário aperta ‘w’ o Som executa. E quando aperta ‘E’ o som para.
Boa sorte!
Nota para o dever: Quando apertamos W o som é executado não importa quando, mesmo depois de ter apertado ‘E’.
E válido uso de pesquisa.
Boa sorte.
Próxima aula na próxima semana.
guilhermemig17
guilhermemig17

Data de inscrição : 03/06/2010
Reputação : 4
Número de Mensagens : 252
Prêmios : Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som Empty Re: Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som

Mensagem por Mr.Brum Sáb 09 Jul 2011, 23:56

parabens pelo tuto, correndo o olho sobre a página vejo que é algo bom...
Quando não estiver morrendo de sono, eu leio!!
Mr.Brum
Mr.Brum

Games Ranking : Nota C

Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Reputação : 41
Número de Mensagens : 915
Prêmios : Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://mrbrumgames.blogspot.com/

Ir para o topo Ir para baixo

Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som Empty Re: Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som

Mensagem por guilhermemig17 Dom 10 Jul 2011, 12:21

Enviem comentários Gente!
Obrigado!
E outra coisa:
E uma aula por semana, mas são aulas completas e TODAS com dever de casa formado
o importante é aprender. Podem expor seus deveres aqui ou por mp!
guilhermemig17
guilhermemig17

Data de inscrição : 03/06/2010
Reputação : 4
Número de Mensagens : 252
Prêmios : Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som Empty Re: Aula 1 de Panda 3D: Conceitos, Carregando Modelos, Inputs do Usuário e Som

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos