terça-feira, 23 de junho de 2009




Tutorial de Python Script na Game Engine do Blender

Pré-Requisitos

Conhecimento em:

Game Engine do Blender, bem como o seu Bloco de Lógica

Noções basicas de Python Script

Esse tutorial se destina para aqueles que desejam ir além dos Blocos de Lógica da GE do Blender, para isso precisam entrar para o mundo da programação na linguagem Python. Para quem não sabe ainda, python é o script usado no blender para tanto para o ambinte do blender como para GE, onde podemos expandir em muito as possibilidades utilizando essa linguagem.

Em muitas vezes quando começamos a desenvolver um jogo na GE utilizando o bloco de lógica as coisas no princípio parecem fáceis, mas depois com o desenvolv

imento do projeto começa a ficar muito confuso com a grande quantidade de bloco de logica interagindo entre si, sem falar nas limitações que o próprio sistema tem. Por exemplo se criarmos um projeto utilizando scripts Python, podemos reduzir consideravelmente a quantidade de blocos de lógica e aumentando as possibilidades de desenvolvimento do projeto.

Controle de rotação


Como o título acima sugere, vamos fazer um pequeno programa

de controle de rotação que pode ser adaptado de várias maneiras, rotação, deslocamento, animação e etc... Mais adiante vou demonstrar como proceder para utilizar das maneiras já descritas. Vamos botar a mão na massa.


Antes de sair digitando o script vamos a alguns conceito importantes sobre como o blender usa python.


Com o blender aberto vamos dividir a tela para podermos visualizar o modo texto onde será feito o script. Crie um novo arquivo de texto e salve-o com o nome de script por exemplo.


Primeiramente precisamos ligar o script ao objeto, para que o mesmo possa ser controlado pelo mesmo. Para isso adicione um controlador do tipo python e nomeo com o mesmo nome que foi dado ao script.


Depois ligar os sensores ao script, no nosso caso sensores de teclado.

E ligar os atuadores ao script, que irão fazer o objeto rotacionar.


Vamos ao script:

#Para obter um controlador

import GameLogic

cont = GameLogic.getCurrentController()


#Para obter o objeto associado a este controlador

own = cont.getOwner()


#Para obter um sensor associado a este controlador

up = cont.getSensor('up')

down = cont.getSensor('down')


#Para obter um atuador ligado ao controlador

act = cont.getActuator("rot")


#Definindo valores para o atuador

act.setDRot(0,0,+0.1,1)


#Ativando um atuador

if up.isPositive():

GameLogic.addActiveActuator(act,1)

elif down.isPositive():

GameLogic.addActiveActuator(act,0)



A primeira parte do script se refere a inicialização do modulo da Game Logic, import GameLogic e a linha seguinte se refere aos controles ligados ao script, cont = GameLogic.getCurrentController() a variavel cont é apenas um nome sugerido podendo ser trocado por qualquer outro nome.


*Obs: O sinal de # serve para inserir comentários no script.


#Para obter o objeto associado a este controlador

own = cont.getOwner() se refere ao objeto e suas propriedades, por exemplo suas variáveis, own também é uma variável que pode ter seu nome alterado.


*Obs: As variáveis em python são atribuidas com o sinal de =, exemplo: raiz=5, a variável raiz recebeu o valor de 5.


#Para obter um sensor associado a este controlador

up = cont.getSensor('up')

down = cont.getSensor('down')

Adicione um sensor do tipo teclado e set uma tecla por exemplo seta p/ cima.

Para ligar um sensor ao script precisamos nomealo com o mesmo nome tanto no Bloco de Logica quanto no scritp, já o nome da variável não afeta o funcionamento.

Exemplo: up = cont.getSensor('up') ou setap/cima = cont.getSensor('up')


#Para obter um atuador ligado ao controlador

act = cont.getActuator("rot")

Este é responsável por ligar o actuador motion ao script, lembre-se de colocar o mesmo nome no script e no atuador do bloco de lógica.



#Definindo valores para o atuador

act.setDRot(0,0,+0.1,1)

Aqui esta uma parte muito importante, pois é aqui que definimos o que vamos fazer com o actuador ligado ao script, neste casso escolhi o setDRot(0,0,0,0) para a variável act, mas você pode escolher setDLoc(0,0,0,0) que serve para incrementar o deslocamento do objeto. A lista de zeros indica o valor das variáveis X,Y,Z e o último se é local on = 1 ou local off = 0.


*Dica: Para que você possa utilizar todas as possibilidades que o blender lhe da é fundamental consultar a API do blender, onde se visualiza as opções em python para você desenvolver seu projeto.


#Ativando um atuador

if up.isPositive():

GameLogic.addActiveActuator(act,1)

elif down.isPositive():

GameLogic.addActiveActuator(act,0)

Aqui é a parte lógica, basicamente é o seguinte:

se a tecla up for pressionada faça:

act,1 – ou seja, ativa o act

e se a tecla down for pressionada faça:

act,0 – ou seja, desliga o act


Pronto! Agora vá para a janela do 3DView e tecle P, e teste as teclas para ver o funcionamento.


Conclusão;


Este é um ponto de partida para se compreender a forma de utilização do python na GE do blender e desenvolver seus projetos de forma mais eficiente e profissional.

Projetos feitos em python expandem em muito o poder do blender, trazendo toda uma nova game de possibilidades.

Espero que este tutorial tenha lhe sido útil.

Meu email para contato e sugestões de melhoria e tutoriais.

marcosamaralrg@hotmal.com



Nenhum comentário:

Postar um comentário